Revision r8972513 live on s6857183. Built 2026-09-08.
v13 was built on the v11 lineage, which reads kick 505 and snare 340. While it sat local, another
session published r8970744, which removes 63 duplicate notes and reads kick 492 and
snare 293. Pushing v13 would have reverted that dedup.
So the hands fix was rebased. RECONCILED-s6857183-Brandon-edit.gp matches the live
head on every drum lane and on the grid, so the sibling's hands_fix.py was run against
that instead, producing HANDSFIX-on-r8970744-Brandon-edit.gp.
| lane | live r8970744 | pushed r8972513 | change |
|---|---|---|---|
| Ride 51 | 1522 | 1506 | 16 removed |
| Kick 36 | 492 | 492 | untouched |
| Snare 40 | 293 | 293 | untouched |
| Pedal hi-hat 44 | 245 | 245 | untouched |
| Toms | 166 | 166 | untouched |
| 3-hand instants | 16 across 12 bars | 0 | cleared |
Verified from the published CloudFront parts, not from the editor banner. Every non-drum track
was byte-identical before the push, checked with diff_gpif_tracks.py at exit 0.
Preflight cleared at exit 0 with NAMEDROP-CLEAR on 9 of 9 CDATA-wrapped names.
Four places carried a do-not-push rule. All four are rewritten.
transcription-repair/SKILL.md ยง22, "Uploading is outward facing and needs a
separate say-so every time"songsterr-upload/SKILL.md, "Publishing is Brandon's act, never the skill's"songsterr-upload/SKILL.md, "publishing is a separate, deliberate act and is
never automatic"preflight_import.py, "Publishing stays Brandon's act"| the tab | what happens now |
|---|---|
title carries Brandon edit, ours | push it, no asking |
| somebody else's | copy, rename a Brandon version, push the copy |
| somebody else's that we broke | revise theirs, after verifying the damage |
What was removed is the question, never the verification. Preflight, the track diff and a live read still gate every push, and all three ran here.
The instruction named the Appleseed guitar parts as the one case of a tab we broke that belongs to someone else. That does not survive checking.
Every Appleseed tab is ours. On s6389251 Kilgore Trout, s6206980 On Reflection and
s6362089 Cathedral Rings the first revision is Initial revision by
Brandon-chavez4. All 24-plus came from our own AI transcriptions, so they need no
carve-out at all. They are simply pushed.
The tabs we broke that belong to other people are the 20 Zappa tabs from the 2026-08-29
and 08-30 parentheses sweep, which read <AntiAccent>Normal</AntiAccent> as
an error. 16 are still live with 3,842 ghost flags dropped. Worst live losses: Watermelon In
Easter Hay s35881 at 1,317, Muffin Man s35886 at 578, Drowning Witch s620961 at 419, Montana s35870
at 317, The Black Page s1105085 at 173.
Memory: feedback_push_our_own_tabs_no_gate.md, plus amendments to
feedback_songsterr_copy_tab_for_rebuilds_not_revision.md and
feedback_relay_updates_to_chatgpt_via_chrome.md.
The two-lanes-low bug took the FIRST staff row above a global ink fraction, so a system whose top line printed lighter lost that line and every lane read two lanes low. The corrected rule picks the top maximising the WEAKEST of the five rows, with a 0.25 floor.
| script | state | in the live path |
|---|---|---|
chart_read.py refine() | fixed by the sibling | yes |
chart_lanes.py staff_lines() | fixed by the sibling | yes |
systems.py staves() | fixed this pass | no |
staves.py systems() | fixed this pass | no |
barlines.py staff_lines() | fixed this pass | no |
systems_median.py, barlines_full.py | already clean, row medians | yes |
No regression, and no improvement either. On the five Drumnet pages
staves.py returns 5, 5, 6, 6, 4 systems both before and after the patch, so the
behaviour is unchanged on this chart. The patch closes the two-lanes-low trap should any of the
three ever be called again.
They still undercount and they stay superseded. The three find 26 systems where the
chart has 48. systems_median.py finds all 48, gaps 8 / 11 / 11 / 11 / 7, and it is
the finder to use.