Skip to content

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

Merged
gunbai-bot[bot] merged 56 commits into
mainfrom
session/loyal-bat-613-c
Sep 11, 2026
Merged

gunbai-bot[bot] merged 56 commits into
mainfrom
session/loyal-bat-613-c

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

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): 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 (stage0_partition_package_dependency_names, stage0_host_shell_dependency_names) — never restated.
  • Authored rows only where no partition authority renders the manifest: the hand src/v1/tests/Cargo.toml edge, 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 in cssl_seed_linked_closure_assembly's tests — each joined to SeedLinkage (NotASeedEdge | SeedLinkedIntoHandRust | SeedLinkedIntoEmittedCode | SeedBesideEmittedCodeAsOracle), per the addendum.
  • Seed edges become CargoManifestDependency consumer rows; a minted-into-emitted-code edge is retained-open on the same closing capability as the shim rows (the emitted crate compiling with no v1-compiler path 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_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 and blocks; a rostered renderer the tree no longer carries is stale and excluded; the behavioral receipt's rlib --extern oracle (ReceiptCrate::v1_compiler, an impl method the vocabulary cannot cite) is rostered by item key under a new medium RustcExternLink with the oracle linkage.

probe_manifest is 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 reports v1_compiler.emitted_closure_compile_host::probe_manifest as 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 above probe_manifest naming 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 by v1.compiler.stage0_crates and stage0_partition_rebuild_scope, and it carries the host shell the partition cannot name). That module is inside the stage0 compile closure (imported by src/v1/stage0_crates.dag, src/v1/05_emit_rust.dag; mirrored at src/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-#10988 probe_manifest); members 53; state PopulationMeasuredLowerBound. v1_minted_manifest_join on this tree: produced=2 uncitable=1 undisposed=[v1_compiler.emitted_closure_compile_host::probe_manifest] stale=[] unattributed=[].

missing_basis now 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 on tools.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

  • Hermetic (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.
  • Hermetic (rust_item_host_observation_witness_test): a token inside ////// yields no row and no unattributed line.
  • Live (_live_witness_test, wet): the join is observed and the two directions this table controls are clean; passes locally with claim_batch --wet.

🤖 Generated with Claude Code

https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

gunbc-ci-auto-heal and others added 7 commits September 11, 2026 02:52
…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
gunbc-ci-auto-heal and others added 2 commits September 11, 2026 04:09
# 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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Addressed reviews 63432 and 63450: (1) path_has_prefix and rust_line_is_comment are gone — the producer consumes gunbc.rust_item_scan line_is_attribute_or_comment (exported) and starts_with; (2) the prose now states the predicate's real scope (leading comment/attribute lines only; a trailing or block comment carrying the token is counted and surfaces loudly as an undisposed site), and a new witness arm pins the trailing case; (3) UncitableSeedLinkSite { item_key, detail } replaces the positional [[k, d]] pair and its accessors; (4) RustUseEdge → RustSourceReference (landed on B); (5) v1_seed_link_tokens is now derived by concat over stage0_host_shell_package_name(), and the witness assertion reads the same authority instead of the literal. Merge-forward of B (population read once per question) included.

gunbc-ci-auto-heal and others added 5 commits September 11, 2026 04:36
…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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

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 (bin_witness_wet_entries rows for the entry, the drop row's identities) instead of transcribing three/four.

gunbc-ci-auto-heal and others added 6 commits September 11, 2026 05:10
… 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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 63507 (on B, merged forward here): a listed path that git.Core.Show cannot read refuses the whole read via head_rust_sources_complete — HeadRustSourcesRefused naming the paths — so it reaches the census as PopulationUnmeasured / V1BlockingUnmeasured rather than a silently smaller population.

gunbc-ci-auto-heal and others added 3 commits September 11, 2026 06:11
…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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 63538: v1_consumer_population() reads HEAD once (v1_current_head_rust_sources) and partitions the sources between the Rust-reference medium (outside the deletion set) and the seed-link medium (under it) by predicate — v1_rust_references_over / v1_seed_link_sites_over take the one HeadRustSources value, so both media are one tree. The single-medium live entries in rust_item_host_observation (observe_current_rust_references, _under, _selected) had no remaining execution consumer and are deleted; prose repointed.

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 63684: (1) stale rows (stale_rows, stale_uncitable) now land in the uncitable column as Undecided consumers naming the stale renderer/site — a drifted roster subtracts a consumer row only by adding a blocking one; the witness pins the +1 blocking row beside the -1 consumer row. (2) minted_manifest_join_rendered is consumed by v1_blocking_consumer_count_report, which now renders the join beside the count from the same HEAD read (blocking=42 members=53 | seed-link join: produced=2 uncitable=1 undisposed=[...probe_manifest] stale=[] ... on this tree); seed_linkage_key deleted. (3) docs/design-rung-drops.md regenerated from the current authority (four identities, no stale symbol).

gunbc-ci-auto-heal and others added 10 commits September 11, 2026 09:56
…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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Same repair as #11018, merged forward (live witness file deleted; drop population re-declared; ledger regenerated), plus review 63745's alias deletion.

gunbc-ci-auto-heal and others added 8 commits September 11, 2026 12:02
…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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Landing-hold repair: V1UncitableConsumer now carries consumed_old_authority (V1UncitableAuthorityKnown { authority } | V1UncitableAuthorityUnknownToken { token }) and v1_shim_uncitable_absent dedups on v1_uncitable_row_key = item × authority — the census grain — not item + detail. Planted control consumer_census_one_item_naming_two_authorities_is_two_relations (one crate root naming v1_rt and v1_interpreter keeps two rows in both the cited and the uncitable column) sits beside the existing two-lines-one-authority control; mutation control executed (old key reds it). Also carries the review 63834 prose fix (missing_basis states (A)/(B)/(C) at their current standing). Instrument on this tree unchanged: blocking=67 members=84.

…ce (review 63990)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 63990: v1_current_rust_references() (unconsumed after the one-HEAD-read refactor) deleted; v1_blocking_consumer_count_report binds the minted-manifest join once and hands it to both v1_consumer_population_with and the renderer.

@gunbai-bot
gunbai-bot Bot merged commit ad5609b into main Sep 11, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/loyal-bat-613-c branch September 11, 2026 20:41
briansrls pushed a commit that referenced this pull request Sep 11, 2026
…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
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.

0 participants