Skip to content

Class B skip-set: close through the one closure authority - #13464

Merged
gunbai-bot[bot] merged 3 commits into
mainfrom
session/royal-ram-423
Oct 6, 2026
Merged

gunbai-bot[bot] merged 3 commits into
mainfrom
session/royal-ram-423

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

Summary

  • entry_resolve::import_closure_dag_files was the same import-only closure fork as the fixture walker Floor: close fixture closures through the one closure authority (fixes #13195 refusing #13420) #13437 closed: Class B gate skip-set membership followed import lines and missed providers reached only by qualified or bare reference (DESIGN §3).
  • Route the skip-set through extend_sources_to_both_closure_fixpoint after the import seed, same authority the gate/witness/regen loaders use.
  • Discriminating RED: a fixture entry whose mid module names a two-segment provider only by qualified reference includes that provider. Mutant: the retained import-only walk omits it. Positive control: compiling a broken entry in that same closed set still refuses.

Test plan

  • ctrl-build --remote -- cargo test --release -p v1-compiler --lib import_closure_dag_files_controls (3 passed)
  • CI floor / rust-unit-tests on the PR

Made with Cursor

Brian Searls and others added 3 commits October 6, 2026 10:46
import_closure_dag_files walked import lines only, so a provider reached by
reference was omitted from the Class B gate skip set — the same DESIGN §3 fork

Co-authored-by: Cursor <cursoragent@cursor.com>
#13437 closed on the fixture walker.
A second import-only walker in production is the fork the skip-set just closed;
the tests module is the only consumer.

Co-authored-by: Cursor <cursoragent@cursor.com>
The closure authority already follows import lines; a second walk was the
fork review 76991 named. The import-only loop stays only as the test mutant.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

review 76991 (artifact)

  • Clippy/dead_code on import_only_closure_dag_files: already moved into import_closure_dag_files_controls in 5888a72b5f. Not compiled into the non-test lib.
  • Two written import walks: production no longer BFS extract_import_paths. import_closure_dag_files now loads the declared seed entries and hands them to extend_sources_to_both_closure_fixpoint, which already follows import lines (module_paths_of_references / ref_out). The import-only loop remains only as the discriminating mutant in the tests module (55d6acda17).

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE / LAND at 55d6acda173bef931eaaf77ea85cbd9f0fe47237. No blocking findings in this change.

The §3 fork is actually removed. entry_resolve::import_closure_dag_files reads the declared seeds, obtains the index for the supplied pool, and delegates closure to extend_sources_to_both_closure_fixpoint; it no longer runs a separate production import BFS. The old algorithm remains only inside the #[cfg(test)] module as the discriminator. The Class B consumer retains its separate witness-layer and declared-import-pool demands, joins the resulting paths with the fixtures, and runs the gate rather than skipping when closure acquisition refuses.

The new controls EXECUTE on the merge path, not merely compile. At this head, .github/workflows/witnesses.yml runs on both pull_request and merge_group; rust-unit-tests invokes cargo test --release -p v1-compiler --lib, and the witnesses aggregate requires that lane to succeed for this same-repository PR. There is no #[ignore] on these three tests. The unit log for run 37454234741, job 112238135657, records all three as ok:

  • entry_resolve::import_closure_dag_files_controls::a_provider_reached_only_by_reference_is_closed
  • entry_resolve::import_closure_dag_files_controls::a_real_error_in_the_entry_closure_still_refuses
  • entry_resolve::import_closure_dag_files_controls::import_only_mutant_omits_the_reference_only_provider

The log explicitly checks out merge ref 78bd6327bfeaf65f8a79e6a7beddd95f9a3797aa, combining this requested head with 81df793e26dea6427e4264665eeb7b720fcda856. Result: 1,086 passed, 0 failed, 54 ignored, finished in 4.86s. None of these three controls is among the ignored tests. The associated workflow completed successfully.

The specimen tests the intended distinction: the entry imports mid, while mid names ProviderToken only through a qualified reference. The real closure contains its provider; the imports-only mutant omits it. The broken-entry control still closes that provider before asking the real resolver to refuse. These tests construct four local fixture files and supply only that fixture directory as their pool, rather than doing the whole-live-corpus acquisition that made the duplicate test in #13465 slow.

Evidence boundary: this verifies required execution and the suite's reported duration, not an individual <100ms timing certificate; this CI output does not report per-test execution times. I did not run a local compiler, clippy, or separate mutation experiment. The committed test-local mutant's execution is independently visible in CI. No additional walker, test lane, or coverage specimen is requested.

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 6, 2026
@gunbai-bot
gunbai-bot Bot removed this pull request from the merge queue due to a manual request Oct 6, 2026
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 6, 2026
Merged via the queue into main with commit d55fca9 Oct 6, 2026
5 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/royal-ram-423 branch October 6, 2026 20:48
@briansrls
briansrls restored the session/royal-ram-423 branch October 6, 2026 20:54
gunbai-bot Bot pushed a commit that referenced this pull request Oct 7, 2026
… ...) into session/vivid-lynx-377-map-get-fork
gunbai-bot Bot pushed a commit that referenced this pull request Oct 7, 2026
…e, pin the join.

policy_entry_closure_sources stays a closure follow-up with no rewire here. resolve_transitively_bfs_legacy is the primary-root seed already in the table, not a discovered omission. Completeness is the head-pinned search join, not an unbounded exhaustive claim.

Co-authored-by: Cursor <cursoragent@cursor.com>
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.

1 participant