Skip to content

fix(oracle): RQ-66-BOTHWRONG (#1210) — un-stale the frozen-anchor mirror that reddened main for five merges (#1255) - #1256

Merged
avrabe merged 2 commits into
mainfrom
fix/frozen-mirror-1210
Sep 10, 2026
Merged

fix(oracle): RQ-66-BOTHWRONG (#1210) — un-stale the frozen-anchor mirror that reddened main for five merges (#1255)#1256
avrabe merged 2 commits into
mainfrom
fix/frozen-mirror-1210

Conversation

@avrabe

@avrabe avrabe commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Un-stales the frozen-anchor mirror that has reddened main for five consecutive merges, and names the mirror itself as the defect.

What happened

scripts/repro/vcr_dec_001_graph_alloc_differential.py keeps its own copy of the frozen codegen anchors, hand-synced from crates/synth-cli/tests/frozen_codegen_bytes.rs. Its own header says so.

RQ-66-BOTHWRONG (#1249) correctly re-froze flight_seam from 706 to 718 bytes in the Rust golden, with a written cause and an executing differential proving the new bytes correct. It did not know this second copy existed.

flight_seam.wasm   e47705fd59f6  len=718   MISMATCH <--
VIOLATION: 1 check(s) failed.

Red from 4a3f6080 through 65d6df39 — the release commit and its cold-review follow-up included. Not a compiler regression: one source of truth moved and the other did not.

Why it hid

Exactly one of four mirrored anchors was stale. Three kept agreeing, so nothing looked systemically wrong and the single divergence read as a codegen change rather than a bookkeeping gap.

anchor hash present in the golden
control_step.wasm 8b3f1f6fe3a4 yes
flight_seam.wasm e7152735df88 no — stale
flight_seam_flat.wasm 5a5d67577254 yes
signed_div_const.wasm b277453b7829 yes

After the fix

OK: flag-off frozen; flag-on applies, RA-003 Consistent, no drift on
    non-applied, no growth on applied.

The stale value is not the defect — the mirror is

CLAUDE.md's first invariant is "derive what you check against from the artifact you ship", and records that the same failure was invented locally three times before anyone named it. This is a fourth instance, in a file whose own comment advertises a manual sync. Documenting a hand-sync doesn't make it safe; it just records where the next divergence will happen.

The header now says so, and carries the check that distinguishes the two failure modes:

grep -o '"[0-9a-f]\{64\}"' crates/synth-cli/tests/frozen_codegen_bytes.rs

A hash in the mirror that is absent from the golden is a stale mirror, not a regression — and telling those apart from the failure message alone currently costs a full local reproduction. Filed as #1255; reading the goldens directly is the real fix.

Related, found by the same incident

This oracle is not a required status check, and the merge ritual gating these merges counted only checks that had already reported fail. A pending non-required check was invisible to it. Replayed against #1249's own snapshot, five or more non-advisory oracles were still pending at merge time — the selector parity oracle among them. That gate has been corrected to block on pending, not just on red.

Refs #1210 #1255

🤖 Generated with Claude Code

https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L

…ror that reddened main for five merges (#1255)

`vcr_dec_001_graph_alloc_differential.py` keeps its own copy of the frozen
codegen anchors, hand-synced from `crates/synth-cli/tests/frozen_codegen_bytes.rs`.
Its own header says so. RQ-66-BOTHWRONG (#1249) correctly re-froze `flight_seam`
706 -> 718 in the Rust golden, with a written cause and an executing
differential proving the new bytes correct. It did not know this second copy
existed.

MAIN WENT RED FOR FIVE CONSECUTIVE MERGES — 4a3f608 through 65d6df3, the
release commit and its cold-review follow-up included:

    flight_seam.wasm   e47705fd59f6  len=718   MISMATCH <--
    VIOLATION: 1 check(s) failed.

That is not a compiler regression. It is one source of truth moving and the
other not.

EXACTLY ONE OF THE FOUR mirrored anchors was stale, which is what makes this
class dangerous — three kept agreeing, so nothing looked systemically wrong and
the single divergence read as a codegen change:

    control_step.wasm       8b3f1f6fe3a4   in the golden: True
    flight_seam.wasm        e7152735df88   in the golden: FALSE  <-- stale
    flight_seam_flat.wasm   5a5d67577254   in the golden: True
    signed_div_const.wasm   b277453b7829   in the golden: True

Corrected, and the differential now passes end to end:

    OK: flag-off frozen; flag-on applies, RA-003 Consistent, no drift on
        non-applied, no growth on applied.

THE STALE VALUE IS NOT THE DEFECT — THE MIRROR IS. CLAUDE.md's first invariant
is "derive what you check against from the artifact you ship", and records that
the same failure was invented locally three times before anyone named it. This
is a fourth instance, sitting in a file whose own comment advertises a manual
sync. The header now says the mirror is the defect and carries the one-line
check that distinguishes a stale mirror from a real regression, because telling
those apart from the failure message alone currently costs a full local
reproduction. Filed as #1255; reading the goldens directly is the real fix.

Refs #1210 #1255

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
@codecov

codecov Bot commented Sep 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

…d fix an alternate frame that a line shift had silently collapsed

RQ-66-BOTHWRONG changed the selector and added 16 lines to arm_backend.rs. The
mutation survey went red on main for five merges. None of it is a compiler
defect; all of it is ledger staleness, and one piece is a real defect in this
release's own work.

1. RE-ANCHORED 21 SHIFTED SITES. `reanchor` relocates by the stored `before`
   text, so the +16 shift resolved cleanly (1565:21 -> 1581:21, 1316:36 ->
   1332:36, and so on).

2. RETIRED ONE SITE THAT NO LONGER EXISTS. `R3-direct/BOUND/select_with_stack.rs`
   mutated `if target_idx < block_labels.len()`. RQ-66-BOTHWRONG (#1215b)
   REPLACED that guard — it was the clamp that sent a function-level br_table to
   `0 < 0` when no block was open, silently skipping both the value landing and
   the branch. The site vanished because the code it targeted WAS the defect.
   `reanchor` reported NOT FOUND rather than relocating to a lookalike, which is
   right. Moved to a `retired` list with its reason rather than deleted, because
   deleting shrinks the denominator with no record; the tool has no first-class
   retired state, filed as #1257.

3. RE-MEASURED THE DROPMOV CHANGED-SET, 8 -> 9. Byte triage against a LIVE
   baseline. A first attempt diffed against the ledger's RECORDED baseline at
   ad52535a and got 33 — that folds in 46 entries of tree drift the survey
   itself warns about. The wrong REFERENCE, not a wrong operation. The ninth
   module is `i64_result_pair_1189.wat`, a fixture RQ-66-WATCHED ADDED this
   release, so the set grew because the CORPUS grew. `ci_subset.want_changed`
   carries its own copy and was re-pinned by pin-subset's own rule.

4. THE ALTERNATE SILENT-SUBSET FRAME HAD SILENTLY COLLAPSED. This is the real
   defect. `BORDERLINE_LOUD_IDS` was a frozenset of the literal id
   "R1-routing/GUARD/arm_backend.rs:1006:8". After the +16 shift the site is at
   :1022:8, the set matched NOTHING, and `is_loud_effect_1006_8_silent` degraded
   to `is_loud_effect` — reporting 6/15 under the 25 % alternate's name where it
   should report 5/16. No error, no warning.

   A set-membership test against a mutable key is a SILENT NO-OP when the key
   moves, which is the worst failure mode for a rule whose output is a published
   number. Every other part of the file anchors by `before` text precisely
   because line numbers move; this one consumer did not, so `reanchor` — the
   operation that keeps the ledger correct — is what broke it.

   Fixed by anchoring on the `before` text and region, and by REFUSING a
   zero-or-multiple match instead of returning an empty set. A miss now raises
   with the reason, because the defect was never the stale id (ids go stale
   routinely) — it was that a miss produced a plausible number.

   Restored:  killed_loud 6 / silent_changed 15   -> 27 % primary
              alternate   5 / 16                  -> 25 % named alternate

5. `survey_sampled` 38 -> 37 follows from the retirement, pinned with its
   provenance beside the number.

    67/67 claims hold.   status_evidence 0.
    MUTANTS-CI subset=10 controls=3 non-killed=7 failures=0
    MUTANTS-REACH-WIDE entries=4 reached=4 unreached=0

Refs #1189 #1210 #1255 #1257

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
@avrabe
avrabe merged commit 0cfcc16 into main Sep 10, 2026
69 checks passed
@avrabe
avrabe deleted the fix/frozen-mirror-1210 branch September 10, 2026 09:58
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