Fleet changelogs · dev.ecs0.net
rdmsm4x-changelog-20260903-2251-fleet-stale-copy-cleanup-six-hosts

rdmsm4x-changelog-20260903-2251-fleet-stale-copy-cleanup-six-hosts

Archive-first cleanup of stale app copies, backup files and pre-consolidation trees on all six Macs: 563 backup files moved, 27 app copies zipped, 26 empty rollback dirs removed, 10 home-level trees quarantined (194 GB, moved not deleted), 1.1 GB freed — every action receipted with a sha256 in a per-host manifest, the whole record committed to fleet/archive/cleanup-20260903 (a95ac81).

1. Discovered first, not repeated

Two peer sessions had already worked the same goal tonight: lib-44 (lib stale copies on 4 spokes → ~/dev/archive/lib-stale-20260903/, 102.6 GB of .build caches on the hub, Tyrell b15 + ScanRoo b1 snapshotted) and ecs0lib-6b (144-repo sweep, apps/rd-rt archived). Neither could reach jdmbair13m5. This pass took what they left: /Applications and ~/Applications debris on every host, app copies outside /Applications, backup files, $HOME-level stale trees, and jdmbair13m5 in full.

One near-miss avoided: lib-44 archived the plain ~/dev/lib/agentkit copies as "redundant". They are not — claude@rdmsm4x/158c9525 placed them at 15:2x so codex preflight works on spokes (AGENT_COORDINATION.md §7, bus 20260903-152423-9A9E040F). They are present again on all four spokes (byte-identical to canonical HEAD~1 on jdmbair13m5, verified by sha); left alone here.

2. What changed (per-host receipt: ~/dev/archive/CLEANUP-MANIFEST-20260903.tsv)

Host .bak → config-bak-20260903 app copies → zip empty rollback dirs trees → ~/archive-quarantine-20260903 freed
rdmsm4x 159 6 9 0 44 MB
rdmbair15m5 100 9 4 4 (134 GB) 1,047 MB
rdmbair13m5 81 0 3 3 (0.5 GB) 0
rdmpw3265m 87 5 4 1 18 MB
rdmpw3275m 85 6 6 2 (64 GB) 18 MB
jdmbair13m5 51 1 3 0 6 MB

3. Deliberately untouched

Newest installed copy of every bundle id; the newest Tyrell rollback and Tyrell's .tyrell-staging/.tyrell-rejected deploy state; every app's own dist/ output (apps/LogTTY/dist/logTTY.app is build 21 — newer than installed; promotion is the app lead's call); git-tracked build products and tracked .bak files; ~/dev/issues/; ~/.claude/backups/; provider-live files; anything written in the last 3 h; iCloud-synced ~/Desktop/~/Documents (a change there hits every Mac); ~/Archive; ~/Documents/Codex; iOS DeviceSupport; Tyrell/ECSMemory/ramDisk .build dirs still being written today.

4. Verification

5. Three bugs the dry run surfaced, none reached disk

  1. Loop variable named path — zsh ties it to PATH; every external command after the first read was "not found". The dry run looked clean (builtins print fine); the tell was kb: command not found: cut. Memory zsh-path-variable-is-PATH updated with the recurrence.
  2. ((ok++)) as the last command of an && group returns 1 when ok was 0 → the first success per host also ran the FAIL branch and fail= was overcounted. Disk right, receipt wrong. New memory zsh-post-increment-exit-status.
  3. print -r -- leaves \t literal → manifests repaired in place, executor moved to printf.

6. Owner actions / decisions

7. Backups / undo

Zips: ditto -x -k <zip> <parent>. Backups: mv ~/dev/archive/config-bak-20260903/<rel> ~/<rel>. Quarantine: per-host README. Record: rdmsm4x:~/dev/fleet/archive/cleanup-20260903/ (a95ac81, pushed to backup + fleet).

8. Secrets

None written. Manifests hold paths, sizes, versions and sha256 of zips; the committed record was scanned for vendor key shapes (0 hits).