REPORT + CONTEXT: v0.265.0 live proof and floor raise
gates / gates (push) Successful in 28s

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-09-23 17:39:48 +02:00
parent 0054d4bd69
commit 411a43f8ef
2 changed files with 28 additions and 23 deletions
+20 -22
View File
@@ -1,31 +1,29 @@
# REPORT — controller v0.264.0: the household is told when an update is undone or held (2026-09-23)
# REPORT — controller v0.265.0: R-634's cause fixed, held apps say so, the OOM storm (2026-09-23)
`09` §6.4 parts 2–3; R-606, R-620, R-646. Commit `bc27894`. MinAgent 0.131.0 (unchanged). Needs hub
v0.120.0 (deployed first). **Floor raised to 0.264.0** after the live proof. Full report, mails and
evidence: `felhom.eu/REPORT.md`, `felhom.eu/documentation/audits/undo-fleet-2026-09-23/`.
R-634, R-625, R-636, R-647. Commit `0054d4b`. MinAgent 0.131.0 (unchanged). Needs hub v0.121.0 (deployed
first). **Floor raised to 0.265.0.** Full report, the brief's wrong claims, evidence:
`felhom.eu/REPORT.md`, `felhom.eu/documentation/audits/cleanup-2026-09-23/`.
## Not done, or changed
- R-606 has three leftovers → **R-647**: a reader in the other language than the box sees a HELD sentence
in the box's language; the English mail's raw `Note:` keeps the Hungarian `copy_holds`; two log wordings.
- Added beyond the brief: a one-time box-side seed + two notifications-page toggles (the page pushes its
list to the hub on save, which would undo the hub's migration).
- The undone line ends „nincs teendőd" (the product's „te" voice), not „teendője nincs".
- R-634: the backup race is fixed; the deploy's OWN failure leaving containers is an operator question → R-649.
- R-625: the Update button was already hidden on the list; the fix is the badge (both hold kinds).
- R-636: the flag cannot count (sticky) — the kernel `oom_kill` counter is read instead.
- My first test draft ran real docker on DooPlex (an empty volume) — removed; tests use seams; R-650.
## What shipped
- `app_update_undone` (warning) / `app_update_held` (error), one per app per outcome, via
`Manager.SetUpdateEventSink` (main.go); held mails carry the hold sentence in the household's language.
- Update sentences stored as key + args and rendered per reader on both pages and `GET /api/stacks/<n>`;
stored Hungarian byte-identical.
- `BackfillAppliedMeta` at startup (R-646). Disabled notifier: one WARN per type, then DEBUG (R-620).
- **R-634:** deploying apps leave `ListDeployedStacks`; the volume leg re-asks (`deployingReporter`) and
SKIPs; `StopStack`/`StartStack` → `ErrStackDeploying`.
- **R-625:** badge `badge.update.held` „Megállítva — visszaállítás szükséges" / "Stopped — restore needed".
- **R-636:** `ScanOOMKilled` reads `oom_kill`/`memory.max`/`memory.peak`; ≥20 kills in 30 min per container
run → one `app_oom_storm` (error, operator-only).
- **R-647:** `readerFuncs` (every language) + `UpdateErrorKeyHeld`; `copy_holds` as a key; two log wordings.
## Red-proofs (9, each seen failing)
Backfill stores nothing; `dropped()` not called; undone event not emitted; held event not emitted; page
error text not localised; hold sentence ignores the language; `UpdateErrorIn` returns Hungarian; box
seed not run; sink not wired in main (retried with a compiling mutation). Messages in `felhom.eu/REPORT.md` §6.
## Red-proofs (8 here, each seen failing)
Backup skip; StopStack guard; held badge (v0.264.0 shape); reader funcs; copy_holds phrase; health
severity; storm escalation; counter read. Messages in `felhom.eu/REPORT.md` §3.
## Live
9202: undone + held, pages hu/en, WARN-then-DEBUG, backfill 3. 9201 (hub on): 4 household + 4 operator
mails in hu and en, `notification_log` 937–946 all sent, backfill 10. Both torn down to their standing
apps and the live catalog; both on 0.264.0.
## Live (9202)
R-634 race run across a live deploy — the backup stopped three other apps and never the deploying one;
held badge + no button + 409 in all four box/reader language pairs; RomM storm at 21 kills, one line at 49.
`go test ./...` rc=0; `controller_gates.py` rc=0.