An evidence review of the mic-master rebuild ordered against the September 1 stem set. Every verdict below rests on a measurement taken from the files themselves.
The scorecard further down grades the September state, which was the honest answer when it was written and is now stale. This section answers the original question against what exists today. Every row was measured in this pass.
Eight of ten clauses delivered, one delivered with a stated caveat, one never honoured on a premise that turned out to be void.
The work asked for exists. The reasoning that ordered it did not survive measurement.
| # | Clause | Measured against v2 | Verdict |
|---|---|---|---|
| 1 | Rebuild every song whose stems were built Sept 1 | song11 and song13 both carry full v2 lanes. v2 covers 13 songs, including song12 and song16 that v1 never had. | Delivered |
| 2 | Skip Sept 2 and 3 rebuilds unless the drumkit traces to Sept 1 | All 13 were rebuilt regardless. The exemption was never coded. The lossy premise it protected against was refuted at −400 dB, so the clause guarded nothing. | Not honoured |
| 3 | Decide on build dates and actual source provenance | v2 lanes are verbatim mic channels with provenance stated per lane. Provenance is measured now rather than inferred from a folder name. | Delivered |
| 4 | Both guitar lanes from the mic master, split preserved, two-voice run | 6 songs carry two real guitar mics and need no split. The two-voice process ran on the 7 single-mic songs, producing 28 files, with a manifest caveat that those songs had one guitarist so the A/B split correlates 0.70 to 0.915 with 40 to 56 % leftover. | Delivered, caveated |
| 5 | Bass rebuilt as its own retained lane | 6 songs carry a verbatim bass_mic4. 7 carry none because mic4 was dead, cross-validated against Demucs bass energy with a clean gap between 2.90 % and 3.45 %. |
Delivered where bass exists |
| 6 | Drums from the mic master with no lossy inheritance | 78 drum lanes, every one from mic1 through the presence-lifted derived source. No lossy stage anywhere in the path. | Delivered |
| 7 | Six-piece drumkit preserved per song | 13 songs × 6 pieces = 78, joints measured at 0.00000000 on every lane. | Delivered |
| 8 | Lossless WAV matching source duration and sample count | Every lane duration-exact against its own song source, verified per song across all 13. | Delivered |
| 9 | Verify complete decode before marking a song finished | Full decode of all 160 v2 files run in this pass: 160 pass, 0 fail. | Verified |
| 10 | Delete nothing, write to new versioned locations | The v1 tree stands untouched at 101 lanes. v2 lives in its own tree. 128 MB of superseded repair copies retired to delete/ rather than removed. |
Delivered |
Clause 5 asked for bass on every song. Six songs have it and seven do not, and that is the correct outcome
rather than a shortfall. Mic4 liveness and Demucs bass energy, two methods sharing no code, agree on every song.
The same six-and-seven split appears in the second-player lane: a song carries either bass_mic4 or
gtr2_mic2, and no song carries both. The band had one second player who moved between bass and a
second guitar.
Every defect this audit raised is fixed and independently re-measured.
160 manifest keys, 0 unresolvable, 160 files on disk, 0 orphans. A perfect bijection in both directions. The repair copies reach zero clipped honestly at a uniform −3.54 dB.
| Defect this audit found | Fix | Verified |
|---|---|---|
| Lane count asserted as 43 | Read from disk, 38 verbatim | Closed |
| Manifest stale, no repair copies, no drum lanes | Regenerated, all 160 catalogued | Closed |
| Repair copies silently 6 to 15 dB quiet | Interpolation clamped, gain recorded | Closed |
| 28 manifest paths did not resolve | relpath keys plus an abort-on-fail gate | Closed |
| Clipped counts measuring the cap, not clipping | Normalise to 0.998, under the threshold | Closed |
| File | Clipped at 0.999 | Peak | Gain | Frames |
|---|---|---|---|---|
song16/bass_mic4_DECLIP | 0 | 0.998000 | −3.54 dB | 17,970,750 |
song15/bass_mic4_DECLIP | 0 | 0.998000 | −3.54 dB | 21,322,350 |
song11/kick_mic1_DECLIP | 0 | 0.998000 | −3.54 dB | 23,571,450 |
Zero is real this time. The peak sits at exactly 0.998000, deliberately under the 0.999 test, and the cost is
a uniform −3.54 dB rather than the 6 to 15 dB the first build charged. The broken copies are retired to
delete/declip-broken-globalgain/ rather than removed.
| Class | Count | Note |
|---|---|---|
| Verbatim mic lanes | 38 | raw channels, no EQ, no separation, no downmix |
| Drumkit lanes | 78 | 13 songs × 6 pieces, joints 0.00000000 |
| Guitar-split files | 28 | 7 songs × 4, with a stated correlation caveat |
| Kit sources | 13 | derived separation inputs, marked not deliverable |
| Repair copies | 3 | reconstructions, gain recorded |
| Total | 160 | every one catalogued and resolving |
The 14 was a broken counter, and it is now closed. The session traced it to a
census that matched the substring guitar_. That caught guitar_A_lead and
guitar_B_second and silently missed _minusA and leftover, so it printed
14 and the summary quoted its own broken counter twice. The manifest was correct throughout.
The census is now a real partition derived from disk, written into
MANIFEST.json at line 1481 so summaries quote it rather than retype it, guarded by two asserts:
the classes must sum to the file total, and UNCLASSIFIED must be zero.
Built from a separate disk walk in this audit, without reading the session's census, then compared:
| Class | This audit | Session census | Agreement |
|---|---|---|---|
| drumkit | 78 | 78 | Match |
| guitar-split | 28 | 28 | Match |
| verbatim mic | 38 | 38 | Match |
| kitsource | 13 | 13 | Match |
| repair | 3 | 3 | Match |
| Total | 160 | 160 | Closes |
| unclassified | 0 | 0 | Empty |
A check that agrees is not a check that closes.
Two verification shapes here looked rigorous and were blind by construction.
Count reconciliation cannot see a wrong path, since 160 keys against 160 files reconciled perfectly while
28 of them pointed at nothing. Substring classification cannot see a file it does not name, since
matching guitar_ missed _minusA and leftover and printed 14 for 28.
Both now fail loudly: the manifest write aborts unless every key resolves, and the census asserts that its classes sum to the file total with an empty UNCLASSIFIED bucket. The arithmetic tell was there the whole time, since 38 + 78 + 14 + 13 + 3 gives 146 against a stated 160. Adding up a breakdown before quoting it catches this entire family.
The audited session rebuilt the repair copies at 14:06 and regenerated the manifest at 2026-09-04 14:08:07, after the findings in the next section were sent. Three of the four are now closed by that fix. One new defect surfaced, and one figure in the manifest is an artifact of its own threshold.
| Earlier finding | Status now | Evidence |
|---|---|---|
| Manifest missing repair copies and drum lanes | Closed | 160 entries against 160 files, exact |
| Repair copies 6 to 15 dB quiet | Closed | now 0.666000 = −3.53 dB on all three |
| Threshold and gain undocumented | Closed | lines 2, 3 and 145 of MANIFEST.json |
| Lane count stated as 43 | Superseded | 38 verbatim, 160 total including all classes |
The rebuilt repair gain measures 0.666000 on unclipped samples, matching the manifest's
applied_gain_db: -3.53 to the decimal, with residuals of −124 to −134 dB confirming a
clean pure rescale outside the repaired runs. The earlier −14.83 dB measurement applied to the 13:39
build and no longer describes what is on disk.
The guitar-split keys are missing their subdirectory, and the file is inconsistent with itself:
"drumkit/crash" correct, resolves to songNN/drumkit/crash.wav"guitar_A_lead" wrong, file lives at songNN/guitars/guitar_A_lead.wav"_minusA" line 505 "leftover"Drumkit entries are prefixed and guitar entries are not. All 28 guitar entries across 7 songs resolve to a path that does not exist. The counts reconcile perfectly at 160, so a count check never catches this. Only path resolution does.
The manifest reports 2,972 clipped samples on the song11 repair and 30,200 on song16, and both reproduce exactly, so the reporting is honest. The samples are not clipping.
| Repair copy | Samples ≥ 0.999 | Their min and max | Above 0.9999 |
|---|---|---|---|
song11/kick_mic1_DECLIP | 2,972 | 0.999000072 / 0.999000072 | 0 |
song16/bass_mic4_DECLIP | 30,200 | 0.999000072 / 0.999000072 | 0 |
1.5 × 0.666 = 0.999000. The interpolation cap multiplied by the normalisation gain lands exactly on the detection threshold, so every capped sample counts as clipped. Nothing sits at true full scale. Scaling to 0.6655 puts the cap at 0.99825 and those counts go to zero with no audible change. A reader comparing song16 verbatim at 769,169 against its repair at 30,200 would reasonably conclude the repair still clips badly. It does not clip at all.
Credit where it is due. The manifest now carries a two_voice_caveat at
line 6 stating that on the seven single-guitar-mic songs the A/B split correlates 0.70 to 0.915 with 40 to
56 % leftover, because those songs had one guitarist and nothing to separate. Self-disclosing a limitation a
user would otherwise hit blind is the right call, and this audit would have flagged it had the session not
written it first.
The audited session declared v2 ready to ship. Each claim was checked against disk. Three hold. Two do not, and one of those is a usability trap inside the repair copies.
| Claim | Measured | Verdict |
|---|---|---|
| Duration-exact against source | 13 of 13 songs, every lane matches its own source frame count | Holds |
| Joints 0.00000000 | 78 of 78 drum lanes, real block counts 3 to 13 | Holds |
| Full-decode clean | 3 of 3 repair copies decode with no error | Holds |
| 78 drum lanes | 78 | Holds |
| 43 mic lanes | 38 verbatim, 41 counting repair copies | Wrong count |
| Manifest covers all lanes | 38 covered, 3 repair copies absent, 78 drum lanes absent | Incomplete |
MANIFEST.json is dated Sep 3 13:39, before the repair copies were built, and the string
DECLIP does not appear anywhere in it. So song16 does not currently ship with its
damage stated beside its alternative, and the reconstruction carries no manifest record saying it is a
reconstruction. That is the precise thing the _DECLIP-ESTIMATE naming convention exists to prevent.
The repair was described as scaling repaired peaks to 0.999 so nothing re-clips. Measuring the gain on unclipped samples only, then removing it and inspecting the residual:
| Repair copy | Gain applied | In dB | Residual after removing gain |
|---|---|---|---|
song11/kick_mic1_DECLIP-ESTIMATE | 0.181343 | −14.83 dB | −115.0 dB |
song16/bass_mic4_DECLIP-ESTIMATE | 0.318629 | −9.93 dB | −126.6 dB |
song15/bass_mic4_DECLIP-ESTIMATE | 0.486514 | −6.26 dB | −121.4 dB |
Residuals at −115 to −127 dB mean that outside the clipped runs these files are a pure rescale of the original. Every sample is attenuated and 99.99 % of samples differ. The cause is the interpolation overshooting: cubic across a long flat-topped run extrapolates above full scale, and normalising the whole file afterwards pulls everything down by that overshoot. The song11 gain of 0.181 implies an interpolated peak near 5.5× full scale.
Why it matters. Anyone substituting kick_mic1_DECLIP-ESTIMATE.wav for
kick_mic1.wav gets a lane 14.8 dB quieter with nothing on disk explaining why. Either clamp
the interpolated peak before normalising, or record the applied gain in the manifest so it can be undone.
This audit and the audited session reported different clipped counts. The session attributed it to window versus full file. Both read whole files. It is the detection threshold.
| Lane | at 0.999969 | at 0.9999 | at 0.999 |
|---|---|---|---|
song16/bass_mic4 | 730,591 | 733,397 | 769,169 |
song15/bass_mic4 | 234,157 | 235,499 | 253,289 |
song11/kick_mic1 | 132,808 | 133,450 | 141,188 |
The 0.999 column reproduces the session's figures exactly on all three lanes. It counts at 0.999, this audit counted at 0.999969. The more inclusive threshold is the better choice, and it belongs in the manifest so the number is reproducible.
The v2 kits are not cymbal-starved. That verdict came from a confounded metric and it is withdrawn.
Measured in absolute level, v2 cymbals are louder than v1 on 11 of 11 songs, median +4.91 dB. The earlier finding scored cymbal share, a ratio whose denominator the two pipelines do not share.
The two filters are not the same filter, and this audit reported a ratio before comparing them.
run_song_8-28.sh highpass 45, 90 Hz −9 dB, 200 Hz −5 dB, 2500 +5, 6000 +7make_kit_source.sh 2500 +5, 6000 +7The v1 filter cuts the low end by up to 9 dB before separating. That suppresses kick and toms, shrinks the denominator of the share calculation, and inflates cymbal share without adding a single decibel of cymbal. The v2 lift kept only the presence half, which is correct, so its denominator stayed large and its share read small.
| Song | v1 cymbals | v2 cymbals | Change |
|---|---|---|---|
| song11 | −39.43 | −31.82 | +7.61 dB |
| song18 | −40.58 | −33.09 | +7.50 dB |
| song10 | −39.07 | −32.85 | +6.22 dB |
| song13 | −39.40 | −33.47 | +5.93 dB |
| song17 | −46.18 | −40.61 | +5.57 dB |
| song20 | −45.27 | −40.35 | +4.91 dB |
| song21 | −46.45 | −42.11 | +4.34 dB |
| song14 | −50.98 | −47.20 | +3.78 dB |
| song22 | −44.14 | −40.72 | +3.42 dB |
| song15 | −41.74 | −38.58 | +3.16 dB |
| song19 | −44.80 | −44.14 | +0.66 dB |
The v2 kits are louder throughout, and the kick gained more than the cymbals did. The balance sits about 3.36 dB more kick-forward than v1 in median cymbal-to-kick ratio. That is a mix balance rather than missing information, and it is arguably the more faithful of the two, since v1 was cutting real low end out of the source. Recovering the v1 balance is a gain move on finished lanes, not a re-separation.
| Architecture | Cymbal share | r(ride, guitar) | Reading |
|---|---|---|---|
| v2 tilt only, no Demucs | 0.80 % | −0.122 | Best clean |
| v3 mic1+mic3, no Demucs | 20.86 % | +0.613 | Guitar, not cymbals |
| v4 mic1+mic3 + Demucs | 0.21 % | +0.041 | Clean, worse |
| v5 tilt + Demucs | 0.26 % | −0.008 | Cleanest, still worse |
Adding a Demucs stage drops cymbal share from 0.80 % to 0.26 %. This audit's earlier claim that the Demucs stage was load-bearing for cymbals is withdrawn. The v2 architecture, mic1 plus presence lift straight into DrumSep, is the best of the five tested.
What survives from the cymbal work. One item, and it is the clipping census in the next section. The share metric was the wrong instrument, and the two filter strings should have been compared before any ratio was reported.
All thirteen v2 kits finished overnight from the presence-lift source. This section measures the result rather than assuming the fix landed. Full files, whole song, cymbal share of total kit energy.
The lift helped and it did not finish the job.
Median cymbal share is 0.44× of v1. One song of eleven reaches v1 level and five remain below 0.4×. The raw-mic1 kits sat near 0.1× before the fix, so this moved from about 0.1× to 0.44×. Real improvement, still less than half of what v1 carried.
| Song | v1 cymbal share | v2 cymbal share | v2 / v1 | Reading |
|---|---|---|---|---|
| song11 | 2.48 % | 2.57 % | 1.04× | Restored |
| song18 | 5.09 % | 4.38 % | 0.86× | Partly |
| song10 | 3.46 % | 2.33 % | 0.67× | Partly |
| song13 | 5.41 % | 3.21 % | 0.59× | Partly |
| song17 | 1.46 % | 0.70 % | 0.48× | Partly |
| song20 | 1.42 % | 0.63 % | 0.44× | Partly |
| song21 | 1.99 % | 0.68 % | 0.34× | Still thin |
| song15 | 1.88 % | 0.60 % | 0.32× | Still thin |
| song22 | 2.77 % | 0.82 % | 0.29× | Still thin |
| song14 | 2.14 % | 0.55 % | 0.26× | Still thin |
| song19 | 8.47 % | 0.67 % | 0.08× | Still thin |
The reason is the one thing an equaliser cannot solve. mic1 holds a fraction of a percent of its energy in the 2 to 6 kHz band. A boost amplifies what the microphone captured, and it cannot add detail the microphone never heard. The boost lifts the noise floor and the bleed alongside the cymbals.
A correction to how this audit framed it. The earlier section called the presence lift the fix. It is a partial fix, and the measurement above is the correction.
This audit originally offered a second option, a mic1 plus mic3 sum, on the reasoning that mic3 carries far more presence energy. That option was built and run on song22, RMS-matched, DrumSep on the first 60 seconds. It is wrong and the recommendation is withdrawn.
| Kit lane | r against guitar mic | r against kick mic | Reading |
|---|---|---|---|
| mic1+mic3 ride | 0.613 | −0.000 | Guitar, not a cymbal |
| mic1+mic3 hh | 0.353 | 0.013 | Guitar-dominated |
| mic1+mic3 crash | 0.271 | −0.001 | Guitar-dominated |
| presence-lift hh | −0.031 | 0.127 | Drum-led |
| presence-lift ride | −0.122 | 0.097 | Mixed |
| presence-lift crash | 0.013 | 0.022 | Drum-led |
The sum produced a 20.86 % cymbal share against v1's 2.12 %, a 9.8× jump that reads as a win until the lanes are attributed. The ride lane correlates 0.613 with the guitar microphone and flat zero with the kick. DrumSep is handed broadband guitar in the band it uses to find cymbals, so it files guitar under cymbals. The presence-lift lanes are drum-led. The lift wins on measurement.
Evidence this audit will not lean on. The same test run against the v1 kit returned r = 0.000 on all three lanes, which looks clean and is not usable. v1 song22 runs 274.088 s against the v2 cut at 275.500 s, and a 1.4 s offset collapses that correlation to zero whatever the content. Only the v2 against v3 rows above share a timebase, and those are the ones carrying the verdict.
What the result actually points at. The v1 path ran Demucs first to isolate a drum stem, then split that stem. That Demucs stage was load-bearing. It removed the guitar before the kit split ever saw it. The v2 design dropped it under a no-separation-upstream principle, and that is the real reason the cymbals are thin. mic1 alone does not carry them, and the obvious way to add them carries guitar too.
The choice is between reinstating a drum-isolation stage before the kit split, which costs the purity claim and recovers the cymbals, or keeping v2 and documenting plainly that these kits are accurate on kick and toms and poor on cymbals at a median 0.44× of v1. Both are defensible. Shipping a six-piece kit without saying which was chosen is not.
Risk 2 was raised twice and never actioned. extract_mic_lanes.sh gates on microphone liveness
alone and carries no clipping check, while the v1 picker had an excluded_clipped field and dropped
mic4 on song15 for exactly this. Every v2 deliverable lane was measured.
The bass lane is the worst-clipped material in the set.
Bass is the instrument the original instruction set most wanted retained. It clips on
6 of 6 songs where its microphone is live, 1,019,936 clipped samples in total, and
song16/bass_mic4.wav alone is 4.07 % clipped.
| Instrument | Songs | Songs clipping | Total clipped samples | Worst single lane |
|---|---|---|---|---|
| bass_mic4 | 6 | 6 of 6 | 1,019,936 | 730,591 |
| kick_mic1 | 13 | 13 of 13 | 431,418 | 132,808 |
| gtr1_mic3 | 13 | 7 of 13 | 71,289 | 64,170 |
| gtr2_mic2 | 6 | 5 of 6 | 24,283 | 12,132 |
| Lane | Clipped samples | Share of file |
|---|---|---|
song16/bass_mic4.wav | 730,591 | 4.0654 % |
song15/bass_mic4.wav | 234,157 | 1.0982 % |
song11/kick_mic1.wav | 132,808 | 0.5634 % |
song16/kick_mic1.wav | 70,940 | 0.3948 % |
song10/kick_mic1.wav | 21,265 | 0.3873 % |
song15/kick_mic1.wav | 79,077 | 0.3709 % |
Verbatim extraction is the right principle and it carries the clipping through untouched. That is honest and
it is not free. These counts belong in the extraction log so anyone consuming a lane knows what it holds, and
song16/bass_mic4.wav at four percent needs a decision before it ships as a bass deliverable.
The audited session restarted at 13:21 on a new design, writing to v2-mic-lanes/. It pulls each
instrument's own close mic straight out of the four-channel master with no separation, no EQ and no downmix,
then splits the kick mic into a six-piece kit. Thirteen songs have mic lanes extracted. Four DrumSep workers
are running on songs 17, 19, 21 and 22.
This design answers the two failures in the first attempt. Lanes are verbatim mic channels rather than a tilted blend, so no fidelity claim is needed. A lane is written only when its mic is live on that song, so a dead mic never ships as an empty instrument. Every lane is duration-checked against the source and decode-checked at write time, and it writes to a new tree without touching anything existing.
The session flagged that songs 12, 20 and 22 had been assigned to two workers each, which would collide
writing the same blocks, and restarted with disjoint lists. Confirmed at the process table: four unique PIDs,
four distinct songs, lists A:17,13,10 B:19,11,18 C:21,15,16
D:22,20,12 with no overlap.
Every figure in the script's comment block reproduces on live-song data.
| Mic | Role | Live | Sub 0–120 Hz | Presence 2–6 kHz | Crest | Check |
|---|---|---|---|---|---|---|
| mic1 | kick | 27 / 27 | 61.6 % claim, 61.6 % real | 0.77 % / 0.77 % | 16.4 / 16.4 | Exact |
| mic2 | guitar 2 | 9 / 27 | 22.8 % | 3.53 % / 3.53 % | 16.6 | Exact |
| mic3 | guitar 1 | 25 / 27 | 20.9 % | 11.22 % / 11.22 % | 19.0 | Exact |
| mic4 | bass cab | 13 / 27 | 40.7 % claim, 40.7 % real | 3.67 % | 14.0 / 14.0 | Exact |
Mic4 liveness comes from the mic measurements. Bass-lane energy comes from Demucs in the earlier pipeline. The two share no code and no input, and they agree on every song.
| Song | mic4 live | Demucs bass energy | Agreement |
|---|---|---|---|
| song14 | true | 14.00 % | Bass |
| song17 | true | 11.42 % | Bass |
| song18 | true | 9.24 % | Bass |
| song15 | true | 3.45 % | Bass |
| song11 | false | 2.90 % | No bass |
| song21 | false | 2.57 % | No bass |
| song22 | false | 2.46 % | No bass |
| song20 | false | 2.27 % | No bass |
| song13 | false | 1.04 % | No bass |
| song10 | false | 0.00 % | No bass |
Live mic4 songs run 3.45 % to 14.00 %. Dead mic4 songs run 0.00 % to 2.90 %. The gap between 2.90 and 3.45 is clean, so the split is unambiguous. Brandon's call that some songs carry no bass is confirmed by both methods, and the one to three percent on the dead-mic songs is bleed from kick and toms.
Risk 1 is now measured and confirmed. The v2 kits are cymbal-starved.
The first blocks landed at 13:52, so this was tested rather than left as a prediction.
Method: load _blocks/b000000000000.npy per song, lane order kick, snare, toms, hh, ride,
crash, and compare against the same first 60 seconds of the v1 kit. Cymbal share of kit energy is
used because it is level-independent and immune to the 1.45 s cut offset.
| Song | v1 cymbal share | v2 cymbal share | Factor | Verdict |
|---|---|---|---|---|
| song17 | 0.60 % | 0.13 % | 4.6× thinner | Confirmed |
| song19 | 8.30 % | 0.32 % | withdrawn | Near-silent window |
| song21 | 3.81 % | 0.17 % | 22× thinner | Confirmed |
| song22 | 2.12 % | 0.20 % | 11× thinner | Confirmed |
The absolute levels mostly rose in v2, since raw mic1 runs far hotter than the Demucs drum stem. song17 kick gained 10.13 dB and toms gained 23.49 dB. The cymbals failed to keep pace and several fell outright: song17 crash −3.62 dB, song21 crash −5.40 dB and hh −3.83 dB, song22 crash −9.13 dB and hh −3.25 dB. Kick and toms gain while crash and hats lose, which is what a kick-mic source predicts.
Correction, withdrawn on 13:57 evidence. This audit briefly flagged the v1
song19 drumkit as broken on the strength of its first 60 seconds. That was wrong and the flag is
withdrawn. On the full file it is healthy: kick peak −6.49 dBFS, snare −7.53, crash −12.94,
all 571.0 s, against song17 kick at −6.39. Summing the six lanes against band/drums.wav over
a 20 s window at 200 s gives source −57.05 dBFS and sum −57.14 dBFS, a deficit of 0.09 dB. The
separation is intact. The opening of song19 is simply near-silent.
The same error costs the song19 cymbal figure, which is why it reads withdrawn above. Its v1 denominator sat close to noise. The verdict rests on song17, song21 and song22, all measured on windows where the v1 kick ran between −28.24 and −30.19 dBFS. The honest range is 4.6× to 22× on three songs.
The mechanism behind Risk 1. Every v2 drumkit is split from kick_mic1.wav,
and mic1 carries almost no cymbal energy. Measured presence for the four songs tested:
| Song | mic1 presence | mic3 presence | mic3 advantage |
|---|---|---|---|
| song17 | 0.19 % | 2.32 % | 12.2× |
| song19 | 0.14 % | 0.84 % | 6.0× |
| song21 | 0.20 % | 20.85 % | 104.2× |
| song22 | 0.14 % | 15.20 % | 108.6× |
The old pipeline lifted this band before separating, at +5 dB on 2.5 kHz and +7 dB on 6 kHz. The v2 path uses raw mic1 with no tilt. Prediction to check when song17 lands: the hh, ride and crash lanes come out thinner than their v1 counterparts.
Risk 2, clipping on the source. mic1 clips on 25 of 27 songs, mean 23,324
samples, peak pinned at 0.00 dBFS. mic4 is worse at a mean of 30,021 across 9 of its 13 live songs. mic3 is
the clean one at 135. The v1 picker carried an excluded_clipped field and dropped mic4 on song15
for it. extract_mic_lanes.sh gates on liveness alone and has no clipping check. Worst cases are
song4 at 169,971 samples and song26 at 126,368.
The audited session confirmed the finding against its own measurement and named its bug. It had compared
the LOSSLESS cut to the four-channel master through ffmpeg -ac 1, which averages all four mics
into one. Mic2 and mic3 roll off at 7.5 kHz and 9.7 kHz from placement, so the average looked steeper than
mic1 alone and read as an encoder shelf. STATE-8-28.md warns against exactly that, saying any
check of a dual-mono source must read the raw channel.
| Claim from the audited session | Check | Result |
|---|---|---|
| song13mic bass retained, 168 MB | cmp against the Demucs source | Byte-identical, decodes clean |
| song21 restored to 8 lanes | file listing | 8 lanes present |
| All 12 folders intact | per-folder lane count | Intact |
| Nothing lost | delete/lossy-phone-tape/ empty | Confirmed |
| The rebuild queue is stopped | process table at 13:00 | Queue stopped, song13mic still ran to 13:03 |
Correction to this audit. An earlier draft of section 10 argued that the pre-separation tilt filter emptied the bass lane. Brandon pushed back that some songs may have no bass at all, and that low-frequency content could be tom and kick. He is right and the claim was wrong.
The same tilt runs on every song. Bass lane energy across those songs ranges from 0.00 % on song10 to 14.00 % on song14. A filter defect would flatten every song equally. The spread is real musical variation in whether bass was played.
The six-piece drumkit answers this directly, since it was separated from the drum lane of the same song.
| Stem | Peak dBFS | RMS dBFS | Energy below 250 Hz |
|---|---|---|---|
song13/drumkit/kick | −7.75 | −27.36 | 81.6 % |
song13/drumkit/toms | −16.44 | −50.48 | 52.6 % |
song13/drumkit/snare | −1.87 | −37.94 | 10.3 % |
song13mic/band/bass.wav | −32.87 | −81.94 | 4.6 % |
The kick sits 54 dB above the rescued bass lane and carries 81.6 percent of its energy under 250 Hz. The low end on song 13 belongs to kick and toms. The rescued bass lane is near-silent because song 13 has little or no bass guitar on it, which matches the 1.04 percent the September pipeline measured for the same song.
From measurements.json, produced by the existing pipeline before any of this.
| Song | Bass lane energy | Bass peak | Reading |
|---|---|---|---|
| song14 | 14.00 % | −21.9 dB | Bass present |
| song17 | 11.42 % | −13.3 dB | Bass present |
| song18 | 9.24 % | −12.2 dB | Bass present |
| song15 | 3.45 % | −17.7 dB | Marginal |
| song11 | 2.90 % | −17.3 dB | Marginal |
| song21 | 2.57 % | −13.9 dB | Marginal |
| song22 | 2.46 % | −24.8 dB | Marginal |
| song20 | 2.27 % | −27.4 dB | Marginal |
| song13 | 1.04 % | −23.2 dB | Little or none |
| song10 | 0.00 % | −26.0 dB | None |
| song19 | not measured | – | Unknown |
Retaining bass is still worth doing. The expectation should be three songs with a usable bass lane, six marginal, and at least one with nothing to find. A near-silent bass lane on those songs is the correct result rather than a fault to chase.
The rebuild was ordered to escape a lossy source that does not exist.
songs-8-28-LOSSLESS/ is a bit-exact copy of mic1 from the four-mic master.
It nulls to −400 dB at r = +1.000000. The September 1 stems were built from genuinely
lossless 24-bit audio. No 24 kbps material appears anywhere in that path.
The instruction set was reasonable on its face. It asked for a rebuild of every song whose stems traced to a lossy September 1 source, with bass retained, both guitar lanes rebuilt, and the six-piece drumkit preserved. The audit finds that the triggering condition was never true. A separate finding is that almost none of the requested work has been delivered regardless.
| Headline finding | Measured value | Status |
|---|---|---|
| September 1 source is lossy | refuted at −400 dB | False premise |
| Songs with a retained bass lane | 0 of 12 | Not delivered |
| Songs with a two-guitar split | 1 of 12 | Not delivered |
| Songs rebuilt from the mic master | 1 of 12, incomplete | Not delivered |
| Six-piece drumkit present | 10 of 12 | Preserved |
| All lanes decode completely | 95 of 95 pass | Verified |
| Originals deleted or overwritten | none | Honoured |
Two artifacts in the working tree assert that the old pipeline read lossy audio. The header comment of
rebuild_from_mics.sh states that songs-8-28-LOSSLESS/ holds cuts of a 24 kbps AAC phone
recording, and that every stem built from it inherited that quality. The audited session repeated the claim and
acted on it.
The name of the folder describes its container. The question that matters is what the samples inside it contain. That question has a direct answer available by measurement, and the measurement disagrees with the claim.
The origin of the error is traceable to one sentence. The header of
cut_8-28-26.sh reads: “Timecodes were derived from the 24 kbps Messages transcode, which
has the identical 18745.516 s duration, so they land on the lossless WAV unchanged.”
The timecodes came from the lossy transcode. The audio came from a full-quality master. Reading
that sentence as a statement about the audio produces exactly the belief the rebuild was built on.
A null test subtracts one signal from another after gain and lag alignment. A residual near −400 dB means the two files carry identical samples. The comparison was run at the same musical moment in every source.
| Comparison | Correlation r | Gain | Null residual | Reading |
|---|---|---|---|---|
| LOSSLESS song13 ch0 → four-mic mic1 | +1.000000 | 1.0000 | −400.00 dB | Identical |
| LOSSLESS song11 ch0 → four-mic mic1 | +1.000000 | 1.0000 | −400.00 dB | Identical |
| LOSSLESS song17 ch0 → four-mic mic1 | +1.000000 | 1.0000 | −400.00 dB | Identical |
| LOSSLESS song21 ch0 → four-mic mic1 | +1.000000 | 1.0000 | −400.00 dB | Identical |
LOSSLESS song13 ch0 → masters-8-28/mic1_4-40PM.wav | +1.000000 | 1.0000 | −400.00 dB | Identical |
| LOSSLESS song13 ch0 → four-mic mic2 | −0.347520 | −0.4661 | −0.56 dB | Unrelated |
| LOSSLESS song13 ch0 → four-mic mic3 | −0.226244 | −0.1397 | −0.23 dB | Unrelated |
| LOSSLESS song13 ch0 → four-mic mic4 | −0.292600 | −0.0168 | −0.39 dB | Unrelated |
The pattern is clean. Channel 0 of every LOSSLESS cut is mic1 and nothing else. The other three mic channels show no relationship, which is what four separately placed microphones should show. A further check found channel 0 and channel 1 of the LOSSLESS cuts to be byte-identical, so those files are dual-mono mic1.
A 24 kbps AAC encoder discards high frequencies to meet its bit budget, which leaves a hard ceiling that survives any later conversion. Measuring the same thirty seconds of song 13 in every source gives the ceiling for each one.
| Source | Rolloff at −70 dB | Energy above 16 kHz | Reading |
|---|---|---|---|
8.28.26.m4a phone tape, 24,385 bps | 13,447 Hz | 0.0235 % | Lossy ceiling |
songs-8-28-LOSSLESS/13 ch0 | 22,050 Hz | 2.3057 % | Full band |
songs-8-28-4ch/13 mic1 | 22,050 Hz | 2.3094 % | Full band |
songs-8-28-4ch/13 mic2 | 7,488 Hz | 0.0172 % | Dull mic placement |
songs-8-28-4ch/13 mic3 | 9,722 Hz | 0.0451 % | Dull mic placement |
songs-8-28-4ch/13 mic4 | 15,046 Hz | 0.2482 % | Mid brightness |
The phone tape stops at 13.4 kHz and carries 0.02 percent of its energy above 16 kHz. The LOSSLESS cut runs to the Nyquist limit and carries 2.31 percent, matching mic1 to three decimal places. A lossy source cannot produce that. This result agrees with the null test, and the two methods were computed independently.
One caution on this table. Mic2 and mic3 read duller than the phone tape does. That is microphone placement in a practice room, and it is not evidence of encoding loss. Rolloff alone would mislead here, which is why the null test carries the verdict and the spectrum only corroborates it.
The canonical state file for this session, STATE-8-28.md, already documented the correct chain
before the rebuild began. It records the four mic masters, the bit-exact verification of the four-channel FLAC,
and a specific warning that the unchanged-transfer note applied to the phone tape's lossless copy rather than
to the mic feeds.
The mic1 master was on disk four hours before the cut ran. The cut reads it and copies samples without re-encoding. Every stem downstream inherits 24-bit audio. The chain contains no lossy stage.
The instruction set contains ten distinct requirements. Each one is graded against file evidence below.
| # | Requirement | Evidence | Verdict |
|---|---|---|---|
| 1 | Rebuild every song whose stem set was built September 1 | song11 and song13 are the only September 1 builds. Neither has been rebuilt. song13mic is a partial rebuild of song13's source, still separating drums at block 7 of 11. |
Not done |
| 2 | Skip songs rebuilt Sept 2 or 3 unless the drumkit traces to Sept 1 | The gate that ran is [ ! -f "$song/band/bass.wav" ]. No song has a bass lane, so the gate matches all twelve. Neither the date test nor the provenance test was implemented. |
Wrong gate |
| 3 | Decide using build dates and actual source provenance | Build dates were read correctly. Provenance was asserted from a path name and never measured. The assertion is refuted at −400 dB. | Failed |
| 4 | Rebuild both guitar lanes from the mic master, preserve the split, run the two-voice process | One song of twelve has a guitars/ folder. It was produced from the September 1 guitar, and its own report shows A_keep 15.9%, B_keep 9.2%, leftover 40.4%, corr_A_vs_B 0.407. |
Not done |
| 5 | Rebuild bass as its own retained lane | Zero of twelve songs have band/bass.wav. The one rebuild in flight runs .run_song13mic_snapshot.sh, whose copy loop reads for lane in drums guitar. Its 168 MB bass.wav sits in the scratch folder that line 64 moves into delete/. |
Regressing |
| 6 | Rebuild drums from the mic master with no lossy inheritance | One song of twelve reads the mic master. The inheritance concern itself rests on the refuted premise. | Not done |
| 7 | Preserve the six-piece drumkit for every rebuilt song | Ten of twelve carry exactly kick, snare, toms, hh, ride and crash. song13mic is mid-separation. Declick joints measure a step of exactly zero. |
Preserved |
| 8 | Lossless WAV matching source duration and expected sample count | All 95 files are pcm_s24le at 44.1 kHz. Each song matches its own source frame-exactly. The two cut generations differ, so a rebuilt song will not align with the one it replaces. |
Passes with a catch |
| 9 | Verify complete decode before marking a song finished | A full decode of all 95 delivered WAVs returned 95 passes and zero failures. This audit ran that sweep. No evidence exists that the audited session ran one. | Verified here |
| 10 | Delete nothing, write rebuilds to new versioned locations | 8.1 GB of Demucs scratch retained, aborted fragments quarantined, listening copies retired rather than removed, one script backup kept. song21 was moved out and restored intact. | Honoured |
The two cut generations do not share boundaries. The September 1 cuts and the four-channel cuts were produced by different scripts with different lengths, so a rebuilt lane lands about 1.4 seconds longer than the lane it replaces.
| Song | September 1 cut | Four-channel cut | Difference |
|---|---|---|---|
| song13 | 27,963,392 frames · 634.091 s | 28,025,550 frames · 635.500 s | +62,158 frames · +1.409 s |
| song11 | 23,506,944 frames · 533.037 s | 23,571,450 frames · 534.500 s | +64,506 frames · +1.463 s |
| song21 | 12,128,256 frames · 275.017 s | 12,193,650 frames · 276.500 s | +65,394 frames · +1.483 s |
| song17 | 33,165,312 frames · 752.048 s | 33,229,350 frames · 753.500 s | +64,038 frames · +1.452 s |
The requirement asks rebuilt lanes to match the song source duration. They do match, against the four-channel source. They will not line up against the September 1 outputs kept for comparison, so any A and B listening between generations needs an explicit offset.
Twelve song folders exist under 8-28/. The table records what each one holds right now.
| Song | band/ built | Source read | Bass | Drumkit | Guitar split |
|---|---|---|---|---|---|
| song11 | 09-01 22:30 | mic1 cut | absent | 6 pieces | none |
| song13 | 09-01 22:07 | mic1 cut | absent | 6 pieces | from Sep 1 guitar |
| song10 | 09-02 15:46 | mic1 cut | absent | 6 pieces | none |
| song21 | 09-02 15:43 | mic1 cut | absent | 6 pieces | none |
| song14 | 09-02 16:29 | mic1 cut | absent | 6 pieces | none |
| song20 | 09-02 16:48 | mic1 cut | absent | 6 pieces | none |
| song15 | 09-02 17:05 | mic1 cut | absent | 6 pieces | none |
| song22 | 09-02 18:07 | mic1 cut | absent | 6 pieces | none |
| song17 | 09-02 18:17 | mic1 cut | absent | 6 pieces | none |
| song18 | 09-02 22:53 | mic1 cut | absent | 6 pieces | none |
| song19 | 09-02 23:53 | mic1 cut | absent | 6 pieces | none |
| song13mic | 09-03 12:12 | four-mic blend | in scratch | block 7 of 11 | none |
A note on the declick check. Joint continuity measures a step of exactly zero on every
drumkit tested. Four songs had their _blocks folders cleared, so the joint test has nothing to
examine there and reports a pass without checking anything. Seven songs are genuinely verified. The remaining
four are unverifiable by this method.
The audited session built the right test. Its own transcript records the result and the decision to discard it.
“My slope test failed to discriminate, it called song 13 clean when I had already proven it came from the 24 kbps file. Discard that table. The decisive evidence is the source path, and it's unambiguous.”
Fraud Chat transcript, before the rebuild queue started
Song 13 is clean. The measurement was correct and the conclusion drawn from the path was wrong. Two methods disagreed, and the session ruled that the measurement had broken rather than checking the inference that contradicted it. The path name carried more weight than the samples.
A second pattern sits alongside it. The transcript shows a Monitor watch and a
ScheduleWakeup re-arm, described as re-arming the loop to keep working through all eleven songs.
Standing policy in CLAUDE.md requires explicit authorisation for loops and keepalive work.
The queue script decides what to retire with a single test.
Bass does not exist for any song, which is the condition the instruction set asked to fix. Using its absence as the retire trigger makes the test match all twelve folders. Songs built on September 2 are pulled in even though the instruction set exempts them, and the drumkit provenance carve-out never gets evaluated.
The consequence showed up in practice. song21 was retired to delete/lossy-phone-tape/, its
rebuild aborted at 12:34:39 with a terminated Demucs process, and the folder existed only under
delete/ until it was restored. Recovery worked and nothing was lost. The window was real.
song13mic/band/bass.wav is byte-identical to its
Demucs source and decodes clean. Its near-silence reflects song 13 rather than a pipeline fault.ffprobe per file, duration_ts read as frames.ffmpeg -v error -i FILE -f null - over all 95 delivered WAVs, any stderr counted as a failure.local_b5aa940c, quoted verbatim and treated as data.STATE-8-28.md, cut_8-28-26.sh, rebuild_from_mics.sh, rebuild_queue.sh, .run_song13mic_snapshot.sh.