Skip to content

Law 0 root PR3b: composition pins become invariants over the linked rows; 1.5.5 bytes live in the oracle corpus - #1038

Merged
MattJackson merged 17 commits into
predevfrom
lane-law0-root-pins
Oct 15, 2026
Merged

MattJackson merged 17 commits into
predevfrom
lane-law0-root-pins

Conversation

@MattJackson

Copy link
Copy Markdown
Collaborator

DRAFT, stacked on #993, #1017 and #1020, which are merged into this branch. Per rule 19 it stays a draft until those land. The ledger was settled by hand (rule 13). Its own diff is commit cebd054.

What changes

Ledger (busbar, measured on this tree)

auth 25, export 13, instance:auth 9, instance:export 24, instance:secret 32, plane 514, transport 115. Every other law0 row equals its measure.

Left in place, and where each goes

Hits Where Why
~550 Files other open PRs edit (serve_tests, door_steps, plane_doctrine, mcp_stdio_serve, registry_cross_plane, admin_cross_plane/keys, capability_equality, cli_validate, …) Rule 20
127 plane_host_universal_purity.rs and single_plane_allowlist.txt Kernel-delete lane
~100 Single-plane suites and fixtures (qa_mcp_integrity, mcp_open_front_door, stdio/tool fixtures, tool_door_wire) P5, replaced by its blackbox cases
— qa_a2a.rs and agent_plane_wire.txt a2a lane, waiting on #787
9 transport_fold.txt Still read by transport_composed_over_consistency.rs, which #960 rewrites
1 transport_dropped_in_exchange.txt Its reader is edited by #961 and #824
5 law7 fixtures Per-plane sections and doors belong in each plane's blackbox cases
4 billing_plane_legs.txt Names crates the flips delete
2 auth_bindings.rs env keys The 1.5.5 migration bytes go to LAW0-MIG-OPERATOR-* cells after #1026

Nothing was run locally (fmt only). CI is the proof.

… auth instance

The composition root's shipped source stops naming instances (BUSBAR-1.6.0.md l.104-120,
l.172-182); every customer-visible byte stays v1.5.5's.

- The line carrier is the linked transport claim whose row opens its unit 0 on its first line
  (TransportFacts.lines, LinkedTransport.lines, root::serve::lines::line_carrier); two such claims
  refuse the boot. The session credential variable and the serve's sentences are spelled from the
  plane's and the carrier's keys (BUSBAR_<PLANE>_<CARRIER>_CREDENTIAL, as 1.5.5 printed them).
- The request wire the root listeners log and the admin/gauntlet arrival chains carry is the admin
  plane's declared claim transport (root::listener::REQUEST_WIRE).
- The operator credential's provider word is the manifest's operator row's linked-name
  ([package.metadata.busbar.operator-auth]); the row that states FACT_OPERATOR is checked against it.
- The `--list-plugins` header is v1.5.5's line as one constant (root::cli::LIST_PLUGINS_HEADER),
  proven to head the row format's columns.
- Test cfgs ride the linked auth axis; collision-only identifiers renamed; plane-naming prose
  reworded.
- kind-isolation: an export entry's frozen 1.5.x `streams: [` key is the export projection, not
  the plane (EXPORT_STREAMS_KEY, selftest pair); law0 rows lowered to the measure.
…auth instance

The root unit-test files no open non-draft PR touches (BUSBAR-1.6.0.md l.172-182: tests use
kind-neutral doubles; no golden pins of the default distribution, whose customer bytes the oracle
cells prove from the 1.5.5 binary).

- cli.rs: the two --help goldens (fixtures/cli_help.txt, cli_help_without_flag_rows.txt) become
  invariants over the linked rows: every linked row lands in its block in declaration order and
  the root's own text is all there; a plane compiled out takes its rows and leaves the root's
  Flags: block alone.
- auth_bindings.rs: the operator-word assertions read the root's words (default admin chain,
  identity providers, the hook-name word space, the migrations, the refusals naming the word)
  instead of pinning one distribution's spelling.
- connector.rs: the mint-needs RED holds every linked auth row's declared outbound needs to
  operator infrastructure, read off each row's Statement, instead of naming the plugin crate.
- connector_h2.rs: the need's scheme is the admin plane's declared request/response wire.
- linked_protocols: the absorbed event-stream set and the no-dialect paths without plane names.
- Identifiers and prose reworded across connector_h2, listener, listener_h2, plane_node,
  serve_framed, durability, kernel, linked, linked_auth, legacy, units_admin and src/tests.
