Three clock bugs under the Appleseed audio verdicts

29 of 46 songs were marked audio refuted on 2026-08-29 and queued for re-transcription. Three separate defects were found underneath that number, each measured against tabs whose answer is already known. Every figure here is read from the project's own tools. 29 August 2026.

On this page
  1. What to do with the work order
  2. Bug one, the control was chosen by onset count and not duration
  3. Bug two, the reader's clock loses a median 9.6 seconds per file
  4. Bug three, the reference onsets sit 58 ms off the beat grid
  5. Three clocks compared, on the same negative controls
  6. The tempo map, and why it is not an improvement
  7. The confirmation threshold, validated leave-one-out
  8. All 46 rescored
  9. Confession, built and not promoted

1. The verdict

Re-transcribe the 29 refuted songs, worst margin first?
No. That order is sorted by a duration artifact.
The margin correlates -0.861 with how far the winning control piled its hits onto one onset, and that pileup correlates +0.850 with the control recording simply being shorter. The same procedure refutes 3 of 8 human Songsterr tabs against their own recordings, and 7 of 11 supported verdicts reverse under duration-matched controls.
What actually moved the needle?
The bar-length bug repairs the clock. Its confirmed-count gain is withdrawn.
Reading each bar's length from its time signature instead of from its last note recovers a median 9.6 s per file. That drift repair is measured and it stands. The confirmed-count gain of 4 of 46 to 8 of 46 was read at an unvalidated sep ≥ 5.0 cut, and it is withdrawn here. At the validated cut the meter clock confirms 4 of 46 machine tabs, and the note-driven clock was never scored at that cut, so this fix carries no measured gain in confirmations. See section 7.
Did recording-derived tempo maps help?
No. They inflate the wrong pairings too.
All 46 files were written with per-bar tempo from their own recordings. Measured against its own negative controls the map is more permissive rather than more discriminating: the ceiling a KNOWN wrong pairing reaches goes from about +5 to +25.7, and at a threshold read off that ceiling 0 of 46 machine tabs confirm.

2. Bug one, control selection

librosa.sequence.dtw(subseq=False) forces the path to span both sequences, and the audit picks controls by onset count and ignores duration. A control shorter than the song makes the warp compress the tab into it, and the compression becomes flat runs: hundreds of attacks on one onset, all counted as hits in the 30 ms window.

663Confession, control hits on ONE onset
3its own map, same figure
3 of 8human tabs refuted
7 of 11supports that reverse
repair tried, scored on the 8 known-good human tabsown beats every wrong stem
raw warped alignment percent, what produced the 46 verdicts5 of 8
controls matched on duration as well as onset count2 of 8
distinct-onset score, structurally immune to piling0 of 8
Sakoe-Chiba banded DTW at radius 0.20 / 0.10 / 0.05 / 0.02 / 0.013, 3, 2, 3, 3 of 8
warped gain over each stem's own chance level4 of 8
alignment BEFORE any warp, chance-normalised6 of 8

3. Bug two, the reader's clock

attack_string_evidence.events() sets each bar's length to max(onset + duration) over that bar's note-bearing beats. A bar ending in a rest reports a short span, and the loss is carried for the rest of the song. Within-bar positions are fine; the bar cursor is not.

48 of 54files drifting over 1 s
40over 5 s
93 sworst file
0.9 snotation vs recording length
12.5 sreader vs recording length
The written notation matches the recording to a median 0.9 s. The reader's version of the same file misses it by a median 12.5 s, worst 92.5 s. The notation was right and the clock reading it was wrong. The 8 human tabs drift 0.0 to 2.4 s because Songsterr exports carry no trailing rests, which was an unisolated confound in the first known-answer test on this page.

4. Bug three, the onset frame

beat_map.py takes its reference onsets from onset_detect(backtrack=True), which walks every detection back to the energy minimum before the peak. librosa.beat.beat_track puts its beats on the peaks. The two live in different frames.

−58 mssigned offset, 5 of 6 stems
2.6%beats hitting an onset
13.6%chance level
63.7%same test, backtracking off
A fixed −58 ms is 5 frames at hop 256. Beats hit the reference onsets less often than chance until the frame is corrected. Backtracking is kept, because a struck note starts at the rise rather than at the spectral peak and the tabs align to it: a human Mile Marker tab scores 56.9% against backtracked onsets at a 15.0% chance level. It is the beat grid that is moved, by each stem's own median offset, so no tab is consulted.

5. Three clocks, same negative controls

configurationthresholdconfirmedmachine humanundetermined machinefalse positives
note-driven clock, constant bpmsep ≥ 5.07 4 of 463 of 842 0 of 162
meter clock, constant bpm (cut retired) sep ≥ 5.011 8 of 463 of 838 1 of 162
meter clock + frame-corrected tempo mapsep ≥ 25.83 0 of 463 of 846 0 of 162
meter clock, validated leave-one-out cut sep ≥ 7.7, z ≥ 5.07 4 of 463 of 842 1 of 162
Each threshold in the first three rows is read off that configuration's own negative controls rather than chosen, which is why they differ. The tempo map needs sep ≥ 25.8 because a known wrong pairing reaches +25.7 there, against about +5 under a constant bpm. Raising both sides equally is not an improvement. The first three rows read their cut from the same sample they then judge, so the last row is the one that governs. Section 7 derives it.

6. The tempo maps

All 46 files were written with per-bar tempo derived from their own recordings, originals untouched, so the comparison reproduces. The grid comes from the audio alone and the notation is laid on it afterwards, because fitting a tempo curve to the tab it is about to score would repeat the circularity that let the DTW warp manufacture alignment.

human tab, known-goodmeter clock gaintempo map gain meter septempo sep
s6389335_A-Tree-For-Trials +16.7+75.2 +15.6+29.6
s6388955_-And-Nothing-Less -0.1+55.7 +1.3+32.4
s6389349_Mile-Marker +35.6+50.5 +34.7+26.3
s6206980_On-Reflection +2.0+38.9 +2.2+19.2
s6389274_Blind-Mans-Arrow +22.7+31.2 +20.9+9.7
s6285808_The-Immortal-Soul-Of-Mundo-Cani +1.9+13.5 +0.5-15.4
s6389251_Kilgore-Trout +0.2+11.7 +0.9-20.1
s6388915_Secret +0.1+5.8 +0.8-1.9
The tempo map lifts the known-good tabs a long way, and lifts the wrong stems just as far. Kilgore Trout reaches gain +11.7 against a wrong stem at +31.8, so its separation is -20.1. Gain alone stops meaning anything, and only the separation carries information.

7. The confirmation threshold, validated

Reading the cut off the observed maximum of the negative controls is post hoc calibration, and it guarantees zero false positives inside the same sample that set it. Brandon called that on 2026-08-29, so the cut was re-derived leave-one-song-out: for each song the threshold comes from the other 45 songs' negative controls alone, and the held-out song is judged by a number it never contributed to.

162negative pairings, 54 songs
+7.6max negative separation
7.7held-out cut, median
7 of 54confirmed, leave-one-out
1 of 162false positives
The earlier pass on this page used sep ≥ 5.0, a round number chosen rather than measured, and reported 8 of 46 machine tabs confirmed. That figure was too loose and it is retired here. The negative controls run median −2.6, p95 +0.3 and a maximum of +7.6. Held-out cuts span 5.1 to 7.7 with a median of 7.7, and leave-one-out confirms the same 7 songs of 54 that the in-sample cut of 7.7 confirms.

The validated standard for any promotion on this measure is separation ≥ 7.7 with z ≥ 5.0. Four machine tabs clear it: Mile Marker, Doors Lead to Questions, Steps and Numbers, and Decline. Four that the 5.0 cut had confirmed now fall below it: A Place in Line at +7.4, Sunset Drama King at +7.2, Blind Man's Arrow at +6.4, and The Last in a Line at +5.9. Three of the eight human tabs clear it, the same three as before.

8. All 46 rescored, meter clock

The configuration the evidence supports, judged at the validated cut of sep ≥ 7.7 with z ≥ 5.0. Undetermined carries no finding against the tab: 5 of the 8 known-good human transcriptions end up there too.

songsrcprewarpchancegainz best wrongsepreader driftverdictold audit
s6389349_Mile-Marker huma56.3%20.7% +35.6+77.8 +0.9+34.7 -1.3s CONFIRMED n/a
s6389274_Blind-Mans-Arrow huma41.0%18.2% +22.7+32.8 +1.8+20.9 0.0s CONFIRMED n/a
s6389335_A-Tree-For-Trials huma34.4%17.7% +16.7+12.9 +1.1+15.6 0.0s CONFIRMED n/a
Low-Level-Owl-I-10-Mile Marker mach31.9%19.7% +12.2+25.5 -0.3+12.5 8.2s CONFIRMED supported +5.8
Low-Level-Owl-I-06-Doors Lead to Questions mach26.4%17.4% +9.1+11.9 -1.0+10.1 18.8s CONFIRMED refuted -1.7
Low-Level-Owl-I-07-Steps and Numbers mach39.6%27.0% +12.6+27.6 +2.9+9.7 3.8s CONFIRMED supported +15.5
Low-Level-Owl-II-09-Decline mach33.6%23.1% +10.5+6.6 +1.8+8.7 2.3s CONFIRMED supported +14.6
Low-Level-Owl-II-03-A Place in Line mach28.0%21.5% +6.5+11.1 -0.9+7.4 2.7s undetermined refuted -10.7
Low-Level-Owl-II-07-Sunset Drama King mach27.7%20.1% +7.6+23.1 +0.4+7.2 8.0s undetermined refuted -1.9
Low-Level-Owl-I-03-Blind Mans Arrow mach24.7%17.2% +7.5+14.4 +1.1+6.4 5.2s undetermined refuted -22.9
Low-Level-Owl-II-08-The Last in a Line mach34.0%27.9% +6.1+9.6 +0.2+5.9 9.7s undetermined refuted -14.4
Illumination-Ritual-01-Adriatic to Black Sea mach21.3%17.1% +4.2+17.7 -0.2+4.4 16.8s undetermined refuted -30.7
Illumination-Ritual-04-Cathedral Rings mach16.8%13.3% +3.5+11.7 -0.6+4.1 19.1s undetermined refuted -18.8
Mare-Vitalis-08-Poseidon mach27.0%22.7% +4.3+9.6 +0.2+4.1 13.8s undetermined supported +5.3
Illumination-Ritual-09-Clearing Life mach19.4%15.2% +4.2+9.5 +0.3+3.9 21.7s undetermined refuted -12.4
Illumination-Ritual-03-Simple Forms mach27.2%22.2% +5.0+7.9 +1.2+3.8 9.3s undetermined supported +5.4
Illumination-Ritual-10-Illumination Ritual mach18.6%14.7% +3.9+12.6 +1.0+2.9 25.9s undetermined refuted -3.8
Illumination-Ritual-05-30 Degrees 3 Am mach20.5%17.3% +3.1+5.2 +0.3+2.8 17.8s undetermined refuted -16.5
Mare-Vitalis-05-Santa Maria mach26.7%23.0% +3.7+7.4 +1.1+2.6 9.5s undetermined refuted -23.3
Low-Level-Owl-I-08-Sentence mach23.7%21.1% +2.6+6.7 +0.2+2.4 13.7s undetermined refuted -0.6
Illumination-Ritual-06-Branches on the Arrow Peak Revelation mach36.5%34.3% +2.2+4.2 -0.1+2.3 7.5s undetermined supported +23.2
s6206980_On-Reflection huma30.7%28.7% +2.0+3.1 -0.2+2.2 0.0s undetermined n/a
Low-Level-Owl-II-02-Strings mach16.6%14.4% +2.2+5.7 +0.1+2.1 22.7s undetermined refuted -14.5
Illumination-Ritual-08-North Star Ordination mach19.7%17.4% +2.3+9.9 +0.4+1.9 20.9s undetermined refuted -15.9
Low-Level-Owl-II-01-View of a Burning City reprise mach40.2%34.9% +5.3+4.2 +3.7+1.6 4.2s undetermined supported +32.9
Mare-Vitalis-10-Storms mach20.9%18.9% +2.0+3.8 +0.5+1.5 15.6s undetermined refuted -24.6
Illumination-Ritual-02-Great Lake Derelict mach12.0%10.3% +1.7+6.2 +0.4+1.3 20.8s undetermined refuted -10.5
Low-Level-Owl-I-11-Convict mach8.5%7.2% +1.3+3.3 -0.0+1.3 92.7s undetermined refuted -20.1
Low-Level-Owl-I-14-View of a Burning City mach13.1%12.3% +0.8+4.3 -0.5+1.3 36.6s undetermined refuted -26.1
s6388955_-And-Nothing-Less huma21.8%21.9% -0.1-0.2 -1.4+1.3 0.0s undetermined n/a
Low-Level-Owl-II-05-Rooms and Gardens mach16.4%15.0% +1.4+5.3 +0.3+1.1 15.6s undetermined refuted -14.5
Mare-Vitalis-07-And Nothing Less mach22.3%21.3% +1.0+1.7 -0.1+1.1 6.8s undetermined refuted -29.3
Low-Level-Owl-I-02-On Reflection mach28.8%28.2% +0.6+1.4 -0.3+0.9 12.7s undetermined refuted -14.2
s6389251_Kilgore-Trout huma16.6%16.4% +0.2+0.3 -0.7+0.9 -0.9s undetermined n/a
s6388915_Secret huma10.8%10.7% +0.1+0.1 -0.7+0.8 -2.4s undetermined n/a
Low-Level-Owl-I-04-Flowers Falling From Dying Hands mach3.9%4.0% -0.1-0.3 -0.6+0.5 48.5s undetermined n/a
s6285808_The-Immortal-Soul-Of-Mundo-Cani huma14.3%12.4% +1.9+2.1 +1.4+0.5 0.0s undetermined n/a
Illumination-Ritual-07-Barrier Islands (Do We Remain) mach10.4%9.8% +0.6+3.2 +0.2+0.4 8.7s undetermined inconclusive one control survived +8.2
Low-Level-Owl-I-01-The Waking of Pertelotte mach10.6%9.5% +1.1+1.6 +0.8+0.3 16.5s undetermined refuted -0.7
Mare-Vitalis-02-Fishing the Sky mach13.0%12.4% +0.7+1.2 +0.5+0.2 15.9s undetermined refuted -15.9
Mare-Vitalis-04-Mare Mortis mach25.9%24.5% +1.4+4.5 +1.2+0.2 8.7s undetermined refuted -21.0
Mare-Vitalis-06-Secret mach11.3%10.5% +0.8+1.9 +0.7+0.1 12.8s undetermined refuted -1.8
Mare-Vitalis-01-The Immortal Soul of Mundo Cani mach11.5%10.8% +0.7+1.5 +0.7+0.0 18.4s undetermined inconclusive one control survived +1.9
Mare-Vitalis-03-Forever Longing the Golden Sunsets mach12.6%12.5% +0.1+0.3 +0.2-0.1 8.9s undetermined refuted -2.5
Mare-Vitalis-09-Kilgore Trout mach16.4%15.5% +0.9+1.6 +1.2-0.3 11.6s undetermined inconclusive margin inside spread +1.8
Low-Level-Owl-I-09-Bird of Paradise mach35.0%33.5% +1.5+1.2 +1.8-0.3 12.0s undetermined supported +5.1
Low-Level-Owl-II-11-Reaction mach14.8%15.0% -0.2-0.3 +0.4-0.6 2.9s undetermined supported +8.6
Low-Level-Owl-II-12-Confession mach14.2%14.5% -0.3-1.3 +0.3-0.6 47.8s undetermined refuted -36.6
Low-Level-Owl-I-13-Signal mach22.8%22.3% +0.4+1.0 +1.2-0.8 5.1s undetermined supported +9.7
Low-Level-Owl-II-04-Shaking Hands mach9.0%8.6% +0.4+0.4 +1.3-0.9 19.3s undetermined inconclusive margin inside spread +1.3
Low-Level-Owl-II-10-The Argument mach37.9%38.6% -0.7-1.9 +0.5-1.2 4.0s undetermined supported +11.6
Low-Level-Owl-I-12-A Tree for Trials mach18.2%15.9% +2.3+2.0 +3.8-1.5 7.7s undetermined refuted -13.6
Low-Level-Owl-II-06-Ring Out the Warning Bell mach13.2%11.3% +1.9+3.8 +6.9-5.0 55.0s undetermined refuted -28.8
Low-Level-Owl-I-05-Messenger mach52.9%52.4% +0.5+0.2 +9.4-8.9 7.1s undetermined inconclusive margin inside spread +10.0

