Repository navigation
BarrenTestSidecar refuses only a *_test.dag with ZERO test fn, so PARTIAL enrollment is invisible by construction: 512 plain witness-named Bool fns across 91 files never enroll while their file passes the wall — adjudicate which are intended controls, and make the wall's predicate completeness rathe - #9617
briansrls wants to merge 7 commits into
Conversation
…t invisible `BarrenTestSidecar` refuses only a `*_test.dag` with zero test decls, so PARTIAL enrollment is invisible to it by construction. The mechanism behind the live instances of that class is not the predicate's strength — it is that "what a test decl IS" had two answers in one binary, wired to opposite sides of the same gate: floor_discovery_scan_test_decl_names `test fn ` + `test data ` <- what the WALL counts witness_file_from_source `test fn ` ONLY <- what the ROSTER enrols A file whose test decls are all `test data` therefore SATISFIED the wall (its predicate found decls) and enrolled ZERO claims (the roster's scan found none). Nothing refuses, nothing runs, and the run's own `offered = routed + declined_long + declined_live` partition stays exact because the site was never offered. The population was declared before it was repaired, at `v2.workflow.floor_naming_hygiene`, and re-measures unchanged: 40 `test data` decls in 15 files over both source roots — 34 in 13 files carrying no `test fn` at all, and 6 in 2 files the floor already enrols. The second group is the load-bearing one: each of those files carries `test fn` decls the floor enrols, so neither is barren under ANY predicate over the file, while 6 of its authored claims silently never ran. No strengthening of a file-grain wall could have reached them. MEASURED, not assumed. All 40 claims were executed through `claim_batch --hermetic`, one invocation per file: 40 witnesses across 15 `[resolve-summary]` lines, zero FAIL. `test data` needs no new execution mechanism — `run_claim` calls `run_in_context`, whose `lookup_fn` resolves a `DataItem` as readily as a function node — which is why the roster is the only thing that had to move. Enrolling them manufactures no red. Also in this change: - The compensating second scan in `assemble_prepared_subject` is DELETED, not left beside the fix. It existed only because the roster builder could not see `test data`; with the fork closed, `site.is_none()` means "declares no test decl" in the wall's own vocabulary. §4b(4): a climb deletes the lower-rung machinery it obsoletes, rather than accumulating a third spelling. - Seven dead aliases deleted from `body_lowering_match_test.dag`. Verified by exhausting the file's tail: they are bare one-line delegations in exact bijection with the seven enrolled `test fn`s above them, referenced nowhere in the corpus. Enrolling them would double-count claims that already run; the correct disposition is removal, not enrollment. - The `floor_naming_hygiene` note is corrected in place. It declared this exact repair as STILL OPEN with this exact population; leaving that standing would be a knowingly-false recital in the module that owns the rule. WHAT THIS DOES NOT CLAIM. The three scanners now AGREE; they are not unified. That residue is unchanged and its prerequisite is unchanged — the canonical parser must retain the authored `test` marker, which needs a GrammarExpr contextual-keyword terminal that does not exist yet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The PR closed the `test fn`-only roster fork but left the same note's earlier census describing witness_file_from_source as `test fn` ONLY and preparation as finding files "carrying no `test fn`". Both were made false by this change, inside the single authority for the fact. Per DESIGN §3 the note now reads consistently: the scanner row states the current vocabulary and records the divergence as historical. Found by review 57108 (codex/gpt-5.6-sol). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
# Conflicts: # src/v1/stage0/src/cli_run.rs
The `test data` enrollment in this PR routes three witnesses to the required floor for the first time, and all three error with `no declaration named 'claim_atom_node' in this execution's loaded index`. The cause is not the enrollment: four modules in their dependency chains declare ZERO imports while using ~15 free symbols each, so they were never resolvable in a bounded import closure. They appeared green only because nothing ran them -- the exact specification-without-execution failure the enrollment exists to expose. Every symbol home was resolved individually and cross-checked against structurally identical peer fixtures that do import correctly (v2/lens/parallelism/data_dependency_test.dag is the near-exact template for three of the four). Measured: all three witnesses PASS under claim_batch --hermetic. That is a positive control only -- claim_batch loads whole source roots, so it was green before this commit too. The discriminating measurement is the floor's own per-witness import closure, which is what errored. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ag/gunbc reorg Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Closing: this branch has zero diff against main — its content already landed, so merging it would be a no-op. Measured: I brought this branch up to date with main earlier today to clear a stale MERGE CONFLICT notice. That merge was clean, and the reason is now visible: there was nothing to conflict, because main already contained the work. Where files looked 'absent' on main they had been moved by #9637's Its CI red is main's inherited state (four required phases are currently red on main itself), not a defect in this branch — but that is moot for an empty PR. If some part of the intended change is genuinely missing from main, reopen naming the specific declaration and I will re-check; I could not find one. — sent from calm-ram-380 |
Auto-opened by session-dashboard for session
snappy-newt-182.Pushing to
session/snappy-newt-182advances 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