- kind-isolation: law0 rows lowered to the measure; the busbar x hooks [[cell]] (now 0) struck.
…ort or sink

The root integration-test files no open non-draft PR touches (BUSBAR-1.6.0.md l.172-182; no golden
pins of the default distribution, whose customer bytes the oracle cells prove).

- method_coverage.rs: the protocol axis is the inventory's own `derived_from`, and every method of
  each protocol crosses every transport column it states in both roles (fixtures/
  method_coverage_axes.txt deleted); synthetic parse rows and prose name no protocol.
- body_chunk_bounds.rs: the frame ceiling is driven on every linked one-shot wire, read off the
  linked table (fixtures/transport_sessions.txt deleted).
- export_unknown_module_lists_what_links.rs: every module the refusal offers is one the build
  serves, asked of `--validate`; no sink list, no pinned line.
- export_settings_refusal_1_5_5.rs: every served sink's refusal of an undeclared settings key is
  rendered under its instance; the sinks' own words belong to their suites and the oracle.
- cli_validate.rs: the operator-credential fixture rides the linked auth axis.
- `admin_auth: [<operator>]` written as a block list (the flow form read as a plugin id).
- Prose reworded across money, boot-lines, scrape-shape, transport and openapi tests.
- kind-isolation: law0 rows lowered to the measure.
The unknown-exporter refusal and the sinks' settings refusals pinned 1.5.5 bytes. No oracle cell
holds the unknown-exporter line or four of the settings lines, so each survives as a fixture with
the verbatim 1.5.5 text, read by the test (the Rust source names no sink):

- fixtures/unknown_exporter_1_5_5.txt: a build serving every module 1.5.5 offered prints the line
  byte for byte; a build that does not serve one never offers it.
- fixtures/export_settings_refusals_1_5_5.json: the four settings lines, the zero-retention sentence
  (also oracle boot.refusal|BOOT-101|validate) and the second-scrape-instance line (also oracle
  boot.refusal|BOOT-102|validate, printed once), each held on every build that serves its sink.

