Repository navigation
kernel-scope: key liveness is the egress gate's for every plane; one scope lattice, one admin matrix; unconsulted policy lookup and unmounted helpers deleted (Q128) - #608
Conversation
… no per-plane switch; one scope lattice, one admin matrix; the unconsulted policy lookup and the unmounted refusal helpers are deleted (Q128) HIGH: EgressSubject::REQUIRE_LIVE_KEY let a plane switch off the caller-key liveness check, and one plane shipped with it off, so a key past its own expires_at still had busbar's outbound credential spent for it there while its sibling refused it (THE DESIGN s1: every plane gets every capability). The const is deleted and authorise checks liveness unconditionally. RED test: every_plane_gets_the_liveness_check_and_none_can_switch_it_off (replaces a_plane_whose_policy_omits_liveness_does_not_have_it_imposed, which asserted the opt-out). LOWs: Scope/Grants are re-exported from busbar_contract::authz, their one home, and the lattice tests move there with them. The kernel admin gate's required_scope calls admin_required_scope, so the admin matrix has one enforced copy. PolicyView/required_scope and the root's ScopePolicy (built empty, read by nothing) are deleted, as are the never-mounted EgressRefusal::audit_resource/caller. Stale prose corrected; no plane's grant kinds named in the kernel crate.
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), 93 shipped edge instance(s) over 30 class(es), 93 declaration(s); 56 '[[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 |
3 finding(s), 35 test edge instance(s) over 21 class(es), 35 declaration(s); 20 '[[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 |
11 hit(s) off the [[law0]] ceilings, 5 finding(s) over 14 neutral crate(s): law0-rise busbar × instance:secret 37 hit(s) against a ceiling of 35: this landing grew a neutral crate's instance vocabular |
| kind-isolation-ship | kind-isolation:deps |
10 finding(s) over 93 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 |
10 finding(s) over 35 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 |
11 hit(s) off the [[law0]] ceilings, 5 finding(s) over 14 neutral crate(s): law0-rise busbar × instance:secret 37 hit(s) against a ceiling of 35: this landing grew a neutral crate's instance vocabular |
| kind-isolation-ship | kind-isolation:faces |
2 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 |
Denied because (2)
- shard 1/4: armed red: gate:kind-isolation row kind-isolation:law0: a ledger row this candidate arms is red at its own tree (Law 9: arm at today's number): 11 hit(s) off the [[law0]] ceilings, 5 finding(s) over 14 neutral crate(s): law0-rise busbar × instance:secret 37 hit(s) against a ceiling of 35:
- shard 1/4: armed red: gate:kind-isolation-ship row kind-isolation:law0: a ledger row this candidate arms is red at its own tree (Law 9: arm at today's number): 11 hit(s) off the [[law0]] ceilings, 5 finding(s) over 14 neutral crate(s): law0-rise busbar × instance:secret 37 hit(s) against a ceiling o
Judged against base 17b55f973: 0 new red, 0 worse, 3 standing (excused).
tests passed: 24391, failed: 0. Run: https://github.com/GetBusbar/busbar/actions/runs/38096889359 . Artifact verdict-9c49c9d909847a2f4590840a5f7bb14fc13c2635 (failures.json, junit.xml, raw.log; 90 days).
…8-kernel-scope
…-> 3; Q128 deletes the per-plane liveness switch's mcp_server/mcp_tool docs and its MCP-plane test, and the slack row was the law0 figure's 18 -> 19
|
RULING (architect, Law 9, docs/design/BUSBAR-1.6.0.md l.2082-2097: "pins its ceiling at TODAY'S MEASURED VALUE and refuses every rise ... The drain runs behind it, ratcheting the ceiling down"): kind-isolation is judged PER CELL, no-worse-than-base. A PR may not raise any cell above its base; a cell it lowers takes the new, lower ceiling. Lowering or striking one [[law0]] row does NOT arm the whole row, and a PR is NOT required to drain predev's unrelated standing over-ceiling cells. Those are predev's own reds, owned by kind-isolation:law0-base (#747) and drained by their own lanes. No ceiling rises. If the engine's armed-red rule still judges the whole row, that is an engine defect being fixed in busbar-release now; this PR proceeds on its own cells. |
|
Claim released by busbar-release: the |
|
Re-run by busbar-release: the engine pin ENGINE_REF 937eae641 now contains busbar-release 5a1380d, which the owner question this PR was held on names; the failed jobs of 9c49c9d are re-run and the hold is lifted. |
Pull Request is not mergeable
Brings predev 86771f6 (#671 loader-pl1-a, #608 kernel-scope, #790). Conflicts: - crates/busbar-a2a/src/a2a/creds.rs: stays deleted with the crate. Predev's change struck the engine's REQUIRE_LIVE_KEY (#608: key liveness is the gate's for every plane); busbar-plane-a2a has no EgressSubject impl, so nothing carries it. - plugin-loader conn_services.rs: predev's request path (the request taken out of the map, the open run with the connector's lock let go) carrying this branch's member-keyed binding, the plugin's waiver, the per-request handle and its CredentialUnavailable refusal; the unused RandomIn import is dropped with #671's random service. - conn_services_tests.rs: the Scripted double keeps predev's auth and lock probe beside this branch's member_auth; auth_of answers the member binding, else predev's; this branch's four-argument request helper is whole_request_with, beside predev's whole_request. - qa/kind-isolation.toml, busbar-plugin-loader x instance:secret: predev's row kept (111 -> 110, #671 drained the random service's extern C fn), with this PR's extern-ABI scanner fix re-applied: 25, as measured on #787's tree, the extern C hit #671 removed being one the fix no longer counts.
Q128 audit ledger, scope
crates/busbar-kernel-scope/src: closes the round-2 HIGH and the six LOWs.HIGH: key liveness is the egress gate's, for every plane, and no plane can switch it off (THE DESIGN §1: every plane gets every capability).
EgressSubject::REQUIRE_LIVE_KEYlet a plane opt out of the caller-key liveness check, and one plane shipped with it off.expires_atstill had busbar's outbound credential spent for it, while the sibling plane refused it. Inbound verify does not check a key's ownexpires_at.authoriserefuses a tombstoned, disabled or expired key unconditionally.every_plane_gets_the_liveness_check_and_none_can_switch_it_off: RED on base code with the subject opting out, green here. It replacesa_plane_whose_policy_omits_liveness_does_not_have_it_imposed, which asserted the opt-out.LOWs.
Scope/Grantsare re-exported frombusbar_contract::authz. The kernel-scope copy is deleted, and its bit-layout, chain and narrowing tests move tobusbar-contract/src/tests/authz_tests.rs. kernel-identity's admin.rs still holds a third spelling; that is the kernel-identity scope's.required_scopecallsadmin_required_scope.PolicyView/required_scope, and the root'sScopePolicy, which was built empty and read by nothing. The tests that pinned them go with them, and the assembly test drops itsscope_policy.is_empty()assertion.EgressRefusal::audit_resource/caller. The kernel chain test now spells its resource inline.Proof (Latchkey cli-6f674c20, cli-a72462c9, cli-2d05afd1, cli-93f58fa0):
-D warningsand fmt are clean.