Zappa handoff, closed out

Successor to [ZAPPA-PAREN-FIX-AUDIT-RECOUNTED-2026-09-06]. Measured 2026-09-07 on MacBookPro. Every figure below came from a live API read or a census of a file on disk.

Contents
  1. Brandon's one action, still open
  2. Regression fixtures: 0 PASS to 2 PASS
  3. Dynamics: 17 restorable, 3 not
  4. The 269/270 residue is a lane relabelling
  5. Two deferrals re-adjudicated
  6. Files and reproduction

1. Brandon's one actionBrandon only

Press Submit revision on Zomby Woof s412162. Read live at the top of this session and again while working: latestRevisionId is still r8918601 by Nikita across 21 revisions, so nothing has been submitted.

The editor tab still holds rev8. Queried directly this session:

undo: ENABLED   redo: disabled   submit: ENABLED   importFiles: 0

Publishing over another contributor's tab is his act, never mine. isNextRevisionPremoderated is true, so it queues for a moderator. The description to paste sits in REV8-BUILD-PROOF-2026-09-06.md. Queued as q-2026-09-07-8d19fd.

2. Regression fixtures2 of 4 rebuilt

regressions.py read 0 PASS 0 FAIL 4 MISSING because every fixture pointed at ~/Projects/_outputs/appleseed-allparts, a tree authored on Jacks-iMac that never crossed the iCloud sfg/ channel. It now reads 2 PASS 0 FAIL 2 MISSING.

FixtureVerdictMeasurement
blind-mans-arrowPASScapos [0, 0], the rejected capo 7 is absent
secretPASS236 notes shared across the two guitar staves at exact onset
a-tree-for-trialsMISSINGneeds a depanning source and result pair that was never published
kilgore-troutMISSINGneeds solver intermediates iter4 and iter5, unpublished

How the two were rebuilt

Both need only a published artifact, so both were re-exported from the live Songsterr editor and archived with hashes. The two that stay MISSING need unpublished files that exist nowhere but the iMac, and substituting the local iter48 / chain49 pair would prove something else.

MISSING still counts as failure and the suite still exits 1. A fixture that cannot run must never look like a pass.

A bug found while wiring it

cross_staff_shared called is_guitar(cl(tr.findtext("Name"))), the legacy bare-name path. That is the substring test which returned False for every staff on the Zappa tabs and made the gate report on nothing. It now passes the Track element so it resolves InstrumentSet/Type first.

3. Dynamicsmeasured

Dynamic is a beat-level element in GPIF, so writing the author's value onto a beat writes it onto every note that beat carries. 20 aligned beats differ from the author, all of them author FF against live PP.

VerdictBeatsWhere
RESTORE, every note author-backed17bar 5 (5), bar 14 (3), bar 16 (5), bars 41-44 (1 each)
EXCLUDE, carries a note the author never wrote3bar 14 at onsets 1/16, 3/16, 7/16

The three disqualifying notes are two Acoustic Snares on string 3 lane 38 and one Bass Drum on string 0 lane 36. Restoring FF there would hand an expression mark to notes their author never wrote.

The verdict is stable under either lane key. The tab respells kick 35 as 36 at 161 identical slots, so the test was run strict and again with 35 treated as equal to 36. Both runs return the same 17 and the same 3.

This corrects the rev8 proof's "5 of the 20 targets" and "only 15 of 20 would have landed". The measured split is 17 and 3.

4. The 269/270 residueexplained

269 author instances and 270 live instances failed to match. In 55 of the 60 affected bars the two leftovers are exactly equal in size, which is the shape of a relabelling. Pairing each unmatched author instance with a live instance at the same (bar, voice, onset, string) explains 249 of 269.

Lane changeCountReading
35 → 36161Acoustic Bass Drum to Bass Drum 1. Two GM spellings of one drum, so the sound holds.
45 → 4386Low Tom to High Floor Tom. Two different drums.
42 → 441Closed Hi-Hat to Pedal Hi-Hat, another sound and another technique.
92 → 361Lane 92 sits outside General MIDI percussion.

Bars 10 and 31 were dumped beat by beat. Every onset, every duration and every beat count is identical between the two files. The only thing that moved is the number on the note.

The 86 low-tom instances are the live consequence of the wiped Low Tom lane already on record. rev7 was built to restore it and never landed, and Nikita's revert did not put it back.

Genuinely unpaired: 20 author, 21 live

BarAuthor-onlyLive-only
203 Pedal Hi-Hat
1407 (Crash 1, 2 Snare, 4 Bass Drum)
171714
183 Closed Hi-Hat1 Pedal Hi-Hat

Bar 17 is where the content actually changed. The author wrote 12 closed hi-hats there plus kicks, a snare and a pedal hat. The live tab carries a crash, eight Low Tom hits, a Low-Mid Tom and a kick. That is a rewritten bar.

The 2026-09-06 handoff named these bars 1, 13, 16 and 17, which is the 0-based spelling of 2, 14, 17 and 18. The figures are identical and only the index base moved.

5. Two deferrals re-adjudicated

One-song-per-pass was retired, so q-2026-09-06-dd33ca asked for both to be re-decided on their own merits. Neither had been deferred on that rule.

Watermelon s35881 restore, DONE and now verified live

latestRevisionId for s35881 is r8908034, the restore revision. It cleared moderation and published. Counted the live CDN part JSON at build hash v0-3-2-m9L2o7e_DgqwSJF_:

part 8 (Vinnie Colaiuta): 2091 notes, 1317 ghosts
  lane 51 Ride    1316
  lane 49 Crash      1

That is the exact count the item specified. Its knock-on effect: q-2026-09-06-ca2848, the pedal hi-hat repair, was blocked on "r8908034 is still on moderation" and is now reopened.

Central Scrutinizer s3554079 lanes, still blocked with the route now closed

The blocker is scan resolution, and the named fix was to find a larger scan. Fetched the blogger /s1600/ full-size variants of both chart images from the 2013-09-14 post. They are byte-identical to the archived copies: 27,496 bytes at 531×142 and 22,015 bytes at 420×139.

s1600 is a maximum rather than an upscale, so Todd Bishop never published a larger scan. At 531px the staff spacing is about 5px against a 15px floor. Unblocking now needs another source rather than a bigger copy of this one.

6. Files and reproduction

WhatPath
Phase 2 record~/Projects/_outputs/songsterr-zappa-paren-fix/s412162/PHASE2-DYNAMICS-AND-RESIDUE-2026-09-07.md
Phase 2 data~/Projects/_outputs/songsterr-zappa-paren-fix/s412162/PHASE2-ANALYSIS-2026-09-07.json
Analysis tool~/Projects/_outputs/songsterr-zappa-paren-fix/tools/phase2_analysis.py
Shared census~/Projects/_outputs/songsterr-zappa-paren-fix/tools/gpif_census.py
Fixture archive~/Projects/_outputs/appleseed-allparts/_live_export_2026-09-07/
Fixture provenance~/Projects/_outputs/appleseed-allparts/_live_export_2026-09-07/PROVENANCE.md
Suite backup~/.claude/skills/impossible-guitar-parts/regressions.py.bak-pre-livefixtures-2026-09-07
cd ~/Projects/_outputs/songsterr-zappa-paren-fix
/usr/bin/python3 tools/phase2_analysis.py --json s412162/PHASE2-ANALYSIS-2026-09-07.json

cd ~/.claude/skills/impossible-guitar-parts && python3 regressions.py

Queue state written this session