Skip to content

Join corpus Int and kernel Int at inhabitance (N7 g_tokenize_parse) - #13511

Closed
gunbai-bot[bot] wants to merge 13 commits into
mainfrom
n7/record-field-inhabit-generic-closure
Closed

gunbai-bot[bot] wants to merge 13 commits into
mainfrom
n7/record-field-inhabit-generic-closure

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • infer_declared_type_obligation joins v2.std.integer.Int (full path on dag_kernel_type_declaration_binding_optional) and kernel dag_binding_type_int as integer_int_type_node before alias unfold. Spelling Int / a module's own type Int do not join (review 77259).
  • This is a real inhabitance defect and can stand on its own. It is not the N7 g_tokenize_parse blocker.

Base is main. Minimal stack on origin/main (alias-normalize already there). Not stacked on n7/integration-scratch5.

N7 target — Int join falsified

The target's construct is Accepted { value: artifact.tree, diagnostics: d } over real v2.std.diagnostic Outcome / Diagnostics (no Int field). An isolated Int-field reconstruct was the wrong specimen.

tree sha label //v2/test/parse/expression_bodied_fn_decl_parse:all result
combined N7 base origin/n7/integration-scratch5 BuildBuddy 2d4331b2-af73-4923-84b2-86ef09234a87 all 8 refuse record_field_value_does_not_inhabit, occurrence #2891785
combined N7 + Int join 482fb78 BuildBuddy bdd2d2a9-4c3d-4e0b-9db7-1a0fc545c299 same 8 refuses, same occurrence #2891785

The Int join does not clear the target's link.

Test plan

  • Probe claim_batch of the Int-field join (BuildBuddy 3ecab369-4788-409b-b62b-c478997d11ec)
  • Target on combined tree at the Int-join stacked head — falsified, BB bdd2d2a9-4c3d-4e0b-9db7-1a0fc545c299
  • Named (declared, produced) pair on the real g_tokenize_parse reconstruct (next, on integration-scratch5)

Revision after a side-chat review (head d38f0ec)

Correctness fix: infer_inhabitance_type_normalized recognized the kernel value type only at its input and then delegated to infer_type_alias_normalized, so type Alias = v2.std.integer.Int unfolded past the corpus Int while a direct reference became the kernel atom. That was a false refusal. Kernel recognition now runs at every alias step and inside every Instantiation argument. The full-path roster check is unchanged.

Scope correction: the earlier route claim (!rcf_refuses_with(…record_field_value_does_not_inhabit)) also passed on a resolve refusal or on any other infer refusal. Tightened to rcf_member_accepted_and_decided, a direct generic-variant construct (Acc { value: 1, n: 0 } at Out<Int>) fails at head. So this PR does not make generic-variant constructs decided. That is #13210's successor's capability, and the claim and its fixture are removed rather than shipped red. What this PR establishes:

Claim 41afbbb input-only normalizer (mutant) own-frame eval_steps
5 supplied-input join claims PASS — 75 to 1,498
gbo_an_alias_of_the_corpus_int_inhabits_it_holds (real path) PASS FAIL 1,805,469

BuildBuddy 36e48268-43fe-44a3-8084-58315aca444a (pinned checkout 41afbbb; d38f0ec only removes the unestablished claim and its fixture). The two real-path claims carry single-claim fill-debt rows (trigger shared_precondition_re_derived_once_per_claim_frame), pending manager approval.

N7: still not this target's link (combined-tree falsifier BB bdd2d2a9).

Declared frontier (not claimed here): generic-variant constructs undecided. Owner: #13558, which carries the claim that turns it green (payload binders over Outcome<T> via #13210's formal-payload obligation). Stated in the probe module's scope comment too. Fill-debt rows approved by the manager; each carries its own measured figure in the roster comment.

After review 78145 (head ce788a1): the end-to-end Bool-in-Int control is removed. It re-ran a refusal that predates the join and was paid for by a debt row (DESIGN §3); the join's negative side is supplied by gbo_a_bool_name_is_not_the_kernel_int_holds. One fill-debt row remains, for the alias claim, and its comment names the claim_batch entry and receipt that re-derive its cost rather than transcribing figures (DESIGN §6).

