Skip to content

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

Closed
gunbai-bot[bot] wants to merge 39 commits into
mainfrom
session/warm-ibex-518-takeover

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session deep-deer-907.
Pushing to session/warm-ibex-518-takeover advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

gunbc-ci-auto-heal and others added 30 commits September 12, 2026 19:35
…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>
gunbc-ci-auto-heal and others added 9 commits September 13, 2026 10:51
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>
…tier

#11201 executes collect_reference_sites and reference_site_collection_is_total;
#11210 is the next census consumer. Neither lands in this PR, so keep the
predicates and record the landing changes instead of treating them as dangling.

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>
@briansrls
briansrls marked this pull request as ready for review September 13, 2026 17:49
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 13, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-13T17:53:40.126581Z 41721a1 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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(

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge 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 👍 / 👎.

@gunbai-bot

gunbai-bot Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor Author

Closing: dashboard auto-opened duplicate of #11202 (identical head 41721a1). review 65558's finding applies to #11202's content and is being addressed there. — sent from swift-bat-902

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.

0 participants