A sweep across Frank Zappa drum tabs on Songsterr read genuine ghost notes as a notation defect and stripped them. This is the verified record of what was changed, what moderators caught, and what is still live.
Audited 2026-08-30 · moderation, track names and revision state re-read uncredentialed 2026-09-07 against api/meta/<songId> and api/meta/<songId>/revisions
The moderation queue emptied on 2026-09-07 between 14:36 and 17:52 UTC. Ten of the sixteen restores are now the published revision. Six still sit on moderation, and the seventeenth song's repair sits there with them. Keep It Greasey stays blocked. Every state on this page was re-read from api/meta/<songId>/revisions without credentials on 2026-09-07.
q-2026-09-06-1492ba.s412170 was never safe. This page records it as superseded by Kirill's r8815000 with no action required. Kirill restored 3 of 9 ghosts, leaving 6 missing, and left 6 beat velocity changes that govern 784 of 807 slots through the running dynamic. A verified repair went up as r8932027 on 2026-09-06 and is still on moderation.The root cause analysis, the field-name failures and the accent bitfield work below all still stand. The operational board is Zappa Program Scope.
1. The moderation wave2. The restore emptied the credits3. Repaired behind us4. The seventeenth tab5. Defects the restore introduced6. The upload path changed7. The work that is not ghosts8. The seventh instance9. What happened10. The original ledger11. Root cause12. Which lane13. Charts14. Accents
Sixteen restores went up on 2026-09-05 and sat unread for two days. Moderators cleared them in a single afternoon. Every row below was read from api/meta/<songId>/revisions uncredentialed on 2026-09-07.
| Song | Song id | Our restore | State | Published revision now | Named tracks |
|---|---|---|---|---|---|
| Watermelon In Easter Hay | s35881 | r8908034 | published, reviewed fair by Evgeny 14:49Z | r8908034 | 0 / 9 |
| Muffin Man | s35886 | r8906880 | published 14:36Z, then superseded | r8944638 | 0 / 5 |
| Drowning Witch | s620961 | r8908109 | published 15:02Z, then superseded | r8945141 | 0 / 16 |
| Montana | s35870 | r8907028 | published 15:38Z, then superseded | r8945851 | 11 / 18 |
| The Black Page | s1105085 | r8907247 | published, reviewed fair by Kirill 15:39Z | r8907247 | 2 / 4 |
| Nanook Suite | s35878 | r8907360 | published, reviewed fair by Kirill 17:51Z | r8907360 | 8 / 11 |
| Nanook Rubs It | s35865 | r8907423 | published, reviewed fair by Kirill 17:52Z | r8907423 | 7 / 9 |
| What's New In Baltimore? | s35887 | r8908276 | published 15:55Z, then superseded | r8946169 | 6 / 7 |
| Catholic Girls | s749523 | r8907778 | published 15:45Z, then superseded | r8945977 | 4 / 9 |
| Zomby Woof (AI) | s5820647 | r8932311 | published, name repair applied | r8932311 | 5 / 5 |
| Inca Roads | s412178 | r8907511 | on moderation | r8769026 | 12 / 12 |
| Carolina Hard-Core Ecstasy | s68248 | r8908182 | on moderation | r8769058 | 6 / 9 |
| Oh No | s35884 | r8908239 | on moderation | r8769089 | 4 / 6 |
| Alien Orifice | s68246 | r8907689 | on moderation | r8769118 | 8 / 10 |
| Fembot In A Wet T-Shirt | s748459 | r8907601 | on moderation | r8769165 | 6 / 9 |
| Uncle Meat | s20690 | r8907952 | on moderation, 3 of ours queued | r8788757 | 11 / 11 |
| Trouble Every Day (Live) | s412170 | r8932027 | on moderation | r8815000 | 6 / 6 |
| Keep It Greasey | s604777 | r8768457 | blocked by Kirill527, cannot publish | r8852151 | 9 / 9 |
Uncle Meat carries three of our revisions on moderation at once, r8907892, r8907952 and r8909627. Songsterr offers no withdraw control, so the stack stands until a moderator picks one.
The repair for the ghost notes introduced a different loss on the same tabs. Eight restores published with their track names blank, taking authored musician credits off public pages.
GPIF stores a track name inside a <![CDATA[...]]> block. Python's ElementTree drops the CDATA wrapper when it writes the file back out. Songsterr's converter then finds no name and falls back to a generic label, so any restore serialized through ElementTree arrives with its names gone. Files built by direct download or by lxml with XMLParser(strip_cdata=False) keep them.
Four measurements across two songs isolate the variable:
| Revision | How it was built | CDATA blocks | Names present |
|---|---|---|---|
| s35881 r8768414 | our own .gp upload | 136 | 7 of 9 |
| s35881 r8908034 | ElementTree | 0 | 0 of 9 |
| s5820647 r8906157 | ElementTree | 0 | 0 of 5 |
| s5820647 r8932311 | CDATA-carrying rebuild | present | 5 of 5 |
The same upload path served all four, so the build tool is the variable and the platform is not.
| Song | Revision before ours | Named | Our restore | Named | Verdict |
|---|---|---|---|---|---|
| Watermelon In Easter Hay | r8768414 | 7 / 9 | r8908034 | 0 / 9 | dropped 7, still live |
| Drowning Witch | r8768566 | 12 / 16 | r8908109 | 0 / 16 | dropped 12, still live |
| Montana | r8787106 | 18 / 18 | r8907028 | 0 / 18 | dropped 18, 11 put back |
| What's New In Baltimore? | r8769141 | 6 / 7 | r8908276 | 0 / 7 | dropped 6, all 6 put back |
| Catholic Girls | r8788801 | 5 / 9 | r8907778 | 0 / 9 | dropped 5, 4 put back |
| Muffin Man | r8768517 | 4 / 5 | r8906880 | 0 / 5 | dropped 4, still live |
| Zomby Woof (AI) | r8766178 | 3 / 5 | r8906157 | 0 / 5 | dropped 3, repaired to 5 of 5 |
| Zomby Woof | r8905411 | 0 / 10 | r8905491 | 0 / 10 | dropped, Nikita restored 9 |
| The Black Page | r8768613 | 2 / 4 | r8907247 | 2 / 4 | clean, names preserved |
| Nanook Suite | r8769001 | 8 / 11 | r8907360 | 8 / 11 | clean, names preserved |
| Nanook Rubs It | r8768967 | 7 / 9 | r8907423 | 7 / 9 | clean, names preserved |
The three clean rows were built from direct downloads rather than through ElementTree, which is the same split the CDATA measurement predicts.
| Song | Names lost | Cause | What is gone |
|---|---|---|---|
| Drowning Witch | 12 | our restore r8908109 | Vocals, Clean Guitar ×2, E. Piano / Synth II, Synth III / Clavinet left and right, Saxophone, Glockenspiel, Kazoo / Harmonica / Vibraphone, Chimes / Woodblocks / Timpani, Synthesizer left and right |
| Watermelon In Easter Hay | 7 | our restore r8908034 | Frank Zappa, Warren Cuccurullo ×2, Arthur Barrow, Ed Mann, Wurlitzer (Peter Wolf), Vinnie Colaiuta |
| Muffin Man | 4 | our restore r8906880 | Frank Zappa, Tom Fowler, George Duke, Terry Bozio |
| Carolina Hard-Core Ecstasy | 3 | our strip r8769058, 2026-08-30 | Bass, Drums, Trombone |
| Montana | 1 | our restore r8907028, partly repaired | Ruth Underwood on track 12, plus 6 placeholder labels |
| Catholic Girls | 1 | our restore r8907778, partly repaired | Vocals |
28 authored names are missing across six live tabs. Six further blanks on Montana were placeholder labels reading AI, 1, 2 and 3, and they are counted separately because they carry no credit.
53 more names sit behind the moderation queue. The seven held restores were built the same way, and the tabs under them carry 12, 6, 4, 8, 6, 11 and 6 named tracks. Approval publishes the same defect on each. Waiting is not a neutral option here.
Export the live revision, rebuild it with lxml using etree.CDATA under XMLParser(strip_cdata=False), verify zero note, dynamic and event changes, then submit. r8932311 did exactly that on Zomby Woof (AI) and restored 5 of 5 names, which is two better than the 3 the tab carried before the sweep touched it. RESTORED-s35881-TEXTSAFE-v2.gp carries 137 CDATA blocks and is the ship candidate for Watermelon.
Within about an hour of each restore clearing, an Editor-built revision appeared on five of the songs. Three of them put names back.
| Song | Our restore | Named after ours | Following revision | Named after that | Outcome |
|---|---|---|---|---|---|
| What's New In Baltimore? | r8908276 | 0 / 7 | r8946169 | 6 / 7 | fully repaired |
| Montana | r8907028 | 0 / 18 | r8945851 | 11 / 18 | credits back, 1 still missing |
| Catholic Girls | r8907778 | 0 / 9 | r8945977 | 4 / 9 | 4 back, 1 still missing |
| Muffin Man | r8906880 | 0 / 5 | r8944638 | 0 / 5 | not repaired |
| Drowning Witch | r8908109 | 0 / 16 | r8945141 | 0 / 16 | not repaired |
| Zomby Woof | r8905491 | 0 / 10 | r8918601 | 9 / 10 | Nikita reverted our frame |
Those repairs were made by hand in the Songsterr editor by people who did not cause the loss. Two tabs are still waiting for someone to notice.
This page recorded s412170 as superseded and safe. It was neither.
Our strip r8766285 removed 9 ghosts from the Chad Wakerman Percussion staff. Kirill's r8815000, which went live on 2026-09-01, put back 3. Six were still missing, all fret 49 crash at bar 67 beats 4 to 9, and all six notes still existed, so only the ghost flag was needed. Six wrong beat velocities were also still live: bar 1 beats 4, 5 and 6, bar 67 beats 4 and 6, and bar 69 beat 10. Twelve corrections in total.
RESTORED-s412170.gp was built and verified against the live base rather than the author, so Kirill's post-strip edits survive: 6 ghosts flipped false to true, 0 ghosts lost, 0 other note changes anywhere, 0 changes on other tracks, and the effective dynamic matches the author on all 807 slots. It went up as r8932027 on 2026-09-06 and is on moderation.
A separate grid defect on the same tab was inherited, not caused by us. The tab notates 134.0s against its 141.0s synced video, 4.96% off against a 2% tolerance. It is present on Kirill's live revision and on every revision before it. The preflight gate refuses the repair on that basis, and the unmodified live base fails the identical gate with identical numbers. The ghost restore deliberately left the grid untouched, so this needs its own pass over the single 165 BPM automation across 92 bars.
GPIF stores note properties in shared definitions. On Watermelon the post-sweep r8768414 merged ride definition 431, the ghosted one, and definition 432, the plain one, into a single id 418 covering all 1,724 occurrences. Writing <AntiAccent> onto 418 would have ghosted all 1,724, including the 408 that were never ghosted. The repair has to split 418 by occurrence position against the pre-sweep revision, copy-on-write, and log definition-level and occurrence-level changes separately.
GPIF stores a chord in two places, an <Item> defining the diagram and a <Chord> reference on the beat that displays it. The paren sweep dropped both halves of E7Msus2 at bar 3. The first restore put the Item back alone, so the definition sat orphaned and no bar printed the symbol.
Three checks passed on that broken file:
'E7Msus2' in text, which an orphan satisfies(bar, voice, position, midi) and cannot see a symbol carrying no notesBeat id 2 is shared by seven voices covering track 0 bars 3 to 9, so the repair clones it copy-on-write and repoints the bar 3 voice alone. This is the same shape as the ghost loss itself: three checks agreed, and none of them measured the thing that was gone.
Hard gate set by Brandon on 2026-09-07. We do not submit revisions to an original tab, and undoing our own damage is included.
Open the original, click Create a copy to edit, rename the copy with Brandon edit on the end, import the corrected file there, and submit the revision on the copy. The earlier carve-out that allowed a revision on the original when the damage was ours is retired.
For Watermelon that makes the action concrete: open s35881, create a copy, rename it to Watermelon In Easter Hay Brandon edit, import RESTORED-s35881-TEXTSAFE-v2.gp, and submit on the copy. The original tab and r8908034 stay untouched.
The rule in preflight_import.py states that the uploaded file cannot prevent a name loss, on the grounds that one upload's Tracks section was byte-identical to Songsterr's own export and the names still went. The four measurements in section 2 refute it. A Tracks section compared after parsing is byte-identical whether or not the source carried CDATA, because the parser has already discarded the wrapper. The comparison could not see the variable it needed to see.
Zomby Woof preflight also refuses on GRID for a build that is provably timing-neutral, so two of the gate's refusals now have documented false-positive conditions.
The ghost sweep is one thread. These ran alongside it and are recorded here so the board is complete.
The foot-pedal hi-hat is missing. The isolated hat stem gives a periodic subsequence at 1.0800 s, equal to the GP quarter at the snare-anchored tempo of 1.0842 s, with 178 of 505 grid slots carrying a hat onset at 35% against a 26% chance baseline. Brandon's representative chicks at 181.93, 183.03, 184.10 and 185.19 appear in the detection at 181.92, 183.00, 184.09 and 185.17. The tab notates six Pedal Hi-Hat events, so roughly 172 are missing.
The snare rebound ghosts are missing. The tab carries 193 snare events with zero ghost flags. Brandon measured 202 principal snare attacks, of which 196 carry a substantially quieter follow-up within 250 ms and 178 carry two, the first at a median near 92 ms and the second near 156 ms. An independent run agreed on the lags at 70 ms and 134 ms and over-detected principals at 411 against 202, so his counts govern. These belong on the snare lane, not on Ride (middle), and whether the rebounds are stick bounce or room is not settled by a separated stem.
Bar 54 is the only tuplet bar in the tab, a 1/6 quarter-note duration inside 5/4, and its quintuplet fill needs checking against the Drumnet chart before anything is written.
Settled: the 193 post-snare Ride (middle) ghosts are not misplaced snare rebounds. The tab places them at a rigid 271 ms after the snare, one GP sixteenth, with the 10th and 90th percentiles both at 271 ms, while the measured rebounds land at 70 to 92 ms and 134 to 156 ms.
Unsettled: the other 1,123 ride ghosts. The cymbals stem gives a 41% chance baseline that swallows the signal, ghosts sit at 47% and plain at 55%, and the neither-detected rate is 50.3% for ghosts against 46.8% for plain. Those are close enough that the detector is missing real strokes. A second machine-readable transcription cannot arbitrate either, because it runs 230 bars of 4/4 plus 48 of 2/4 against the tab's 53 of 4/4 and 52 of 5/4, which makes a bar-keyed diff meaningless. No deletion revision may ship against these.
About 16.5 bars are unnotated. The tab totals 313.45s across 102 bars, with tempo automations of 79 BPM from bar 0, 71 at bar 98, 66 at bar 100 and 45 at bar 101, against a 360.0s record. The shortfall of 46.55s is 12.93%. Filling 360s at the tab's own 79 BPM needs 118.5 bars against the 102 present. Raising the tempo to Sloots's 86.4 widens the gap by 30.12s, so this is missing material and not a tempo error.
The opening is written straight where a professional transcription writes triplets. Sloots marks triplet brackets in both staves of the opening. The tab carries 23 tuplet events in the whole 102-bar file, 6 in Drums at bar 42 and 17 in Trombone at bar 68, and bars 1 to 8 hold 505 events across all nine tracks with zero tuplets. Aligning his boxed rehearsal numbers to tab bars assumes a shared downbeat origin, so that has to be landmark-anchored against the recording before any rhythm changes.
Printed sources give quarter = 134. A local sixteenth-grid sweep over the 3:18 to 3:58 solo window peaks at 143.5 with 71.1% against a 45.4% chance floor, with 135.0 at 69.7%. The grid lock is established and the exact tempo is not, so 134 must not be quoted as confirmed by audio.
Tempo-map drift is small and measured at 11 ms per bar, 0.55%. Where measure 102 begins in the audio is the binding limit, with anchor uncertainty at 1,928 ms, which is 0.91 of a 19/16 bar, across three independent families: drums at +1.176s, bass at +0.410s and keys at -0.752s.
Two corrections came from a second reader. The denominator was wrong: four sources were evaluated and three sparse parts were skipped, and counting the skipped three as failures turned missing estimates into negative observations. The second-separator result also needs a masking control, because the comparison stem is whole-kit drums, so a genuine quiet stroke masked by a louder kit event in the same 30 ms window scores as uncorroborated and is indistinguishable from an artifact.
Across seven songs, ranked and archived: Dong Work for Yuda s768189 (Sweeney), Apostrophe' s35873 (Bishop on Jim Gordon), Watermelon s35881 (Drumnet), Central Scrutinizer s3554079 (Bishop), Don't Eat the Yellow Snow s35866 (Bishop), Andy s21495 (Ryan Brown), and Keep It Greasey s604777 with three sources for verification only. Apostrophe' holds four tracks all on instrumentId 29, so a drum staff has to be added before a drum chart can be applied at all.
This page documents six occasions where a check enumerated what it expected and read absence as evidence. Building this update produced a seventh.
To measure the name loss I read api/meta/<songId> and counted tracks whose title was empty. Every one of twenty tabs returned 100% empty, including Apostrophe', which this work has never touched, and Keep It Greasey, whose strip was blocked before it could publish.
A result that says every tab on the platform lost every name is a result about the instrument. The track object has no title key at all. The field is name. The real schema is difficulty, hash, instrument, instrumentId, isEmpty, isVocalTrack, name, tuning, views.
179 names lost across 20 tabs, including tabs never edited by this work.
28 authored names lost across 6 tabs, each one traced to a specific revision.
The tell was the control. Apostrophe' and Keep It Greasey were in the sweep as untouched comparisons, and both scored identical to the damaged tabs. Had the query covered only the tabs under suspicion, the number would have looked plausible and would have been published.
This is the same failure as grepping <Ghost> in GPIF, as reading a missing fret as a rest, as reading a missing dynamic key as an absent marking, and as the hardcoded allowlist in noteloss_audit.py. Assume a field name, find nothing, and report nothing as a finding.
Songsterr draws a ghost note as a notehead inside round brackets. That is the platform's own ghost notation and it carries real musical information, the quiet stroke a drummer plays between the loud ones. A sweep run on 2026-08-29 and 2026-08-30 read those brackets as a defect and removed them across twenty Zappa tabs.
Sixteen of those revisions are the current public revision today. 3,842 ghost note flags are missing from tabs the public reads right now. Two more were rejected by Songsterr moderators before they could publish, and two were overtaken by other people's later revisions.
Each revision below was confirmed as the current public revision by reading api/meta/<songId> on 2026-09-05.
| Song ID | Title | Ghosts | Our revision | State | |
|---|---|---|---|---|---|
| 1 | s35881 | Watermelon In Easter Hay | 1,317 | r8768414 | is the current public revision |
| 2 | s35886 | Muffin Man | 578 | r8768517 | is the current public revision |
| 3 | s620961 | Drowning Witch | 419 | r8768566 | is the current public revision |
| 4 | s35870 | Montana | 317 | r8787106 | is the current public revision |
| 5 | s1105085 | The Black Page | 173 | r8768613 | is the current public revision |
| 6 | s35878 | Nanook Suite | 168 | r8769001 | is the current public revision |
| 7 | s35865 | Nanook Rubs It | 168 | r8768967 | is the current public revision |
| 8 | s412178 | Inca Roads | 165 | r8769026 | is the current public revision |
| 9 | s68248 | Carolina Hard-Core Ecstasy | 144 | r8769058 | is the current public revision |
| 10 | s35884 | Oh No | 141 | r8769089 | is the current public revision |
| 11 | s68246 | Alien Orifice | 86 | r8769118 | is the current public revision |
| 12 | s35887 | What's New In Baltimore? | 59 | r8769141 | is the current public revision |
| 13 | s748459 | Fembot In A Wet T-Shirt | 57 | r8769165 | is the current public revision |
| 14 | s20690 | Uncle Meat (YCDTOSA Vol. 2) | 24 | r8788757 | is the current public revision |
| 15 | s749523 | Catholic Girls | 16 | r8788801 | is the current public revision |
| 16 | s5820647 | Frank Zappa, The Mothers of Invention - Zomby Woof | 10 | r8766178 | is the current public revision |
An earlier draft of this page called these "still at risk". That was wrong. Reading isBlocked and reviewed off each revision record shows both were rejected by a human moderator and are blocked from publishing as of the recorded decision dates below. Whether either was at risk during the window before review is a separate question this page does not answer. No action is needed on either tab now, and the corrected Zoot Allures file that was built on 2026-09-05 should not be sent.
| Song ID | Title | Ghosts | Our revision | Moderator decision | Public now | |
|---|---|---|---|---|---|---|
| 1 | s604777 | Keep It Greasey | 629 | r8768457 | rejected by Kirill527 on 2026-09-01, blocked | r8852151 |
| 2 | s35883 | Zoot Allures | 53 | r8769199 | rejected by Darr on 2026-09-01, blocked | r7179991 |
Reviewed and not blocked, and another author's revision became public first. The stripping never reached a reader.
| Song ID | Title | Ghosts | Our revision | Outcome | Public now | |
|---|---|---|---|---|---|---|
| 1 | s412162 | Zomby Woof | 32 | r8766102 | reviewed fair, never became public | r8814965 |
| 2 | s412170 | Trouble Every Day (Live) | 9 | r8766285 | WRONG, corrected 2026-09-06. Kirill restored 3 of 9. 6 ghosts and 6 velocity changes stayed. Repaired as r8932027, on moderation. | r8815000 |
| Song ID | Title | Ghosts | State | |
|---|---|---|---|---|
| 1 | s35889 | Peaches En Regalia | 14 | flagged by the sweep, no revision was ever sent |
| 2 | s35875 | Packard Goose | 3 | flagged by the sweep, no revision was ever sent |
| 3 | s21495 | Andy | 1 | flagged by the sweep, no revision was ever sent |
| 4 | s59089 | Black Napkins | 1 | flagged by the sweep, no revision was ever sent |
stems-to-guitar-pro-drums, which builds a tab from an isolated drum stem. The sweep carried it onto community tabs written by other people.<AntiAccent>Normal</AntiAccent>. A search for <Ghost> returns zero in every file, and that zero was read as proof the ghosts were absent.The rule itself was withdrawn on 2026-09-05, in the pipeline as well as here. It had survived as advice while this page described its damage. Measured on Songsterr that day: a GPIF ghost arrives as its own ghost field and draws as a parenthesised notehead, and a GPIF <Accent> arrives as staccato and draws as a dot. So the parentheses are the platform's ghost notation, and the dot is a duration mark standing in for a dynamic one. sd_writegp.py now writes the native ghost flag, and sd_verify.py now fails any file that writes a ghost as a dot. Brandon's dislike of parentheses stands as a display preference for his own files.
The count above says 3,842 ghost notes. Counting them by MIDI lane in each tab's pre-sweep revision says something narrower. A ghost note is a quiet snare stroke between the loud ones. A ghost flag on a ride cymbal is a different thing and needs a different decision.
| Song ID | Title | Removed | Of those, snare | Top lanes | Whose revision we overwrote | |
|---|---|---|---|---|---|---|
| 1 | s35881 | Watermelon In Easter Hay | 1,317 | 0 | ride 1316, crash 1 | Ben Dibden1 |
| 2 | s35886 | Muffin Man | 578 | 504 | snare 481, snare 23, open hat 13, crash 12, kick 10 | Ben Dibden1 |
| 3 | s620961 | Drowning Witch | 419 | 111 | ride 128, snare 101, closed hat 61, kick 41, low tom 33 | Khashoggi |
| 4 | s35870 | Montana | 317 | 174 | snare 95, tambourine 83, snare 79, kick 24, MIDI 87 22 | Brandon chavez |
| 5 | s1105085 | The Black Page | 173 | 170 | snare 170, pedal hat 3 | Achille |
| 6 | s35878 | Nanook Suite | 168 | 168 | snare 168 | Kirill |
| 7 | s35865 | Nanook Rubs It | 168 | 168 | snare 168 | Taburet |
| 8 | s412178 | Inca Roads | 165 | 134 | snare 134, crash 14, kick 7, crash 6, closed hat 3 | Darr |
| 9 | s68248 | Carolina Hard-Core Ecstasy | 144 | 0 | tambourine 144 | Darr |
| 10 | s35884 | Oh No | 141 | 0 | closed hat 141 | Ben Dibden1 |
| 11 | s68246 | Alien Orifice | 86 | 33 | snare 33, crash 33, crash 14, ride 3, pedal hat 2 | Ben Dibden1 |
| 12 | s35887 | What's New In Baltimore? | 59 | 4 | ride 48, snare 4, crash 4, crash 3 | e |
| 13 | s748459 | Fembot In A Wet T-Shirt | 57 | 53 | snare 53, pedal hat 4 | Kevin Sheppard |
| 14 | s20690 | Uncle Meat (YCDTOSA Vol. 2) | 24 | 4 | mid tom 6, snare 4, high tom 4, low tom 4, ride bell 4 | Leonard |
| 15 | s749523 | Catholic Girls | 16 | 16 | snare 16 | Kevin Sheppard |
| 16 | s5820647 | Frank Zappa, The Mothers of Invention - Zomby Woof | 10 | 10 | snare 10 | CoolDude |
The largest single entry is the weakest case for restoration. Watermelon In Easter Hay's 1,317 are 1,316 ride and 1 crash, with no snare at all. The stripping revision claimed exactly that, and the claim holds. Carolina Hard-Core Ecstasy's 144 are all tambourine and Oh No's 141 are all closed hat. Restoration should run snare first, where the meaning is not in question.
Superseded 2026-09-06: the ride reading was withdrawn after audio testing. See the status notice at the top.
Montana already carries the wrong repair. Ben Dibden1's r7294223 held 317 ghost flags. My r8764165 wiped them, and my r8787106, live today, converted all 317 into staccato dots. That is the substitution measured wrong on the same day: a dot is a duration mark and a ghost is a dynamic. Montana needs the ghost flag back and the dot removed, and 174 of its 317 are on snare.
The Zomby Woof repair was re-checked against the four transcriptions held on disk. Every figure below was measured off the scan rather than read by eye.
Brown's DRUM Magazine page carries small crosses one full space below the bottom staff line. Staff lines were detected at a 12px spacing, then every mark sitting under the bottom line was measured.
| System | Marks below the staff | Glyph |
|---|---|---|
| 1 | 3 | w=13 ink=33 |
| 2 | 0 | none |
| 3 | 3 | w=13 ink=33 |
| 4 | 2 | w=13 ink=33 |
Eight marks, pixel-identical, across three of the four systems. A five-line drum staff puts the pedal hi-hat in exactly that position. Drumnet's bar 1 carries the same three marks at the same height, drawn in its own dialect with o and + above the staff for the hands. Two professional charts agree.
Connected components with the staff lines erased, measured across x = 105 to 436.
| x | Staff position | What it is |
|---|---|---|
| 132 | bottom space | kick |
| 170 | third space | snare |
| 199 | bottom space | kick, open hi-hat at 201, accent at 199 |
| 228 | spanning | sixteenth rest |
| 258 | third space | snare, pedal hi-hat at 260 |
| 287 | bottom space | kick, open hi-hat at 289, accent at 287 |
| 325 | third space | snare, pedal hi-hat at 327 |
| 358 | bottom space | kick, open hi-hat at 358, accent at 358 |
| 397 | third space | snare, pedal hi-hat at 398 |
The three accents land within 2px of the three open hi-hats. The three pedal hi-hats land within 2px of the three snares. The rest is the alignment anchor, since the tab also rests at slot 4 and then runs snare, hat, snare, hat, snare across slots 5 to 9.
A claim of mine was wrong. I reported that the tab holds no pedal hi-hat events anywhere. The tab holds 23 of them, across bars 6, 7, 8, 9, 15, 17, 18, 41, 42, 43, 44, 99, 100 and 102. Bar 1 is the single omission. The lane already belongs to the tab's own vocabulary, which makes the bar 1 addition a gap fill.
Brown beams bar 5 as five quintuplet groups of five. The measured accent glyphs, width 18 and ink 65, sit above notes one and three of every group. The tab marks note two and nothing else.
slots 1, 6, 11, 16, 21
five marks, each on note two of its group
slots 0, 2, 5, 7, 10, 12, 15, 17, 20, 22
ten accents, notes one and three of every group
I shipped that change and then took it back out. Revision r8905411 moved the marks to Brown's positions and doubled them to ten. Reading the revision back from Songsterr's own JSON showed why that was wrong: a Guitar Pro <Accent> arrives in Songsterr as staccato. The note schema for this part holds only fret, string, staccato, rest, ghost and tie. There is no accent field. Zooming the rendered bar confirms it: ten small round dots, no wedges. A staccato dot says short, and Brown's wedge says loud, so the edit swapped one articulation for another. Revision r8905491 puts bars 5 and 16 back to exactly what the tab held.
What was tested, and what stays unconfirmed. One import path was measured: a Guitar Pro 7 .gp pushed through the editor's importRevisionInput on tab s412162, read back as revision r8905411, part 9. In that file, on that path, a GPIF <Accent> arrived as staccato and the note schema carried no accent field. Whether some other import format, another instrument set, or Songsterr's own editor can express a drum accent is unconfirmed, and nothing here tested it. Loudness lives on the beat instead, as ff, pp, mf and mp, and bar 5 already carries an alternating pp and ff shape the transcriber put there. For this tab and this path, accent work has to go through beat dynamics, and that is a larger change than this pass covers.
The barring source count was wrong too. Kasper Sloots' single 10/16 belongs to a passage he transcribed from 1:39 to 2:10, framed by 7/8 and 5/4 and repeated three times against two keyboards. Brown's page is headed @ 0:00. The two describe separate music, so Zappa Analysis never voted on the opening bar at all. For the opening the split is Brown and Bedard on 5/16 plus 5/16 against Drumnet and the tab as published on 10/16. Brown's interior barline is solid and full height, and he beams the two groups apart. Drumnet beams the passage unbroken and numbers its next system from bar 4. Both readings are structural, so this is a source based editorial adjudication, not an objective correction, and the page labels it that way.
| Check | Result |
|---|---|
| Master bars | 115 to 115 |
| Time signatures | identical across all 115 |
| Rhythm and tuplet census | identical, so the polyrhythms hold |
| Cells with changed note content | masterbar 1, track 9 only |
| Master bars touched at all | 1 |
| Submitted as | r8905491, 10 tracks |
| Pedal hi-hat on the live revision | 26 total, 3 of them in bar 1 |
| Staccato on the live revision | 32, the tab's own count |
| Intra-beat string collisions | none |
| Ghost renderings | 8, bars 6 to 9, unchanged |
| Let-ring | 0, unchanged |
| Tracks | 10, every name intact |
Two statements on an earlier version of this page ran ahead of what had actually been measured. Both were re-run properly, and both held.
| Claim | What was originally shown | What settles it | Result |
|---|---|---|---|
| The eight marks under Brown's staff are one glyph | equal width and equal ink count, which is consistent with identity without establishing it | bitwise compare of a 14×17 window centred on each mark, all 28 pairs | 0 differing pixels within those windows |
| Rhythmic placement was preserved | a matching tuplet census, which cannot see a moved onset | per onset: duration, the full set of notes sounding together, grace notes, dynamics and tuplet ratio, plus meters, key signatures, repeat structure and tempo automations | 8,431 onsets, 3 changed, each one the added pedal hi-hat; 6 tempo automations identical |
| Only the drum track moved | note counts per track | gpif/diff_gpif_tracks.py A B "Ralph Humphrey", which exits 1 on any other track | 9 tracks identical |
| The corrected pipeline rule actually holds | an edited source file, which proves nothing until it runs | generated a 48-hit fixture, wrote it with sd_writegp.py, ran sd_verify.py, then reverted the file to the old encoding and re-ran | 20 passed / 0 failed, then 2 failed and exit 1 |
| The revisions are where the page says | a description of the state | api/meta/<songId>/revisions, fields isBlocked, isOnModeration, reviewed | 20 of 20 read |
Source scans are in ~/Projects/_outputs/zappa-drum-sources/, one folder per publisher, each with a SOURCE.md giving the URL, pixel size, byte count and decode check. The measurement crops are in s412162/audit/. Revision hashes come from the image field of each revision record, which is what addresses that revision's part JSON on CloudFront.
An earlier version of this page said Zomby Woof "is repaired". That collapsed three states into one. They are kept apart here.
| Kind of status | Zomby Woof s412162 | What it does and does not prove |
|---|---|---|
| Locally verified build | r8905491-Zomby-Woof-PEDAL-rev4.gp | The file on disk passes every gate. It proves nothing about Songsterr. |
| Submitted revision | r8905491, queued, isOnModeration=true | Songsterr holds it and its part JSON reads back correct. A moderator has not reviewed it. |
| Confirmed public revision | still r8814965 by Kirill | This is what a reader sees today. The eight ghost notes are still missing from it. |
So Zomby Woof is not repaired in public. Six revisions from this work sit in the queue on that tab: 8902998, 8903141, 8903886, 8904052, 8905411 and 8905491. Only the last is meant to be taken. Songsterr offers no withdraw control, so the earlier five stay in the queue and the revision description asks the moderator to take the newest.
Re-queried every tab after the first pass. Two findings change the work list, and the biggest restore now has a settled answer.
Zoot Allures needs no fix, and neither does Keep It Greasey. A moderator blocked both stripping revisions. isBlocked=true on r8769199 and r8768457, and it is false on every other revision tested, including other authors' revisions on the same songs. A blocked revision cannot be promoted, so the live Zoot Allures keeps all 53 ghosts and Keep It Greasey keeps all 629. Submitting anything to either tab would add queue noise to work that is already correct.
| # | Song ID | Title | Ghosts | Live rev | Why it is safe |
|---|---|---|---|---|---|
| 1 | s604777 | Keep It Greasey | 629 | r8852151 | r8768457 blocked by moderator |
| 2 | s35883 | Zoot Allures | 53 | r7179991 | r8769199 blocked by moderator |
| 3 | s412162 | Zomby Woof | 32 | r8814965 | repaired r8904052; live rev is Kirill's |
| 4 | s412170 | Trouble Every Day (Live) | 9 | r8815000 | WRONG, corrected 2026-09-06. Kirill restored only 3 of 9 ghosts. Repaired as r8932027, on moderation. |
| # | Song ID | Title | Ghosts | Live rev | State |
|---|---|---|---|---|---|
| 1 | s35881 | Watermelon In Easter Hay | 1,317 | r8768414 | stripping revision is current |
| 2 | s35886 | Muffin Man | 578 | r8768517 | stripping revision is current |
| 3 | s620961 | Drowning Witch | 419 | r8768566 | stripping revision is current |
| 4 | s35870 | Montana | 317 | r8787106 | stripping revision is current |
| 5 | s1105085 | The Black Page | 173 | r8768613 | stripping revision is current |
| 6 | s35878 | Nanook Suite | 168 | r8769001 | stripping revision is current |
| 7 | s35865 | Nanook Rubs It | 168 | r8768967 | stripping revision is current |
| 8 | s412178 | Inca Roads | 165 | r8769026 | stripping revision is current |
| 9 | s68248 | Carolina Hard-Core Ecstasy | 144 | r8769058 | stripping revision is current |
| 10 | s35884 | Oh No | 141 | r8769089 | stripping revision is current |
| 11 | s68246 | Alien Orifice | 86 | r8769118 | stripping revision is current |
| 12 | s35887 | What's New In Baltimore? | 59 | r8769141 | stripping revision is current |
| 13 | s748459 | Fembot In A Wet T-Shirt | 57 | r8769165 | stripping revision is current |
| 14 | s20690 | Uncle Meat (YCDTOSA Vol. 2) | 24 | r8788757 | stripping revision is current |
| 15 | s749523 | Catholic Girls | 16 | r8788801 | stripping revision is current |
The placement argument below is real and it is not sufficient. An audio test on the isolated cymbal stem returned a 41% chance baseline, with ghosted rides at 47% and plain rides at 55%. That spread does not clear chance, so the claim that the 1,316 ride flags are proven intentional was withdrawn. 1,123 ride ghosts remain unexplained. A lower-chance-baseline onset method is required before any verdict. Ship no deletion revision against them. Current adjudication: Program Scope, queue q-2026-09-06-1492ba.
This was the one tab held back by a caveat. Its stripping revision claimed the 1,317 marks were ride and crash at forte, so not ghost notes. Both halves of that reasoning fail against the data.
"They are all on ride and crash at forte, so they are not ghost notes and no dynamic was changed."
1,316 sit on ride (MIDI 51) and 1 on crash (MIDI 49), so the lane half is right. The staff holds 1,785 beats and exactly one written dynamic. That single forte is bar 1, and it sits on the one ghosted crash, a tremolo swell marked velocity f with gradualVelocity crescendo. The other 1,784 beats carry no written dynamic, so 1,316 ride ghosts stand on no dynamic at all.
The ride runs as a continuous sixteenth ostinato. Counting every ride note by its sixteenth slot in the bar:
| 16th slot in bar | Plain notehead | Ghost notehead |
|---|---|---|
| 0, 4, 8, 12 (the quarter pulse) | 407 | 2 |
| every other sixteenth | 1 | 1,314 |
The ride is struck plainly on each quarter and ghosted on every sixteenth between. A ghosted ride note is alone in its beat 99.4% of the time; a plain one shares its beat with kick or snare 60.8% of the time. That is the notation telling a drummer to keep the ride quiet except where it lines up with the backbeat.
Verdict: all 1,317 are genuine and must be restored. The caveat is cleared.
Correction, and it cuts against my own earlier figure. I first reported the Frank Zappa staff going 1,056 notes to 1,061 across that edit. That was a measuring artifact. The reading tool called any entry without a fret key a rest, and a dead-string note also has no fret. Five dead notes on that staff carry no fret in the pre-sweep revision and carry fret 0 in the live one, so the tool scored them as rests in one and as notes in the other.
Measured on the rest field the data actually carries: 1,061 sounding notes before and 1,061 after, a delta of zero. The staff gained 4 quarter rests at bars 3, 5, 7 and 9. Tool patched, backup at songsterr_live_read.py.bak-pre-restfix-2026-09-05.
A parallel session ran the same trail and found what the round trip actually cost: one chord symbol, E7Msus2 at bar 3. Everything else is encoding, 91 bend points gaining a precisePosition, 136 vibrato flags re-encoded, and 21 apparent fret differences that are the same notes in a different array order. The description was inaccurate; the practical loss is one chord label.
A parallel session built RESTORED-s35881-v2.gp on the current live export. Checked here against both the pre-sweep revision and the live one, at render level rather than by element count, since GPIF Notes are shared objects and a raw count hides position errors.
| Check | Result |
|---|---|
| Drum-staff note slots, pre-sweep vs restored | 2,091 vs 2,091, sets identical |
| Ghost positions, pre-sweep vs restored | identical set, 0 missing, 0 extra |
| Lanes restored | 1,316 ride (51), 1 crash (49) |
| Other eight staves | note and ghost counts unchanged |
| letRing on the drum staff | 0 (the 25 in the file sit on two guitar staves) |
| Bars and tracks | 105 and 9, unchanged |
The file is correct and ready to submit. Its 1,332 AntiAccent elements are 15 pre-existing plus 1,317 written copy-on-write, which is why an element count reads higher than the rendered 1,317.
Every ride note on the Vinnie Colaiuta staff, counted by its sixteenth-note position within the bar. The quarter pulse is plain, everything between it is ghosted, and the split is close to absolute.
| 16th slot | Position | Plain | Ghosted |
|---|---|---|---|
| 0 | quarter pulse | 103 | 0 |
| 1 | 0 | 102 | |
| 2 | 1 | 151 | |
| 3 | 0 | 150 | |
| 4 | quarter pulse | 101 | 1 |
| 5 | 0 | 101 | |
| 6 | 0 | 102 | |
| 7 | 0 | 101 | |
| 8 | quarter pulse | 102 | 0 |
| 9 | 0 | 101 | |
| 10 | 0 | 102 | |
| 11 | 0 | 101 | |
| 12 | quarter pulse | 101 | 1 |
| 13 | 0 | 101 | |
| 14 | 0 | 101 | |
| 15 | 0 | 101 | |
| quarter pulse (0,4,8,12) | 407 | 2 | |
| every other sixteenth | 1 | 1,314 |
Slots 2 and 3 carry more notes than their neighbours because some bars subdivide further. The pattern holds regardless: a ride note on the pulse is written plain 407 times against 2 exceptions, and a ride note off the pulse is written ghosted 1,314 times against 1.
A parallel session uploaded every damaged tab. Watermelon went up as r8908034 and reads back from CloudFront with 1,317 ghosts, 1,316 on ride and 1 on crash, matching the pre-sweep revision exactly.
| Tab | Restore revision | Ghosts |
|---|---|---|
| Watermelon In Easter Hay | r8908034 | 1,317 |
| Muffin Man | r8906880 | 578 |
| Drowning Witch | r8908109 | 419 |
| Montana | r8907028 | 317 |
| The Black Page | r8907247 | 173 |
| Nanook Suite | r8907360 | 168 |
| Nanook Rubs It | r8907423 | 168 |
| Inca Roads | r8907511 | 165 |
| Carolina Hard-Core Ecstasy | r8908182 | 144 |
| Oh No | r8908239 | 141 |
| Alien Orifice | r8907689 | 86 |
| What's New In Baltimore? | r8908276 | 59 |
| Fembot In A Wet T-Shirt | r8907601 | 57 |
| Uncle Meat | r8907952 | 24 |
| Catholic Girls | r8907778 | 16 |
| Zomby Woof (AI) | r8906157 (live) | 10 |
Who blocked the two dead revisions. Keep It Greasey r8768457 was rejected by Kirill527 and Zoot Allures r8769199 by Darr, both on 2026-09-01. Live Zoot Allures keeps all 53 ghosts: 18 snare, 13 crash, 12 closed hat, 8 pedal hat, 1 kick, 1 low tom, letRing 0.
Montana is counted across two drum staves, 212 on track 15 and 105 on track 17. A single-part read returns 212 and undercounts the tab.
I first wrote that every note on that staff carries dynamic: null, so no forte existed anywhere. Wrong, and wrong the same way the rest bug was. Songsterr names that field velocity, not dynamic. The key dynamic appears zero times in the schema, so reading it returned null for all 1,785 beats and I mistook an absent key for an absent marking.
Measured on velocity: one beat carries f, 1,784 carry nothing. A parallel session caught this. It leaves the verdict standing, since one forte in 1,785 beats cannot support "they are all at forte", and it stops the page overshooting in the other direction.
The beat is worth seeing on its own terms. It is the only crash ghost on the staff and it reads {fret 49, ghost true, velocity f, gradualVelocity crescendo, tremolo [1,32]}: a cymbal swell, not a quiet stroke. That one ghost means something different from the 1,316 on the ride. Velocity is identical in both revisions, so the sweep did not change any dynamic, which its description got right.
Both errors share a root: I searched for a field name I assumed and read its absence as evidence. Same as grepping <Ghost> in GPIF and concluding the file had no ghosts.
Another session queued a finding that this page's per-song counts disagree with the local ORIGINAL files, reporting a total of 5,322 rendered ghosts across 22 files against the 3,832 counted here. Measured properly, every number on this page holds. The gap is scope.
| Song | This page | File, all staves | Drum staves | Other staves |
|---|---|---|---|---|
| Watermelon In Easter Hay | 1,317 | 1,333 | 1,317 | 16 |
| Muffin Man | 578 | 613 | 578 | 35 |
| Drowning Witch | 419 | 496 | 419 | 77 |
| Montana | 317 | 574 | 317 | 257 |
| Zoot Allures | 53 | 53 | 53 | 0 |
The drum-staff column matches this page on every row. The larger file totals count ghost noteheads on vocal, guitar, keyboard and mallet staves, which the sweep never touched and correctly left alone. Montana's 257 non-drum ghosts break down as Vocal 1/2/3 102, Frank Zappa Lead 112, George Duke 23, Ruth Underwood Bridge 14 and Tom Fowler 6, matching the 2026-08-30 audit record exactly.
Zoot Allures looked like the one row that agreed for a reason worth stating. It carries zero non-drum ghosts, so its two totals coincide. That coincidence is what made the other four look wrong.
The 2026-08-31 handoff records that no notes were lost, measured across 20 folders and 120,579 beat events with zero pitch, rhythm or position differences. That statement is true. It was also produced by an instrument that could not see the thing being destroyed.
noteloss_audit.py built its per-note fingerprint from a fixed list of effect tags:
| Line 80, as written |
|---|
| for tag in ("Tie", "Accent", "Vibrato", "LetRing", "Trill"): |
AntiAccent is not on that list, and AntiAccent is how GPIF spells a ghost note. So a ghosted note and a plain note fingerprinted identically, and removing every ghost in a tab produced no difference at all.
| Note | Fingerprint under the old rule |
|---|---|
| plain ride | art=0;Midi=51 |
| ghosted ride | art=0;Midi=51 (identical) |
| accented ride | art=0;Midi=51;Accent=1 (visible, it is on the list) |
| Tool | Differing events found | AntiAccent mentions |
|---|---|---|
| as it ran during the sweep | 15 | 0 |
| enumerating effects structurally | 1,332 | 75 |
The 1,332 accounts exactly: 1,317 ghost losses plus the same 15 encoding differences the old version already reported. The audit was not merely incomplete. On the one question that mattered it returned a clean result with full confidence.
Fixed. The fingerprint now enumerates every child element of a note except the two structural ones, so a marking nobody anticipated still shows up. Verified: ghost, accent, letRing and tie now each produce a distinct fingerprint. Backup at noteloss_audit.py.bak-pre-antiaccent-blindness-2026-09-05.
This is the fourth instance of one root cause in this audit, and the most costly. <Ghost> returning zero started the sweep. An articulation-table search concluded the flags were not in the file. A missing fret read as a rest invented five notes. A missing dynamic key read as an absent marking. Here a hardcoded allowlist made a real loss invisible. Every one of them enumerated what was expected and treated what was absent as evidence.
Two sessions agreed that Songsterr's drum note schema has no accent field, so a drummer's accents could not be notated. Brandon opened the editor and said he could see the accent option. He was right, and both of us had made the same error this page spends its length documenting.
accentuatedThe original claim came from a key inventory of one part of one tab that happened to contain no accents. Scanning 106 parts across 11 tabs gives the schema actually in use:
string, fret, rest, tie, staccato, dead, hp, slide, ghost, bend, leftHandVibrato, accentuated, harmonic, harmonicFret, trill, tremolo
accentuated: 1 is an accent, accentuated: 2 is a marcato, and they appear on drum staves. Keep It Greasey s604777 carries 60 at marcato on the Vinnie Colaiuta staff; Drowning Witch s620961 carries 7 accents and 2 marcatos on its drum staff.
GPIF <Accent> is a bitfield, not an enum. This page first published the bit meanings from an assumed specification. That was wrong and it is corrected below from measurement.
| GPIF value | Served as | Marking | How this is known |
|---|---|---|---|
| 1 | staccato | staccato dot | measured, bars 300/302/304 |
| 4 | accentuated 2 | marcato ^ | measured, glyph seen at bar 3 |
| 8 | accentuated 1 | accent > | closed 2026-09-06, reference implementation |
| 9 | accentuated 1 + staccato | accent plus dot | 8 | 1 |
The correspondence is measured in both directions. On Drowning Witch's drum staff, GPIF Accent=4 renders twice, at bars 3 and 101, and the served JSON carries exactly two accentuated: 2 notes at bars 3 and 101. Accent=8 renders seven times at bars 128 and 173, and the JSON carries exactly seven accentuated: 1 notes at bars 128 and 173. Counts and bars agree both ways.
The glyph pins one end. Rendering bar 3 at 6x shows a caret above the accented tom, an inverted V with a clean apex. That is a marcato, so Accent=4 is the heavy accent and accentuated: 2 is marcato.
CLOSED 2026-09-06 from the reference implementation, no longer an inference. alphaTab is the open-source library that reads and writes the GP7 .gp container, and its GPIF code states the mapping outright in three independent places.
| Route | File | What it says |
|---|---|---|
| Reader | src/importer/GpifParser.ts | accentFlags & 0x04 sets AccentuationType.Heavy; & 0x08 sets AccentuationType.Normal; & 0x01 sets staccato; & 0x10 sets Tenuto |
| Writer | src/exporter/GpifWriter.ts | Normal emits 0x08, Heavy emits 0x04, Tenuto emits 0x10. The round trip closes. |
| Glyph | rendering/glyphs/AccentuationGlyph.ts | Normal draws ArticAccentAbove, the accent wedge. Heavy draws ArticMarcatoAbove, the caret. |
So <Accent>4</Accent> is Heavy, drawn as a marcato caret, and <Accent>8</Accent> is Normal, drawn as an accent wedge. That is the same table the measurement produced, now backed by the code that implements the format. alphaTab's own rendered notation legend shows the three markings in order: staccato dots, then carets, then wedges.
The original attempt failed because Songsterr's notation is virtualised and never painted at that scroll depth. The fix was to stop asking that viewer. The file on disk was rendered directly with alphaTab 1.6.0 in headless Chrome, one bar per page at scale 4, drums track 15 only, then cropped at native resolution.

Bar 128 draws a wedge. The mark above the final notehead is a horizontal > with its apex to the right, which is ArticAccentAbove. Bar 101 draws a caret. The mark above the first notehead is an inverted V with a clean apex, which is ArticMarcatoAbove. That is a second marcato sighting independent of bar 3.
Structure was resolved by walking MasterBar to Bars to Voices to Beats to Notes, which reproduces the earlier census exactly: Accent=4 renders twice on drums at bars 3 and 101, Accent=8 renders seven times at bars 128 and 173. So the mapping now holds on four routes: reader, writer, glyph enum, and a picture of the real file.
So writing <Accent>8</Accent> gives an accent, and 4 gives a marcato. An earlier version of this page had those two swapped. Acting on it would have printed marcatos where accents belong, on someone else's transcription, which is the parentheses mistake in a new costume.
This is the sixth instance of the same root cause, and it happened inside the work documenting that root cause. Absence in a sample is not absence from a schema. Inventorying one file and generalising is the same move as grepping <Ghost> once. The rule needs its scaled-up form: sweep many files before declaring a field does not exist, and a checker must enumerate what is present rather than a list of what you expect.