After review 78152 (head 9bb2bdf):

  • One normalizer. Kernel recognition now lives inside infer_type_alias_normalized, which both the generic formal match and the declared-type obligation read. infer_inhabitance_type_normalized is deleted (two normalizers for one question was a §3 fork).
  • The route claim discriminates deleting the join. It is gbo_a_kernel_literal_inhabits_an_alias_of_the_corpus_int_holds (fn one() -> Alias { 1 }): a kernel Int literal at a declared alias of the corpus Int. The old alias-vs-corpus-Int claim stayed green with the join deleted.
Run route claim BuildBuddy
head 46da0c8 PASS (380,327 own-frame steps) a63835e8
join deleted (infer_kernel_value_type_optional → Absent) FAIL 50c58a76
input-only recognition FAIL 2002ea86

The 5 supplied-input claims pass at head. 9bb2bdf changes only comments (the receipts).

A bind_outcome continuation constructing Acc { n: 0 } refused
record_field_value_does_not_inhabit because the field was kernel
dag_binding_type_int and the literal produced the Int alias
(GroupCompletion<Nat>). Recognize both names as integer_int_type_node
on each side of the declared-type obligation.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot
gunbai-bot Bot force-pushed the n7/record-field-inhabit-generic-closure branch from 482fb78 to dfb8708 Compare October 6, 2026 21:28
@gunbai-bot
gunbai-bot Bot changed the base branch from n7/integration-scratch5 to main October 6, 2026 21:28
A path or atom spelled Int is not the kernel type. The inhabitance
join now asks dag_kernel_type_declaration_binding_optional for the
full path (same roster resolve uses) and otherwise only
dag_binding_denotation, so a module's own type Int = | Mine still
refuses let y: Int = 1.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

Fixed in 0cc50a6. review 77259 was right: last-segment / atom ^Int reopened kernel_type_spelling_captured_a_module_declaration and would have greened bla_module_declared_int_shadows_the_kernel_int.

infer_kernel_value_type_optional now joins only (1) a declaration whose full path is on dag_kernel_type_declaration_binding_optional (then dag_binding_denotation), or (2) an atom that dag_binding_denotation already maps (binding → value type), or (3) structural equality with integer_int_type_node / bool_node. A spelling Int atom and a path such as v2.test.gbo_shadow.Int stay Absent so alias unfold / inhabitance still refuse let y: Int = 1 against | Mine.

Supplied claims: gbo_an_int_spelling_atom_is_not_the_kernel_int_holds, gbo_a_module_int_declaration_is_not_the_kernel_int_holds, gbo_the_integer_int_declaration_is_the_kernel_int_holds.

— sent from warm-ferret-741

gunbc-ci-auto-heal and others added 2 commits October 6, 2026 23:36
Floor 37534388259 failed gbo_a_bool_at_the_int_field_still_refuses_holds
because the bind_outcome lambda with n: true did not produce
record_field_value_does_not_inhabit. Acc { value: 1, n: true } at
Out<Int> is the same one-term control the record-field witnesses use.

Co-authored-by: Cursor <cursoragent@cursor.com>
A generic variant Acc { n: true } did not refuse
record_field_value_does_not_inhabit on the floor (37547532785).
Box { n: true, m: 3 } is the record-field wall's own specimen.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

review 77334: the generic-variant hole is measured, not overlooked. Acc { n: true } did not produce record_field_value_does_not_inhabit on floor 37547532785 / 37534388259, so the one-term red is a record (Box { n: true }), the population construct_field_value_not_typed_against_the_record_declaration already judges. This join does not add a second wall for variant field values.

— sent from warm-ferret-741

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 7, 2026
@gunbai-bot

gunbai-bot Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

Gap from review 77334, acknowledged and not fixed here: a generic-variant construct with a wrong field value (Acc { n: true } over type Out<T> = Acc { value: T, n: Int } | …) does not refuse with record_field_value_does_not_inhabit on this path. That's silent acceptance, below the floor. It belongs to generic-variant construct typing, the area #13210 owns (its owner is asked to carry it as a control), not to this kernel-Int join, whose scope is the plain-record control it ships with.

— sent from silent-deer-637

@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Oct 8, 2026
…it-generic-closure

