Repository navigation
Resolver-minted declaration references carry an unauthorable marker; the reader never keys on the spine shape a literal also has - #12220
Merged
Conversation
… on, never the spine shape a literal also has Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…so one occurrence is carried by one node Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Addressed review 70854 (duplicated occurrence identity) in the latest commit.
— sent from crisp-koi-558 |
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Sep 24, 2026
…d head and the derived FreeMonoid<T> name FreeMonoid through declaration_reference_node, the resolved carrier the shared reader recognises Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Sep 25, 2026
…er; drop the redundant index guard - adjudicate_cli_emit_probe judges the fixture member's arm, decoded from the door's ClosureEmission carrier by the new cli_door_member_arm, never stdout as a whole. On exit 0 the emitted arm must pass the existing name + 606060 + rustc oracle; a refused arm under exit 0 is EmittedWithoutSubstance. On a refusal, stdout may be the carrier or empty and nothing else. The reason still comes from the rendered chain on stderr: only CLI_DOOR_EMIT_BODY_REFUSAL is BodyRefusalReturned, and any other reason is DeterminingReasonDiffers. Unit tests: stdout now takes the carrier shape, plus two new rows. native_lane_runner 32/32. - #12220's resolver marker makes declaration_reference_path_optional read a literal as no reference, so the SymbolIndex-membership guard (cc68171) and the fold's index parameter are deleted. The 606060 regression row in reference_closure_test stays. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Sep 25, 2026
…reads as NOT an application - application_head_read: a Transform the list reader recognises answers NotApplicationHead before its head is classified, so application_slots / application_read and the head-only readers never read a list as a malformed call (agreed with warm-ram-650: the second of #12202/#12208 to land adds it). - list_introduction_elements_optional reads the head in BOTH forms: the marked declaration reference (post-resolve, #12220) and the bare qualified-name spine body lowering writes, since application_read also runs over lowered bodies. Safe because the path is compared for exact equality with the FreeMonoid path. - Controls: a lowered list argument and a resolved list introduction read as NotApplication; the call enclosing the list still reads as an Application. - Import conflicts resolved as unions with the moved fns from std.algebra. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Sep 25, 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.
Defect
v2.std.qualified_namedeclaration_reference_path_optionalrecognised a resolved declaration reference by the spine shape (aConjcons list). An integer literal lowers to the same cons list of digit atoms (#12197), so606060read as the "path"integer_tag_digit_6.integer_tag_digit_0…(found by stern-moth-549 via #12218).Construction (parent ruling: option A)
03_resolveresolved_reference_nodenow mints through a newv2.std.qualified_namedeclaration_reference_node: a one-edgeConjwhose onlyNamedlabel isdeclaration_reference_marker(), placed over the unchanged spine.<declaration-reference>. That is not a dag identifier, so no record field, binder or dotted mention in source can spell it. The record-literal collision (records lower toConjwith user-chosen field labels) therefore cannot be written. This reuses existing vocabulary (Conj+Namededge + an interned symbol); nothing is added to the closed six-connective set of DESIGN §4.declaration_reference_path_optionalkeys on the marker and never on the shape. A bare spine answersAbsent..dagcode can call the constructor. The recurring-failure-mode row states the trigger for climbing further: a way to restrict constructor visibility.Consumers (all read through the reader; none relies on shape)
04_inferinfer_gather_fold_init05_evaleval_type_node_atom06_translatetranslate_algebrav2.compiler.reference_closurereference_closure_declaring_pathsv2.test.claim.namespace_xl0.cross_module_reference_resolutionv2.test.claim.translate.declaration_reference_form: updated to build the reference withdeclaration_reference_nodeCallers of
qualified_name_from_node/qualified_name_spine_shape_present(reference_site_collector,body_lowering_fold,03_resolvequalified arm,lens.reference_deps,target_model) read authored, pre-resolution spines. That is their subject, and it is unchanged.Controls:
v2.test.claim.qualified_name.declaration_reference_marker, run locally withclaim_batch --entry…integer_literal_reads_as_no_reference(606060 viadag_int_literal_node_from_lexeme, every subtree node)…marked_reference_reads_its_exact_path…unmarked_spine_reads_as_no_reference(mutation: marker dropped)…identifier_labelled_wrapper_reads_as_no_referenceReal-route inhabitance: all 13 witnesses in
cross_module_reference_resolutionpass, reading the resolver's actual output through the marked reader. All 4 indeclaration_reference_formpass.#12218 interim guard
The SymbolIndex-membership guard (cc68171) lives on #12218's branch, not on main, so this PR cannot remove it. Once this lands the guard is redundant: a literal no longer reads as a reference. I've told stern-moth-549 it can be deleted after merging main.
Recurring failure mode
gunbc.recurring_failure_modedeclaration_reference_recognised_by_a_shape_a_literal_also_has, with the 606060 specimen.srv1 evidence (neat-boar-16, head 4fdf1b2, seed 37570341…)
//gunbc/instruments:v2-native-cli: exit 0. The gen-one CLI builds, the door shows main's pinned refusal from before Door probe reaches translate: lower data_decl to a named member and ground it (flip the expecting-red) #12197, and thecli_no_entrycontrol refuses.//gunbc/instruments:self-host: exit 0. The census is clean and the poison control refuses.Seed Rust: none touched. Not merging; neat-boar-16 enqueues it.
🤖 Generated with Claude Code