Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
Controller 0.351.0 release, 2026-11-09 (attended, operator's „go with A")
Image: 0.351.0 from 27360d6a (CI 2603 green), sha256:1d90563c443022770b2db90a7730f1ea5aea45cc5b0fa64fec9823d60d42d97f
(ctl-0351-build.txt). rc.1 from the same commit, sha256:f789f4b03da9645266fc712b1e687ae3939bbb52416ac798f42e8b0146e49ab2.
What it carries: decision 56 amended (old -rc controller images go) and decision 285 (old infrastructure images go).
rc.1 on Tester 1, by hand (tester1-images-before.txt, tester1-rc1-retention-log.txt, tester1-images-after.txt, tester1-walk-rc1.txt)
Tester 1 still had the old images (demo-hp's were removed by hand earlier the same day). rc.1 installed through
/etc/felhom-controller-image at 12:10 UTC; the pass ran at 12:12:54, about 3 minutes after the start.
- Controller: 12 of 14 images deleted (11 old test builds and 0.349.0). Kept: running 0.351.0-rc.1 and the previous 0.350.0 (found by version order: a hand install writes no swap record).
- Infrastructure: traefik v3.7.13 and cloudflared 2026.9.3 deleted. Kept: each pin and the one before it (traefik
v3.7.16, cloudflared 2026.10.3, FileBrowser 1.5.6-stable, Samba 1.1.0).
alpine,hello-world,traefik/whoamiare not in the infrastructure list and were not touched. - 37 → 24 images; Docker's image total 8.665 → 7.612 GB. Only about 1 GB is freed, because the old test builds share most of their layers. Still reclaimable: 3.13 GB, mostly the apps' undo images (decision 53, on purpose).
- Walk green: 0 unhealthy, 0 refusals, 0 ERROR lines, login and file manager 200, every app route answers.
The three boxes through the normal update path (floors-set-at.txt, floors-per-box.txt, rollout-wait.txt, walk-3boxes.txt, https-only.txt)
Per-box floors 0.351.0 / MinAgent 0.158.1 at 12:14:27 UTC (303 floor_set each); all three on 0.351.0, healthy, by
12:15:11. Each box's own pass, about 3 minutes after its start:
| Box | Controller images deleted | Infrastructure images deleted | Images after |
|---|---|---|---|
| Tester 1 | 0.350.0 (previous is now rc.1, from the self-update's record) | none | 24, 7.6 GB |
| demo-hp | 0.349.0 | none (cleaned by hand earlier; Samba shows no previous, because 1.1.0 was removed by hand) | 43, 24.2 GB |
| demo-felhom | 0.349.0 | traefik v3.6.7, v3.7.13; cloudflared 2026.6.0, 2026.9.3; FileBrowser 1.3.3-stable | 16, 2.2 GB |
Walk green on all three (0 unhealthy, 0 refusals, 0 ERROR lines, login and file manager 200, every app route through
Traefik 200/302/401). https_only_check.py rc 0 (controls passed; every public name 301 to https).
The floor (global-floor.txt, global-floor-readback.txt, floors-cleared.txt)
Global floor 0.351.0 / MinAgent 0.158.1 at 12:18:28 UTC with CC's token (303 floor_set). Read back from two channels:
the running hub pod's log (Global controller-version floor set to "0.351.0" (declared MinAgent "0.158.1")) and the
configuration page (min_controller_version 0.351.0, min_agent 0.158.1). Per-box floors cleared 12:18:38 (the hub log
shows each override set to "").
Teardown: machine — no throwaway app; host — nothing provisioned; hub — the three per-box floors cleared.