rdmbair13m5-changelog-20260904-1351-devupdate-footlights-fleet-sync
rdmbair13m5-changelog-20260904-1351-devupdate-footlights-fleet-sync
Unified the macOS fleet developer updater into a single
self-contained executable (dev_update_v1.94.zsh) embedding
Footlights 1.1.0 and the complete dev updater payload, archived
redundant/unversioned script copies across the fleet, and resolved the
issue where footlights was not showing.
Scope
- Hosts touched:
rdmsm4x(canonical hub),rdmbair13m5(local),rdmbair15m5,rdmpw3265m,jdmbair13m5 - Note:
rdmpw3275mtimed out over Tailscale SSH during sync and remains to be updated upon waking.
Root Cause Analysis
- Name and symlink mismatch: In
~/dev/scripts/,dev_update.zshpointed todevupdate.zsh(an unversioned 71,791-byte script from Aug 31 with zero Footlights integration). When running~/devupdate.zshordevupdate.zsh, Footlights was never called. - Outdated spoke copy: On
rdmbair13m5,~/dev/scripts/dev_update_v1.93.zshhad been overwritten with a duplicate copy of the old 71KBdevupdate.zsh(SHAddcc82...) instead of the 165KB self-contained script fromrdmsm4x. - Scrollback wiping on exit: Footlights'
_fl_paintercalled_region_offupon exit, clearing rowsrows - H + 1 .. rows. Without printing the completed footer into scrollback, the status strip vanished as soon as the process returned to the shell prompt. - Hanging Claude exec verification: In Phase 3,
claude --versionlacked a timeout guard and could stall the script indefinitely if the CLI became unresponsive.
Key Changes
- Master Footlights Library 1.1.0
(
footlights.zsh):- Merged all layouts from both
xreaper.zshanddev_update_v1.93.zsh:footer1throughfooter16,gauges,board,inline, andplain. - Updated
_fl_painterto persist the completed status strip directly into terminal scrollback upon_region_off, ensuring execution status remains visible after process completion.
- Merged all layouts from both
- Self-Contained Updater
(
dev_update_v1.94.zsh):- Inlined Footlights 1.1.0 verbatim with verified SHA256 checksum.
- Embedded
devupdate.zsh 2.10payload verified at startup. - Added a 15-second alarm timeout guard to
claude --versionin Phase 3. - Set up uniform symlinks in
~/dev/scripts/and~/:dev_update.zsh -> dev_update_v1.94.zshdevupdate.zsh -> dev_update_v1.94.zshupdatedev.zsh -> dev_update_v1.94.zshfleet_update.zsh -> dev_update_v1.94.zshfleet_upgrade.zsh -> dev_update_v1.94.zsh
- Reaper Consolidation:
- Versioned
xreaper.zshasxreaper_v1.0.0.zshwithxreaper.zsh -> xreaper_v1.0.0.zsh. - Archived intermediate fragments
xreaper.body.zsh,xreaper.tail.zsh, and.bakfiles to~/dev/scripts/archive/.
- Versioned
- Fleet Script Archiving:
- Archived older unversioned updater scripts
(
fleetUpdater0903.zsh,devupdateAGY.zsh,.fleetUpdater0903-backups,devupdate_v2.10.zsh,fleet_update_v1.1.0.zsh,old_update_mac-062626.zsh,update_mac_072626.zsh,update_mac.zsh.bak.*,gen_site.py.bak-*,publish_site.zsh.bak-*) into~/dev/scripts/archive/onrdmsm4x. - Removed unversioned duplicate fragments from all spoke machines
(
rdmbair13m5,rdmbair15m5,jdmbair13m5,rdmpw3265m).
- Archived older unversioned updater scripts
(
- Git Tracking:
- Committed on
rdmsm4x:~/dev/scripts(commitf4e493c).
- Committed on
Verification Evidence
dev_update_v1.94.zsh --verify-embedded: Exit code 0, all payloads verified,zsh -nclean.updatedev.zsh --self-test: Simulated full multi-phase update with active step meters, tallies, and clean exit 0.xreaper.zsh --verify-embedded: Exit code 0, rusage_probe and footlights verified clean.- Tested
updatedev.zsh --dry-run --no-dev-updateacross hosts.
Undo / Recovery
- Prior copies preserved in
rdmsm4x:~/dev/scripts/archive/(devupdate_v2.10.zsh,fleet_update_v1.1.0.zsh,fleetUpdater0903_v1.2.1.zsh,dev_update_v1.93.zsh). - Git commit
f4e493conrdmsm4x:~/dev/scriptscan be reverted viagit revert f4e493c.
Outstanding Actions
- Sync to
rdmpw3275mwhen that host wakes up and is reachable over Tailscale.