feat(vcr-ra)!: SYNTH_SPILL_REALLOC default-on — Belady spilling ships (#242, VCR-RA-001)#583
Merged
Merged
Conversation
…#242, VCR-RA-001) The deliberate byte-changing flip, with the refreeze ritual (the v0.14.0 local-promotion pattern). The three-stage spill-realloc lever — #569 slot-value forwarding, #576 Belady spill re-choice, #579 whole-function slot liveness — now runs BY DEFAULT on the ARM path; SYNTH_SPILL_REALLOC=0 is the opt-out. Evidence basis: three landed flag-off increments, 40+ functions shrink / 0 grow across the 68-fixture x 2-path sweep, per-segment executable value-trace equality guards, and the unicorn-vs-wasmtime execution differentials re-run green on the NEW default bytes BEFORE re-pinning (flight_seam 0x07FDF307, frame_slot_dce default+opt-out, const_cse, spill_rung_581 12/12, r12_spill_496 control_step_decide 5/5, i64_param_518, br_table_value_509). Refreeze: flight_seam 738->730 (-8 B, dce728b4->6872d6f3), flight_seam_flat 878->866 (-12 B, 0665e623->d11849db); control_step and signed_div_const byte-identical. RV32 anchors UNCHANGED (ARM-only wiring). const_cse_reduction_242 optimized-path golden byte-identical. Opt-out is CI-gated: the new frozen_fixtures_spill_realloc_escape_hatch_restores_old_bytes test pins SYNTH_SPILL_REALLOC=0 to the pre-flip goldens; the SYNTH_NO_STACK_FWD hatch now composes with it. spill_realloc_242 flag-on assertions became default assertions. SYNTH_SPILL_ON_EXHAUST is untouched (population-changing; stays off pending silicon). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
avrabe
added a commit
that referenced
this pull request
Jul 2, 2026
… Belady spilling default-on (#585) Caps the four-lane arc: slot liveness (#579), exhaustion spill (#580), spill-rung fix (#582), SYNTH_SPILL_REALLOC flip + refreeze (#583). VCR-RA-001 -> verified; rivet release status v0.24.0: cuttable. Pin sweep + lock + CHANGELOG. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
avrabe
added a commit
that referenced
this pull request
Jul 2, 2026
) (#586) The script parsed `synth disasm` text with a regex to find the control_step_decide entry point — the #489 host-dependence class — and drifted into a KeyError on current main (found by the #583 flip lane; identical with SYNTH_SPILL_REALLOC=0, so pre-existing harness drift, not a codegen change). Symbols now come from the ELF symtab via pyelftools, mirroring the merged #575 flight_seam_differential pattern: - locate SHT_SYMTAB by section TYPE (synth's ET_REL objects emit it with an empty section name, so get_section_by_name fails) - mask the Thumb bit on STT_FUNC st_value - export name first (control_step_decide), positional func_0 fallback for older objects, loud SYMBOL MISSING exit otherwise Vectors and semantics are unchanged (13 vectors incl. gale's reference anchor control_step_decide(3000,50,40,0) = 0x00210A55); the script no longer needs a synth binary at runtime at all. Also CI-gates it as control-step-584-oracle (flight-seam-570-oracle pattern) so harness drift reddens instead of rotting — the r12_spill_496 oracle covers control_step on the DEFAULT optimized path, this covers --relocatable. Closes #584 Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.
SYNTH_SPILL_REALLOC default-on — Belady spilling ships (#242, VCR-RA-001)
The deliberate byte-changing flip, executed with the refreeze ritual (the v0.14.0 local-promotion pattern). The three-stage spill-realloc lever — #569 slot-value forwarding, #576 Belady spill re-choice, #579 whole-function slot liveness — now runs by default;
SYNTH_SPILL_REALLOC=0is the opt-out (any other value, or unset, runs the pass).SYNTH_SPILL_ON_EXHAUSTis untouched (population-changing — stays off pending silicon).Evidence basis for the flip
Execution differentials — run on the NEW default bytes BEFORE re-pinning
All unicorn-vs-wasmtime, exit 0:
const_cse_differential.pyframe_slot_dce_differential.py0x07FDF307on default AND opt-out, 4 arg sets eachflight_seam_differential.py0x07FDF307vs wasmtimespill_rung_581_differential.pyr12_spill_496_differential.pyi64_param_518_differential.pybr_table_value_509_differential.pycontrol_step_differential.pyhas a pre-existing harness break (KeyErrorcontrol_step_decidein its disasm-text symbol parse — the #489 host-dependence class); it fails identically withSYNTH_SPILL_REALLOC=0, i.e. on the pre-flip bytes, so it is not the flip. Its anchor is covered byr12_spill_496_differential.pyvs wasmtime, and control_step's.textis byte-identical under the flip anyway (see table).Refreeze table (
frozen_codegen_bytes.rs, ARM--relocatablegate)1a97711c…/ 304dce728b4…/ 7386872d6f3…/ 7300665e623…/ 878d11849db…/ 866b277453b…/ 34RV32 anchors: UNCHANGED — the pass is wired only in
arm_backend.rs(ARM path);frozen_fixtures_rv32_text_is_bit_identical_oracle_001passes untouched. Theconst_cse_reduction_242.rsoptimized-path golden (0xa68aa2da…/576) is also byte-identical under the flip — verified, no re-bless needed.Opt-out pin (CI-gated escape hatch)
SYNTH_SPILL_REALLOC=0reproduces the OLD hashes byte-for-byte (verified per fixture, and locked by the newfrozen_fixtures_spill_realloc_escape_hatch_restores_old_bytestest — the rollback proof AND a leak tripwire).SYNTH_NO_STACK_FWDescape hatch now composes withSYNTH_SPILL_REALLOC=0to reach the pre-STACK_FWD goldens (documented in the test).spill_realloc_242.rsflag-on assertions became default assertions; flag-off became the=0opt-out.Gate (all foreground, exit 0)
cargo build -p synth-cli✓cargo test -p synth-cli(43+ tests incl. re-pinned frozen gate + both escape hatches) ✓cargo test -p synth-synthesis(510+) ✓cargo test --workspace --exclude synth-verify✓cargo fmt --check✓ ·cargo clippy --workspace --all-targets -- -D warnings✓🤖 Generated with Claude Code