162d5cdd10
install.sh promises "the running fleet == the repo, always; editing the live file IS editing the tracked file". Its bin/ loop globbed `bin/bullpen-*`, so five entrypoints were never deployed by it at all: `bp`, `room-ask`, `room_tail`, `news-de` and `deus-seize` — the commands a human types, plus the emergency stop. They had been hand-copied once and then drifted silently. Measured on 2026-08-02: the room host was running a `bp` from 2026-07-21 (61 lines behind the repo, which is how `bp --route` came back as "no reply from @--route"), and deus-seize had never reached any host, so tonight's portability work on it was live nowhere. The hole is invisible to inspection: the glob reads as "the bullpen commands", and every file it misses is sitting right beside the ones it catches. tests/test_install_covers_bin.py compares the two sets instead of reading the pattern — red under the old glob, green now. Directories and non-executables are skipped explicitly, so bin/__pycache__ (which appears the moment anything in bin/ is imported) cannot be symlinked into /usr/local/bin.