Repository navigation
XL-5 model-work: v1 consumer census and claim conservation wall on the exact cut's vocabulary - #9675
Merged
Merged
Conversation
…ll, on the exact cut's own vocabulary Two carriers, both refusing today by construction, with fixtures that make every refusal executable now rather than at release: - gunbc.v1_consumer_census: consumer x consumed-authority relations in gunbc.replacement_cut BoundaryConsumer / ConsumerDisposition (no minted disposition vocabulary), each row carrying its medium, subject, and the producer + command + revision that found it. Population is honestly PopulationMeasuredLowerBound; the admission gate reads completeness, so the bankruptcy transaction refuses. Four hand-Rust shim consumers the exact vocabulary cannot cite are carried as the projection's own refusal shape, never as fabricated DeclarationRefs. - gunbc.v1_witness_census: one disposition per pre-cutover claim identity (Retired / ReplacedByStronger with an executed red / StillRequired), with floor standing as a SEPARATE axis (v2.workflow.required_floor RequiredFloorDisposition) per ruling, projecting onto EvidenceDisposition. Five-direction identity-join conservation wall; live roster declared Unmeasured until a floor run supplies it. 19 witnesses PASS by execution (claim_batch, remote build at f1f9dd8). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U7GG6M9N2p7dmqHn4tFtii
…amespace row, derived citability, and the join on DeclarationRef - gunbc.rust_item_host_observation: the four hand-Rust source prefixes move here from the stage0 scaffold (importing them there would have closed the cycle scaffold -> seed_growth_admission -> this module), and the tooling tree gets its namespace row: `v1_compiled.`, the package the shim crates assemble into -- a crate-named root outside the .dag index like `v1_compiler`, deliberately NOT `tools.` because the citation gate treats a .dag-declared root as in-index. The projection now takes its table as a parameter (`_in` forms); the bare forms pass the live rows. - gunbc.v1_consumer_census: shim citability is DERIVED by running item_declaration_ref_in over the four items against a supplied table. Under the live table all four are BoundaryConsumer rows and the uncitable list is empty by construction; with the tooling row removed all four return to V1UncitableConsumer -- executed as the falsifier. Population stays LowerBound for its three other named holes. - gunbc.v1_witness_census: the roster joins on DeclarationRef via declaration_ref_eq, not on a rendered module::decl string (XL-1's hollow-alias finding). - fixtures: every planted DeclarationRef is now a self-citation of a real declaration -- the required floor's declarations phase refused the first push with CITED-MODULE-ABSENT on invented fixture modules; a plant may be absent from a roster, never from the tree. - list_snoc_item / list_append called with their declared labels. Executed (claim_batch on BuildBuddy): 11 + 10 census witnesses, 6 rust_item_host_observation witnesses including the new tooling projection, 46 stage0_rust_source_lifecycle_scaffold, 7 stage0_rust_product_reachability. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U7GG6M9N2p7dmqHn4tFtii
…ion rows, blast radius 0 The witness floor was green on the previous push (planned=executed=2829, failed=0); the namespace-wave-admission phase refused 6 unadjudicated binding deltas -- every spelling of the four rust_source_prefix_* constants now binds to gunbc.rust_item_host_observation instead of the scaffold. The rows name each exact (module, enclosing declaration, leaf) and go stale by the trigger the roster already carries: the moment #9675 merges. cargo test -p v1-compiler --test namespace_wave_admission: 33 passed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U7GG6M9N2p7dmqHn4tFtii
…d false by execution - DiscoveryProducer.source_revision is std.types CommitSha and it gains source_tree: v2.workflow.floor_discovery FloorDiscoveryTreeId, built from the tree of the measured revision (f1f9dd8 -> d806b7d). A String revision is a spelling any later tree can wear; the tree is what the floor keys a discovery on, so after #9676 the population reads as an observation of an OLDER tree until it is rebound -- a visible typed edit rather than a stale string. - consumer_census_live_gate_refuses_even_with_every_successor_realized: v1_bankruptcy_transaction_admitted over the live population is FALSE, including with every claimed successor handed to the gate as realized. 22 witnesses PASS (claim_batch on BuildBuddy). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U7GG6M9N2p7dmqHn4tFtii
# Conflicts: # src/v1/stage0/src/namespace_wave_admission.rs
# Conflicts: # src/v1/stage0/src/namespace_wave_admission.rs
…r projection eliminates the two new floor standings Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U7GG6M9N2p7dmqHn4tFtii
…ority (24fc4a3); the seven producers agree with the prior measurement Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U7GG6M9N2p7dmqHn4tFtii
…elf_host_ seed prefix, and the tooling-tree projection witness moves out of the main-owned module Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U7GG6M9N2p7dmqHn4tFtii
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Aug 30, 2026
…ix relocation rows by their fired trigger Main's six rust-source-prefix-relocation rows dissolved the moment #9675 merged — every run from here carries the relocation on both sides, so they report stale and refuse every PR, the same shape as the four prior shrinks. Their doc is kept verbatim, the shrink recorded as the fifth, and this branch's two RequiredCiLane rows (still matching live deltas until #9698 merges) renumbered as the sixth population. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GpYEk9gSYmMkwL1489D79U
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Aug 30, 2026
…d trigger The rows carry DISSOLVE-ON: #9675 merging. #9675 merged at 2026-08-30T03:32:05Z, so base and head both carry the relocation and all six report stale. Retired by their own trigger and by nothing else. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qo8Q3z4MadsCLJZG8FmnXD
This was referenced Aug 30, 2026
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.
XL-5's sequencing is census → disposition → delete, and until the XL-N gate releases this lane is model-work only. Schema landed; XL-N gate not satisfied. No Symbol representation pinned. This PR is the census half: two
.dagcarriers plus fixtures, every assertion executed, no transport implemented, no collision-zone file touched. Merging marks SchemaLanded only (XL-N Manager ruling): the live consumer population is a lower bound with blocking rows, the live claim roster is unmeasured, andv1_bankruptcy_transaction_admittedover the live population is asserted FALSE by an executing witness (consumer_census_live_gate_refuses_even_with_every_successor_realized) — even when every successor the census claims is handed to the gate as realized. EveryDiscoveryProducercarries a typedCommitShaandFloorDiscoveryTreeId, so the population reads as an observation of the tree it was measured on, not as a current fact.Live measurement binding (post-merge, per the RELEASED ruling).
v1_census_revision/v1_census_treeingunbc.v1_consumer_censusare bound to0bdb8dc3a22cd4cb7736b7e83d4df6c132051259/ tree168f313cdd9562ff01334c3ac2d154f4c5db6d96— the merge of this branch with main including #9676 (a1a40a0) and the Symbol authority (24fc4a3). The seven producers were re-run on that head: identical rows; the only count that moved since the first measurement is the.dagargv sweep (85 → 88 files; still un-joined, still hole (1) ofmissing_basis).floor_standing_is_fixture_membernow eliminates the twoRequiredFloorDispositionarms #9676 added (DeclinedOutsideGateClosure,DeclinedDiscoveryExcluded). Focused rerun after the merges, remote: consumer census 12/12, witness census 10/10, rust_item_host_observation 22/22, stage0_rust_product_reachability 7/7, stage0_rust_source_lifecycle_scaffold 46/46 PASS.Gate enrollment (by identity, not by CI colour). The witness modules are
test.claim.self_host_v1_consumer_census_witness_test(13 test fns) andtest.claim.self_host_v1_witness_census_witness_test(10) — named under theself_host_seed ofv2.workflow.required_floor required_gate_prefixes, because the floor prepares by module name and the earliertest.claim.v1_*names weredeclined_outside_gate_closure(0 executed, run 33288728871). The one host-observation falsifier I had added to the main-ownedrust_item_host_observation_witness_testmoved into the consumer-census module asconsumer_census_tooling_tree_projects_to_the_assembled_package_namespace; that main module is now untouched. Run 33289815744 (c59f675)required-floor-dispositionartifact: 23 rows planned/passed, 0 declined, old names absent; summary planned 2855 → 2878.What lands
gunbc.v1_consumer_census— the population that must be EMPTY before the bankruptcy transaction runs.gunbc.replacement_cutBoundaryConsumerrelations (consumer × consumed-authority,DeclarationRefboth sides) carrying the authority's ownConsumerDisposition. No minted disposition vocabulary: replaced-by-native-v2 =ReplacedByY; retired-with-deleted-subject =Retire; still-required-and-blocking =RetainSameContract { coverage: CoverageOpen }— exactly whatadmit_replacement_cut_planrefuses asUncoveredSurvivingConsumer, so the blocking column here and the refusal there cannot disagree. This is the remeasurementgunbc.interpreter_replacement_cutregistered asRegisteredCutRemeasureRequired; that registration stays until the population is Complete.DiscoveryProducerwith instrument + command + revision. A row with no producer has no constructor.v1_shim_partitionrunsitem_declaration_ref_inover the four items against a supplied namespace table. Under the live table all four areBoundaryConsumerrows (v1_compiled.<crate>.lib→v1_compiler.v1_rt) and the uncitable list is empty by construction; with the tooling row removed all four return toV1UncitableConsumer. Both halves are executed (consumer_census_tooling_row_decides_shim_citability).PopulationMeasuredLowerBoundwith its three remaining holes named (unclassified.dagargv rows, the deletion-set blind spot, unmeasured reachability); the admission gate reads completeness, so the transaction refuses today by construction.v1_boundary_census()projects into the exact carrier'sBoundaryCensus.gunbc.rust_item_host_observation— the namespace row (XL-N Manager decision):dag/gunbc/instruments/getsnamespace_prefix: "v1_compiled."— the packagetools.self_host_curated_seed_linked_harnessassembles the shim crates into, so the root is the crate name by the same rule that givessrc/v1/stage0/src/thev1_compilerroot. Deliberately nottools.: the citation gate (citation_is_outside_index) treats a.dag-declared root as in-index and would refuse every Rust citation under it.rust_source_prefix_*constants move here from the stage0 scaffold (importing them the other way closes the cycle scaffold → seed_growth_admission → this module); the scaffold andstage0_rust_product_reachabilityimport them from here. The projection takes its table as a parameter (rust_module_path_for_repo_path_in,item_declaration_ref_in); the bare forms pass the live rows.gunbc.v1_witness_census— the wall that stops the cutover greening by losing subjects.ClaimCutoverDispositionper pre-cutover claim:Retired { deleted_subject, evidence }/ReplacedByStronger { replacement, covering_relation, executed_red }/StillRequired { surviving_subject, native_identity }. No undecided arm.v2.workflow.required_floor RequiredFloorDisposition, imported not re-spelled. Fixture/support modules are refused by structural relation (DeclinedFixtureMember), never dispositioned.DeclarationRef(declaration_ref_eq), not a renderedmodule::declstring — XL-1's producer keys onidentity_ref: DeclarationRef, and two spellings on the join key is the hollow-alias class.v1_native_roster()is the derivedList<DeclarationRef>XL-1 joins back.EvidenceDispositionso the exact cut's evidence rows are derived. Five-direction identity-join conservation: lost subject, fabricated subject, merged native target, self-referential red control, fixture member dispositioned. Live roster declaredClaimRosterUnmeasured— its own witness goes red if anyone types a roster in.Evidence (all
claim_batch, built and run on BuildBuddy)test.claim.v1_consumer_census_witness_test— 11 PASStest.claim.v1_witness_census_witness_test— 10 PASStest.claim.rust_item_host_observation_witness_test— 6 PASS incl. the newthe_tooling_tree_projects_to_the_assembled_package_namespacetest.claim.stage0_rust_source_lifecycle_scaffold_witness_test— 46 PASS;stage0_rust_product_reachability_witness_test— 7 PASS (the relocation)Every refusal is asserted as a PAIR (green on the clean fixture, red on the same fixture with one planted violation). All 24 live
decl_refcitations grep-verified against theirmoduleheaders.Two red pushes on the required floor, both real and both fixed: (2) the namespace-wave-admission phase refused six
TargetChangedbinding deltas — the wall seeing the prefix-constant relocation; adjudicated by six exact rows inNAMESPACE_TRANSITION_ADMISSIONS(blast radius 0 each), which go stale by the roster's own rule the moment this merges. (1)CITED-MODULE-ABSENT— the declarations phase resolves everydecl_refin the corpus, and the fixtures cited invented modules. Every planted ref is now a self-citation of a real declaration: a plant may be absent from a roster, never from the tree.Measured numbers (producer named per row in the carrier, at
f1f9dd8a077)16
v1-compilerbin targets · 7 generated stage0 crates (+stage0_core, tracked but unenrolled — an open residue row this transaction discharges) · 59src/v1/**/*.dag· 151Generated bymirrors · 4 non-src/v1Rust files reachingv1_rt· 4 TSV receipts · 3 workflows invoking v1 bins. Blocking relations: 13 of 21 members (9 static + 4 shims); Retired 5; Replaced 4 (the TSVs → the conservation gate).Representation-agnostic w.r.t. Symbol
No carrier, fixture, or witness in this PR names
v2.std.node.Symbol, a Rust spelling for it, or asserts on emitted bytes:grep -nw Symbolover the six new files and the two touched authorities returns nothing. Identities arestd.decl_ref DeclarationRefandNonEmptyStr; the live standing depends on no target representation.Not done here, on purpose
ClaimRosterUnmeasureduntil XL-1's producer (effect_demand_floor_join_live_default) is green and its digest re-derived here.🤖 Generated with Claude Code
https://claude.ai/code/session_01U7GG6M9N2p7dmqHn4tFtii