Repository navigation
NAMESPACE XL-4 takeover: PR #11202 reference-derived graph - floor warm-enrolment repair, review 64996, edge spelling settled with eager-raven for the native route's closure ingest - #11293
Conversation
…ng since it was written v2.compiler.resolution_provenance models one name resolved at one position answering with its target and the module that contains it, and it models the dependency fold over those answers. Nothing in the corpus produced a ReferenceSite: the only constructors were five hand-authored fixture rows in one witness, which makes a well-shaped module dangling in DESIGN section 3c's exact sense -- a declaration whose consumers are described rather than executed. This is that producer. ONE COLLECTOR, TWO STAGES. NAMESPACE-XL's XL-0 denominator and XL-4's reference-derived graph ask the same question of the tree -- where is every mention, and at what containment position -- and differ only in what they fold the answers into. Two collectors would be the section 3 fork with the widest blast radius, because a mention one missed would be silently absent from both a denominator and a dependency edge. Landed as its own commit so XL-4 consumes it rather than building a second one. A declaration's NAME is an edge label and never a node, so an Atom is a reference by construction rather than by a filter that could be wrong. The two exclusions -- module header metadata, and _node_projection parse projections that would double-count every mention -- are recognised by the same predicates v2.compiler.symbol_index_fill consults. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U5avL86NJ1YoyyezZj2BuM
…trument. Fill the existing swap-body producer from resolved qualified-name sites (never import syntax), report typed diffs against the import graph, and hold the stage delivery receipt. Do not swap dependency_resolution_facts_live. Co-authored-by: Cursor <cursoragent@cursor.com>
Blanket filesystem import on module_graph forked List onto std.types and the new claim tests were censored at the enrolment ceiling; the producer stays on the named swap body and tools.reference_derived_graph.main remains the RED. Co-authored-by: Cursor <cursoragent@cursor.com>
…ng since it was written v2.compiler.resolution_provenance models one name resolved at one position answering with its target and the module that contains it, and it models the dependency fold over those answers. Nothing in the corpus produced a ReferenceSite: the only constructors were five hand-authored fixture rows in one witness, which makes a well-shaped module dangling in DESIGN section 3c's exact sense -- a declaration whose consumers are described rather than executed. This is that producer. ONE COLLECTOR, TWO STAGES. NAMESPACE-XL's XL-0 denominator and XL-4's reference-derived graph ask the same question of the tree -- where is every mention, and at what containment position -- and differ only in what they fold the answers into. Two collectors would be the section 3 fork with the widest blast radius, because a mention one missed would be silently absent from both a denominator and a dependency edge. Landed as its own commit so XL-4 consumes it rather than building a second one. A declaration's NAME is an edge label and never a node, so an Atom is a reference by construction rather than by a filter that could be wrong. The two exclusions -- module header metadata, and _node_projection parse projections that would double-count every mention -- are recognised by the same predicates v2.compiler.symbol_index_fill consults. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U5avL86NJ1YoyyezZj2BuM
Delete the module_graph mention walk. The swap body consumes collect_module_reference_sites and module_dependencies_from_sites. Co-authored-by: Cursor <cursoragent@cursor.com>
The swap body folds collect_module_reference_sites through module_dependencies_from_sites. Witness tests over the fixture identities require a reference-only edge, no unused-import edge, exactly one shared edge, and go red on a mutant that re-admits import-decl mentions. Co-authored-by: Cursor <cursoragent@cursor.com>
A fixture whose only provider mention sits in a call argument yields no reference-derived edge on parse_module trees (XL-4 ingest) and on normalized trees. Trigger is eager-raven-113's body-lowering repair. Co-authored-by: Cursor <cursoragent@cursor.com>
Your collector over parse_module trees does not recover type-position or out-of-call body mentions either; the rows record that absence until lowering and site collection catch up. Co-authored-by: Cursor <cursoragent@cursor.com>
…cle only. The walk sees type-position ProvidedMarker and still misses body-value and call-arg names. It is not the edge producer. Co-authored-by: Cursor <cursoragent@cursor.com>
… as a graph. An unread module must not look like a leaf. The fold carries unreadable_roots; the production Outcome refuses unless the fold is total. Co-authored-by: Cursor <cursoragent@cursor.com>
module_roots_from_source_root_ingest then normalized_tree_roots_to_nodes is the tree. On that route a qualified value mention is still missing, same as type-position and call contents; those rows are measurements of today. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
… a callee with no arguments is missing too. consumer_type_only has no call; the edge is still absent. The trigger is lowering widened to type positions, not body-lowering alone. Co-authored-by: Cursor <cursoragent@cursor.com>
A qualified cross-module mention is missing; a bare same-module name would not make an edge. A non-empty site list is not a usable graph. Co-authored-by: Cursor <cursoragent@cursor.com>
Call-argument and type-position stay tree-side. The qualified body mention retires when the collector reassembles dag_field_access_body_node, not when lowering lands. Co-authored-by: Cursor <cursoragent@cursor.com>
This fixture's type-position is a qualified name; the full spelling is still not a site. That stays with collector reassembly, not lowering. Call and callee stay tree-side. Co-authored-by: Cursor <cursoragent@cursor.com>
…e does not appear. That absence is resolution or edge derivation, not a declared type-position frontier and not lowering. Call contents stay eager-raven; qualified body stays the collector access-chain gap. Co-authored-by: Cursor <cursoragent@cursor.com>
A locally declared LocalMarker in type position is found. The type-position miss on a dotted name is the same class as a qualified body mention, not lowering. Co-authored-by: Cursor <cursoragent@cursor.com>
… the missing class. Co-authored-by: Cursor <cursoragent@cursor.com>
A locally declared LocalFieldOnly used only as a field type is missing on the production collector route, while a bare parameter type in the same module is found, so field position is independent of qualification. Co-authored-by: Cursor <cursoragent@cursor.com>
…erified. Atom and named-edge search over the ingested root finds the parameter type and does not find the wrapper name, field name, or field type, so the collector-absent field-type row gets no collector trigger until a drop is separated from a third representation. Co-authored-by: Cursor <cursoragent@cursor.com>
Call contents stay on eager-raven-113; the field-type census cause stays unverified. Co-authored-by: Cursor <cursoragent@cursor.com>
…bility. Stay collector-only: do not feed parse-QN sites from the lens, which would recover only type-position names from a tree the resolver does not consume. Co-authored-by: Cursor <cursoragent@cursor.com>
Qualified type-position on that oracle is the dotted-reference capability, not lowering. Co-authored-by: Cursor <cursoragent@cursor.com>
… the instrument (review 64925) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AGawTbuANGBSUghDFv4hjW
…rt edges once (review 64967) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AGawTbuANGBSUghDFv4hjW
…iers The floor interrupted both claim files before verdict by re-deriving parse-and-normalize per claim frame. One nullary producer, consumed by both files, is the ingest rather than the collector. Review 64996: dissolution frontiers name the claim-test instruments; collect_reference_sites waits on #11201 as the second consumer. Co-authored-by: Cursor <cursoragent@cursor.com>
Bare [] was not a List at the fold init. Edge counts still execute the collector, but only over the provider and the consumer the claim names. Co-authored-by: Cursor <cursoragent@cursor.com>
Bare [] is not a List at that match arm either. Co-authored-by: Cursor <cursoragent@cursor.com>
Floor run 34753104626 stored xl4_fixture_trees warm; the remaining over-margin rows were the parse-tree edge producer (~400-507ms). Normalized trees already execute that fold. Parse-tree claims now walk collect_module_reference_sites on the served parse root. Co-authored-by: Cursor <cursoragent@cursor.com>
The claim strings were a second corpus and had already drifted from the files the instrument reads. Warm ingest now filesystem_reads those files and uses located_roots_from_source_root_ingest for the production half. A missing provider or consumer returns the refused sentinel instead of a shorter pair. Pool build carries each module QN into emit (review 65395); the production Outcome matches the first unreadable root rather than widening after is_total. Co-authored-by: Cursor <cursoragent@cursor.com>
… no longer an import stand-in (review 65438) qualified_name_shape_precondition is the one O(1) spine check on v2.std.qualified_name. The collector calls it instead of re-spelling head/tail. reference_derived_resolution_facts is the producer the instrument already runs; the _flagged_pending_reference_producer wrapper is deleted rather than left as a nickname. Co-authored-by: Cursor <cursoragent@cursor.com>
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 41721a1dc2
ℹ️ 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".
| } | ||
| Present { value: module_qn } => | ||
| ReferenceDerivedEdgeFold { | ||
| edges: edges_from_provenance_owners( |
There was a problem hiding this comment.
Reject unresolved references before accepting the graph
When any collected site is unbound, ambiguous, or resolves to an ownerless target, module_dependencies_from_sites records it in FileDependencyProvenance.unresolved, but edges_from_provenance_owners projects only dependencies and the resulting fold tracks only unreadable roots. Consequently outcome_from_reference_derived_edge_fold accepts a silently incomplete graph, so the instrument—and eventually dependency-closure and affected-entry selection—can omit a dependency instead of refusing when resolution failed. Carry these unresolved results through the fold and reject the production outcome when they are non-empty.
Useful? React with 👍 / 👎.
Auto-opened by session-dashboard for session
deep-deer-907.Pushing to
session/warm-ibex-518-takeoveradvances 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