Repository navigation
v1 census close (C): the Cargo manifest medium as a relation keyed on the package graph, minted renderers joined to the produced seed-link population - #11023
Conversation
…ding the item scan, not listed by hand gunbc.rust_item_host_observation gains observe_rust_references / observe_current_rust_references: fold the existing item scan over every hand-Rust file (outside a caller-supplied deletion-set prefix) whose text names one of the caller's tokens, attribute each token-carrying line to the innermost enclosing item, and carry the DeclarationRef projection on the row. A file-level line lands on the file's own RustModule item; a line inside an unnamed macro block is a located unattributed row; an unclaimed tree refuses at the projection with its path. Files naming no token are not scanned. The HEAD-sources plumbing both live producers share is one helper (head_rust_sources) selected by predicate. gunbc.v1_consumer_census consumes it: v1_shim_items (four hand-named crate roots, a measurement copied from the tree) is gone; v1_consumer_population_for takes the observation, a host refusal is PopulationUnmeasured, unattributed lines join the uncitable column, and the token joins back to the hunted authority (v1_rt -> v1_compiler.v1_rt, v1_interpreter -> v1_compiler.v1_interpreter) through v1_reference_authorities. Population state stays PopulationMeasuredLowerBound. Witnesses: six producer arms on planted sources in rust_item_host_observation_witness_test (mutation control executed: dropping the file-level arm reds two); the census's tooling-row falsifier now folds planted sources through the producer; the four live-population witnesses moved to self_host_v1_consumer_census_live_witness_test.dag with a gunbc.ci_layer_roots exclusion row, because the population now reaches git and the hermetic envelope refuses it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
… the package graph, with minted renderers joined to the produced seed-link population gunbc.v1_consumer_census gains the Cargo manifest relation: CargoPathDependency rows keyed on gunbc.stage0_partition_package_graph identities. Partition-internal edges and the host-shell edge are DERIVED from the graph's own functions; the hand tests manifest and the minted manifests (emit_copy_qualification_fixture_gen shard_manifest_text, self_host_curated_seed_linked _harness cssl_v1_compiled_cargo_deps_block, self_host_logic_behavioral_transport slb_cargo_toml, cssl_seed_linked_closure_assembly's stale-red control) are authored rows, each joined to a SeedLinkage (NotASeedEdge | SeedLinkedIntoHandRust | SeedLinkedIntoEmittedCode | SeedBesideEmittedCodeAsOracle). The seed edges become CargoManifestDependency consumer rows. The Rust renderers are joined in both directions against a PRODUCED population: (B)'s observe_rust_references folded UNDER src/v1 with the seed's package name spelled as a Rust literal (v1_seed_link_tokens). A produced site with no row is an Undecided consumer that blocks; a rostered renderer the tree no longer carries is stale and excluded; the behavioral receipt's rlib --extern oracle (an impl method, uncitable) is rostered by item key under a new medium, RustcExternLink, with the oracle linkage. probe_manifest is deliberately not a row: #10988 removes the edge it minted and the table is authored to that shape; on a pre-#10988 tree the join reports it undisposed, which is that tree's true state. Why not v2.workflow.rust_crate_partition / gunbc.stage0_partition_package_graph: the graph is inside the stage0 compile closure and emitted into the seed; the relation's names are the graph's (imported), the relation itself is the census's. gunbc.rust_item_host_observation: observe_current_rust_references_under (the dual selection), and a comment line is not a reference (a receipt naming a token yields no row). Census after this step: v1_blocking_consumer_count = 42, members 53, PopulationMeasuredLowerBound. Witnesses: five hermetic arms on planted seed-link sources (clean join, unrostered site blocks, stale renderer excluded, unrostered uncitable + comment-not-a-site, relation keys on the graph); one live arm; comment-skip arm in the host-observation witness. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
The three live-population census witnesses leaving the hermetic floor is a DESIGN 4b(3) rung drop, not just an exclusion row: gunbc.rung_drop v1_consumer_census_live_population_off_the_merge_path (previous MechanicallyPreventable, temporary Mitigatable, ReplacementStaged on the produced observation, population = the four live fns, trigger = a merge-blocking step executing a witness that reads v1_consumer_population() against the live tree). The exclusion row names the drop; neither retires the other. path_has_prefix is deleted in favor of starts_with. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
# Conflicts: # dag/gunbc/ci/ci_layer_roots.dag # dag/gunbc/rung_drop/roster.dag # dag/gunbc/rust_item_host_observation.dag
# Conflicts: # dag/gunbc/rung_drop/roster.dag
…for what the rows carry (reviews 63443, 63432) v1_blocking_consumer_count_of / v1_consumer_member_count_of / v1_consumers_of / v1_uncitable_consumers_of take one ConsumerPopulation; the zero-argument instrument forms read the tree exactly once. The live witnesses bind the population once per body (the wet file: 29s -> 6.7s). RustUseEdge is renamed RustSourceReference: the produced population attributes any token-carrying line, not only use edges. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
# Conflicts: # dag/test/claim/self_host_v1_consumer_census_live_witness_test.dag
…ve the seed-link tokens from the package name's authority (reviews 63432, 63450)
- rust_line_is_comment is gone; the reference producer skips exactly the lines
gunbc.rust_item_scan line_is_attribute_or_comment skips (now exported), and
the prose says what that covers: leading comments and attributes, not
trailing or block comments -- those are counted and refuse loudly as
undisposed sites; a witness pins the trailing case.
- UncitableSeedLinkSite { item_key, detail } replaces the positional pair and
the list_first_or / list_last_or accessors.
- v1_seed_link_tokens is derived by concat over stage0_host_shell_package_name()
so the produced side and the disposition side key on one value; the witness
no longer carries the literal either.
- RustUseEdge -> RustSourceReference (from B).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
|
Addressed reviews 63432 and 63450: (1) |
…om an unmeasured population (review 63464) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
# Conflicts: # dag/test/claim/self_host_v1_consumer_census_witness_test.dag
…rrowing the first row (review 63476) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
# Conflicts: # dag/gunbc/v1/v1_consumer_census.dag # dag/test/claim/self_host_v1_consumer_census_witness_test.dag
…oster (review 63478) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
|
Addressed review 63478: the drop row's population now names all five live fns (the seed-link join witness added); the exclusion row and the live witness file name the roster ( |
… to B's copy) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
# Conflicts: # dag/gunbc/rung_drop/v1_consumer_census_live_population_off_the_merge_path.dag
…ow cannot read refuses the whole read (reviews 63508, 63507) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
|
Addressed review 63507 (on B, merged forward here): a listed path that |
…ocessExit entry (review 63537) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
…he single-medium live entries are deleted as unconsumed Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
|
Addressed review 63538: |
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
…ledger regenerated (review 63684) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
|
Addressed review 63684: (1) stale rows ( |
…n 34579780327: git.Inspect.HeadCommit has no mock case) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
… equality (review 63723) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
…ft claim (review 63722 note) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
… (review 63745) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
# Conflicts: # dag/test/claim/self_host_v1_consumer_census_live_witness_test.dag
…oute cannot land, and a mocked HEAD would fabricate the liveness it asserts Runs 34589756974 / 34589514940 refused the four live identities as changed_witness_planned_without_terminal_verdict: the floor plans every witness the diff touches and a route-gap enrolment is exactly a witness with no route to a verdict. Publishing a mock for git.Inspect.HeadCommit only moves the refusal to ListTreePathsAtRevision, ShowTree and Show, and a whole mocked chain is a fixture tree -- which the hermetic planted-source witnesses already exercise -- asserting liveness over a constant. So the live file, its route-gap chunk, its bin_wet rows and its exclusion row are deleted; the two assertions that were on the floor at main are the drop row's population, the ledger is regenerated, and the operator instrument remains the live consumer. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
# Conflicts: # dag/gunbc/ci/ci_layer_roots.dag # dag/gunbc/rung_drop/v1_consumer_census_live_population_off_the_merge_path.dag # dag/test/claim/self_host_v1_consumer_census_live_witness_test.dag # dag/test/claim/self_host_v1_consumer_census_witness_test.dag # docs/design-rung-drops.md # src/v2/workflow/floor_route_gap.dag
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
|
Same repair as #11018, merged forward (live witness file deleted; drop population re-declared; ledger regenerated), plus review 63745's alias deletion. |
…view 63775) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
# Conflicts: # dag/gunbc/rung_drop/roster.dag # dag/gunbc/v1/v1_consumer_census.dag # dag/test/claim/self_host_v1_consumer_census_witness_test.dag # docs/design-rung-drops.md
…nd dag-argv rows; the .dag renderers are cited at their real tools.* modules Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
…d v1_claimed_successors import (review 63815) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
…en obligations (review 63834) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
…authority, the census grain One uncitable item naming two known v1 authorities dedup'd to one row on item_key + refusal_detail, an undercount in the fail-open direction. V1UncitableConsumer gains consumed_old_authority (a coproduct: a known DeclarationRef, or the unknown token), v1_uncitable_row_key keys on it, and a planted control (one item naming v1_rt and v1_interpreter keeps two rows in both columns) sits beside the two-lines-one-authority control. Mutation control executed: the old key reds the new witness. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
|
Landing-hold repair: |
…ce (review 63990) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
|
Addressed review 63990: |
…ved rather than resolved #11023 and the 19:00-20:20 landings put another rung-drop row on main, so the two conflicts were the tracked roster and the document it generates -- two lanes each appending one row. THE ROSTER KEEPS BOTH, main's first because it landed first, and the order matters: gunbc.design_ledgers renders the ledger by folding this list, so the list IS the document's order. Taking either side alone would have deleted a landed drop declaration -- the same both-sides property as the failure-mode row conflict earlier tonight, and the same reason a side-take is wrong on an append. THE PROJECTION IS REGENERATED FROM THE MERGED AUTHORITIES, NOT RESOLVED BY HAND OR LEFT TO HEAL. docs/design-rung-drops.md is generated from gunbc.rung_drop; a hand-merge of its text would be a second authoring of a derived file, and leaving it to heal would re-author it after the push, MOVE THE HEAD, and spend the approval this PR already holds. So: resolve the roster, regenerate, verify, then commit. Verified by content rather than by the regen's exit code -- both rows are present in the output (mine and the v1 consumer census one), and the projection diff is six insertions with nothing displaced. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RPVTQBSK9E8j3UDQGPZN1f
What
Close (C) of the v1 consumer-census completeness program. Stacked on #11018 (B) — it consumes B's producer; the diff against B is the last commit. No new production module.
The relation (
gunbc.v1_consumer_census):CargoPathDependencyrows keyed ongunbc.stage0_partition_package_graphidentities.stage0_partition_package_dependency_names,stage0_host_shell_dependency_names) — never restated.src/v1/tests/Cargo.tomledge, and the minted manifests —emit_copy_qualification_fixture_gen::shard_manifest_text,self_host_curated_seed_linked_harness::cssl_v1_compiled_cargo_deps_block,self_host_logic_behavioral_transport::slb_cargo_toml, and the stale-red control incssl_seed_linked_closure_assembly's tests — each joined toSeedLinkage(NotASeedEdge | SeedLinkedIntoHandRust | SeedLinkedIntoEmittedCode | SeedBesideEmittedCodeAsOracle), per the addendum.CargoManifestDependencyconsumer rows; a minted-into-emitted-code edge is retained-open on the same closing capability as the shim rows (the emitted crate compiling with nov1-compilerpath dependency), so the seed-free lane retires it by identity.The join, derived not scanned: the Rust renderers are joined in both directions against a produced population — (B)'s
observe_rust_referencesfolded undersrc/v1with the seed's package name spelled as a Rust literal (v1_seed_link_tokens). A produced site with no row is anUndecidedconsumer and blocks; a rostered renderer the tree no longer carries is stale and excluded; the behavioral receipt's rlib--externoracle (ReceiptCrate::v1_compiler, an impl method the vocabulary cannot cite) is rostered by item key under a new mediumRustcExternLinkwith the oracle linkage.probe_manifestis deliberately not a row (per eager-raven-113): #10988 removes the seed path dependency it minted and this table is authored to that shape. On a pre-#10988 tree the join reportsv1_compiler.emitted_closure_compile_host::probe_manifestas an undisposed produced site — that tree's true state, entering the population as an Undecided consumer.Producer refinement (
gunbc.rust_item_host_observation):observe_current_rust_references_under(the dual selection), and a//line is not a reference — the doc comment #10988 leaves aboveprobe_manifestnaming the removed edge must not read as a consumer.Home
The brief named
v2.workflow.rust_crate_partition; the package-dependency question already has one authority above it,gunbc.stage0_partition_package_graph(consumed byv1.compiler.stage0_cratesandstage0_partition_rebuild_scope, and it carries the host shell the partition cannot name). That module is inside the stage0 compile closure (imported bysrc/v1/stage0_crates.dag,src/v1/05_emit_rust.dag; mirrored atsrc/v1/stage0/src/gunbc_stage0_partition_package_graph.rs), so rows about the harnesses that mint manifests around the seed would be emitted into the seed and force a mirror regen. The names are the graph's (imported); the relation is the census's. Reported to the parent before building.Census after this step (re-run, not transcribed)
v1_blocking_consumer_count→ 42 (36 + 4 minted retained-open + 1 oracle uncitable + 1 undisposed pre-#10988probe_manifest); members 53; state PopulationMeasuredLowerBound.v1_minted_manifest_joinon this tree:produced=2 uncitable=1 undisposed=[v1_compiler.emitted_closure_compile_host::probe_manifest] stale=[] unattributed=[].missing_basisnow records what the join does not reach: the three .dag renderers are cited and wall-checked but their join to a produced .dag literal population waits ontools.v1_consumer_discovery(#10939); a minted manifest is only found where the renderer spells the seed's package name as a Rust literal on a non-comment line.Evidence
self_host_v1_consumer_census_witness_test): clean join when every rostered site is produced; an unrostered site is an Undecided consumer that blocks; a stale rostered renderer is excluded and the consumer count drops by one; an unrostered uncitable site is undisposed and a comment line is not a site; the relation keys on the graph and only seed edges are consumers.rust_item_host_observation_witness_test): a token inside//////yields no row and no unattributed line._live_witness_test, wet): the join is observed and the two directions this table controls are clean; passes locally withclaim_batch --wet.🤖 Generated with Claude Code
https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw