Repository navigation
Conversation
… --bin flag `test.claim.v1_dag_parse_witness.v1_dag_parse_witnesses` is an ordinary discovered witness that runs `v1_src_dag_parse` through `tools.v1_dag_parse_transport`. The fold has been executing it since the FLOOR-Y cutover. It failed for one reason: the binary it invokes was never named in `witness_floor_required_bins`, so `witness_bin_program_readiness` refused and the witness returned false. It then went onto `floor_expected_red` in #8283's bulk enrolment, which recorded the consequence and lost the cause. Built, the witness returns true (verified by execution). Three changes, no new gate: * `v1_src_dag_parse` joins `witness_floor_required_bins`. The emitted workflow gains exactly one `--bin` flag. * the roster row is deleted, so the witness's verdict is asserted again. Left in place it would now red the build as enrolled-but-passing, which is the roster working. * the binary's directory walk becomes RECURSIVE. `read_dir(src/v1)` saw the 46 top-level modules and nothing below, so three authored files sat outside the only instrument that can see a v1 parse error -- gunbc/occurrence_binding_parser_walk.dag, gunbc/namespace_reference_derived_closure_production_observations.dag, and tests/claim/checkpoint_identity_keying_witness_test.dag, the last holding every `test fn` src/v1 declares. A walk that finds no files in a directory it never opened is indistinguishable from a clean one. `tests/fixtures/` is excluded: those files are deliberately malformed inputs authored FOR the parser's own tests, and the recursive walk found one immediately (fact_cardinality_split_brace.dag). That is the fixture working. The existing corpus discovery in `compiler_tests` excludes them on the same grounds. 49 files parse clean. WHAT THIS DOES NOT CLAIM. Parse only -- no resolution, no types, no statement that those modules mean anything. `--source-root src/v1` on the fold itself remains refused and the measurement stands (CI run 32219326621): one flat namespace over both trees yields 12 last-segment collisions, because the v1 and v2 compilers name their stages identically. Parsing sidesteps that because each file parses independently against an empty environment, so no cross-module pool exists to collide in. The binary keeps its registered Scaffold status; its dissolve-on is the modeled pipeline parsing src/v1, and building the scaffold does not satisfy that. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…xecute
Run 32223611085 gave the mechanism, and it is not the one the previous commit
asserted:
FAIL test.claim.v1_dag_parse_witness.v1_dag_parse_witnesses errored:
type error: hermetic mode: no mock_response for operation IsExecutable
-- refusing to fabricate Unit
`run_required_floor` runs HERMETICALLY. The witness reaches `shell.Test.IsExecutable`
through `tools.host_prelude`, and the hermetic envelope refuses host effects by
construction -- before the binary is reached, which is why the row failed in 1ms rather
than after any work. So the missing `--bin` was never the cause, and neither was a
budget refusal (a budget refusal must burn the budget first; 1ms excludes it on timing
alone).
THREE CONCLUSIONS OF THE PREVIOUS COMMIT DIE WITH IT. `--bin` alone fixes nothing;
deleting the roster row was wrong, because the row is legitimately red; and
"src/v1 parsing was already gated" is FALSE. The witness is DISCOVERED by the fold on
every run and CANNOT EXECUTE in it. I mistook discovery for execution.
The refusal is correct and must not be repaired. The witness's subject is a subprocess
exit status, which no in-process assertion can observe, and a mocked `IsExecutable`
would let it pass against a fabricated status -- the fabricated-plausible-output arm on
the exact assertion the witness exists to make. The `floor_expected_red` row is
restored.
WHAT LANDS INSTEAD is the workflow step this branch wrote first and then deleted as a
§3 second-authority violation, on that false premise. It is not a second authority: the
witness cannot execute, so there is no verdict to duplicate, and outside the fold is the
only place a host effect can happen. `--bin v1_src_dag_parse` stays because the step
runs it.
AND ONE CORRECTION BEYOND THIS GATE. `gunbc.ci_layer_roots` `excl_bin_wet_reason` did
not merely fail to warn -- its second clause asserted, present tense, that this class
"run[s] every PR as the declared bin-witness wet batch via bin_witness_wet_entries". That
has been false since 2026-08-15: the wet batch died with the floor cut, main carries
exactly two workflows, `witnesses.yml` is the hermetic fold that refuses this class by
construction, and `fleet-converge.yml` is workflow_dispatch-only with no bin-witness
batch. Measured: 94 `bin_wet` rows across 38 entry files name an executing consumer that
does not execute. A reader consulting that row to ask "is this class covered" was told
yes. The row now states the measurement; restoring the other 93 is not its call.
Found by silent-bear-842, whose original "src/v1 .dag has no per-PR gate" this branch
overturned and which stands.
The recursive-walk fix is unaffected and independently correct.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Closing as fully superseded, rather than resolving the conflict. The conflict is real but the branch has no forward content, and I checked that rather than assuming it. Its deliverable is already on main. The v1 Its one quotable finding is also already on main. The What it would still change, it should not. Against main the branch is behind, not ahead:
So merging it would revert the regen work and resurrect exclusion rows for files that are gone. And its subject is being removed anyway. The operator has directed that the CI step ladder be consolidated: "i would much prefer if it was all handled within the witnesses step and within the gunbc binary, not at a github actions job level." This branch's product is a separate GHA parse step, which is exactly what the consolidation deletes — the parse sweep becomes an in-process phase. Fixing a branch to preserve a step scheduled for deletion is work on a representation the cut removes. The consolidation is on — sent from tidy-lark-471 |
Auto-opened by session-dashboard for session
tidy-lark-471.Pushing to
v1-parse-gateadvances this PR.Worker attestation
Before flipping this PR to ready for review, confirm each item:
npm test,cargo test) and the result.Closes #Ndirective.Summary
TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.
Test plan