9. Confession, rebuilt and not promoted

Confession was re-derived end to end from 03_GUITAR_STEMS/Low Level Owl Vol II/12 - Confession.guitar.wav with basic_pitch on the ONNX model and the fretboard solved with the skill's own beam. Nothing was carried over except the container. The first build quantised to a 16th grid at 174 bpm and that grid was the whole defect: it pushed 31.0% of attacks outside the 30 ms scoring window. Requantised to a 32nd grid, 0.0% fall outside it.

4122events detected
3922notes written
199dropped above range
16 → 0hard failures
EXACTround trip, 0 changed pitches
+5.2separation, below the 7.7 cut
measureinherited tab32nd-grid rebuildreading
hard failures160 all seven impossible spans resolved across two guitar staves
round tripn/a3922 of 3922 0 changed pitches, 3059 onset ticks kept
audio gain-0.4+4.5 z +15.3 on the rebuild
separation+0.5+5.2 UNDETERMINED, the validated cut is +7.7
Provenance. sha256 52df966249b0541a, validator run_id e184ad420e21b1d1, gate 9b21d05326633dde. Verdict REVIEW, which is the hand-skip diagnostic only, with preservation PASS and position PASS. Actual filename on disk is Confession-32nd-FINAL.gp.
Do not promote it. Audio accuracy comes before playability, and at the validated cut Confession is undetermined. Its playability result is real and it is separate: hard failures 16 to 0 with an exact round trip and zero changed pitches. That is a repair worth keeping on disk and worth nothing as an accuracy claim. The +5.2 also measures detector agreement rather than pitch accuracy, because basic_pitch produced these notes from the same recording the score then reads.

