feat(rig): the doctor can name what a fresh box is missing, before the audio arrives
rig-doctor's samples check had a structural hole I only saw once it ran: it shells out to sample-pack, which resolves bank names by walking the Dirt-Samples tree of the box it is running on. On PLN's laptop that is 281 banks and looks fine. On an empty XPS24 it reports "0 banks resolve" — true, and useless. The check could never say "281 missing", which is the only thing a fresh machine needs to hear. The fix is an EXTERNAL reference, committed: sample-manifest.json at the repo root (463 KB, 281 banks, 9385 filenames, generated by tools/sample-pack.py --all). rig-doctor now falls back to it when no --bundle is given, and --bundle accepts a manifest FILE as well as a bundle directory. So the ordering that makes a same-day setup possible works: git clone, run the doctor, get the exact list of missing banks — all before 15 GB of audio has moved anywhere. Committed deliberately, not gitignored. A generated artifact that nothing ever compares against reality is how preload.scd drifted for weeks and made its debut as a crackle at a venue. This one is diffable, and its own freshness is visible in git. Mutation-verified rather than assumed, because a checker that cannot report absence is exactly the failure being fixed here: planted two nonexistent banks in a copy of the manifest, confirmed the check goes FAIL, names them, counts 2/281 with sizes, and flips the final verdict from "yes" to "no". That test also exposed a fix-pointer that could not be followed — with a manifest file it said "see <manifest.json>/README.md", a path that cannot exist. Now _bundle_fix() distinguishes the three cases: you have the bundle directory (cp from it), you have a bundle's MANIFEST.json (cp from its parent), or you have only the committed list (rsync from the freebox staging copy, or rebuild with sample-pack on a box that has the samples). A fix you cannot follow is not a fix. The carry-on bundle it describes is built and verified: 281 banks, 9385 files, 15,108,195,468 bytes, checked file-by-file against its own manifest with 0 mismatches, and staged to /mnt/freebox/PLN/parvagues-carryon byte-identical (9387 files both sides, 21m53s over SMB at ~11 MB/s). 903 passed, 0 failed.
Showing
sample-manifest.json
0 → 100644
This source diff could not be displayed because it is too large.
You can
view the blob
instead.
Please
register
or
sign in
to comment