Skip to content

Instruments gate: 62 of 83 CPython comparisons fail at the pin — the CPython target moved under goldens captured 2026-08-26 #24

Description

@bdbarnett

Found by the board session on 2026-09-03 while verifying the split, checked before attribution. Recorded so the first public release is cut knowing it, not discovering it.

What the gate says. tests/parity/run_instruments_parity.py --verify, all four batches, run in a fresh scratch venv whose pydevices-audioif was installed from git+file://…/audioif@d84470a — the exact AUDIOIF_PIN commit, asserted via direct_url.json — with lib/audioinstruments and lib/audioeffects installed editable from this tree at 7befee5:

166 comparisons, 62 failures, 10 rebuilt (not compared)
micropython: 83 ok, 0 fail
cpython:     21 ok, 62 FAIL

The repository's own .venv reproduces the same 62 (its audioif wheel was built 2026-09-02 09:18, after the pin moved at 07:35 — it is not stale; this was the first thing checked). The gate is workspace-local and no workflow runs it, so CI is green while this is red.

Which ones. Every failure is on the cpython interpreter; every micropython comparison passes. Failing: the 40 melodic modules andromeda arp2600 b3 clavinet cp70 cs80 cz101 d50 dx7 emulator2 farfisa fs1r jp8000 juno106 jupiter8 k2600 karplus microwave minimoog ms20 ms2000 music_easel nord_lead obxa odyssey pianet polysix ppg_wave prophet5 prophet_vs rhodes sh101 solina taurus tb303 virus vox_continental vp330 wasp wurlitzer, plus the private batches brass_stabs choir fm_bells glass impact keys pump_pad riser strings supersaw (Automata) and bells brass_high choir hits horns lead moog_bass pad_glass riser strings_high strings_low timpani (Perihelion). Passing on cpython: fairlight mellotron vl1 acid arp_fast claps glitch hats kick organ polyseq reese shaker snare sub_bass texture toms arp pad_warm shimmer sub_drone.

Why, as far as the evidence goes. The melodic goldens were last captured on 2026-08-26 (1ae2c10). Since then the pin took four audioif fixes, and three of them change only the CPython target (b420dac oracle-exact press semantics and filter cascade, 52a1d4e ring modulation, d84470a live envelope reassignment; afb6b71 touches both targets — and cmods/bin/micropython, built 09-02 01:16, predates it by 13 minutes, so the micropython side may be green for the wrong reason). A comparison is always within one interpreter, so this is the stored digests doing their one job: noticing that the engine moved under both sides on CPython. The 21 that pass are the ones whose probe sequence never re-presses a note or reassigns an envelope.

What it is not. Not the ceiling change (edits at 14:44, wheel at 09:18; and 14 was already the CPython value). Not the split (no lib content changed). Not a stale venv.

The decision (Brad's). The board's rule is that parity digests re-capture only with independent oracle evidence cited. The evidence here is the four commits themselves — each landed with audioif's oracle-diff gates green, and b420dac/d84470a are oracle-exact by construction — so a --capture-old of the CPython digests for these batches, done once against the audioif release tag with the provenance recorded in the golden's commit message, is what the rule allows. Until that happens, the gate is red for the first public release and tests.yml cannot see it. The board session recommends folding the re-capture into the post-tag replay step (same provenance discipline: installed audioif asserted equal to the tag) and re-checking the afb6b71 question by rebuilding cmods/bin/micropython first.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions