Skip to content

Fix forward #8468: restore the function-value call lowering the merge silently reverted - #8516

Merged
briansrls merged 1 commit into
mainfrom
fix/8468-seed-remerge
Aug 19, 2026
Merged

briansrls merged 1 commit into
mainfrom
fix/8468-seed-remerge

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 19, 2026 •

Copy link
Copy Markdown
Contributor

#8468 was merged with a stale resolution of one generated file. The
generated-artifact merge driver refuses rather than answering: it leaves the
path unmerged with the OURS side in the worktree and NO conflict markers. The
ours side was the branch's seed, which predated main adding the function-value
call lowering, so the merge reverted it in the committed seed only:

                                 dag   seed(merged)   seed(now)

call_semantics_is_function_value 3 0 3
emit_typed_function_value_call 2 0 2
rust_callable_return_wrap 2 0 2
callee_is_function_value 9 0 7

No other seed file referenced those symbols, so the tree still built. The
regression was SILENT, not loud -- 04_infer.dag still constructs
FunctionValueCallSemantics, so the variant is live and the running compiler
stopped lowering it. Nothing would have reported this.

RECONSTRUCTED, NOT PATCHED. The file is taken from pre-merge main
(8b20599) with #8468's intended delta re-applied on top, rather than
hand-adding the missing symbols back. Verified by diffing the result against
pre-merge main: it contains the hand_maintained_map_key_required_type_names
roster wired into the same fixpoint and NOTHING ELSE, and
callee_is_function_value is back to its pre-merge count of 7.

The PR's other two intended changes needed no action here and are confirmed
intact on main: std::hash::Hash on ItemKind (v1_compiler_infer_items.rs is
byte-identical to main -- it survived the bad merge) and obs_human_elapsed
(v1_compiler_runtime_rust.rs was never conflicted).

Verified remotely with a must-fail control so a no-op cannot read as a pass:
Applied patch src/v1/stage0/src/v1_compiler_emit_rust.rs cleanly.
CONTROL_EXIT=101 (cargo check -Z definitely-not-a-real-flag)
BUILD_EXIT=0 compiling=105 finished=1 errors=0

THIS IS THE INTERIM, NOT THE FIX. It hand-resolves generated bytes, which is
precisely what caused the problem. required-regen cannot currently produce the
authoritative bytes (see #8518, which makes it execute but not pass), so
regeneration is unavailable. The regenerated bytes supersede these the moment
it can produce them, and this file should not be treated as authoritative in
the meantime.

Follow-up to #8468 (merged). Companion to #8518.


🤖 Generated with Claude Code

https://claude.ai/code/session_01FwPMTY6Myy3scaMNn33cg5

… silently reverted

#8468 was merged with a stale resolution of one generated file. The
generated-artifact merge driver refuses rather than answering: it leaves the
path unmerged with the OURS side in the worktree and NO conflict markers. The
ours side was the branch's seed, which predated main adding the function-value
call lowering, so the merge reverted it in the committed seed only:

                                     dag   seed(merged)   seed(now)
  call_semantics_is_function_value     3        0             3
  emit_typed_function_value_call       2        0             2
  rust_callable_return_wrap            2        0             2
  callee_is_function_value             9        0             7

No other seed file referenced those symbols, so the tree still built. The
regression was SILENT, not loud -- 04_infer.dag still constructs
FunctionValueCallSemantics, so the variant is live and the running compiler
stopped lowering it. Nothing would have reported this.

RECONSTRUCTED, NOT PATCHED. The file is taken from pre-merge main
(8b20599) with #8468's intended delta re-applied on top, rather than
hand-adding the missing symbols back. Verified by diffing the result against
pre-merge main: it contains the hand_maintained_map_key_required_type_names
roster wired into the same fixpoint and NOTHING ELSE, and
callee_is_function_value is back to its pre-merge count of 7.

The PR's other two intended changes needed no action here and are confirmed
intact on main: std::hash::Hash on ItemKind (v1_compiler_infer_items.rs is
byte-identical to main -- it survived the bad merge) and obs_human_elapsed
(v1_compiler_runtime_rust.rs was never conflicted).

Verified remotely with a must-fail control so a no-op cannot read as a pass:
  Applied patch src/v1/stage0/src/v1_compiler_emit_rust.rs cleanly.
  CONTROL_EXIT=101 (cargo check -Z definitely-not-a-real-flag)
  BUILD_EXIT=0  compiling=105  finished=1  errors=0

THIS IS THE INTERIM, NOT THE FIX. It hand-resolves generated bytes, which is
precisely what caused the problem. required-regen cannot currently produce the
authoritative bytes (see #8518, which makes it execute but not pass), so
regeneration is unavailable. The regenerated bytes supersede these the moment
it can produce them, and this file should not be treated as authoritative in
the meantime.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FwPMTY6Myy3scaMNn33cg5
@gunbai-bot
gunbai-bot Bot force-pushed the fix/8468-seed-remerge branch from fba2982 to 909cc08 Compare August 19, 2026 05:13
@gunbai-bot gunbai-bot Bot changed the title v2 self host Fix forward #8468: restore the function-value call lowering the merge silently reverted Aug 19, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review August 19, 2026 05:13
@briansrls
briansrls merged commit 3ed955a into main Aug 19, 2026
1 check passed
@briansrls
briansrls deleted the fix/8468-seed-remerge branch August 19, 2026 06:32
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.

1 participant