Both found the only way they could be found: by running the documented procedure on a machine that was not the one it was written on. **tools/rig-install.sh was committed as mode 100644.** It is the first command in SETUP.md's fast path. It worked for its whole life on the authoring laptop because the author had chmod'd it there and never committed that — a local chmod fixes your tree, not the repo, and the index is the only mode that travels. So `tools/rig-install.sh` on a fresh clone died with "permission denied", on the one machine the script exists to serve. Five other tracked shell scripts had the same mode (gpu-mode.sh, init_midi.sh, viz/launch.sh and two under armada/); all six are now +x in the index. Fixing the six without a guard would just wait for the seventh, so tools/tests/test_scripts_are_executable.py reads modes out of `git ls-files -s` — the index, not the working tree — and fails on any tracked *.sh at 100644. It also pins the five named entrypoints explicitly so a rename cannot quietly drop one, and it guards itself: an empty file listing must not read as success. Mutation-verified in both directions (set gpu-mode.sh back to 644 → 1 failed naming the file and printing the git update-index fix; restored → 3 passed). **The doctor's fix text for missing units pointed at rig_units.py.** On a fresh box that is wrong in a way that wastes real time: rig_units.py only enables and starts units that are ALREADY symlinked into ~/.config/systemd/user/, so `--ensure --apply` returns fifteen consecutive "Unit file does not exist" lines and reads like a broken reconciler. It isn't — rig-install.sh is what creates the symlinks. The check now looks at whether the units are merely not-enabled or genuinely not-found, and points at the installer in the second case. That distinction was already in the data (rig_units.py --status prints "not-found" in the enabled column, and the doctor already parsed that column into rows) — nobody had read the two facts together, because on a box where the symlinks have existed for months the not-found branch never fires. 901 passed before, 309 in tools/tests after adding the new file.
| Name |
Last commit
|
Last update |
|---|---|---|
| .gitea/workflows | Loading commit data... | |
| armada | Loading commit data... | |
| blocks | Loading commit data... | |
| blog | Loading commit data... | |
| config/wireplumber | Loading commit data... | |
| copycat | Loading commit data... | |
| docs | Loading commit data... | |
| gifts | Loading commit data... | |
| lib-parvagues | Loading commit data... | |
| live | Loading commit data... | |
| mix | Loading commit data... | |
| output | Loading commit data... | |
| releases | Loading commit data... | |
| sandbox | Loading commit data... | |
| study | Loading commit data... | |
| test | Loading commit data... | |
| tools | Loading commit data... | |
| utils | Loading commit data... | |
| visuals | Loading commit data... | |
| viz | Loading commit data... | |
| .gitignore | Loading commit data... | |
| BootTidal.hs | Loading commit data... | |
| BootTidal.hs.broken | Loading commit data... | |
| BootTidal.visuals.broken.hs | Loading commit data... | |
| CLAUDE.md | Loading commit data... | |
| EVENING.md | Loading commit data... | |
| FOH_MASTER.md | Loading commit data... | |
| LAST_THIRD.md | Loading commit data... | |
| LICENSE | Loading commit data... | |
| Logo.xcf | Loading commit data... | |
| MORNING.md | Loading commit data... | |
| PatchBay_MultiChannel.xml | Loading commit data... | |
| PatchBay_Perf.xml | Loading commit data... | |
| PatchBay_Perf5.1.xml | Loading commit data... | |
| README.md | Loading commit data... | |
| RUNBOOK.md | Loading commit data... | |
| SETUP.md | Loading commit data... | |
| SHOPPING_LIST.md | Loading commit data... | |
| TASKS_DUMP.md | Loading commit data... | |
| backlog.md | Loading commit data... | |
| bullet_train.tidal | Loading commit data... | |
| collide.sh | Loading commit data... | |
| conftest.py | Loading commit data... | |
| debug.tidal | Loading commit data... | |
| didacticpatternvisualizer.pde | Loading commit data... | |
| gig-up.sh | Loading commit data... | |
| gpu-mode.sh | Loading commit data... | |
| hello.sc | Loading commit data... | |
| init_midi.sh | Loading commit data... | |
| install_superdirt.sclang | Loading commit data... | |
| intro.md | Loading commit data... | |
| library.txt | Loading commit data... | |
| link_jack.sh | Loading commit data... | |
| link_samples.sh | Loading commit data... | |
| link_samples_all.txt | Loading commit data... | |
| main_fairbanks.scd | Loading commit data... | |
| notes.md | Loading commit data... | |
| parvagues-sc.service | Loading commit data... | |
| perf-audio.sudoers | Loading commit data... | |
| perf-tray.py | Loading commit data... | |
| perf-tray.service | Loading commit data... | |
| perf.sh | Loading commit data... | |
| process-palette.json | Loading commit data... | |
| realtime.tidal | Loading commit data... | |
| sample-manifest.json | Loading commit data... | |
| sample_watch.scd | Loading commit data... | |
| samples.txt | Loading commit data... | |
| setlist_opal2026.txt | Loading commit data... | |
| sketch.properties | Loading commit data... | |
| start_and_midi.scd | Loading commit data... | |
| test.tidal | Loading commit data... |