Repository navigation
A focused gunbc test stops paying for whole-repository discovery, and four controls hold the boundary - #12023
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
briansrls
left a comment
There was a problem hiding this comment.
Reviewed exact head 32cae8f. The scoping change is sound in shape, and the four new refusal controls substantially address the prior coverage objection. I did not execute the witnesses or build a native artifact. Final sign-off remains pending the two bounded corrections below and qualification of the rebased head.
-
Isolate the membership input in the boundary fixtures. They do not differ only in module header: member_violation_read uses src/v2/test/violation_probe.dag, non_member_violation_read uses src/v2/testing/violation_probe.dag, and the module-less case changes its path again; artifact identities also change. compilation_unit is an input to discovery. A wrong path-prefix implementation of membership can satisfy these specimens while claiming namespace-based scoping. For the separate single-source ingests, hold compilation_unit, artifact/path, and source_root fixed and vary only the header, or add an explicit path/namespace disagreement control. Retain the same-content floor comparison. This is a fixture correction, not a request for another discovery implementation.
-
Finish the comment reconciliation around native_lane_universe_selected / native_lane_universe_of_facts. The newly added carried-facts paragraph still says discovery is corpus-wide by design and its refusals must hold outside any selection, directly contradicting native_lane_discovery_for. The preceding paragraph says the rendered main calls native_lane_universe, and the following text speaks of the argv operand landing in the future; the emitter diff already calls native_lane_universe_of_facts(source_facts.clone(), pattern.clone()). State the actual split: source/header/import scans still inspect the supplied inventory; discovery walks universe members and module-less sources; explicit pattern filtering comes later. The full native-universe boundary is not the requested-target boundary.
Preservation read: required_floor_runner.rs independently iterates full_inventory, calls discover_floor_rows_for_source, finalizes those outcomes, and maps the decoded refusal to REQUIRED-FLOOR REFUSAL cause=FloorDiscoveryRefused. That supports preservation of the separate floor consumer in source. The new floor witness executes the producer/finalizer, not the host runner or CI exit path; do not present it as a newly executed merge-blocking red.
Native qualification: building the artifact alone proves it compiles, not that the redundant computation was eliminated. Inspect the emitted main's actual carried-facts call path and retain execution/count or cost evidence where needed. No new general instrumentation is requested. The 23.35 seconds is the old phase cost, not a measured saving.
Integration: this PR also contains the carried-facts change still proposed by #11986; choose one landing route (stack on that PR or explicitly absorb it), rather than independently rebasing two copies. GitHub currently reports this head conflicting and no check runs are recorded for it. No merge performed.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 32cae8fcce
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| // `native_lane_source_facts` is a fold over the WHOLE ingest that, per read, splits the file into | ||
| // lines, scans for the module header, scans for imports, scans for the first malformed import, and | ||
| // runs `discover_floor_rows_for_source`. It is corpus-wide BY DESIGN -- discovery is a corpus-wide | ||
| // question and its refusals must hold outside any selection -- which is exactly what makes paying |
There was a problem hiding this comment.
Correct the scoped-discovery contract
For any source declaring a module outside v2.test.*, the newly added native_lane_discovery_for returns floor_discovery_walk_state_zero(), so native_lane_source_facts no longer runs discovery per read and discovery refusals explicitly do not hold outside the selection. This new comment states the exact opposite, as does the emitted phase description in src/v1/05_emit_rust.dag, which will mislead future work about both the refusal boundary and the measured cost; update these descriptions to distinguish corpus-wide header/import scans from universe-scoped discovery.
Useful? React with 👍 / 👎.
32cae8f to
11866c0
Compare
|
Rebased onto current main and both corrections are in. New head carries a fourth commit with the review responses. 1. Fixture isolation — took the structural optionThe three specimens are now built by one constructor taking only the content, so only the module header can vary. They share one path, one artifact identity, one source root. The shared path does double duty as the discriminator you asked for, rather than needing a separate control: all three sit at That is now falsified, not asserted. Two mutations of
The second is the one the repair exists for. Under the previous fixtures that implementation stayed green. 2. The carried-facts noteThe corpus-wide-question sentence is gone, along with the stale rendered-main and argv-operand asides. It now carries the pipeline and states the boundary you named:
3. Evidence level, corrected in the source and not only here
4. One landing routeRebased, absorbing the de-duplication — this is the single head. #11986 is now redundant and I'll close it as absorbed. Worth flagging: the rebase collided with #12006, which had added two arms and the All seven arms return |
MIRROR-ONLY. No .dag authority changes; this is the projection catching up to one that already landed. 132c780 (#11992, the grain-parameterised rounder) landed its .dag without regenerating src/v1/stage0/src/std_measure.rs, so `claim_executor --required-regen` has been reporting drift on that path for every lane that runs it, unrelated to whatever that lane is changing. Two independent sessions hit it and had to establish it was not theirs before continuing. The diff is exactly the surface #11992 added -- GrainRounding, round_up_to_grain, gibibyte_grain, and the std_checked_arithmetic imports they need -- and is a pure addition: 46 inserted lines, none removed. Regenerated rather than hand-written. Safe to carry on a main base: the module contains no native FreeMonoid match (zero `__fm` occurrences), so the emitter that produced these bytes cannot have influenced them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
SOURCE SIGN-OFF at exact head 11866c0. The substantive implementation/fixture objections from my review of 32cae8f are closed. This is source-review sign-off, not a claim of completed CI, native execution, or measured speedup. No merge performed.
Verified in the rebased diff/source:
- violation_read_for(content) fixes the compilation-unit path, artifact identity, and source root. The non-member's v2.testing namespace now conflicts with its member-looking src/v2/test/ path, so the fixture distinguishes namespace membership from the wrong path-prefix policy. The author reports both walk-everything and path-membership mutations producing false; I have not independently executed those mutations.
- Member and module-less refusal controls, outsider acceptance, and the same-input independent floor producer/finalizer control remain. The source now distinguishes execution of that producer/finalizer from source inspection of the host runner.
- The carried-facts entry preserves the explicit pattern, and the rendered-main template uses native_lane_universe_of_facts(source_facts.clone(), pattern.clone()). Actual emitted-artifact inspection and native cost qualification remain with integration.
- Compared the two #12006 test bodies against base 3ab9d31: the misspelled-module refusal/control and the suggested-module selection/control remain intact, including the formerly lost closing brace. The production named-module refusal also remains in the facts-taking path.
- The source distinguishes broad inventory/header/import acquisition from universe-scoped discovery and later requested-target selection; 23.35 seconds is explicitly the old phase cost. #11986 is closed and its deduplication is carried here, so there is one active landing route.
Non-blocking documentation cleanup: the short older paragraph immediately before the new carried-facts note still says rendered main calls native_lane_universe; it actually calls native_lane_universe_of_facts. The PR body also retains its old stacking paragraph, six-arm evidence wording, and native-build-as-evidence sentence. Synchronize those with the corrected source and the current handback; these are not grounds for another implementation workstream.
Merge qualification is still outstanding. At review time, clippy and compiler succeeded and the floor was in progress on this head. #11829 has since merged as f5bd9b0, but the already-running floor job 106587607143 has no receipt-adjudication step in its returned step list. Do not treat its eventual job colour alone as repaired-gate evidence. Inspect/adjudicate the applicable receipt and actual witness outcomes, or qualify the integration candidate through the repaired workflow, without bypassing branch protections. A later workflow landing does not retroactively qualify this run.
Acceptance evidence should join expected test identities, actual returned values, completion and exit/admission status. Missing output is not success, and true values must not override an unsuccessful or incomplete invocation. The seven-test native behavior and the performance saving remain separate follow-up measurements, not claims made by this source sign-off.
briansrls
left a comment
There was a problem hiding this comment.
SOURCE SIGN-OFF at 11866c0. The substantive objections in my review of 32cae8f are closed. This is a source-review disposition, not an independent APPROVE or a claim that native qualification/CI has completed.
Verified in this head:
- violation_read_for(content) holds compilation_unit, artifact identity/path, and source root fixed. The non-member namespace is deliberately presented from a member-looking path. This now distinguishes declared-module membership from path-prefix membership. The four refusal controls and the acceptance-witness rename are present. The reported walk-everything and path-prefix mutation failures are the author's execution evidence; I did not rerun them.
- The carried-facts explanation distinguishes corpus-wide acquisition/header/import scans, discovery of native-universe members plus module-less sources, and later requested-pattern selection. It explicitly does not claim that discovery is reduced to the seven requested tests.
- The source distinguishes producer/finalizer execution from inspection of the floor caller; a native build from removal of duplicate execution; and the old 23.35-second phase cost from an unmeasured saving.
- The emitter patch carries source_facts and the actual pattern into native_lane_universe_of_facts; the target use-list is updated. #11986 is closed, leaving this as the landing route for the absorbed change.
- Compared the two #12006 witness bodies against base 3ab9d31: both are preserved, including the closing brace of the_suggested_module_spelling_selects_the_module.
Non-blocking text cleanup: the older five-line 'THE SELECTED UNIVERSE' paragraph immediately above the corrected explanation still says the rendered main calls native_lane_universe and overgeneralizes outside-pattern corpus refusals. The PR description also retains older stacking/six-arm/native-build wording. Synchronize those with the corrected source explanation; these are not a request for another implementation or another discovery workstream.
CI at review: compiler and clippy succeeded; floor was still in progress, with no completed witnesses check in the head's check-run list. I have not merged or enabled auto-merge. Normal required-check and repository acceptance requirements still apply to this exact candidate; source sign-off does not waive them.
Native follow-through remains the integration owner's existing task: inspect the produced carried-facts call path and rerun the fixed selected workload with the existing cost observations. This sign-off claims neither seven native test passes nor a measured speedup.
For the merge-resolution incident, the acceptance rule should be expected named outcomes AND complete execution AND consistent exit status, not outcomes instead of exit status. Missing, duplicate, or unexpected results and a contradictory process status must not be treated as a pass.
…run; carry the value
MEASURED ON THE FIRST NATIVE RUN OF A SELECTED PATTERN, 2026-09-21. Seven identities
of v2.test.parse.expression_bodied_fn_decl_parse at //v2/test/parse/...:all, against
the emitted closure of src/v2/compiler/00_compile.dag. The lane's own
[native-cost-partition] receipt:
TOTAL WALL 121.4 s
context 97.88 s 80.6% parse+normalize, closure_reads 133
universe_derivation 23.35 s 19.2% corpus_reads 6482
load 0.11 s
prepare 0.00 s
eval 0.00 s
universe_derivation is the phase the PATTERN DOES NOT NARROW -- 6482 corpus reads
against 133 closure reads -- and it was being entered twice per run.
The rendered adjudicate main binds `source_facts` and consumes it four times:
native_lane_closure_modules, native_lane_closure_ingest, native_lane_ingest_receipt,
native_lane_ingest_matches_closure. It then called the ingest-taking universe entry,
whose first line derived THE SAME FOLD AGAIN from the same ingest. Per read that fold
splits the file into lines, scans for the module header, scans for imports, scans for
the first malformed import, and runs discover_floor_rows_for_source -- over every
source, because discovery is corpus-wide by design and its refusals must hold outside
any selection. Being corpus-wide is what makes paying twice expensive rather than
untidy.
DESIGN section 2: two demands for one semantic fact whose least common ancestor is ONE
LINE above is authored duplication, and the repair is to carry the first value, never
to make the second request cheap.
The split is where the value already was -- the body took `facts` after its first line
-- so native_lane_universe_of_facts IS that body. The PATTERN is threaded rather than
defaulted, so the entry the main calls is the one a narrower pattern reaches: when the
argv operand lands, that call site changes its pattern argument and nothing else.
`native_lane_universe` leaves the emitted main's use-list because the main no longer
calls it; under RUSTFLAGS=-D warnings an unused import is a build failure.
CONTROLS, EXECUTED (gunbc run --claim-run over the witness file):
reconciled 15/15 PASS, exit 0
mutated the facts-taking entry's malformed-import check bypassed:
4 FAIL, 2 accepted-path controls PASS, exit 1
A WITNESS SHAPE WAS WRITTEN AND DELETED RATHER THAN SHIPPED. Pairing the two entries
and asserting they agree reads like an equivalence control and is a decoration: after
the split native_lane_universe_selected(ingest, p) IS
native_lane_universe_of_facts(native_lane_source_facts(ingest), p), so the comparison
is an expression against itself. The mutation confirms it -- it moves BOTH sides. The
arms assert the facts-taking entry directly instead.
NATIVE VERIFICATION PENDING: whether the rendered main passes the facts it already
bound is a property of emitted Rust and needs a build from this tree.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ng for repository hygiene
discover_floor_rows_for_source is the expensive half of native_lane_source_facts -- a
walk of the file's whole content producing rows, sidecar violations and dispositions,
against three line scans for the other three fields. It ran for every read. Its three
consumers, read one at a time:
1. native_lane_label_universe reads f.discovery.rows INSIDE its own
`if !native_route_universe_member(module_qn: declared) { acc }` guard, so a
non-member never reaches it;
2. native_lane_unowned_row_path reads the row count only in its `f.module` Absent
arm -- a file that declares no module yet enrolled rows;
3. floor_discovery_finalize_source_outcomes folds EVERY state and refuses on walk
failures, disposition refusals and sidecar violations ANYWHERE in the corpus.
Only (3) wants the corpus, and (3) is REPOSITORY HYGIENE rather than this lane's
question. Whether some unrelated module places a sidecar correctly is not part of "are
the requested tests complete". MEASURED: universe members are 935 of 6484 corpus files
(14.4%), so (1) consulted one file in seven while all seven were walked.
THE GUARANTEE IS PRESERVED AT ITS PROPER CONSUMER, WHICH IS WHY THIS IS DE-DUPLICATION
AND NOT A RUNG DROP. The required floor runs this same producer independently over its
own prepared sources and adjudicates the same finalize -- required_floor_runner reaches
it through parse_floor_discovery_producer_result. The corpus-wide refusal still exists
and still blocks a landing; what is removed is a SECOND authority asserting it from a
consumer whose subject is a selected test population.
WHAT IS DELIBERATELY KEPT CORPUS-WIDE: the import scans. malformed_import and imports
protect THIS LANE'S OWN COMPLETENESS -- a malformed import line in any module the
closure walk reaches would silently NARROW the closure, which is the arm this witness
file exists to refuse, and the closure can reach any module rather than only universe
members. Selected-test completeness is kept; repository hygiene is handed back.
CONTROLS, EXECUTED:
scoped 17/17 PASS, exit 0
mutated scoping removed (every file walked again): EXACTLY ONE arm fails,
a_universe_member_is_walked_and_an_outsider_is_not, 16 PASS, exit 1
The new arm is what makes the scoping OBSERVABLE rather than asserted: the refusal arms
check what the derivation ANSWERS, and scoping changes what it SPENDS, so both fixtures
are accepted either way and a verdict-only set would stay green if the walk returned.
Two reads differing in one thing -- `v2.test.` versus `v2.testing.` -- with rows on the
inside and none on the outside is the scoping itself. A module-less read keeps its walk,
because the unowned-row refusal reads exactly those rows.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…aiming the behaviour it replaced Scoping discovery to the sources that consult it changed what this lane REFUSES, and the branch left the old guarantee asserted in three places. The finalize note said the per-source states are handed to floor_discovery_finalize_source_outcomes "untouched", and named filtering first as the thing that would make the lane blind to a sidecar violation outside `v2.test.*`. That is now precisely the behaviour: a non-member gets a zero state. The note now says what was given up, why it is a section 2 de-duplication rather than a section 4b rung drop -- required_floor_runner reaches the SAME floor_discovery_finalize_source_outcomes through parse_floor_discovery_producer_result, verified rather than asserted -- and which arms hold it. The selection_outside_read fixture note likewise said it "must DISCOVER cleanly"; it is a non-member and is no longer walked. the_out_of_selection_source_is_discovered_not_refused is renamed to the_out_of_selection_source_is_accepted_not_refused. The arm asserts acceptance; the old name claimed a walk that no longer happens, and would have been cited as coverage for it while staying green. FOUR CONTROLS, IN REFUSALS RATHER THAN ROW COUNTS. The existing pair observes what discovery SPENDS, and would stay green if the finalize were disarmed outright, because a disarmed finalize enrols the same rows. The new arms drive native_lane_universe end to end: a walked member's violation still refuses, a non-member's no longer does, the floor's own producer still refuses THAT SAME content read off the fixture, and a module-less source keeps its walk and still refuses. Three fixtures differing in one property -- the module header -- each carrying `test fn` at a non-`_test.dag` path, which is a real TestMarkedDecl violation through the real producer rather than a hand-built walk state. EVIDENCE. All six arms return true. Mutating native_lane_discovery_for to walk every source turns a_non_member_sidecar_violation_no_longer_refuses_the_lane red (returned `false`), so the narrowing arm discriminates and is not a decoration; the mutation is reverted. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…arried-facts note arguing for corpus-wide discovery FIXTURE ISOLATION (review item 1). The three specimens varied their PATH alongside their module header, and `compilation_unit` is what discovery receives as its entry path -- an operational input, not a label. A wrong implementation deciding membership from the path prefix satisfied every specimen. They are now built by ONE CONSTRUCTOR taking only the content, so the isolation is structural rather than a promise three hand-copied records keep, and all three sit at a path under `src/v2/test/`. The non-member therefore declares `module v2.testing.violation_probe` FROM A MEMBER-LOOKING PATH, which is the missing discriminator rather than a separate control. THE CARRIED-FACTS NOTE (review item 2) said "discovery is a corpus-wide question and its refusals must hold outside any selection", which is what this branch stops doing, and described a rendered main and a future argv operand that this branch already changed. It now carries the actual pipeline and states the boundary honestly: THE NATIVE-UNIVERSE BOUNDARY IS NOT THE SEVEN-TEST BOUNDARY -- discovery is scoped to `v2.test.*` membership, not to the requested pattern, so a run naming one package still walks every other native test module, and acquisition and the import scans remain broader. EVIDENCE LEVEL, corrected in both files rather than only in the PR. The 23.35 s is the OLD PHASE COST, not a saving demonstrated here. A successful native build proves COMPILATION, not that a second fold is gone; closing that needs the produced main and its call path read, with the runtime claim from the existing [native-cost-partition] observations. And the floor-preservation arm runs the PRODUCER AND FINALIZER themselves -- that `required_floor_runner` calls that same finalize is SOURCE INSPECTION, not a newly executed merge-blocking control. The preserved caller is read; the preserved computation is run. REBASED onto current main, absorbing the de-duplication so this is one head. The rebase collided with #12006, which had added two arms and the `symbol_lexeme` import to this same witness; both of its arms are byte- identical to main's copy here. EVIDENCE. All seven arms return true. Two mutations of `native_lane_discovery_for`, each run against a_non_member_sidecar_violation_no_longer_refuses_the_lane: - scoping removed, walk every source -> returned `false` - membership read from the PATH prefix -> returned `false` The second is the one the fixture repair exists for: under the previous fixtures that implementation stayed green. Both mutations reverted and the file diffed byte-identical afterwards. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two stale claims in the paragraph above the pipeline explanation, both about behaviour this branch alters: `native_lane_universe` was described as "what the lane's rendered main calls". The rendered main now calls native_lane_universe_of_facts with the facts it already holds and the pattern it was asked for; this entry remains for callers that hold an ingest and not facts. "A corpus refusal outside the pattern still refuses" was true of selection and is still true of it -- a refusal from a source this lane WALKS survives a pattern that excludes it -- but read as a corpus-wide guarantee it now overstates: discovery no longer walks non-members, so a violation there is not this lane's to raise. The note now separates what SELECTION does with refusals from which sources are WALKED, and points at the finalize where that boundary is argued. Documentation only; no production or witness behaviour changes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
11866c0 to
0cea573
Compare
|
Acceptance check taken the second way you offered: qualified through the repaired workflow rather than adjudicated by hand. You were right that the in-flight run could not be trusted for this. It started before #11829 landed, so its floor job had "Nominal witnesses" but no receipt-adjudication step — exactly the separation that PR repairs. Rather than inspect that run's receipt manually, I rebased onto current main so the base contains Verified after the rebase rather than assumed: The stale paragraph — fixed, and it had a second errorThe five-line note above the pipeline explanation carried two claims this branch invalidates, not one:
PR description synchronized too: the stacking paragraph, the "six arms" wording and the native-build evidence sentence are all corrected, and it now says plainly that these witnesses are not the seven parser tests — passing them qualifies this boundary change and says nothing about whether those execute natively. On the acceptance ruleTaking your version over mine, because mine fails in the opposite direction:
Absent results must not read as an empty success — which is what caught the broken rebase — and several No further expansion of this change. Once the new run reports, it is ready for the landing decision. |
|
Dequeued from the merge queue (was position 4 at head 0cea573) by the v2 Foundation manager. This head edits |
…oped-to-consumers
…to fix/lane-discovery-scoped-to-consumers
…nd also found THE BLOCKING DEFECT. This branch edited src/v1/05_emit_rust.dag without regenerating src/v1/stage0/src/v1_compiler_emit_rust.rs, so the .dag authority and its committed realization disagreed on a line this branch changed and the headline repair existed in no built binary. Verified per file: native_lane_universe_of_facts in the mirror goes 0 -> 1. Round: claim_executor --regen-round-cost --regen-affected-scope, on a base merging origin/main and origin/fix/std-measure-mirror-regen (#12027) as merge commits, coordinated with snappy-deer-443 who serializes v1.compiler.emit_rust. REGEN=0, changed_paths=2, convergence_stages=1. WHY AN UNRELATED std_measure.rs CHANGE RIDES ALONG, stated because a reviewer should not have to infer it. #12023 edits v1.compiler.emit_rust, which is under gunbc.regen_affected_set regen_generation_input_prefixes, so the scoped round correctly resolves to WholePopulation -- 157 mirrors, not the two this branch touches. That round emitted std.measure kibibyte_from_byte_size_floor, which main's committed mirror does not carry. It is not scope creep and not a stray write. The function is DECLARED in dag/std/measure.dag, added by 3ab9d31 (Pkg4, #11962); main's mirror last moved at 2e6b96c, long before; and it is CONSUMED three times in dag/gunbc/compute/host_capacity.dag. So main's mirror has been short a declared, consumed function since Pkg4 landed, and a whole-population regen is what surfaced it. #12027's own head also omits it, which snappy-deer-443 verified independently and withdrew that PR's merge ask over. The cause is a scoped round whose edited .dag set is EMPTY -- a PR editing only a mirror regenerates nothing and reports a fixed point vacuously. That is their finding to file; noted here only to explain why these bytes differ from #12027's and why the correct side was kept rather than dropped to resolve the contention. Controls: native_lane_import_refusal_witness_test 23/23, including all four boundary arms this branch added. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Review 69844's blocking finding is fixed, and the round surfaced a second thing worth naming. The blocking defect. This branch edited Round: Why an unrelated Not scope creep:
So main's mirror has been short a declared, consumed function since Pkg4 landed; a whole-population regen is what surfaced it. #12027's head omits it too — independently verified by the serializing lane, which withdrew that PR's merge ask over it. The correct side was kept rather than dropped to resolve the contention. Controls: One caution on my own evidence: the round reports — sent from crisp-dove-588 |
DESIGN section 6: "Name the instrument, never transcribe its output ... a
transcribed number is unreachable from the thing that owns it, so it rots
without anyone touching either end." Both sites are lines this branch ADDED, so
this is new rot rather than inherited.
00_compile.dag:1813 named no producer at all while carrying the figure the whole
scoping decision rests on ("935 of 6484 corpus files"). It now names what
re-derives the ratio: the adjudicating driver's terminal `universe` beside the
`[native-cost-partition]` line's `corpus_reads`.
00_compile.dag:2276-2279 did name `[native-cost-partition]` and then copied
23.35 s, 121.4 s, corpus_reads 6482 and closure_reads 133 into prose. It now
names the producer -- std.compiler_entry SourceRootEvalDriver's adjudicate mode
-- and states the claim that survives without any digit: universe_derivation
does not narrow with the pattern (corpus_reads stays at corpus scale while
closure_reads tracks the selection) and was entered twice per run.
The honesty the old note carried is kept verbatim: that figure is the OLD PHASE
COST and NOT a saving demonstrated by this change, and what the saving is has to
come from an integrated native run this change does not perform.
Verified: the three field names cited are real and emitted by the driver
(corpus_reads, closure_reads in 05_emit_rust; universe on the adjudicate
terminal), so this replaces transcribed numbers with citations that resolve
rather than with an invented symbol.
Controls unchanged: native_lane_import_refusal_witness_test 23/23.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…weep missed `NativeLaneIngestReceipt`'s note justified the corpus-wide `scanned` population "because discovery is a floor authority whose subject is the corpus and a `test`-marked declaration outside a sidecar must still be found". After native_lane_discovery_for that clause is FALSE for this lane: a test-marked declaration in a non-member module is precisely what this lane no longer finds. It is handed to the required floor, which reaches the same floor_discovery_finalize_source_outcomes over the full inventory. The POPULATION is unchanged -- the header and import scans stay corpus-wide -- so only the REASON rotted. The surviving reason was already written one function up: those scans protect THIS LANE'S OWN CLOSURE COMPLETENESS, because a malformed import line in any module the closure walk can reach would silently narrow the closure. The note now states that and records what it replaced. This is the same class this branch renamed the_out_of_selection_source_is_discovered_not_refused to avoid -- a rationale asserting a guarantee the code just relinquished, staying green because no Accepted program can read it (DESIGN section 4c). The branch swept three such notes and missed this one, one file over. Controls unchanged: native_lane_import_refusal_witness_test 23/23. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
What this changes
native_lane_source_factsrandiscover_floor_rows_for_source— a full content walk — for every read in the corpus. Its three consumers do not want the corpus:native_lane_label_universereadsf.discovery.rowsinside its own universe-member guard (Absent => accfor module-less facts, and a!native_route_universe_memberskip otherwise), so non-members never reach it.native_lane_unowned_row_pathreads the row count only in itsf.moduleAbsentarm.floor_discovery_finalize_source_outcomesfolds every state and refuses corpus-wide.Only (3) wants the corpus, and (3) is repository hygiene, not this lane's question. Whether some unrelated module places a sidecar correctly is not part of "are the requested tests complete".
Measured on the pinned seven-test run:
universe_derivationis 23.35 s of a 121.4 s wall, overcorpus_reads6482 whileclosure_readswas 133 — the phase that does not narrow with the pattern. Universe members are 935 of 6484 files, so one file in seven was consulted and all seven were walked.What this does NOT establish. The 23.35 s is the measured cost of the broader
universe_derivationphase, not a demonstrated saving from this patch. Nothing here re-runs the native lane, so no speedup is claimed or shown. What this PR establishes is the changed behaviour and the preserved refusal boundaries; the integrated native run is what would establish an actual saving, and it has not been done.These witnesses are not the seven parser tests. Passing them qualifies this boundary change. It says nothing about whether
v2.test.parse.expression_bodied_fn_decl_parseexecutes natively — those remain blocked on the code-generator nested-pattern fix and on field-read-off-a-call-result. A reduction in discovery cost is valid even while those still refuse, and passing tests would not by itself prove the redundant fold is gone.One landing route. #11986 is closed; this branch carries its de-duplication commit as its base, so there is one head to qualify rather than two copies of the same change.
The import scans stay corpus-wide deliberately: a malformed import line anywhere the closure walk reaches would silently narrow the closure, which is the arm
native_lane_import_refusalexists to refuse. Selected-test completeness is kept; repository hygiene is handed back.Why this is a de-duplication and not a rung drop
required_floor_runnerreaches the samefloor_discovery_finalize_source_outcomesthroughparse_floor_discovery_producer_result, and turns its refusal intoREQUIRED-FLOOR REFUSAL cause=FloorDiscoveryRefused. The corpus-wide refusal still exists and still blocks a landing. What is removed is a second authority asserting it from a consumer whose subject is a selected test population (DESIGN §2, §3).That claim is verified in the diff, not asserted: one of the four controls calls that exact function.
Three notes that asserted the replaced behaviour
The finalize note said the states are handed over "untouched" and named filtering-first as the thing that would make the lane blind outside
v2.test.*— which is now the behaviour. Theselection_outside_readnote said it "must DISCOVER cleanly". Andthe_out_of_selection_source_is_discovered_not_refusedclaimed a walk that no longer happens while staying green; it is renamed to..._is_accepted_not_refused, which is what it asserts.The controls
The existing row-count pair observes what discovery spends. It would stay green if the finalize were disarmed outright, because a disarmed finalize enrols the same rows. The four new arms are in refusals, driving
native_lane_universeend to end:Three fixtures differing in one property — the module header — each carrying
test fnat a non-_test.dagpath, a realTestMarkedDeclviolation through the real producer rather than a hand-built walk state. The third arm reads its content off the fixture rather than restating it, so the two cannot drift into agreeing about different sources.Evidence
All six arms return
true. Mutatingnative_lane_discovery_forto walk every source turnsa_non_member_sidecar_violation_no_longer_refuses_the_lanered (returned 'false'), so the narrowing arm discriminates rather than decorating. The mutation is reverted.Not reached by any
.dagarm, and said so in the source: whether the rendered main passes the facts it already bound rather than re-deriving them is a property of emitted Rust, and its evidence is a native build.🤖 Generated with Claude Code