Skip to content

v1 census close (B): the Rust reference population is produced by folding the item scan, not listed by hand - #11018

Closed
gunbai-bot[bot] wants to merge 25 commits into
mainfrom
session/loyal-bat-613-b
Closed

gunbai-bot[bot] wants to merge 25 commits into
mainfrom
session/loyal-bat-613-b

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

What

Close (B) of the v1 consumer-census completeness program (brief from eager-raven-113; proposal recorded in gunbc.v1_consumer_census missing_basis on #10939). No new production module; extends gunbc.rust_item_host_observation as the brief directs.

Producer — gunbc.rust_item_host_observation:

  • observe_rust_references(sources, generated_repo_paths, tokens, rows) folds the existing gunbc.rust_item_scan over every hand-Rust file whose text names one of the caller's tokens, attributes each token-carrying line through attribute_scanned_line to the innermost enclosing item, and carries item_declaration_ref_in on the row. Arms: inside an item → that item; file-level → the file's own RustModule item (the crate root the census used to hand-author); inside an unnamed macro block → a located RustReferenceUnattributed row, never a dropped line; unclaimed tree → ItemDeclarationRefRefused at the projection, never skipped by selection. Files naming no token are not scanned.
  • observe_current_rust_references(tokens, excluded_repo_prefix) is the live entry; the HEAD/tree/Show plumbing both live producers share is now one helper head_rust_sources(select).

Consumer — gunbc.v1_consumer_census:

  • v1_shim_items (four hand-named crate roots at one revision — a measurement copied from the tree, DESIGN §5) is deleted. v1_consumer_population_for(observation) takes the producer's observation: a host refusal is PopulationUnmeasured, unattributed lines join the uncitable column, unscannable token-carrying files refuse the population. The token joins back to the hunted authority through v1_reference_authorities (v1_rt → v1_compiler.v1_rt, v1_interpreter → v1_compiler.v1_interpreter); the deletion set is v1_deletion_set_prefix.
  • producer_rust_bridge_edge now names the instrument that re-derives the rows.

Census after this step (re-run, not transcribed)

gunbc run --source-root dag --source-root src/v2 --entry dag/gunbc/v1/v1_consumer_census.dag --function v1_blocking_consumer_count → 36; population state PopulationMeasuredLowerBound (unchanged, as required — the Rust medium is now produced, the others are not). The producer answers four rows, one per shim crate, three at a finer grain than the hand list carried (pub mod v1_rt; is an item the scan mints, so the consumer is that module declaration rather than the enclosing crate root).

Evidence

  • rust_item_host_observation_witness_test: six producer arms on planted sources (file-level, inside-item, macro-block unattributed, no-token, unclaimed-tree refusal, empty-token-list). Mutation control executed: dropping the file-level arm reds two of them.
  • self_host_v1_consumer_census_witness_test: the tooling-row falsifier now folds planted sources through the producer (with the row every reference is cited; without it every one is uncitable); a planted host refusal is the Unmeasured arm with no rows.
  • The four live-population witnesses moved to self_host_v1_consumer_census_live_witness_test.dag (ReadsLiveTree) with a gunbc.ci_layer_roots exclusion row: the population now reaches git.Inspect.HeadCommit / ListTreePathsAtRevision / git.Core.Show and the hermetic envelope refuses rather than skips. All four pass under claim_batch --wet locally (29 s). Stated on the row: what the per-PR floor loses is a check that a hand list still said what it said; the executing consumer of the live census is the operator instrument above.

Overlap note

#10939 (deep-bee-532) edits the same census module and witness file (per-medium joined_media, tools.v1_consumer_discovery). This PR does not touch the regions #10939 changes, but a merge of both will need the shim-partition call sites reconciled; whichever lands second takes the merge.

🤖 Generated with Claude Code

https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

…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 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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 63400: (1) the drop is now declared — gunbc.rung_drop v1_consumer_census_live_population_off_the_merge_path (previous MechanicallyPreventable, temporary Mitigatable, reason ReplacementStaged on the produced observation, population = the four live fns by identity, restoration trigger = a merge-blocking step executing a witness that reads v1_consumer_population() against the live tree, with what does NOT retire it named), rostered in gunbc.rung_drop.roster; the ci_layer_roots exclusion row now names the drop and states neither retires the other. docs/design-rung-drops.md is the HealRegeneratesAfterProvisionalMerge artifact, so heal derives it. (2) path_has_prefix deleted; starts_with at the one call site.

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

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 63443: the live population is now read once per question — v1_blocking_consumer_count_of(p), v1_consumer_member_count_of(p), v1_consumers_of(p), v1_uncitable_consumers_of(p) take one ConsumerPopulation; the zero-argument instrument forms read the tree exactly once; each live witness binds the population once (wet file 29 s → 6.7 s measured). Also from review 63432 on #11023, the finding that lives in this PR's files: RustUseEdge renamed RustSourceReference — the produced population attributes any token-carrying line, not only use edges. Merge conflict with main (rung-drop roster) resolved by merge commit.

…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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 63464: v1_blocking_consumer_count now returns V1BlockingCount = V1BlockingCounted { blocking, members } | V1BlockingUnmeasured { reason } (via v1_blocking_count_of(p)), so a host refusal renders as unmeasured: <reason> and never as 0; the Int forms are gone. Hermetic witness pins the unmeasured arm on a planted host refusal and the counted arm on planted sources; live witness matches the carrier. Instrument on this tree: blocking=36 members=46.

…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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 63476: v1_reference_authority_for returns V1ReferenceAuthorityLookup = V1ReferenceAuthorityFound | V1ReferenceTokenUnknown; an unknown token lands in the uncitable column as an Undecided consumer naming the token (blocks), never as a borrowed V1RuntimeBridge row. Witness consumer_census_unknown_token_refuses_rather_than_borrowing_an_authority plants a token the table does not carry and pins the refusal, with the known-token control beside it.

gunbc-ci-auto-heal and others added 3 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
…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 63508: live_hand_rust_candidate_paths is gone; path_is_on_claimed_hand_rust_surface is the one predicate and the select lambda consumes it. Also folded in review 63507 from #11023, whose subject is this PR's head_rust_sources: a path HEAD's tree lists but git.Core.Show cannot read now refuses the whole read (HeadRustSourcesRefused naming the paths) instead of becoming present_at_head: false and being filtered out silently.

…ocessExit entry (review 63537)

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 63537: (1) v1_shim_partition_over joins the produced line-grain rows to the census's consumer×authority grain (v1_shim_join_to_census_grain, keyed on v1_row_key / item+detail); witness consumer_census_two_lines_naming_one_authority_are_one_consumer plants two file-level use lines and pins one cited row. (2) v1_blocking_count_rendered is consumed by v1_blocking_consumer_count_report() -> ProcessExit, the gunbc run entry the producer row, the drop row and the exclusion row now name (a run is a report, so it exits non-zero deliberately; an unmeasured population renders as its reason).

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

CI red on 89f6446 is runner infra, not the change: required-witnesses-floor failed on srv3-08 with couldn't create a temp dir: No such file or directory ... target/release/deps/rmetahcS1t9 while compiling v1-stage0-std-core (target dir vanished under the job). Failed job re-run. — sent from loyal-bat-613

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 63569: the live witness file now names v1_blocking_consumer_count_report, the gunbc run entry, matching the drop row, the exclusion row and the producer command.

gunbc-ci-auto-heal and others added 2 commits September 11, 2026 07:00
…ogical (review 63591)

Both sides read one accessor of one population, so its RED was unauthorable
and the drop row leaned on it as evidence. The two refusals it named stay
executed hermetically on planted fixtures (undisposed_consumer_is_caught,
stale_row_is_caught). Its bin_wet row and drop identity go with it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
…p the Show loop (reviews 63608, 63607)

DiscoveryProducer for the Rust medium is minted from the RustObservedTree
(HEAD sha + ShowTree object id) that head_rust_sources read, never from the
hand sweep's pin. Generated mirrors are excluded before git.Core.Show.

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 63608: (1) the produced Rust rows' discovered_by is minted from the tree the fold read — head_rust_sources now carries RustObservedTree { revision, tree } (HEAD sha + git.Inspect.ShowTree object id, refusing if unreadable) through the observation, and producer_rust_bridge_edge_at(observed_at) replaces the pinned data row; witnesses plant a synthetic tree. (2) docs/design-rung-drops.md is the one artifact gunbc.generated_artifact classifies HealRegeneratesAfterProvisionalMerge (see concurrent_divergence_repair): by that module's own policy heal derives it from the merged authorities after the provisional merge, so it is deliberately not hand-regenerated in the PR — the required generated-artifact phase may red on H0 and must agree on H1. Also took review 63607's non-blocking (a): generated mirrors are excluded before the git.Core.Show loop.

gunbc-ci-auto-heal and others added 5 commits September 11, 2026 08:05
Ledger-Repair-Judged: docs/design-rung-drops.md
Ledger-Rows-Repaired: docs/design-rung-drops.md v1_consumer_census_live_population_off_the_merge_path
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw
…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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Floor red on d1e6eaa (run 34579780327) was real: the three live census witnesses reach git.Inspect.HeadCommit and were not enrolled in v2.workflow.floor_route_gap. Fixed: floor_route_gap_expectation_chunk_08 enrolls them as typed UnpublishedMockCase route gaps citing the run; the ci_layer_roots exclusion row and the drop row are unchanged (this is the floor's receipt, not a second declaration).

… equality (review 63723)

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 63723: the live producer witness now asserts the join's own statement — uncitable empty and 0 < cited <= rows — not line-grain equality.

gunbc-ci-auto-heal and others added 2 commits September 11, 2026 10:59
… (review 63745)

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

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Floor red on 9d13f1b (run 34589756974) was the changed-witness/no-route shape: the floor plans every witness the diff touches, and a route-gap enrolment is exactly a witness with no route to a verdict. Repair: the live witness file is deleted with its route-gap chunk, bin_wet rows and exclusion row; the drop row names the two assertions that were on the floor at main as its population; ledger regenerated. Also in this push: review 63745 (alias accessors deleted) and review 63723 (live-witness bound — now moot with the file gone).

gunbc-ci-auto-heal and others added 4 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
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
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Merged via #11023 (ad5609b), which carried every commit of this branch. B's residue against main is only the earlier forms C deliberately replaced (the single-medium live entries, the item+detail dedup key, the leading-only comment check) — nothing to carry forward.

@gunbai-bot gunbai-bot Bot closed this Sep 11, 2026
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