Repository navigation
Print the exact closure behind each routed-entry resolve - #10258
Merged
Merged
Conversation
Contributor
Author
|
Addressed review 59395 in 4cbfc75. The existing path relativizer is private again, eliminating that public-surface modification. The remaining cross-crate projection is one new declaration, |
This was referenced Sep 3, 2026
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.
Outcome
claim_batch::resolve_timednow prints one identity-grain row for every module in the resolved closure, directly after the existing aggregate[resolve]line. Each row carries the routed entry, module identity, and repository-relative source path in stable order.This is a projection of
ResolvedGraph.modules, the exact population the resolver already returned for execution. It does not scan imports, resolve again, or infer membership fromitem_registry. The existingclaim_batchroute consumes the projection on every entry resolve.Pre-landing use
A lane can answer “is path P in routed entry E?” without running the long wet dispatch. Use the existing short resolve probe:
Resolution completes and prints membership before the deliberately bounded evaluation. The 2540ms figure characterizes the predecessor resolve path, without this membership projection; it is not a measurement of the successor shipped here. Specifically, PR #9725 reports the existing
[resolve]producer at 2540ms fordag/test/claim/self_host_00_compile_behavioral_witness_test.dag(79 modules, 2220 resolved items). This PR’s targeted test executes the membership projection over a controlled two-module resolved graph; it does not re-measure that production entry. The output is the instrument; this PR does not transcribe today’s members into a document.The projection is outside the charged per-claim window:
run_witnessescallsresolve_timedonce for anEntryGroup, constructs one evaluation context, and only then loops over that group’s functions. Each iteration entersrun_claim_measured, where the CPU clock and 500ms evaluation deadline begin. Closure sorting and output therefore add per-entry route overhead and log volume, but neither execute once per claim nor contribute to the CPU quantity enforced by the per-claim line. This is not a fixed-volume producer: it emits one row per resolved module per entry group, so a full floor log grows as entry groups × their closure sizes. That work remains visible in preparation and whole-run cost even though it is outside the per-claim charge.The semantic subject digest currently hashes raw file content. Consequently any byte change in a printed member path, including annotation-only prose, moves that digest; this PR reports membership and does not claim otherwise.
Seed boundary
The sole new hand-authored declaration is
v1_compiler.cli_run resolved_closure_members.gunbc.routed_entry_closure_membership_seed_growth routed_entry_closure_membership_seed_growth_justificationenrolls it at declaration grain, explains why the seed host is still required before a.dagevaluation frame exists, namesv1-hand-queue-drain, and dissolves when the modeled routed-entry execution path provides this same membership before dispatch.The first revision exposed the existing private
workspace_relative_repo_path; that public-surface expansion is removed. The private helper remains unchanged and the one justified projection calls it insidecli_run.Scope split
The requested open-PR writer-set producer is deliberately separate. It depends on live forge state and does not belong on the compiler resolver path; dashboard node
adhoc-c9d9cda1-cafowns that half.Verification
cargo fmt --all --checkcargo test --release -p v1-compiler --bin claim_batch resolved_closure_membership_tests -- --nocapture(1 passed on current head)cargo check -Z definitely-not-a-real-flagfailed on stable Cargo as required, confirming the remote runner executed the commandA direct run with the locally installed
gunbcwas not treated as evidence: that binary predates the current grammar and refused the current corpus broadly.