Skip to content

Publish the floor's admission roster with an executing reader: gate-closure decline census - #13409

Merged
gunbai-bot[bot] merged 6 commits into
mainfrom
session/snappy-stag-806
Oct 8, 2026
Merged

gunbai-bot[bot] merged 6 commits into
mainfrom
session/snappy-stag-806

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

What

The first two deliverables of the gate-closure census (node adhoc-d58a6461-5b7). The census table comes from this PR's own floor run (see below).

  1. RFM receipt, not a new row. The class "a test module outside the required gate closure is never asked" already exists as gunbc.recurring_failure_mode witness_outside_gate_closure_falsified_by_other_file. A second row would be a §3 nickname, and sharp-raven-357 ruled to append. The new receipt adds the value_position_whole_read (v2: a binder's target is a binder node (type + optional default); the binder representation switch (XL-2 PR2b-3) #12923), function_value_body_route (v2 resolve/infer: the dotted-path decision keeps its binding kind, and projection inference stops calling an unretrievable declaration a fieldless receiver #12506) and v2.test.parse.* specimens. It states the rung for the declined population as below mitigatable (silent wrongness, §4b(1)), and restates that the trigger is a capability rather than a per-change selector.
  2. The census instrument, read from the floor's own record. required_floor_disposition.tsv is the per-identity authority for declined_outside_gate_closure. The floor wrote it on every run but nothing had published it since the job move (instrument_artifact_stopped_existing_while_cited).
    • Upload: gunbc.witness_floor_workflow required_floor_disposition_upload_bound_step is bound by name in both step lists, the same way the claim-cost upload is. This is a step on the existing floor job, not a new job, and it changes no gating.
    • Executing reader (named, per sharp-raven-357's condition): tools.gate_closure_decline_census_instrument gate_closure_decline_census --arg root=<dir> --arg run=<run-id>. It is backed by the pure fold gunbc.gate_closure_decline_census, which reuses v2.workflow.required_floor changed_selection_identity_module_path rather than a second helper, tallies per module through a map so the cost is linear, and excludes v2.test.parse.* (owned by the grammar lane).
    • Controls, run on BuildBuddy: on a fixture TSV the census counts a.b 2 and e.f 1, and drops both the parse row and the planned row (exit 0). A missing run refuses with exit 1, rather than printing an empty census.

Not in this PR

The census figures. Per §6, they are re-derived from this PR's floor run artifact required-floor-disposition and posted as a comment that cites the run. The pass/red and eval-step columns come from a remote claim_batch sweep over the declined modules. Nothing is gated or moved.

witnesses.yml was edited to match the emission. The generated job's drift discriminator is the oracle for byte equality.

🤖 Generated with Claude Code

Brian Searls and others added 4 commits October 5, 2026 13:37
…opulation-grain receipt (below mitigatable for the declined set)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…cline census

required_floor_disposition.tsv was written on every floor run and published by none since the
job move (instrument_artifact_stopped_existing_while_cited). It is now uploaded as
required-floor-disposition through one named bound step in both step lists, and read by
tools.gate_closure_decline_census_instrument gate_closure_decline_census, the population census
of witness_outside_gate_closure_falsified_by_other_file.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Review 76577: a short line or a disposition outside the floor's vocabulary now refuses, located by
line, instead of being dropped. The vocabulary is derived from v2.workflow.required_floor
required_floor_disposition_name. test.claim.gate_closure_decline_census_witness executes every
clause, including an empty-census control that keeps the refusal arms honest.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts:
#	dag/gunbc/recurring_failure_mode/witness_outside_gate_closure_falsified_by_other_file.dag
@gunbai-bot

gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Both findings in review 76577 are fixed in 3d7087a. Main was merged in 5804512.

1. Malformed roster lines now refuse.

  • gate_closure_declined_identities returns DispositionRosterRead, which is either DispositionRosterRows or DispositionRosterRefused { line_number, line, cause }.
  • A data line with fewer than two columns refuses at its line.
  • So does a disposition outside the floor's vocabulary. That vocabulary is derived from v2.workflow.required_floor required_floor_disposition_name over every arm, not respelled, and the target disposition is named the same way.
  • If an arm is added later and not listed, its rows refuse rather than vanish.
  • The instrument exits 1 and names the path, the line and the cause.

2. The fold now has a check that executes it.

  • test.claim.gate_closure_decline_census_witness has 5 claims: the selection (including the # and header skip, the v2.test.parse. exclusion and the planned row), the per-module tally, both refusal arms located by line, and an empty-roster control. The control stops the refusal claims from being satisfied by refusing everything.
  • Run with gunbc run --claim-run on BuildBuddy: 5/5 PASS.
  • Instrument controls in the same dispatch: a valid fixture gives exit 0 with the right counts; a space-delimited roster refuses at line 1 (exit 1); a missing roster exits 1.

Caveat, stated plainly: this witness's module does not match required_gate_prefixes. It runs on this PR as a changed witness, and after merge it joins the declined population this census counts. Gating it would be the gating the brief says not to do yet, so it goes in the proposal table with the rest.

— sent from snappy-stag-806

…r is a sum

Review 76598: import gunbc.witness_floor_workflow required_floor_disposition_path instead of a
second literal, and replace the flag-plus-payload accumulator with RosterReading | RosterStopped so
a refused fold cannot carry a success arm.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Both findings in review 76598 are fixed in 9bb7440.

  1. Second literal for the roster filename. It is deleted. The instrument now imports gunbc.witness_floor_workflow required_floor_disposition_path, the same declaration the upload step publishes, so the uploader and the reader cannot disagree.
  2. Flag-plus-payload accumulator. RosterFold is now RosterReading { line_number, identities_reversed } | RosterStopped { refusal }. A stopped fold carries only its refusal, so "refused but holding the success arm" can no longer be written.

Re-run on BuildBuddy: test.claim.gate_closure_decline_census_witness passes 5/5. The instrument exits 0 on a valid roster and refuses a malformed one at line 1 (exit 1).

— sent from snappy-stag-806

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 7, 2026
Merged via the queue into main with commit bbb2995 Oct 8, 2026
5 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/snappy-stag-806 branch October 8, 2026 00:35
@briansrls
briansrls restored the session/snappy-stag-806 branch October 8, 2026 00:44
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