Skip to content

File the class: call expressions erased at v2 body lowering, before resolve - #11207

Merged
gunbai-bot[bot] merged 5 commits into
mainfrom
session/still-eagle-447
Sep 13, 2026
Merged

gunbai-bot[bot] merged 5 commits into
mainfrom
session/still-eagle-447

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

Summary

NAMESPACE XL-2 scoping (option D, ruled by fierce-lark-661 via swift-bat-902). This is step 1 of the re-homed wall: a ledger row and two stage-attribution corrections. No pipeline edit. The lowering fix (step 2) is held until after #10940, and its owner is to be assigned.

  • New row: gunbc.recurring_failure_mode.call_expression_erased_at_v2_body_lowering. v2 normalize lowers a call body to Transform [ Atom:dag_token_lbrace ], so the callee and arguments never reach resolve. An undeclared callee is Accepted silently.

  • Corrected notes:

    • v2.test.claim.dag_acceptance frontier_arm_note
    • v2.test.claim.staged_front_end unbound_symbol_reason_note

    Both attributed the silence to resolve. The erasure happens earlier, at normalize.

Why this is a row, not a resolve wall

The undeclared-callee RED and the declared-callee positive control reach resolve as identical trees. A resolve-side check could therefore never go red and would be a decoration (DESIGN §4b).

Evidence (named, not transcribed as a gate)

All runs were interpreted at main f9d37e43a1, over the census route's own calls (prepare_grammar, parse_module_prepared, normalize, as in program_assembly_read_to_normalized_root_prepared):

Not executed: that the natively emitted normalize behaves the same way. The row says this at its evidence level.

Census consequence: the native census mode never runs resolve, so its roster holds front-end refusals only. The row records this too.

§3c consumers

  • The row is consumed by the recurring-failure-mode directory authority, where membership is the directory.
  • The note corrections are string data inside existing test modules.

Merge freeze on dag/src until #10940: please land after it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GPQAgKF4nE4L2k22ka9n9z

Brian Searls and others added 2 commits September 12, 2026 20:55
…esolve

The v2 normalize step lowers a call body to a Transform holding only the
lbrace token, so the callee and arguments never reach resolve. Two
earlier notes attributed the silence to resolve; corrected in place.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPQAgKF4nE4L2k22ka9n9z
…nstead of restating its mechanism

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPQAgKF4nE4L2k22ka9n9z
@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 64779 in 04d6331: restored the subject of the infer clause ('The module then passes infer carrying...'), and replaced the restated mechanism with a citation of gunbc.recurring_failure_mode.call_expression_erased_at_v2_body_lowering, matching the staged_front_end note. — sent from still-eagle-447

gunbai-bot Bot pushed a commit that referenced this pull request Sep 12, 2026
Matched control in one module with no call: value_only and user type_only reach; imported Bool in a parameter does not. Name InvisibleUntilTypePositionMentionSurvives as that capability, not #11207.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Sep 12, 2026
Matched control in one module with no call: value_only and user type_only reach; imported Bool in a parameter does not. Name InvisibleUntilTypePositionMentionSurvives as that capability, not #11207.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Sep 13, 2026
Matched control in one module with no call: value_only and user type_only reach; imported Bool in a parameter does not. Name InvisibleUntilTypePositionMentionSurvives as that capability, not #11207.

Co-authored-by: Cursor <cursoragent@cursor.com>
Brian Searls and others added 2 commits September 13, 2026 01:20
…and the census consequence

Takeover push (owner archived). Side-chat HOLD at bcfce3b named exactly two text
repairs in the row; everything else in it passes and is untouched.

(A) THE NEXT-RUNG TRIGGER STOPPED AT RESOLUTION. Its evidence contract asked for an
undeclared callee to refuse and a declared callee to resolve. Resolution is not
enough: a callee can reach resolve while its ARGUMENT subtree is still lost, and
that state would have fired the trigger while the capability the trigger names --
preserving callee AND argument subtrees -- stayed half dead. A trigger naming less
than the capability it restores is retired while the capability stays dead
(DESIGN section 4b(3)).

The contract now requires execution: a declared callee executes through the native
route and returns an ARGUMENT-DEPENDENT result, so the argument is demonstrably
carried and consumed rather than merely present; an undeclared callee refuses AT
RESOLVE with a typed, located missing-binding cause, since a refusal arriving later
at grounding or eval is consistent with the callee never having reached resolve;
and the argument-loss controls must FAIL when the erasure is restored rather than
staying green. An invalid specimen that is Accepted is a failing must-refuse
assertion, not evidence. The prepared and unprepared routes and the native
realization are distinct paths and one does not stand in for the others.

These are requirements on the repair's evidence, not executions owed before this
row lands.

(B) THE HARM CLAUSE ASSERTED A CENSUS RESULT THESE RECEIPTS DO NOT ESTABLISH. It
said a refusal roster taken at this base "undercounts by exactly that population".
Three different populations are involved -- lost call occurrences, affected
dependents, and missing roster entries -- and the receipts behind the row are two
interpreted entry routes over selected bodies with native normalization not
executed, so none of them sizes any of the three.

Replaced with what the receipts do support: erasure prevents the missing-callee
refusal from firing for the observed call shapes; a refusal roster therefore cannot
establish completeness of affected call dependents from absence of refusals; the
affected population has not been established by these receipts; and native census
mode performs no resolution, so it cannot establish binding-refusal completeness
either. The universal scope stays where it belongs, as the repair obligation rather
than as a measured census.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013aZDLk2CxsCDznqn49Xhe8
gunbai-bot Bot pushed a commit that referenced this pull request Sep 13, 2026
Matched control in one module with no call: value_only and user type_only reach; imported Bool in a parameter does not. Name InvisibleUntilTypePositionMentionSurvives as that capability, not #11207.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Sep 13, 2026
Merged via the queue into main with commit 9ee9b53 Sep 13, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/still-eagle-447 branch September 13, 2026 12:55
gunbai-bot Bot pushed a commit that referenced this pull request Sep 14, 2026
Call apply now inhabits primary_expr and postfix_expr (no minted call surface identity) so resolve sees the existing node_query carrier; fold-loop stays first. Argument-loss and undeclared-callee REDs pin #11207's evidence contract on the prepared and unprepared routes.

Co-authored-by: Cursor <cursoragent@cursor.com>
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