…ps are on /metrics; reclaim-on-drop proven on the plane driver
- EngineHostImpl, its constructors (engine_host, engine_host_value, engine_host_from_handle,
live_host_factory), live_standing/standing_over and transform_over_over move to
crate::plane::host_impl. clock_now_* read now_ms directly (the same arithmetic the slot did).
The vtable-backed methods (breaker admit/settle, metering, govern admit, approvals, identity
admission, card signing, the call log, the container gate) stay thin calls into plane_host's
*_over functions; no caller outside the HOT lane and the legacy plane crates remains, and they
leave with the HOT cut.
- /metrics: a door plane's egress walk trips its own busbar-kernel-breaker unit. The unit rides
the sealed Egress (Egress::cells, with the labels its cells are scraped under), the composition
root publishes each served door plane's generation (boot, and every apply) into App::door_cells,
and busbar_lane_state reads every materialized cell. Labels follow 1.5.5's convention
(v1.5.5 metrics.rs:214-217, :903-905), generalised: the plane states its scope (the section key
it serves), pool = "<scope>/<pool>" ("<scope>/<entry>" for a direct route), lane = the member's
entry name; the kernel renders the stated strings. The walk's counters (upstream attempts,
failures, breaker trips, failover, queued) carry the same pair, so gauge and counters join. No
label carries the walk's internal "<plane>\x1f<entry>" key. The plane serving the pools map
keeps 1.5.5's bare labels, byte for byte.
- A config apply keeps what a door plane's breaker learned (v1.5.5 main.rs:3095-3109): the prior
generation's cells are restored into the next unit by (pool, member name), never by entry
order; a removed member's cells go with it; boot starts fresh.
- The DispatchScope guarantee (spec Part 3 l.2397-2402: what a dispatch holds is reclaimed when it
ends or is dropped) is proven on the memory-ABI driver: a dispatch dropped mid-await releases
its admission (teller.rs Abandoned::drop -> exit: cell take + lease release) and closes its
egress (far_end.rs EgressFarEnd::drop -> settled: conns.close, probe, permit), synchronously.
Row 82: 19 (unchanged: no file leaves plane_host in 4a).
D2 step 4a, stacked on #554 (base
p6-d2-step3). No predev hop runs on this base. Scope is as approved: the 4a/4b split, re-scoped so nothing is re-typed.1. The kernel's EngineHost moves out of plane_host
crate::plane::host_impl:EngineHostImplengine_host,engine_host_value,engine_host_from_handle,live_host_factory)live_standing/standing_overtransform_over_overclock_now_*now readnow_msdirectly, with the same arithmetic the slot used.*_overfunctions. Four of those are newpub(crate)wrappers:breaker_settle_over,call_log_emit_over,meter_charge_over,approval_redeem_over.abi/hot, together withDispatchScope,SettleAdmission,EgressFaultDetailandGovAdmit.plane::host_impl(root, core-admin, router, auth, registry, test_support). plane_host keeps a transitional re-export for the HOT files and the legacy crates.2. Door-plane trips show on /metrics, under 1.5.5's label convention (the condition for deleting
store/planes.rs; ARCHITECT rulings 1(a)/(b)/2)busbar-kernel-breakerunit. That unit rides the sealedEgressasEgress::cells, aDoorBreakerholding the unit plus the labels its cells are scraped under. The root publishes each served door plane's generation intoApp::door_cells, at boot and on every apply.metrics.rs:214-217,:903-905)poolis the configured pool name (the model name for a direct route) andlaneis the member's configured name, and both are identical on the gauge and the counters so they join.DoorFacts::metric_scope).pool="<scope>/<pool>", or"<scope>/<entry>"for a direct route.lane= the entry name.WalkTelemetry::with_pools): upstream attempts, failures, breaker trips, failover and queued."<plane>\x1f<entry>"key.poolskeeps 1.5.5's bare labels, byte for byte (metric_scopeis empty there).main.rs:3095-3109restores every surviving lane's learned state "BY STABLE IDENTITY", and:1749-1752adds that a lane-set change never "discards breaker/latency knowledge". Here,carry_breaker_cellsrestores the prior generation's cells into the next unit:metrics::door_cells::tests(4)door_steps::tests::a_door_planes_pool_label_is_its_scope_and_its_configured_nametwo_door_planes_naming_the_same_entry_are_two_seriesan_apply_of_an_unchanged_section_keeps_a_tripped_member_trippedan_apply_that_reorders_the_entries_keeps_the_same_member_trippedserve::door_tests::a_door_planes_tripped_member_is_on_the_metrics_scrape: the decisions door's benched member reads 2 atpool="<section>/m",lane="m", andbusbar_upstream_attempts_totalcarries the identical pair. No control byte appears in the lane_state or upstream families.left: Some("planea\u{1f}fs") right: Some("tools/fs");left: ("planea\u{1f}fs","planeb\u{1f}fs") right: ("tools/fs","agents/fs"); the scrape test fails.3. Why DispatchScope can go: the guarantee is kept by the plane driver
Spec Part 3 l.2397-2402 requires that every host-side resource a dispatch takes is reclaimed when the dispatch ends or is dropped (disconnect, cancel, panic, parked at an await), synchronously on abort. The memory-ABI driver keeps this as follows (lines are on this branch):
crates/busbar-kernel/src/teller.rs:1119impl Drop for Abandonedrunsterminal(.., Abort::Kernel{ClientGone})and reachesexit: the hold leaves the cell at:1305(run.cell.take) and the leases go back at:1306(run.leases.release_all). The child-unit branch does the same at:1211-1212.crates/busbar-kernel/src/plane_driver/far_end.rs:1572impl Drop for EgressFarEndcallssettled(:687):conns.closeat:691release_probeatfar_end.rs:694drop(permit)atfar_end.rs:710host_verify.rs); it lapses onLEAD_MSThe proof is
crates/busbar-kernel/src/plane_driver/tests/reclaim_tests.rs:177,a_dispatch_dropped_mid_await_releases_its_admission_and_closes_its_egress.PlaneDriver::unit,run_unit_asyncandEgressFarEnd.Taken, connection closed.teller.rs:1306) removed, it fails: "the admission's lease went back to the gauge inside the drop, left: 1 right: 0".far_end.rs:691) removed, it fails: "the egress connection was closed inside the drop, left: 0 right: 1".Row 82: 19, unchanged; no file leaves plane_host in 4a.
Proof (Latchkey)
The one kernel failure is
root_key_spelling, already red on the base (the llm lane'sauth/inbound.rs).Oracle, metrics cells (base 398a7cb vs head, engine 4a7a7bba)
replay --baseline-version 1.5.5 --strict --id-filter '^(ops\.scrape\|metrics|neutrality\|metrics|hooks\|metrics|documented\|changelog\|spend-metrics|route\.failover\||crosscut\.traps\||llm\|[^|]*\|[^|]*\|request\|upstream_down)'61be31b0…a963on both sides).Follow-up stacked PR: the
busbar_bucket_tokensmodel0x1F leak, plus a class-wide /metrics label guard (ARCHITECT ruling: its own PR).