Watermelon: pushed, and the push gate removed

Revision r8972513 live on s6857183. Built 2026-09-08.

three-hand instants 16 to 0
ride 1522 to 1506
tracks 9 of 9
credits 7 of 7
blocked false

What was pushed, and why it is not v13

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.

lanelive r8970744pushed r8972513change
Ride 511522150616 removed
Kick 36492492untouched
Snare 40293293untouched
Pedal hi-hat 44245245untouched
Toms166166untouched
3-hand instants16 across 12 bars0cleared

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.

The gate is removed, and the policy that replaced it

Four places carried a do-not-push rule. All four are rewritten.

the tabwhat happens now
title carries Brandon edit, ourspush it, no asking
somebody else'scopy, rename a Brandon version, push the copy
somebody else's that we brokerevise 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 carve-out was named wrong, and checking it widens the rule

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.

Also encoded this turn

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.

Staff-scan propagation, finished

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.

scriptstatein the live path
chart_read.py refine()fixed by the siblingyes
chart_lanes.py staff_lines()fixed by the siblingyes
systems.py staves()fixed this passno
staves.py systems()fixed this passno
barlines.py staff_lines()fixed this passno
systems_median.py, barlines_full.pyalready clean, row mediansyes

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.