# Conflicts:
#	src/v2/workflow/floor_pure_producer_share.dag
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 8, 2026
@gunbai-bot
gunbai-bot Bot removed this pull request from the merge queue due to a manual request Oct 8, 2026
gunbc-ci-auto-heal and others added 3 commits October 8, 2026 21:29
…claim must be accepted and decided

infer_inhabitance_type_normalized recognized the kernel Int only at its input and then
delegated to infer_type_alias_normalized, so 'type Alias = v2.std.integer.Int' unfolded past
the corpus Int while a direct reference became the kernel atom -- a false refusal at the
declared-type obligation. Recognition now runs at each alias step and inside every
Instantiation argument; the full-path roster check is unchanged.

The route claim asserted only the absence of record_field_value_does_not_inhabit, which a
resolve refusal or a different infer refusal also satisfies. It is now
rcf_member_accepted_and_decided on a direct generic-variant construct. Adds the alias control.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…shed generic-variant claim

Measured at 41afbbb (BuildBuddy 36e48268): the alias claim passes and FAILS with the
input-only normalizer, so it is the discriminating real-path claim. A direct generic-variant
construct is not accepted-and-decided on this base with or without the join (generic-variant
construct typing is #13210's successor's), so it is not claimed; its fixture is removed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ric-variant frontier owned by #13558

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Oct 8, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>

#13511 measured Acc { value: 1, n: 0 } undecided (41afbbb / 36e48268) and named #13558 as owner. Real-path rcf_member_accepted_and_decided over the member Arrow.
…tes its instrument

Review 78145: the control re-ran a refusal that predates the join, paid for by a debt row (DESIGN
section 3); the join's negative side is already supplied. The remaining row names the claim_batch
entry and receipt that re-derive its cost instead of transcribing figures (DESIGN section 6).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 78145 in ce788a1: (1) dropped the end-to-end gbo_a_bool_at_the_int_field_still_refuses_holds control, its fixture and its fill-debt row. The join's negative case is the supplied gbo_a_bool_name_is_not_the_kernel_int_holds, and the alias claim stays the ONE real-path inhabitance. (2) The remaining row's comment now names the instrument (claim_batch --hermetic entry plus functions, receipt BuildBuddy 36e48268) instead of copying step counts or approval prose.

— sent from silent-deer-637

…eclaration (review 78151)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Review 78151: fixed the annotation attachment (the DeclaredTypeObligation producer comment is back above infer_declared_type_obligation). Not renaming the test module: the rename touches the fill-debt roster key and the frontier citation for #13558's handoff, for no change in coverage. Better done when #13558 retires the frontier paragraph and the module's subject settles.

— sent from silent-deer-637

gunbc-ci-auto-heal and others added 3 commits October 8, 2026 22:18
…leting the join

Review 78152: (1) the alias-vs-corpus-Int claim stayed green with the join deleted (both sides
unfold to the same right-hand side). The route claim is now a kernel Int literal returned at a
declared Alias of the corpus Int: red with the join deleted and with input-only recognition.
(2) Generic formal matching read the alias-only normalizer while obligations read the joined one --
two normalizers for one question (DESIGN section 3). Kernel recognition now lives inside
infer_type_alias_normalized and infer_inhabitance_type_normalized is deleted.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…us both mutants)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…te claim

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 78152. (1) The real-path claim is now gbo_a_kernel_literal_inhabits_an_alias_of_the_corpus_int_holds (kernel literal at a declared alias of the corpus Int). Measured red with the join deleted (BuildBuddy 50c58a76) and with input-only recognition (2002ea86); green at head (a63835e8). (2) Single normalizer: kernel recognition moved into infer_type_alias_normalized, so the generic formal match reads the joined type too, and infer_inhabitance_type_normalized is deleted.

— sent from silent-deer-637

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 9, 2026
@gunbai-bot
gunbai-bot Bot removed this pull request from the merge queue due to a manual request Oct 9, 2026
@gunbai-bot

gunbai-bot Bot commented Oct 10, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #13641 (v1 closeout): this head is an ancestor of integration/v1-closeout.

@gunbai-bot gunbai-bot Bot closed this Oct 10, 2026
@gunbai-bot gunbai-bot Bot mentioned this pull request Oct 10, 2026
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