law0 busbar x instance:export 25 -> 31 on this branch (the data's module names), still under
predev's 33.
…-help cites its oracle cells

The operator-word assertions pinned 1.5.5 bytes. No oracle cell holds the default admin chain's
word, the reserved hook-name set or the two operator refusals, so they survive as a fixture with
the verbatim 1.5.5 text (fixtures/operator_1_5_5.json), read by the tests (the Rust source names no
auth module): the root's operator word and principal, the whole hook-name word space, the migrated
words, and both refusals byte for byte. The --help golden's 1.5.5 bytes are the oracle golden cells
cli|--help and cli|-h; the without-flag-rows golden was a 1.6.0-only shape and stays an invariant.

law0 busbar x auth 45 -> 46 and x instance:auth 13 -> 15 on this branch (the data's module word),
still under predev's 49 and 24.
… the base, undoing the stale pre-#869 copies the first commit carried (the thread-local entropy pool #869 deleted stays deleted)
linked_axis_auths was used but never declared, so check-cfg refused the build. build.rs now
declares it with the other linked_axis_* cfgs (AUTH_AXIS, the same constant linked_gen reads),
and states two more off the same rows: linked_every_auth (every auths row enabled) and
linked_operator_auth (the operator-auth table's row enabled). The gates keep 1.5.5's meaning:
the declared-credentials suite needs a plugin serving each style (was auth-header +
auth-sigv4), so it rides linked_every_auth; the linked operator-credential suite needs the
operator row (was auth-admin-tokens), so it rides linked_operator_auth.

RED: tests/linked_auth_cfgs.rs holds each cfg to the manifest rows and the build's enabled
features.
…d from the manifest (check-cfg)

cli_validate's B1 fixture configures the operator credential's module, so it needs that row,
not any auth row; and linked_axis_auths was never declared, a certain check-cfg red. build.rs
carries #993's hunk byte-identical (linked_axis_auths declared beside the other axis cfgs;
linked_every_auth; linked_operator_auth off the operator-auth table's row) so whichever lands
second merges cleanly.
…manifest (check-cfg)

linked_axis_auths was never declared (check-cfg red), and any-auth-row was the wrong gate: the
cell asserts an outbound need, which only the mint plugin's row declares, so a build linking
one auth row would fail it. It rides linked_every_auth (every auths row linked, so the mint row
is among them), as the predev test ran on the always-linked plugin. build.rs carries #993's
hunk byte-identical so whichever lands second merges cleanly.
…aw0-root-pins

# Conflicts:
#	qa/kind-isolation.toml
…law0-root-pins

# Conflicts:
#	qa/kind-isolation.toml
…; 1.5.5 bytes live in the oracle corpus

Stacked on #993, #1017 and #1020 (merged in; the ledger settled by hand, rule 13).

- registry.rs: the sealed claim order (sealed_order.txt), the per-plane claim counts
  (claims_per_plane.txt), the 45/143/80/63/23/24/16 counts and the keyed transport list are
  golden pins of the default distribution; each is now an invariant over the linked rows: the
  registry holds exactly the folded wires and the linked planes, every plane's claims are its
  declared claims, the overlaps are exactly the pairs the seal resolves and the path classes
  partition them, the sealed walk is every claim once, most specific first, ties in declaration
  order, and the same under reversed input; the fold registers the table's entries in order with
  each entry's claims right after it. Planted rows and claims carry planted names.
- The 1.5.5 byte fixtures (operator words and lines, export settings refusals, the unknown
  exporter line) move into the oracle corpus, testing/shadow-oracle/fixtures/law0, read by path;
  the ones #1026's cells replace are deleted when it lands.
- The session-transport ban list moves to xtask/fixtures (the gates' vocabulary).
- migration_corpus reads the operator module off the manifest's operator row
  (common::operator_module) and gates on linked_operator_auth.
- Plane-naming prose in root tests is reworded to kinds.

Ledger (busbar, measured): auth 25, export 13, instance:auth 9, instance:export 24,
instance:secret 32, plane 514, transport 115.
MattJackson added a commit that referenced this pull request Oct 15, 2026
… from the gates log of 80d5f03

- hooks parity (#989): the v1.5.5 hook corpus moves out of the kernel's source into
  testing/hook-parity/v1.5.5-hook-corpus.tsv, read by the count test; its origins are `proxy`/`core`
  and the constants PROXY_ORIGIN/CORE_ORIGIN (gate hook-parity-count reads them). The listing named
  plane, hook and export instances in a neutral crate: kernel x plane +84, x hooks +18, and the
  instance-noun-neutrality llm census.
- config-schema: a section a plane owns beside its declaring one is the endpoint DOOR only for the
  plane the kernel names its owner (EndpointSection::OWNER); any other is RAW, carried by
  DeployCfg::plane_raw, as the pre-pass lifts it since #966 (a2a's agent_push, #1001). Selftest: two
  doors under the owner stay RED; a non-owner's beside section is carried.
- reachability: serve_datagram.rs is the module `serve_datagram`, named for its file like serve_framed.
- teller-steps / libtest_path: door cells are read off the linked rows on the plane-door axis, the
  rows build.rs mounts since #1006 deleted [package.metadata.busbar.door-cells].
- plane-purity dialect / neutral-no-dialect: LegacyLaneKeys flattens ProviderLaneCaps rather than
  spelling its fields (#957).
- structure-lint: stand_in.rs's inline tests move to tests/stand_in_tests.rs (#1010).
- config-scope: auth/mod.rs's test-idp-module arm is braced like its sibling, so the scanner sees
  the `new` construction in the arm after it.
- instance-noun-neutrality mcp: the a2a client cell's rationale (and its capability-equality row)
  names no other plane.
- hold-escapes: host_disk.rs::start (#864's disk lane job loop) is a reviewed known site.
- hook-parity-count: the TODO's M4 row reads 181.
- design-bindings: PB-50's config.migrate family is 158 cells (#1026 added two).
- kind-isolation law0: busbar auth 24, instance:auth 10, instance:export 25, plane 525, transport 97
  are the merged tree's measure (#1038's figures were T+O-B over a virtual base carrying #993, #1017,
  #1020, which w2 does not carry); busbar-contract export 1 -> 0 and transport 226 -> 225 (slack).
@MattJackson
MattJackson merged commit 6a84826 into predev Oct 15, 2026
1 check was pending
@MattJackson
MattJackson deleted the lane-law0-root-pins branch October 15, 2026 13:54
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