One more thing the build surfaced. A first pass clamped a fret to force a wide chord to fit, silently turning pitch 83 into 60 on 7 chords; the fallback now preserves every pitch and lets the beat fail honestly. Those 7 chords span up to 43 semitones, which is the two-guitarists-on-one-staff case this catalogue is full of.
Open decision. Whether to keep re-deriving at 32nd resolution across the catalogue. The grid change is real and measured, and it did not clear +7.7 on this song. Adriatic to Black Sea is the natural second test at gain +4.2, z +17.7, separation +4.4.

Mare Vitalis track 7 is written here as And Nothing Less. The released title begins with an ellipsis and the filename on disk is unchanged.
Tools and raw records in ~/Projects/_outputs/appleseed-regen-2026-08-28/: validate_alignment_measure.py, duration_matched_test.py, banded_dtw_test.py, chance_normalized_test.py, prewarp_full46.py, reader_clock_drift.py, meter_clock.py, prewarp_meter46.py, beat_census.py, tempo_map.py, tempo_audit_full.py, write_tempo_maps.py, and confession_rederive/. Tempo-mapped files in tempo_mapped_gp/, originals untouched. Every fast path was checked against a brute-force reference before its numbers were used. Playability is unaffected by any of this: it was measured against the files rather than against audio, and the 1248 to 212 hard-failure reduction with 15 of 46 hard clean stands.