REPORT: the 2026-10-05 night-fixes session
gates / gates (push) Successful in 30s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-05 08:25:44 +02:00
parent 7861bf9dde
commit e730a629fd
+14 -11
View File
@@ -1,14 +1,17 @@
# REPORT — controller v0.293.0: self-heal after the Docker socket is re-created (R-860) — 2026-10-04
# REPORT — controller v0.294.0 (2026-10-05): the night's fixes
**Measured first (9202):** a `docker.socket` restart re-creates the socket file; with live-restore every container keeps
running, but the controller and traefik hold the deleted inode ("connection refused" forever, health still "healthy").
A dockerd crash or `systemctl restart docker` keeps the file — nothing to heal.
Brief: the 2026-10-05 night-fixes brief (operator), Parts A, B, D. Full session report:
`felhom.eu/REPORT-night-fixes-2026-10-05.md`. Architecture read: `07-backup-architecture.md` (§6.1, the Tier-3 row),
`audits/offsite-append-only-2026-10-03/DESIGN.md`, `09` §3 decisions 53 and 68–74.
**Built:** `internal/sockheal` — 60 s of refusals (never timeouts; only after Docker answered once) → exit 75, Docker's
restart policy brings the controller back on the current socket (~1 s); every 5 min and 30 s after start it restarts any
other socket user on an older inode (traefik). MinAgent 0.131.0 unchanged.
| Row | Fix | Proof |
|---|---|---|
| R-867 | the off-site guard's "young" line = keep-daily CALENDAR days, from the policy's own constants | restic 0.14.0's policy simulated in tests, proven identical to the binary over 92 snapshots; 5 red-proofs; live windows on demo-felhom (16 → 14) and demo-hp (145 → 127) — exactly the predicted snapshots |
| R-863 | no image clean-up while any compose command can pull (`dockerexec.BeginImageWork` / `TryImageCleanup`); the one-time pass retried every 2 min, its marker only after a pass that ran | the night's shape in a test (2 red-proofs); live on 9202: the clean-up met BookStack's install at minute 3, skipped, install OK first time; retry 2 min later ran |
| R-864 | failed compose logs the TAIL of stderr (`tailStr`) | the night's first stderr line in a test; red-proof |
| R-869 | move-aside log line names the destination | test; red-proof |
**Live:** 9202 healed in 104 s; demo-hp 9201 in 120 s, 21 of 21 container ids unchanged. Red-proof 9 of 9. Full suite
`go vet ./... && go test ./...` rc=0. Delivered to the demo boxes by a per-customer floor 0.293.0; the global floor stays
0.292.0 (Tester 2 not moved this session). Golden 0.293.0 baked and vouched.
Evidence: `felhom.eu/documentation/audits/r840-config-bundle-2026-10-04/partE/`.
Delivered: image `gitea.dooplex.hu/admin/felhom-controller:0.294.0` (commit 7861bf9); floor 0.294.0 with MinAgent 0.131.0
for customers demo-hp, demo-felhom, tester-1 (running on both demo boxes within ~2 min); 9202 set by hand (scratch);
global floor unchanged (Tester 2 not moved). Golden 0.294.0 baked and vouched. Tests: `go test ./...` rc 0,
`controller_gates.py --fast` all OK. Red-proofs: `felhom.eu/documentation/audits/night-fixes-2026-10-05/part{A,B,D}/`.