Part 1 — controller 0.350.0, 2026-11-03
Image: 0.350.0 from 5c336d82 (CI 2568 green), sha256:9ee53908e6d95f0340c41bf4eaba954280084a8e6927de59779440e3551df261. rc.1 from 13e34d4 (CI 2562
green), sha256:cbf4d42fd4c86a30854a2f4202b06b6b97073380e0de0bd2fffed524021fd8d4.
The fix itself (9202 only, from the LAN: the demo-hp host; traefik_load.py, load-before.txt, load-after.txt)
Four processes open short TLS connections (84 a second), each one request to the dashboard route with Authorization: NTLM …; the controller answers 302
(so the request reached a backend). Memory: anon of Traefik's cgroup, every 10 s. The load stops at twice the start figure or at 300 s.
v3.7.16 (traefik:v3.7.16) |
v3.7.17 (traefik:v3.7.17) |
|
|---|---|---|
| anon at start | 18.7 MiB | 16.2 MiB |
| after about 920 connections | 79.0 MiB (stopped: over twice the start) | 25.3 MiB |
| after 25,116 connections, 300 s | not run: the bound stopped it at 11 s | 25.4 MiB, flat (24.9–26.3 all the way) |
| 30 s after the load stopped | 80.0 MiB, not released | 25.4 MiB |
So the fix is proven by behaviour, not only by the version: about 65 KiB per connection on the old one, and nothing per connection on the new one. Limit of the proof: the old curve has one point, because the bound stopped it, and it ran on a Traefik seven hours up, the new one on a Traefik seconds old.
The boxes (walk-9202-rc1.txt, walk-3boxes.txt, public-names.txt, https-only.txt, files-signin-*.txt, rollout-wait.txt)
Per-box floors 07:04:24 UTC; all three on 0.350.0 with Traefik v3.7.17 by 07:05:06. Traefik's image id sha256:a72cb2f4… on all four boxes. Walk green on 9202 (rc.1), Tester 1, demo-hp, demo-felhom: 0 unhealthy, 0 refusals, 0 ERROR lines,
login and file manager 200, every app route answers through Traefik; 26 public names from outside: all 200/302/401; https_only_check.py green.
File manager sign-in (dashboard → one-time pass → files cookie → a listing through Traefik 200; without the cookie 401): 9202, Tester 1, demo-hp. Not driven on demo-felhom: it is the lived-in box and the brief allows no hand step on it; its anonymous file manager page reads 200.
R-1351 and R-1323 did not fire on these starts (0 ERROR lines): as last night, no live difference between old and new for them; test proof only.
One local restore on Tester 1, release build (restore-tester1.txt, restore_tester1.py)
The household's button, privatebin, last night's copy: a marker written after the copy is gone, the 5 files read the same (hash 857384e0f0cd2b8f), front door 200, state running, no hold, 62.8 s, 0 ERROR lines.
A plain restore: it exercises the restore path on the release build, not R-1347's or R-1348's staged faults (those were proven last night on the test image of the same code).
The floor (global-floor.txt, global-floor-readback.txt, floors-cleared.txt, watch-30min.txt)
Global floor 0.350.0 / MinAgent 0.158.1 at 07:18:16 UTC, its own save, 303 floor_set; the hub log and the configuration page agree. Per-box floors cleared 07:18:18.