Skip to content

Reference-derived edges skip substrate vocabulary: a kernel or container spelling binds no module - #12200

Merged
gunbai-bot[bot] merged 5 commits into
mainfrom
session/stern-lynx-90-substrate-vocab
Sep 24, 2026
Merged

gunbai-bot[bot] merged 5 commits into
mainfrom
session/stern-lynx-90-substrate-vocab

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Reference-derived edges skip substrate vocabulary: a kernel or container spelling binds no module

Stacked on #12190, which has merged. Main is merged in, so the diff is now only this change.

Defect, the second arm of #12190's class. With #12190 applied, the Pkg7e plan's two-closure join shrank from 24 disagreements to 1: std.string_type was in the live closure DAG of v2.compiler.compile, but the seed emission writes no file for it. That is not host realization. Tracing the live edges into std.string_type finds exactly one importer, dag/std/primitives. That module is import-free and annotates data primitive_contract_roster_note: String, so the reference-derived producer resolved the kernel spelling String UniqueBare to the nearest module declaring it. The seed's resolver never binds a kernel or container spelling to a module. The census pull already skipped them ("SUBSTRATE VOCABULARY IS NOT A MODULE MEMBER"); the reference producer did not.

Repair. The census pull's inline closure becomes the named v1_compiler.cli_run is_substrate_vocabulary, built on std_types::kernel_type_set and container_type_arity. reference_resolution_facts reads it before resolving a bare name. One rule now serves both producers; there is no new list.

Evidence, by execution, in test.claim.namespace_root_reference_edge_witness, over fixtures/substrate_vocabulary_edge. The pool sits outside the corpus roots. In it, svk.decl declares type String, and svk.consumer annotates data note: String.

  • RED a_kernel_type_spelling_never_resolves_to_a_declaring_module: FAIL on the binary without this commit, PASS with it. The fixture was first authored with String only in parameter and field positions. That version produced no edge even on the old binary, so its RED was green by construction. It was re-shaped to the specimen's data-annotation position before this measurement.
  • Control an_ordinary_type_reference_keeps_its_edge: PASS on both binaries.
  • A qualified path's first segment is a namespace root: reference-derived edges no longer bind it to a same-named declaration #12190's pair still passes on both binaries.
  • Failure-mode row: gunbc.recurring_failure_mode a_namespace_root_segment_resolves_as_a_bare_reference now records this second arm and the shared recognition rule.

v1 admission. This is v2 self-host work under gunbc.v1_maintenance_standing v1_seed_standing: the dependency facts decide the emitted compiler's crate partition. Hand-item delta: +1 fn (is_substrate_vocabulary, promoted from an inline closure, so the net change is 0 rules) and one guard in reference_resolution_facts. No emitted mirror changes.

🤖 Generated with Claude Code

gunbc-ci-auto-heal and others added 3 commits September 23, 2026 23:54
…erived producer no longer resolves it to a same-named declaration

ExprVarClassification classify treated a dotted chain's head as a namespace segment only when no
declaration anywhere shared its spelling, and reference_resolution_facts runs with no declaration
index, so the head of every v2.std.* path fell to the free-reference default and resolved
UniqueBare to test.claim.secret_rotation_witness fn v2(). A head whose chain names a declared
module is now QualifiedChainHead; binders still outrank it and value chains keep their edges.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ner spelling binds no module

dag/std/primitives (import-free) annotates data with the kernel type String, and the producer resolved
it UniqueBare to std.string_type. The census pull already skipped kernel and container spellings; that
rule is now the named is_substrate_vocabulary and the reference-derived producer reads it too.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…r lands on the two helpers inserted above it (review 70749)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbc-ci-auto-heal and others added 2 commits September 24, 2026 05:46
…-substrate-vocab

# Conflicts:
#	dag/gunbc/recurring_failure_mode/a_namespace_root_segment_resolves_as_a_bare_reference.dag
#	dag/test/claim/namespace_root_reference_edge_witness_test.dag
…(E0428); its doc block returns to ref_field_chain

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Sep 24, 2026
Merged via the queue into main with commit 615811c Sep 24, 2026
5 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/stern-lynx-90-substrate-vocab branch September 24, 2026 13:50
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