| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| engine | ||
| research | ||
| tests | ||
| ui | ||
| .gitignore | ||
| PHASE2_LOOPFINDER.md | ||
| README.md | ||
| TODO.md | ||
| autotune.py | ||
| demos.json | ||
| foundry.py | ||
| kitgate.py | ||
| restage.py | ||
| server.py |
Two bugs in one small feature, both mine. The 'worth a second listen' table was appended by a str.replace whose anchor did not match, and I had not asserted on that one — so the code was present, the function computed 39 rows, and the report silently shipped without them. Every other patch in this file asserts its anchor; this is why. And the comparison was at the wrong level. A `hits` kit IS percussion, so CLAP hearing 'a kick drum' in one is agreement, not contradiction — comparing family names instead of their underlying stems reported every kick and snare in the pack as suspicious. Same for fx/tonal/vox, which all map to `other` and genuinely cannot contradict each other. Also adds --report-only, which rebuilds the report and cheatsheet from the manifest. The manifest is the record and those are views of it, so anything that legitimately changes the audio after a cut (restage staging a kit and re-grading it) leaves them describing numbers that are no longer true — and re-cutting a whole pack to refresh a markdown table would be absurd.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| engine | Loading commit data... | |
| research | Loading commit data... | |
| tests | Loading commit data... | |
| ui | Loading commit data... | |
| .gitignore | Loading commit data... | |
| PHASE2_LOOPFINDER.md | Loading commit data... | |
| README.md | Loading commit data... | |
| TODO.md | Loading commit data... | |
| autotune.py | Loading commit data... | |
| demos.json | Loading commit data... | |
| foundry.py | Loading commit data... | |
| kitgate.py | Loading commit data... | |
| restage.py | Loading commit data... | |
| server.py | Loading commit data... |