Skip to content

memory-ABI door only (busbar 1.6.0 M6) - #18

Merged
MattJackson merged 2 commits into
devfrom
memory-abi-door
Oct 5, 2026
Merged

MattJackson merged 2 commits into
devfrom
memory-abi-door

Conversation

@MattJackson

Copy link
Copy Markdown
Contributor

Pins busbar-contract to the integration commit bf32f11ba9634c77afbe1dc89a8c3986499b38af (busbar lane-predev-all) and deletes the cold twin (export_store_plugin!, open_cold). The cdylib exports one symbol, the store door. This unblocks busbar M6 for this repo (deleting busbar-contract abi/cold and abi/hot).

Store door at the pin

  • StoreSlots now takes an Op and answers Step. Every slot answers Ready, because the store is local-disk-bound.
  • The 1.5.5 op set (slots 0-32) has moved into StoreSlots. Each slot calls the existing RecordStore impl, so v1.0.6 behaviour is unchanged and the existing RecordStore and conformance tests are the oracle.
  • validate only parses the settings and opens nothing. It shares a parser with open, so the refusal texts stay byte-identical.

Epoch and slice life (abi::store::SLICE_TTL_MS (a)-(c))

  • The store is durable and shared by every node that opens the file, so it follows the fleet rules.
  • Schema v12 is additive. It adds a persisted epoch, so a stale reserve is refused and records nothing. It also adds valid_until_ms = now + SLICE_TTL_MS: when a slice expires, its remainder goes back to the window, and a closed slice answers 0 on any further release.
  • v11 slices keep their never-expiring validity.
  • The contract's shared testkit::store_v3::fleet_store cases run over a reopened file.

Fleet

  • Repinned with scripts/fleet/repin.sh.
  • Cargo.lock is re-derived from busbar's lock at the pin.
  • libsqlite3-sys is held at =0.38.1.
  • declares.json now states store ABI v4.
  • Local gates: depwall, netban, cdeps, parity and declares all report 0 findings.

Local tests (target dir dg-l14)

  • cargo fmt --all --check: clean.
  • cargo clippy --workspace --all-targets --locked -D warnings: clean.
  • busbar-store-sqlite: 147 passed.
  • Plugin conformance: 1 passed.
  • The e2e test needs the busbar checkout built at the pin, so it runs in CI only.

…tegration commit bf32f11ba9; the cold twin is deleted

The plugin image exports exactly one symbol, the store door (`export_door!` over `door::door`,
`store_door!`); `export_store_plugin!` and `open_cold` are gone. At the pin the kernel boots a
configured store through the store door (appbuild.rs store_door + the store axis), so the cold lane
is no longer needed (lanes/L13-FLEET.md Q-L13-1).

The store door at the pin (THE DESIGN §11; spec Appendix A, the store kind tail):
- `StoreSlots` takes an `Op` and answers `Step`; every slot answers `Step::Ready` (local disk, the
  host's disk lane, §11.11 R4). The v3 bodies are unchanged, now `SqliteStore::v3_*`.
- The 1.5.5 op set (slots 0-32) moved from the RecordStore supertrait into StoreSlots: each slot is
  one body, the store's existing RecordStore impl, so the v1.0.6 behaviour is the code that shipped.
- `validate` parses the settings and opens nothing (`door::Settings::parse`, shared with `open`, so
  the refusal texts are byte-identical); `open` takes the host tables and ignores them.

The store kind's epoch and slice life (abi::store::SLICE_TTL_MS (a)-(c), ARCHITECT ruling): the
store is durable (no MARK_EPHEMERAL) and every node opening the file shares its rows, so it is a
fleet store. Schema v12 (additive): `money_epoch` persists the one epoch (a reserve below it is
StaleEpoch and records nothing; above it raises it atomically with the draw), `money_slices` gains
`valid_until_ms` (now + SLICE_TTL_MS on the store's clock; a v11 slice keeps -1 = u64::MAX, the
validity it was granted), an expired slice's remainder returns to its window's headroom, and a
closed slice stays a row so any further release answers 0. The contract's shared cases
(`busbar_contract::testkit::store_v3::fleet_store`, through the `test-seal` dev edge) run over a
reopened file on a held-still test clock.

Fleet: repinned with scripts/fleet/repin.sh; Cargo.lock re-derived from busbar's lock at the pin
(parity 0 findings), libsqlite3-sys held at the C allow-list's =0.38.1; declares.json states store
contract ABI v4. Tests: the plugin tests mint op ids through an OpIdMint as LoadedStore::open now
takes; the cross-door transcript compares grants by (slice_id, granted) and bounds valid_until_ms.
…he pin; the split from lane-fleet-done-bothways 3c1f2dc)
@MattJackson
MattJackson merged commit 32adf77 into dev Oct 5, 2026
4 checks passed
@MattJackson
MattJackson deleted the memory-abi-door branch October 5, 2026 06:01
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