memory-ABI door only (busbar 1.6.0 M6) - #18
Merged
Merged
Conversation
…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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pins busbar-contract to the integration commit
bf32f11ba9634c77afbe1dc89a8c3986499b38af(busbarlane-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 (deletingbusbar-contractabi/cold and abi/hot).Store door at the pin
StoreSlotsnow takes anOpand answersStep. Every slot answersReady, because the store is local-disk-bound.StoreSlots. Each slot calls the existingRecordStoreimpl, so v1.0.6 behaviour is unchanged and the existing RecordStore and conformance tests are the oracle.validateonly parses the settings and opens nothing. It shares a parser withopen, so the refusal texts stay byte-identical.Epoch and slice life (
abi::store::SLICE_TTL_MS(a)-(c))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.testkit::store_v3::fleet_storecases run over a reopened file.Fleet
scripts/fleet/repin.sh.Cargo.lockis re-derived from busbar's lock at the pin.=0.38.1.declares.jsonnow states store ABI v4.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.conformance: 1 passed.