Skip to content

docs: record transaction.rs decomposition status — StagingTxn deferred (I141) - #80

Merged
Xof merged 1 commit into
mainfrom
docs/note-staging-extraction-deferred
Jun 23, 2026
Merged

docs: record transaction.rs decomposition status — StagingTxn deferred (I141)#80
Xof merged 1 commit into
mainfrom
docs/note-staging-extraction-deferred

Conversation

@Xof

@Xof Xof commented Jun 23, 2026

Copy link
Copy Markdown
Collaborator

Records the disposition of the 2026-06-22 review's transaction.rs god-module finding (SMELL) as ISSUES.md I141.

The decomposition was worked through four behavior-preserving unit extractions — SlotPacker (#77), FreemapRecycle (#78), CommitProtocol (#79), FaultInjector (#76) — and then deliberately stopped. The planned final StagingTxn extraction is deferred: the candidate-prepare/install staging vocabulary (handle_table_insert_candidate, membership_*_candidate, abort_allocate_prepare, inject_membership_failure, insert_into_data_page) is shared across allocate_inner (staging.rs) and update_inner/delete_inner (mutate.rs), so a context-based extraction can't be contained to staging.rs without dragging the most delicate mutation paths + packing through a mechanical wrapper change for little cohesion gain. staging.rs is already a focused concern file.

Future work: fold the shared vocabulary into a StagingTxn unit incrementally if/when those paths are touched for a real reason — not re-triggered from the SMELL alone.

Docs-only; no code change.

…ion deferred (I141)

The 2026-06-22 review's god-module SMELL was worked through four unit
extractions (SlotPacker #77, FreemapRecycle #78, CommitProtocol #79,
FaultInjector #76); the final StagingTxn extraction is deliberately
deferred. The candidate-prepare/install staging vocabulary is shared
across allocate_inner (staging.rs) and update_inner/delete_inner
(mutate.rs), so a context-based extraction cannot be contained to
staging.rs without dragging the delicate mutation paths through a
mechanical wrapper change. Recorded as future work to be done
incrementally if/when those paths are touched, not re-triggered from
the SMELL alone.
@Xof
Xof merged commit a6f1a88 into main Jun 23, 2026
10 checks passed
@Xof
Xof deleted the docs/note-staging-extraction-deferred branch June 23, 2026 05:21
@github-actions

Copy link
Copy Markdown

🚦 Bench results: PR vs main

✅ No regressions detected

Scenario Mode Δ throughput Worst Δ
document-store chisel-mem -0.3%
document-store chisel-strict -0.9%
document-store redb-strict -0.0%
document-store sqlite-strict -0.3%
mutation-log chisel-mem +0.6%
mutation-log chisel-strict +1.1%
mutation-log redb-strict +0.2%
mutation-log sqlite-strict +0.3%
ycsb-a chisel-mem +2.0%
ycsb-a chisel-strict +4.4%
ycsb-a redb-strict -0.0%
ycsb-a sqlite-strict +1.2%
ycsb-b chisel-mem +3.6%
ycsb-b chisel-strict +3.6%
ycsb-b redb-strict +0.4%
ycsb-b sqlite-strict +1.6%
Per-scenario detail (4 metrics × cells)

document-store

Mode Throughput p50 p95 p99
chisel-mem 19003 ops/s → 18942 ops/s (-0.3%) 14.7 µs → 14.7 µs (+0.3%) 136.2 µs → 135.6 µs (-0.4%) 650.0 µs → 658.2 µs (+1.3%)
chisel-strict 3047 ops/s → 3020 ops/s (-0.9%) 22.7 µs → 22.6 µs (-0.2%) 786.8 µs → 799.9 µs (+1.7%) 2.89 ms → 2.83 ms (-2.2%)
redb-strict 3997 ops/s → 3996 ops/s (-0.0%) 12.1 µs → 12.0 µs (-0.7%) 444.2 µs → 441.7 µs (-0.6%) 1.31 ms → 1.30 ms (-1.0%)
sqlite-strict 5147 ops/s → 5133 ops/s (-0.3%) 21.1 µs → 21.3 µs (+0.9%) 323.1 µs → 333.9 µs (+3.3%) 1.27 ms → 1.32 ms (+3.7%)

mutation-log

Mode Throughput p50 p95 p99
chisel-mem 53031 ops/s → 53355 ops/s (+0.6%) 22.7 µs → 22.5 µs (-0.9%) 26.2 µs → 26.2 µs (-0.2%) 35.1 µs → 34.9 µs (-0.5%)
chisel-strict 1792 ops/s → 1812 ops/s (+1.1%) 286.9 µs → 282.6 µs (-1.5%) 589.9 µs → 576.1 µs (-2.4%) 20.92 ms → 20.89 ms (-0.1%)
redb-strict 1805 ops/s → 1808 ops/s (+0.2%) 139.1 µs → 136.6 µs (-1.8%) 214.4 µs → 204.8 µs (-4.5%) 35.33 ms → 35.71 ms (+1.1%)
sqlite-strict 5068 ops/s → 5083 ops/s (+0.3%) 92.8 µs → 92.4 µs (-0.4%) 256.5 µs → 254.5 µs (-0.8%) 327.7 µs → 317.1 µs (-3.3%)

ycsb-a

Mode Throughput p50 p95 p99
chisel-mem 38054 ops/s → 38824 ops/s (+2.0%) 41.2 µs → 40.7 µs (-1.2%) 58.1 µs → 56.1 µs (-3.5%) 81.2 µs → 78.3 µs (-3.6%)
chisel-strict 2288 ops/s → 2389 ops/s (+4.4%) 250.1 µs → 247.4 µs (-1.1%) 676.4 µs → 623.0 µs (-7.9%) 993.9 µs → 768.9 µs (-22.6%)
redb-strict 2682 ops/s → 2682 ops/s (-0.0%) 113.7 µs → 113.6 µs (-0.1%) 184.1 µs → 186.9 µs (+1.5%) 275.3 µs → 279.2 µs (+1.4%)
sqlite-strict 131886 ops/s → 133524 ops/s (+1.2%) 7.7 µs → 7.7 µs (-0.9%) 10.2 µs → 10.1 µs (-0.8%) 11.8 µs → 11.7 µs (-1.3%)

ycsb-b

Mode Throughput p50 p95 p99
chisel-mem 164764 ops/s → 170719 ops/s (+3.6%) 4.6 µs → 4.5 µs (-2.8%) 42.9 µs → 41.1 µs (-4.2%) 48.5 µs → 46.1 µs (-4.9%)
chisel-strict 22128 ops/s → 22917 ops/s (+3.6%) 6.7 µs → 6.6 µs (-2.1%) 252.8 µs → 255.0 µs (+0.9%) 596.2 µs → 580.2 µs (-2.7%)
redb-strict 26793 ops/s → 26888 ops/s (+0.4%) 3.1 µs → 3.0 µs (-0.7%) 115.0 µs → 114.3 µs (-0.5%) 176.2 µs → 173.4 µs (-1.6%)
sqlite-strict 159611 ops/s → 162187 ops/s (+1.6%) 6.3 µs → 6.2 µs (-1.3%) 8.5 µs → 8.3 µs (-1.5%) 10.8 µs → 10.7 µs (-0.9%)
Generated by chisel-bench-diff at 2026-06-23T05:34:21Z. Compares PR HEAD against main. Never blocks merge — signal, not gate. Thresholds: throughput 5%, p50 5%, p95 10%, p99 10%.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant