Zomby Woof: the baseline was here

The 2026-08-31 drum-repair handoff pointed at a working tree that lives on the other Mac. A usable baseline was sitting in ~/Downloads the whole time. Rebuilt the auditor, reproduced two published figures from the file, confirmed the tie edit bar for bar, and found one revision description that does not match its revision. Verified 2026-08-31 on MacBookPro.

Verdict: the repair is unblocked for Zomby Woof, and two claims now split

The handoff's s*/ tree, its six tools and its 139.6 MB source archive are not on this machine. A Songsterr export of r8766102 was, and it is the exact file the published fix was built from.

Against it, the 18-tie claim reproduces perfectly, twelve bars named and twelve found, and the iMac census agrees on all seventeen drum lanes. Bars 1 to 8 match the PRESERVE order exactly, the staff passes the playability gate, and one defect the handoff never named turned up: the bass drum is written on two staff lines.

What is missingWhat was foundRevision timelineKnown-answer controlThe 18 tiesParen to staccatoTwo machinesSibling sessionRepair passRyan Brown refutes 10/16Live tab r8814965Rebar costGate fixKick defectStill blockedReproduce it
7,479
rendered events, reproduced
1,574
drum staff events, reproduced
18
tie connections, confirmed
47
test assertions now running
6
Notes carrying all 36 tied events
9 vs 8
Brown\u2019s bars vs the tab\u2019s

What the handoff named, and what is here

hostname -s returns MacBookPro. The handoff was authored on the other machine.

Handoff itemState on this Mac
songsterr-zappa-paren-fix/s*/ baselinesfolder held one file, AUDIT-RECORD-2026-08-30.md
ORIGINAL-*.gp immutable baselines0 found, by find and by Spotlight
zappa-drum-sources/, 1,116 files, 139.6 MBabsent
the six analysis tools0 of 6
queue items q-2026-08-31-*0 of 6 in the local queue, newest local item is 08-30
a 2026-08-31 Zappa transcriptabsent; only local match for noteloss_audit is this session

Every other route came back empty too. iCloud sfg/ carries no Zappa bundle, /Volumes shows only Macintosh HD so the T7 Shield is unmounted, ~/.Trash is empty, no Time Machine destination is configured, /Users/7onething1 is a root-owned stub holding only Library, and drwu-overflow carries the six published Zappa pages with no score data.

A real baseline was sitting in Downloads

~/Downloads/Frank Zappa-Zomby Woof-08-29-2026.gp
76,963 bytes   md5 4343175d94bff82235497f5bb5360bab
internal Content/score.gpif stamped 2026-08-30 00:25 CDT

A Songsterr export, newest file in the folder. Ten tracks, 114 bars, named for the players: Frank Zappa 1 and 2, Tom Fowler, Voice Oohs, Bruce Fowler, George Duke twice, Ruth Underwood, Sal Marquez, Ralph Humphrey. Preserved to ~/Projects/_outputs/songsterr-zappa-paren-fix/s412162/r8766102-Zomby-Woof.gp.

The revision timeline places it exactly

RevisionCreatedAuthorWhat the description says
r71151882026-05-31 14:39Zmehlast community revision, and the one Songsterr still serves to the public
r87661022026-08-29 21:03ZBrandon chavezremoved the 32 parenthesised ghost noteheads, marked 8 all-ghost beats pp
r87870222026-08-30 21:45ZBrandon chavezconverted the 32 parenthesised ghost noteheads to staccato dots, removed 18 ties

The file's internal stamp sits between the two Brandon revisions, so it holds the r8766102 state, which is the file r8787022 was built from.

VERIFIED LIVE 2026-08-31   api/meta/412162 returns revisionId 7115188 and api/meta/35870 returns 7294223. Both Brandon revisions read isOnModeration: true, isBlocked: false. One day past the earlier audit, nothing has been promoted.

The rebuilt auditor passes its known-answer control

noteloss_audit.py was rewritten from the handoff's specification. It expands the GPIF reference graph, MasterBars to Bars to Voices to Beats to Notes, into a flat event list.

MeasureThis filePublished figureWhere the published figure came from
rendered events, all tracks7,4797,479r8787022 description
drum staff events1,5741,574zappa-onsroxy-vs-songsterr, built 08-29
masterbars114114same page
distinct meters written884/4, 10/16, 5/4, 15/16, 7/8, 3/4, 2/4, 6/4

Two figures that previously rested only on revision descriptions Brandon wrote himself now reproduce from a file. That is the control the handoff demanded, and it passes.

Underneath: why one edit moved 63 events

802 unique Note elements and 2,278 unique Beat elements carry all 7,479 rendered events. 576 Notes are shared, one of them across 312 positions. 1,136 Beats are shared, one across 238. The very first voice in bar 1 reads Beats = 0 1 1 2 3 1 4 5 6 7, with beat 1 referenced three times.

VERIFIED: the 18 ties, bar for bar

r8787022 names its edit precisely, so it can be checked against the file it edited.

Claim in r8787022Found in the r8766102 file
kick ties, bars 16 to 17bars 16 and 17, 8 tied events each
open hi-hat ties, bars 18, 22, 32, 34, 35, 36, 38, 44, 104, 108all ten bars, 2 tied events each
18 ties36 tied events, 18 origin=true and 18 destination=true, 0 mid-chain, so 18 connections
no other tied drum voicesnone

Twelve bars named, twelve bars found, no misses and no extras.

The shared-reference trap, in the open

Those 36 tied events come from 6 distinct Note elements. Notes 788 to 791 render twice each in bar 16. Notes 793 and 794 carry every open hi-hat tie across all ten bars. Dropping the tie from note 793 changes ten bars at once. Here that is the intended result, and the auditor is what turns it from an assumption into a count.

VERIFIED: the paren-to-staccato conversion, confirmed from the other side

While this session ran, the iMac pushed zappa-drum-tab-forensics to the overflow host at 2026-08-31 13:25 CDT, roughly thirty minutes ahead of this session. It carries a twenty-song dataset read from Songsterr's own track JSON, the payload CloudFront refused here.

Revisiondrum notesflags
r7115188, published1,574ghost: 32, tie: 18
r8787022, ours1,574staccato: 32

with evt_identical: true, lanechg: 0, and base_total and ours_total both 7,479. So the three states run like this.

Stateghoststaccatoties
r7115188, the original32018
r8766102, the file recovered here0018
r8787022, the published fix0320

The recovered file sits in the middle of a two-step edit, which is exactly why its GPIF carries neither marking. The 18 ties counted independently here are the same 18 the published baseline reports, and r8787022 dropped all of them.

Correction to an earlier reading of this page

This page first called the two revision descriptions contradictory, on the grounds that the same 32 noteheads cannot be removed and then converted. The two descriptions turn out to be consistent. r8766102 removed the parentheses, r8787022 added the staccato dots and dropped the ties, and r8787022 states its net effect against the published baseline rather than against its immediate parent.

Two machines, two formats, seventeen lanes

The GPIF read here and the Songsterr JSON read there are independent measurements of the same performance, one from the score file and one from the served payload.

MIDIDrum voiceThis Mac, from GPIFiMac, from Songsterr JSON
51Ride287287
38Snare271271
47Mid tom209209
36Kick186186
35Acoustic kick163163
42Hi-hat closed141141
45Low tom9999
46Hi-hat open9292
48High tom4949
92Hi-hat half2929
44Pedal hi-hat2323
43Very low tom1313
49Crash high44
84Bell tree44
50High floor tom22
74Guiro11
58Vibraslap11

Seventeen lanes, seventeen matches, no exceptions. Total events, drum events, bar count and tie count agree as well.

What the GPIF articulation layer does show

Track 9 offers 119 articulations. Five render a staccato dot and six render a parenthesis notehead. None of the eleven is used.

RenderingArticulations that carry itUsed on this staff
articStaccatoAboveRide choke, Splash choke, Crash high choke, Crash medium choke, Ride 2 choke0
noteheadParenthesisBongo High mute, Bongo Low mute, Conga low mute, Conga high mute, Surdo mute, Triangle mute0

Carry this forward

Songsterr's ghost and staccato flags do not live in the GPIF articulation layer, so an edit driven from the GPIF side cannot set or read them there. That is a real constraint on any scripted pass built on this Mac.

A session on the iMac is working this same job

Two machines, one repair

zappa-drum-tab-forensics was committed at 2026-08-31 13:25 CDT and arrived here by rebase from origin, never committed locally. Its dataset covers twenty songs, reaches the Songsterr track JSON, and holds the baseline census this Mac lacks. Splitting the work deliberately is worth a decision, and that decision belongs to Brandon.

The repair pass: what the score file says

Measured on the recovered r8766102 file with the two tools now in tools/.

VERIFIED: bars 1 to 8, the ones marked PRESERVE EXACTLY

The handoff records bars 1 to 8 as corroborated by Ryan Brown and Drumnet independently, and orders them preserved. They match the file exactly.

published : 3/4, 10/16, 2/4, 5/4, 15/16, 15/16, 15/16, 15/16
this file : 3/4, 10/16, 2/4, 5/4, 15/16, 15/16, 15/16, 15/16

The section labels back the reading: bar 1 Head, bar 5 Pre-Verse 1, bar 9 Verse 1, with double barlines on 3 and 4.

VERIFIED: the Sloots alignment, and the tempo map behind it

The file carries six tempo changes, not a flat 88.

At displayed barTempo
188
2476
2688
3890
9282
10188

Bar 38 is where the Sloots span opens, and it sets 90. Recomputing bars 38 to 50 on the file's own map gives 32.00 s against the 31.0 s excerpt, +3.2%. A flat 88 would give 32.73 s, +5.6%. The published page reported 32.00 s and +3.2%, so it used the real map and it stands. The thirteen meters read 7/8, 5/4, 10/16 x4, 7/8, 6/4, 4/4 x5, the order Sloots prints.

VERIFIED: the drum staff is playable

events 1574, voices per bar {1: 108, 2: 6}
simultaneity histogram {1: 707, 2: 417, 3: 11}
REALITY GATE: PASS. No unplayable simultaneity found.

Three voices at once is the ceiling, reached 11 times across 114 bars. No bar is empty. No bar asks for open and closed hi-hat together.

The expansion validated on twenty known answers

The two censuses cover all ten tracks, so the GPIF expansion can be checked against every one rather than against the drum staff alone.

#TrackNotes, both sidesTies, both sides
0Frank Zappa 11,184162
1Frank Zappa 2420
2Tom Fowler1,07655
3Voice Oohs70
4Bruce Fowler56444
5George Duke, Clavi1700
6George Duke, Organ1,993133
7Ruth Underwood55032
8Sal Marquez3195
9Ralph Humphrey1,57418

Ten note counts and ten tie counts, twenty matches, no exceptions. Totals agree at 7,479. The ties matter most, because counting them correctly requires walking the shared Beat and Note references properly and pairing each origin with its destination. Getting all ten right is what makes the expansion trustworthy for an edit diff.

NEW DEFECT: the bass drum is written on two staff lines

Not in the handoff, and more consequential than the parentheses.

LaneArticulationStaff lineBars
35Acoustic Kick Drum, Kick (hit)848
36Kick Drum, Kick (hit)760

Ralph Humphrey played one bass drum. This tab prints it on two positions, and a reader watching the staff sees the notehead jump a line. The switch points give the cause.

BarLaneSectionOn a section start
136Headyes
935Verse 1yes
1336Pre-Chorus 1yes
16bothPre-Chorus 1no
1835Chorus 1yes
4036Chorus 2no
4435Chorus 2no
45bothChorus 2no
4635Bridgeyes
5636Soloyes
10235Pre-Chorus 2no
11236Headyes

Twelve switch points, seven of them landing exactly on a section start, and lane 36 covering the entire solo from bar 56 to bar 101. That is the fingerprint of separate contributors working separate sections across twelve revisions. The repair is to normalise every kick onto one lane.

The same defect, swept across all twenty songs

The iMac census carries per-lane counts for every song, so the split can be checked catalogue-wide without holding twenty score files.

SongsongIdlane 35lane 36Drum events
What's New In Baltimores35887317481,696
Zomby Woofs4121621631861,574
Carolina Hard-Core Ecstasys6824882741,567
Alien Orifices6824681801,384

Four of twenty. The other sixteen use exactly one lane, which is what establishes one lane as the norm and the split as an anomaly. The house convention is lane 36, used alone by thirteen songs including Montana, Inca Roads, Drowning Witch and Muffin Man. Lane 35 alone covers three: Keep It Greasey, Catholic Girls and Fembot.

Two of the four splits are small contaminations. Carolina Hard-Core Ecstasy and Alien Orifice each carry exactly 8 stray notes on lane 35 against a dominant lane 36, so each is an eight-note repair. Zomby Woof at 163 against 186 and What's New In Baltimore at 317 against 48 are section-scale, and Zomby Woof is the worst of the set because its two lanes are nearly even.

What bars 16 and 17 actually contain

Those are the bars whose kick ties r8787022 removed, and the pattern explains itself once both lanes are visible.

beat 0-1    Hi-Hat closed + kick lane 35 (line 8), tied pair
beat 2-3    Hi-Hat closed + kick lane 36 (line 7), tied pair
beat 8-9    Hi-Hat closed + kick lane 35 (line 8), tied pair
beat 10-11  Hi-Hat closed + kick lane 36 (line 7), tied pair

The bass drum alternates staff line every two sixteenths, with a tie on each pair. Removing those ties was right. The line alternation underneath them is still there.

A bug in my own tool, caught by cross-checking

The first reality-gate run keyed lanes on OutputMidiNumber. On this drumset map Hi-Hat (half) carries input 92 and output 46, the same output as Hi-Hat (open), so the gate silently merged two lanes a reader sees as distinct. Two of my own outputs disagreed, which is what surfaced it.

Fixed to key on InputMidiNumbers, the field the reader and Songsterr both use. The corrected run matches the iMac census on all 17 lanes and on the 1,574 total.

UPDATE 2026-09-02: the repair is built, verified, and held

All 163 lane-35 kick events now sit on lane 36 in r8766102-Zomby-Woof-KICKFIX.gp, giving 349 events over 105 bars. The method retargets 27 Beat note references onto the lane-36 Note elements rather than editing a Note in place, because GPIF shares one Note across many beats. Fourteen checks pass: 16 non-kick lanes identical, drum staff 1,574 and whole score 7,479 on both sides, all 114 bars conserving the kick count, 36 ties intact, every one of the 349 rhythm references identical. noteloss_audit.py --diff --expect-changed 163 returns added 0, removed 0, changed 163, reorder-only 0.

A first build of this repair was wrong. The percussion staff is a six-line tab, so two notes in one beat cannot share a String. Version 1 moved 9 events onto String 0 where MIDI 92 already sat, putting 9 beats into a state the original never had. Note 795 was carrying String 5 to avoid exactly that collision. Version 2 creates a lane-36 kick that keeps String 5, and a new string audit now runs on each side of any lane merge. The broken build is kept as a known-answer control: original 0 shared-string beats, v1 9, v2 0.

Nothing was submitted. Which machine owns this repair is still open, so the file waits.

FIXED: the gate that examined zero tracks

The 2026-08-30 audit left this open, and the Zomby Woof file turned out to be the fixture that proves it.

def is_guitar(name):
    n = name.lower()
    return "guitar" in n and "bass" not in n

Songsterr community tabs name tracks after the musicians. Zomby Woof carries Frank Zappa 1, Frank Zappa 2, Tom Fowler, Ruth Underwood, Ralph Humphrey. Not one contains the word. The gate reported on zero tracks, so the file passed unexamined, and a gate that examines nothing passes everything.

GPIF states the instrument outright, so the fix reads that instead.

#Track nameInstrumentSet/TypeOld testNew test
0Frank Zappa 1electricGuitarFalseTrue
1Frank Zappa 2electricGuitarFalseTrue
2Tom FowlerelectricBassFalseFalse
3Voice OohsvoiceFalseFalse
4Bruce FowlertromboneFalseFalse
5George DukeharpsichordFalseFalse
6George DukeelectricOrganFalseFalse
7Ruth UnderwoodvibraphoneFalseFalse
8Sal MarqueztrumpetFalseFalse
9Ralph HumphreydrumKitFalseFalse

Resolution order is instrument type, then instrument name, then the display name for callers that only ever held a string. bassGuitar is excluded correctly at step one because it carries the word bass.

Fixed in all three copies, and now tested

Each backed up as .bak-pre-isguitar-2026-08-31: the skill copy, kilgore-guitar-tools, and kilgore-guitar/2026-08-13-macbook/tools.

A regression test now exists at _tests/test_is_guitar_instrument_resolution.py. It passes against the fix and fails against the backup, which is the check that was missing when the defect shipped.

against the fixed gate  : PASS  10 tracks resolved by instrument, 2 guitars found
against the backup      : FAIL  impossible_gate has no instrument_of

The suite was broken before this, and now runs

Running both other tests against the pre-patch backup gave byte-identical errors, so they were already broken and not by this change. Both had one root cause: they hardcoded the skill directory on sys.path, and that copy lacks basis_refusals and build_basis, and its compare_checkpoint takes two arguments against the eight the test passes. The assertions were written against the 99 KB copy sitting beside them. Resolving the import to the test's own tree first fixes both, and no analysis code changed.

TestBeforeAfter
test_comparison_basis.pyexit 1, ImportErrorexit 0, 8/8 cases
test_promotion_rule.pyexit 1, TypeErrorexit 0, 38/38 cases
test_is_guitar_instrument_resolution.pydid not existexit 0

47 assertions now run where two of the three files previously died on import. regressions.py still reports 4 MISSING, because those artifacts live in the appleseed tree that is not on this Mac.

One decision left on this

Two copies of impossible_gate.py have diverged and neither is marked canonical. The skill copy is 52 KB and is what /impossible-guitar-parts actually invokes, so the older, thinner copy is the one that runs in production. The 99 KB copy is what the tests exercise. Both now carry the instrument fix. Queued as q-2026-08-31-c452ea.

REFUTED: the 10/16 barring, from the professional transcription

Brandon, 2026-08-31: pull from the downloaded transcriptions by professional transcribers, not from old Guitar Pro files. The archive holding them is on the iMac, so the DRUM Magazine set was re-downloaded here from the URL the archive page records.

~/Projects/_outputs/zappa-drum-sources/02-drummagazine/zomby-woof.png
1178x733, PNG signature and IEND verified
from https://drummagazine.com/groove-analysis-frank-zappas-drummers/

Ryan Brown's page states 'ZOMBY WOOF', @ 0:00, eighth note = 178, and reads:

BarRyan Brown, DRUM MagazineSongsterr s412162
13/43/4
25/1610/16
35/16absorbed into bar 2
42/42/4
55/45/4
6 to 915/16 x415/16 x4

Nine bars in Brown, eight in the tab.

This overturns an item the handoff marked "Proven, do not re-litigate"

The handoff records: barring (both use a single 10/16, not two 5/16). The image refutes that for Brown. The 5/16 signature is legible at 3x in crop_sys1_left.png, and crop_sys1_mid.png shows the bar, a barline, then a second bar of the same meter before the 2/4. Ten sixteenths either way, so the two agree on duration and disagree on how it is barred.

The Drumnet half was later recovered and it holds. See the section below.

Everything else corroborates. Bar 1, bar 4, bar 5 and the four bars of 15/16 match, and Brown's eighth = 178 puts the quarter at 89 against the tab's 88, the 1.1% gap the handoff already recorded.

Under the handoff's own method this matters. Published drum notation has priority where it covers the performance. Brown covers these nine bars, so the barring question is now a decision rather than a settled fact.

A second professional transcriber says the same thing

Daniel Bédard transcribed 52 Zappa charts. Todd Bishop's Cruise Ship Drummer post is the only public artifact of that project, and it carries page 1 of his handwritten Zomby Woof chart at full resolution: Zomby1_daniel-bedard.jpg, 750x1058, JPEG SOI and EOI verified.

BarRyan Brown, DRUM MagazineDaniel BédardSongsterr s412162
13/43/43/4
25/165/1610/16
35/165/16absorbed
42/42/42/4
55/4 quintuplets5/4 quintuplets5/4

Two independent professional transcriptions, the same barring. Bédard's 5/16 read as 15/16 until 5x magnification, where the leading stroke resolves as the barline. bedard_sys1_right.png shows the signature, a bar, a barline, and a second bar of the same meter.

So the tab stands alone on 10/16, and the handoff's claim that the published sources back it is refuted by both sources this session could reach. Drumnet is still unverified.

Drumnet recovered, and the sources turn out to be split

Drumnet was called unreachable twice in this session and it was never blocked. Sheet id 2637. A HEAD request declares Content-Length: 68574 and Accept-Ranges: bytes. The failing fetches returned 16,124 bytes of 68,574, a truncated transfer read as a dead host. Re-fetching with Accept-Encoding: identity and a 90 second timeout returned the whole file, and it decodes.

Three failures, all mine, none the site's

curl on the group page returned 15,665 bytes with no song titles, while WebFetch on the identical URL listed all six Zappa charts with their ids. The notation images are referenced in a form my src="..." grep never matched. And a two-byte EOI test called the truncated files corrupt without noticing they were short.

The chart says 10/16, legible at 6x in dn_sys1_left.png, with a tempo mark of quarter = 89.

SourceBar 2Bars of 15/16
Ryan Brown, DRUM Magazine5/16 + 5/164
Daniel Bédard5/16 + 5/16not read past bar 5
Drumnet10/161
Songsterr s41216210/164

So this is a split, not a refutation. The handoff says Brown and Drumnet "both use a single 10/16". Drumnet does. Brown does not. Half the claim holds. The tab sides with Drumnet on the barring and with Brown on the four bars of 15/16, and no single published source matches it on both. Drumnet's quarter = 89 and Brown's eighth = 178 are the same tempo.

VERIFIED 2026-09-02: three independent layers agree lane for lane

The drum staff was measured a third time, from Songsterr's own part JSON for r7115188, and compared with the iMac census and with a direct GPIF parse. All three read 17 lanes and 1,574 notes, and every one of the seventeen per-lane counts is identical across all three.

Two figures that only the JSON layer can settle came out exactly as the census claims: 32 ghost flags and 0 staccato on the base revision. The GPIF layer cannot show these, so this is the first reading of them taken on this machine.

The JSON also resolves the tie arithmetic from the other side. It stores 18 tie flags, one per connection, where GPIF stores an origin event and a destination event for each, which is the 36 tied events counted on the drum staff. A first pass read the JSON note array as 1,612 notes; 38 of those entries are rests, and removing them gives 1,574.

READ FROM THE LIVE TAB: r8814965 lost 13 ties and one kick note

2026-09-02. The CloudFront route opened once the revision hash was scraped off the public song page, so the current drum part was read directly for the first time.

How the route was found. songsterr.com/api/meta/412162 answers http 200 unauthenticated and names the current revision. The public song page carries the data hash v0-3-2-rlgl-11J3X41cEuO, and cloudfront.net/412162/8814965/<hash>/9.json then returns 200. Older revisions still 403 under that hash, so each revision carries its own and only the current one is reachable.

Drum staffr7115188r8814965 liveReading
bars114114unchanged
notes1,5741,573one note gone
ghost flags320intended
staccato032intended, same 7 bars, same per-bar counts
ties185thirteen gone
rests / empty bars / max simultaneity38 / 0 / 338 / 0 / 3unchanged

The ghost conversion is clean. All 32 ghosts sat in bars 4, 13, 15, 40, 41, 42 and 43, and all 32 staccatos land in those same seven bars with identical per-bar counts. That edit did what it said.

The tie loss is not clean. Bar 16 went 4 to 1, bar 17 went 4 to 0, and single ties vanished from bars 18, 22, 38, 44, 104 and 108. Four survive, in bars 32, 34, 35 and 36. Removing the bar 16 and 17 kick ties was judged right here, and that accounts for at most eight. The six open hi-hat ties are collateral, and the one tie left standing in bar 16 makes the pattern look accidental rather than chosen.

The lost note is attributable. The iMac census reads lanes_ours for r8787022 with lane 36 at 186 and a drum total of 1,574. The live tab reads lane 36 at 185 and 1,573, and the single missing note is in bar 16. So it went between r8787022 and r8814965, which is the revision a moderator described as "Minor changes." The tie loss cannot be pinned that precisely, since r8766102 still carried all 18 and no export of r8787022 exists on this machine.

The split kick lane is still there. Lane 35 holds 163 events and lane 36 holds 185 on the live tab, so nothing has repaired the two-staff-line defect and the built fix still applies.

The whole-score delta is one note, and the tie correction is confirmed from the other format

Nine of the ten tracks are identical bar for bar between the local r8766102 export and the live r8814965 JSON. Frank Zappa 1 holds 1,184 both sides, Tom Fowler 1,076, George Duke's organ 1,993, and so on down the list. The only difference anywhere in 7,479 events is the single lane-36 kick missing from bar 16 of the drum staff.

The tie arithmetic now has a cross-format proof. Songsterr's JSON stores one flag per connection; GPIF stores an origin event and a destination event. On every track the JSON connection count equals the GPIF origin=true count exactly: 162 and 162 on Frank Zappa 1, 55 and 55 on Tom Fowler, 44 and 44 on Bruce Fowler, 133 and 133 on the organ, 32 and 32 on Ruth Underwood, 5 and 5 on Sal Marquez. Dividing events by two gives 132, 43 and 30 on the three tracks that carry mid-chain ties, which is wrong by 30, 1 and 2. Connections equal origins, and the halving rule only holds where no tie chains.

The repair cannot be rebased into a file yet. Songsterr serves no Guitar Pro export route that answers here; four shapes were tried and returned 404, 404, 400 and 400. The repair itself is unaffected, since the live tab still holds 163 kick events on lane 35. Applied to r8814965 it would leave lane 36 at 348 rather than 349, the one note fewer.

Located to the beat: exactly what r8814965 dropped

The deleted note is bar 16, slot 2, a 1/16 kick on lane 36 that sat under a closed hi-hat. Only the hi-hat remains. The kick at slot 3 was tied from it, so that tie went too, which makes those two losses one event.

BarSlotLaneInstrument
16336kick
16935kick
161136kick
17135kick
17336kick
17935kick
171136kick
18146open hi-hat
22146open hi-hat
38446open hi-hat
44446open hi-hat
104446open hi-hat
108446open hi-hat

The seven kick ties are defensible. The bass drum alternates staff line every two sixteenths with a tie on each pair, and removing those was judged right during the earlier audit.

The six open hi-hat ties are not. Four identical ties in bars 32, 34, 35 and 36 survived while these six vanished. A rule that removes six of ten identical ties and keeps four is not a rule, so this reads as loss rather than a decision. Full restoration spec, beat by beat, in s412162/REGRESSION-RESTORE-SPEC.md.

What a rebar would actually cost

Measured 2026-09-02 from r8766102-Zomby-Woof.gp. The barring question was open as a decision; these are the numbers it needs.

The tab's 10/16 bar is already two identical 5/16 figures. Reading the rhythm off the drum staff, bar 2 runs 16th, 16th, 32nd, 32nd, 16th, 16th, and then repeats that exact group. Each group totals five sixteenths. Ryan Brown's page prints the same repeated figure across a barline, which I read directly off crop_sys1_left.png and crop_sys1_mid.png: a 3/4 signature, one bar, a barline, a 5/16 signature, a bar, a barline, a second bar carrying no new signature and therefore inheriting 5/16, then 2/4.

The split lands clean. The proposed barline sits at 1.25 quarters into bar 2. On all six sounding tracks a beat ends exactly there and the next beat starts exactly there, so no note and no tie crosses it. The four tracks resting through the bar hold one 2-quarter rest that would need re-spelling as two rests, which is the same subdivision Songsterr's own exporter already performs elsewhere in this file.

The cost is renumbering, and it reaches everything already published

Splitting bar 2 takes the score from 114 bars to 115. Every bar from 3 onward shifts by one, so every bar number in the audit pages, the census JSON, the queue items and the kick-repair record moves with it.

Claim as publishedAfter the rebar
section starts 1, 9, 13, 18, 46, 56, 1121, 10, 14, 19, 47, 57, 113
kick lane 36 covers the solo, bars 56-101bars 57-102
kick spans, all twelve rowsrow 1 becomes 1-9, every later row shifts +1
36 tied events in bars 16, 17, 18, 22, 32, 34, 35, 36, 38, 44, 104, 10817, 18, 19, 23, 33, 35, 36, 37, 39, 45, 105, 109
bars 38-50 total 48 quartersbars 39-51
both kick lanes sound in bars 16, 17, 45bars 17, 18, 46

Nothing was rebarred. Two professional transcriptions agree against the tab and the tab's own content divides exactly where they put the barline, so the musical case is strong. The renumbering ripple is the part that is a judgement call rather than a measurement, and it belongs to Brandon.

Still blocked

Four items, none of them solvable from this machine alone

  1. The iMac working tree. The immutable ORIGINAL-*.gp set, the published-source archive and the five other tools live there. iCloud sfg/ is the sanctioned channel.
  2. CloudFront track JSON, from this Mac. 403 AccessDenied on every unauthenticated route, confirmed on r7115188. The iMac reads it, so the capability exists on that machine and not on this one. Half-resolved 2026-09-02: the fetch is still refused, and the payload itself arrived through the iCloud sfg/ bundle. All ten part files for r7115188 now sit in sfg/zappa-drum-repair-2026-08-31/s412162-Zomby-Woof-community/, so the JSON layer is readable here even though the direct route is not.
  3. No notation editor here. No Guitar Pro, no TuxGuitar, no MuseScore in /Applications. The native GPIF pipeline in songsterr-upload is the only editor on this Mac, which covers scripted edits and not eyes-on review.
  4. Moderation. Both revisions have sat pending for one and two days. Promotion is a Songsterr moderator decision.

Reproduce any of it

cd ~/Projects/_outputs/songsterr-zappa-paren-fix
python3 tools/noteloss_audit.py s412162/r8766102-Zomby-Woof.gp --track 9
python3 tools/noteloss_audit.py s412162/r8766102-Zomby-Woof.gp --diff EDITED.gp --expect-changed N
curl -s https://www.songsterr.com/api/meta/412162/revisions | python3 -m json.tool
curl -s https://www.songsterr.com/api/meta/412162 | python3 -c "import json,sys;print(json.load(sys.stdin)['revisionId'])"

# read the LIVE published tab, any song, no auth (added 2026-09-02)
python3 tools/songsterr_live_read.py 412162              # meta + a census of all ten parts
python3 tools/songsterr_live_read.py 412162 --part 9     # drum staff with per-lane counts
python3 tools/songsterr_live_read.py 412162 --revisions  # full revision history
python3 tools/songsterr_live_read.py 412162 --save DIR   # keep the raw part JSON

songsterr_live_read.py fetches through curl rather than urllib, because the song page answers with an HTTP 103 Early Hints frame ahead of the 200 and urllib raises on it. It reproduces every drum figure on this page from the live tab.

--expect-changed exits non-zero unless the event delta equals the intended count exactly. That is the mechanism the handoff called for after one edit moved 63 events.

Built 2026-08-31 on MacBookPro, /Users/brandonchavez, resuming [ZAPPA-DRUM-REPAIR-2026-08-31] handoff.md. Sources: the live Songsterr meta and revisions API, the recovered r8766102 score file, and the published sibling pages zappa-onsroxy-vs-songsterr, zappa-paren-fix-status and zappa-drum-archive. Notes: zappa-baseline-recovered.md