# REPORT — v0.342.0 (unreleased): the upload and CPU watch (2026-10-23 night) Task: the weekend-night brief, Part 2 (spike → design → build, commit only). Operator ruling 2026-10-23 19:22. Design: felhom.eu `documentation/architecture/08-alarm-ladder.md` §9 [DESIGN — proposed]. Spike, numbers and live proofs: felhom.eu `documentation/audits/SPIKE-upload-watch-2026-10-23.md`. Baseline: `277e998` (0.341.0, released). ## What was built (`a9c1997`, CI run 2270 success) - `internal/upwatch`: exact per-container counters (Docker Engine API), per-app judging (upload ≥ max(5 Mbit/s, 25 % of the line) for 15 min; CPU ≥ max(150 %, 50 % × cores) for 30 min), explainers qBittorrent / Transmission / Plex, `app_unexplained_upload` / `app_unexplained_cpu` + `_cleared` (operator-only on hub 0.169.0), the line from a one-second sample of the off-site push, qBittorrent's default limit (50 %, the household's limit always wins). - One line on the system settings page (the measured line), one on qBittorrent's page (the limit, while the box owns it). - 18 new tests; 20 mutations each seen failing (CHANGELOG lists them); the system page's four frozen Hungarian renders gained one row each (diffed: nothing else moved). ## Live (scratch 9202, `0.342.0-rc.1`, set by hand — never offered to a household) The limit set (19:47:42Z); a real seed judged explained (20:04:42); a CPU burner in Plex alarmed once at 30 min (20:07:42) and cleared once (20:25:41); a flood from inside qBittorrent hidden behind the real seed alarmed once (20:19:42: 65.0 Mbit/s sent, 20.0 counted) and cleared once (20:41:41); a limit changed by hand was left alone (20:32:42). 9202 is back on 0.341.0. ## Not done / open Not released (R-1244, the operator's yes; R-1245 the limit size; R-1246 who is told). The line is a lower bound (R-1247); an app's API can lie (R-1248: a `tc` ceiling, measured, not built). MinAgent unchanged (0.158.1).