Repository navigation
Enrol the five host_capacity wet route gaps so the nominal floor holds them instead of blocking - #12025
Merged
Conversation
…s them instead of blocking #11962 landed dag/test/claim/compute/host_capacity_wet_witness_test.dag with TWO of the three rows the mechanism requires, and nothing refuses an incomplete triple. The consequence is the merge queue refusing PR #11829. WHAT THE FLOOR ACTUALLY DID, from queue run 35673852146 (composed revision on 3ab9d31), job `floor`: required-floor: planned=432 executed=432 ... route_gap_unenrolled=5 route_gap_held=7 required-ci: adjudication REFUSED standing=measurement_completed blockers=5 Twelve identities NO-ROUTEd in that run. Seven were enrolled in `v2.workflow.floor_route_gap` and therefore HELD; five — all in this module — were not, and blocked. This change enrols exactly those five. THE BRIEF'S DIAGNOSIS IS RULED OUT BY THE RECEIPT, and is recorded here because it is the reading the exclusion row invites. The module did not reach the nominal plan through the gate prefixes, so no exclusion could have removed it: the same run reports `disposition=planned_as_changed_witness`, i.e. the changed-witness sublane, which admits a changed witness REGARDLESS of any exclusion (`cause=ChangedWitnessOutsidePreparedSubject`) deliberately, so that an exclusion list cannot be how a witness opts out of the commit that introduces it. Nor would a `witness_exclusion_frontier` row have helped even outside that sublane — `floor_prepared_subject_exclusions` in `v1_compiler.cli_run` is the list `run_required_floor` consults, and it is a separate Rust roster. "The nominal lane must not plan what only the wet lane can run" is therefore not available for a witness whose file the PR edits; enrolment is. THIS IS NOT ADJUDICATOR TOLERANCE. `HostEffectRefused` names three remedies and this change takes the third: supply a lane that can run the effect. The lane is already supplied and already ran — the same job records all seven identities of this module `expected=passed observed=passed` on the local-repo wet lane — and the changed-witness projection already reads `standing=hermetic-route-gap-held-and-wet-passed` for exactly these five. The hold is discharged by that wet terminal, never by the enrolment; the enrolment only stops a measured, routed-elsewhere identity being counted as unmeasured. No wet claim is deleted and no expectation is weakened. The operation is `DirWithTemplate` and the ground `NoMockResponse`, READ from that run's refusal text rather than copied from the neighbouring `Dir` chunks — a wrong operation here produces `floor_route_gap_expectation_mismatch`, not a discharge. The module's other two identities reach their subjects hermetically (`standing=planned-and-passed`) and are deliberately absent, since enrolling them would be a `stale_route_gap`. KNOWN AND NOT CLOSED HERE: `floor_route_gap_expectation_chunk_06`'s header already states that the three-authority coupling is enforced by nothing and that this exact failure will recur. It has now recurred a third time. The wall it asks for is a separate change. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A five-entry Cons literal opens five Cons and my first push closed only four, so the module was unparseable: 'heads-only parse: unterminated function body'. Caught by evaluating the chunk through a real gunbc rather than by reading it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ment exercised TWO REASONS, and the second is why it is in THIS PR rather than a later one. First, it is the citation chunk_06's header asks for: the wet schedule row, the exclusion row and the route-gap expectation are three authorities that do not reference each other, and nothing refuses a file holding some of them and not all. This file was in exactly that state from #11962 until this change. A reader editing it now finds the three named where they are editing, including the fact the exclusion row does NOT do what its name suggests for a changed witness. Second, EVIDENCE. The floor run on the previous head passed with route_gap_unenrolled=0, and that run did not exercise the enrolment at all: the nominal floor never planned these five, because this PR did not touch their module and the identities are not admitted by any required_gate prefix. A green floor over a population that was never planned is the absence-evidence trap — it cannot tell a working enrolment from a dormant one. Touching this file puts the module back in the changed-witness set, which is the same condition that produced the blocking run, so the five are planned on the head that lands and the receipt reports them held rather than unenrolled. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
#11962 landed
dag/test/claim/compute/host_capacity_wet_witness_test.dagwith TWO of the threerows the mechanism requires, and nothing refuses an incomplete triple. The consequence is the
merge queue refusing PR #11829.
What the floor actually did
Queue run 35673852146 (composed revision on 3ab9d31), job
floor:Twelve identities NO-ROUTEd in that run. Seven were enrolled in
v2.workflow.floor_route_gapand therefore HELD; five — all in this module — were not, and blocked. This change enrols
exactly those five.
The brief's diagnosis is ruled out by the receipt
The module did not reach the nominal plan through the gate prefixes, so no exclusion could have
removed it: the same run reports
disposition=planned_as_changed_witness. The changed-witnesssublane admits a changed witness REGARDLESS of any exclusion
(
cause=ChangedWitnessOutsidePreparedSubject), deliberately, so that an exclusion list cannotbe how a witness opts out of the commit that introduces it. Independently,
floor_prepared_subject_exclusionsinv1_compiler.cli_runis the listrun_required_floorconsults, and it is a separate roster from
witness_exclusion_frontier. "The nominal lane mustnot plan what only the wet lane can run" is therefore not available for a witness whose file
the PR edits; enrolment is.
This is not adjudicator tolerance
HostEffectRefusednames three remedies and this takes the third: supply a lane that can runthe effect. The lane is already supplied and already ran — the same job records all seven
identities of this module
expected=passed observed=passedon the local-repo wet lane, and thechanged-witness projection already reads
standing=hermetic-route-gap-held-and-wet-passedforexactly these five. The hold is discharged by that wet terminal, never by the enrolment; the
enrolment only stops a measured, routed-elsewhere identity being counted as unmeasured. No wet
claim is deleted and no expectation is weakened.
Operation
DirWithTemplateand groundNoMockResponseare READ from the run's refusal text,not copied from the neighbouring
Dirchunks — a wrong operation producesfloor_route_gap_expectation_mismatch, not a discharge. The module's other two identities reachtheir subjects hermetically and are deliberately absent, since enrolling them would be a
stale_route_gap.EVIDENCE, AND THE CONTROL THIS PR STRUCTURALLY CANNOT PRODUCE
No head of this PR can prove the discharge, and no future head can either. Stated up front so
the next reader does not go hunting for a control that cannot exist here.
The route gaps arise ONLY in the changed-witness sublane, so they appear only on a revision that
edits
dag/test/claim/compute/host_capacity_wet_witness_test.dagitself. A PR that merely editsthe roster does not select that witness, and no
required_gate_prefixesrow admits it. So thisPR's own floor runs green over a population that EXCLUDES the five identities it enrols.
The two runs that bracket the fact, both on revisions other than this PR's:
route_gap_unenrolled=5 route_gap_held=7,adjudication REFUSED standing=measurement_completed blockers=5adjudication PASSED standing=measurement_completed blockers=0,route_gap_unenrolled=0— because it does not touch that witness, so the five are never plannedThe second run is NOT evidence that this change works. It is evidence of why the first one is the
only shape of control that bites: the same tree, with and without an edit to that witness file.
What this PR's own CI DOES establish, on run 35679410107: the rows parse and resolve (
compilerpass),
chunk_21is consumed (it is wired intofloor_route_gap_expectation_chunks), and nothingis over-enrolled (
stale_route_gap=0— which is what would fire had I enrolled the two identitiesthat reach their subjects hermetically). The wet lane still runs all seven
(
[local-repo-wet] expected=passed observed=passed).A failed attempt to force the condition, recorded rather than dropped. Commit
ddc013de60fwas pushed partly to put the module back in the changed set. It does not: the edit is
annotation-only, and annotations are erased from the semantic projection before the touched-entry
seed runs. That run reports
phase=touched-entry-compile-subject seeds=1 modules=["v2.workflow.floor_route_gap"]. The commit's second stated reason is therefore FALSE.Its first reason — naming the three carriers on the file that needs them — stands on its own, and
is why the commit is kept rather than reverted.
Status note: #11829 merged directly at 2026-09-22T01:58Z (
f5bd9b064ad), so this PR is notblocking it and is not blocking anything. It stands on its own as the repair for an incomplete
enrolment triple.
Known and not closed here
floor_route_gap_expectation_chunk_06's header already states that the three-authority couplingis enforced by nothing and that this exact failure will recur. It has now recurred a third time.
The wall it asks for is a separate change.
🤖 Generated with Claude Code