Repository navigation
kernel-audit: the record names its sealing node; resume rebuilds the heads; one canonicaliser; dead surface struck (Q128) - #662
Merged
Conversation
…heads; one canonicaliser; dead surface struck - HIGH (THE DESIGN §1 "when (wall + monotonic, node)"): AuditRecord carries `node`, the node half of every op_id the kernel mints (busbar_kernel::door::node). It is digested in v4 straight after `mono`, journalled in audit.v4, and published in the range read. v4 had not shipped, so it is edited in place (owner 2026-09-28 rule for a first version before the tag); the frozen v4 hex and the published page's worked example are regenerated in this commit. No 1.5.5 byte moves: 1.5.5 served only GET /audit off the admin chain, and the fixed chain and its head/range/keys reads are 1.6.0-additive. - MEDIUM: AuditChain::resume takes the sealed records and rebuilds the head history, so after a restart the head read answers with the tip (never a null head beside next_seq > 1) and every window keeps its anchor. - LOW: the amendment journal's on-demand verify covers the corrections copy the money read uses; the journal decodes subjects through amend::subject_from_fields (one round-tripping decoder); the kernel's duplicate Digest/Framing is a re-export of the audit unit's one canonicaliser (PipeSeparated now constructed by the admin chain; `raw`/`into_framed` move with it, `bytes` goes); struck: heads_body, prune_records_before, AuditChain::verify_to_head, sampling_heads_every, AuditKeySet::insert_signer, amend::amends, Recipe::V3; Subject and the heads prose say what production does.
…cation cell goes with it (the amend chain keeps its head check)
MattJackson
enabled auto-merge
October 8, 2026 02:28
promote into
|
| gate | row | detail |
|---|---|---|
| construction | one-pick-site |
3 production call site(s) of 'pick_among(' (ceiling 2): crates/busbar-kernel-egress/src/walk.rs:298; crates/busbar-llm/src/engine/exhaustion/fallback.rs:120; crates/busbar-llm/src/engine/pipeline.rs:8 |
| kind-isolation | kind-isolation:deps |
3 finding(s), 96 shipped edge instance(s) over 32 class(es), 96 declaration(s); 59 '[[dep]]' row(s), 0 question(s): unlisted-dep-edge legacy -> plane busbar-llm -> busbar-plane-llm is a shipped edge w |
| kind-isolation | kind-isolation:test-deps |
4 finding(s), 43 test edge instance(s) over 26 class(es), 43 declaration(s); 27 '[[dep]]' row(s), 0 question(s): unlisted-dep-edge cleanliness -> legacy busbar-core-admin -> busbar-a2a is a test edge |
| kind-isolation | kind-isolation:law0 |
18 finding(s) over 14 neutral crate(s): law0-rise busbar × auth 49 hit(s) against a ceiling of 42: this landing grew a neutral crate's instance vocabulary. Ceilings only fall (measured on predev f830f |
| kind-isolation-ship | kind-isolation:deps |
13 finding(s) over 96 shipped edge(s): ship-edge kernel -> hooks busbar-kernel -> busbar-hook-ranking is 'not-allowed': the architecture grants no kernel -> hooks edge, and the ship criterion is the a |
| kind-isolation-ship | kind-isolation:test-deps |
18 finding(s) over 43 test edge(s): ship-edge cleanliness -> export busbar-core-admin -> busbar-export-prometheus is 'not-allowed': the architecture grants no cleanliness -> export edge, and the ship |
| kind-isolation-ship | kind-isolation:law0 |
18 finding(s) over 14 neutral crate(s): law0-rise busbar × auth 49 hit(s) against a ceiling of 42: this landing grew a neutral crate's instance vocabulary. Ceilings only fall (measured on predev f830f |
| kind-isolation-ship | kind-isolation:faces |
3 finding(s) over 40 crate(s): foreign-entry crates/busbar busbar is kind 'root' and implements 'Transport' 1 time(s) in shipped source — the entry face of kind 'transport'. A trait implementation is |
| kind-isolation-ship | kind-isolation:legacy-drain |
3 finding(s): transitional-live qa/kind-isolation.toml 'busbar-a2a -> busbar-core-admin' (legacy drain: the retiring A2A engine's tests drive the admin surface that drained into the cleanliness tier) |
| ship-ready | ship-ready:ship-twin |
'kind-isolation-ship' is not green: kind-isolation:deps (a dependency the architecture does not grant is still in the graph); kind-isolation:test-deps (a dependency the architecture does not grant is |
| structure-lint | structure-lint:plane-dup:unledgered |
22 finding(s): PLANE-DUPLICATE (module): 'config.rs' — a2a:crates/busbar-a2a/src/a2a/config.rs decisions:crates/busbar-plane-decisions/src/config.rs voice:crates/busbar-voice/src/config.rs (the ledger |
Judged against base dc83ff155: 0 new red, 0 worse, 5 standing (excused).
tests passed: 24468, failed: 0. Run: https://github.com/GetBusbar/busbar/actions/runs/37718054596 . Artifact verdict-447bac519f9dfa0e4f43d462848bdaf30f102586 (failures.json, junit.xml, raw.log; 90 days).
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.
kernel-audit (Q128): the audit record names the node that sealed it, a resume rebuilds the head history, one canonicaliser serves both chains, and dead surface is struck. HIGH 1 is not in this PR; see below.
What changed (audit and money records)
AuditRecordcarriesnode, the node half of every op_id the kernel mints (busbar_kernel::door::node). THE DESIGN section 1: "when (wall + monotonic, node)".mono, journalled inaudit.v4, and published in the range read.docs/audit-chain-digest-v4.md(489-byte preimage, new hash and signature) and the xtask verifier table are regenerated.GET /auditoff the admin chain; the fixed chain and its head, range and keys reads are 1.6.0-additive.AuditChain::resumetakes the sealed records and rebuilds the head history. After a restart the head read answers with the tip (never a null head besidenext_seq > 1), and every window keeps its anchor. The root'sresume_audituses it.Digest/Framingis now a re-export of the audit unit's canonicaliser.heads_body,prune_records_before,AuditChain::verify_to_head(with itsrecord_teststail-truncation cell; the amendment chain keeps its own head check),sampling_heads_every,AuditKeySet::insert_signer,amend::amends,Recipe::V3.NodeJournal, and it waits on the D2 stack (D2 step 2: the kernel's proxy splits by concern; failover is the kernel's route #546, D2 step 3: route input, host vocabulary and DispatchScope leave plane_host; TLS is the connector's #554, D2 step 4a: the kernel's EngineHost leaves plane_host; door-plane trips are on /metrics; reclaim-on-drop proven on the plane driver #559). Thehook_readcall sites it threads through (plane_host l.707, l.1404, l.2549) are moved verbatim by D2 step 3: route input, host vocabulary and DispatchScope leave plane_host; TLS is the connector's #554 and D2 step 4a: the kernel's EngineHost leaves plane_host; door-plane trips are on /metrics; reclaim-on-drop proven on the plane driver #559. Until it lands, thedoor-only.tomlSINK row stays. It follows as its own PR after D2 step 4a: the kernel's EngineHost leaves plane_host; door-plane trips are on /metrics; reclaim-on-drop proven on the plane driver #559.How it was proven
Latchkey
cli-0e13af0e-dba1-417d-985b-50d86d7a407dran on this head (447bac5, predev 76e1fd0 merged):-p busbar-kernel-audit -p busbar-kernel -p busbar -p xtask --all-targets -D warningspassed.busbar-kernel-audit: 7 passedbusbar-kernel: 2861 passedbusbar(bin and every integration target exceptledger_identity, which CI runs with the oracle clone): 1037 passedamend_journal_tests(2)a_record_names_the_node_that_sealed_it_in_its_digest_and_its_range_reada_subject_value_that_does_not_re_render_is_refused_in_a_sealed_bodya_signed_record_round_trips_through_its_journal_bodyhead_history_survives_a_restart_rebuilt_from_its_recordsevery_record_the_book_seals_names_this_nodeafter_a_restart_the_head_read_answers_with_the_tip_and_the_anchors_survivextask: 859 passed, 1 failed. The failure iscli::selftest_runs_every_registered_gates_red_proof, which reports "unproven gate(s): plane-purity, config-schema". This PR touches neither gate; its xtask change is theaudit_verifytable only. The same cell is red on FLIP-STREAMING: the streaming plane served through its door; busbar-voice deleted #503's board, and diagnostic jobcli-8d9dde57-b2be-4323-8e19-942b5a2537f8reproduced it on this head. It is left to CI's own run.Oracle verdict
Strict replay against golden/1.5.5 over the money, ledger, usage, billing and admin audit/verify cells, base predev 76e1fd0 against this head: