## v0.171.0 (2026-10-30) — R-1344 decided from the night's measurement: a controller that runs but does not answer is RESTARTED — RELEASED (release-agent.sh from a clean clone of `bd18347`; agent sha256 c888ca7ba22a1f689059081575814a725e2edcecbb6bcc56829e9d9de88202a5, config bundle 95f977f6dc827185f2b5a2aa9e1c829db41a9f425d49eb40f317286d13c83d2b; binary-only signed agent_update on Tester 1, demo-hp, demo-felhom; vouched by the operator 2026-10-30 10:47:36 CET; `pinned.day0_agent` = 0.171.0). Live on Tester 1: the controller frozen (SIGSTOP) 09:24:50 UTC → Docker „unhealthy" 09:26:36 → the alarm 09:29:21 → the restart 09:31:22 → healthy 09:31:24; the hub mailed `controller_unresponsive` and `controller_unresponsive_restart` (hub 0.178.0), not `controller_restarted_by_agent` - **The measurement (operator brief 2026-10-29 Part 2, read 2026-10-30).** Docker's own health record of the controller on Tester 1 and demo-hp, every probe from 2026-10-29 11:12 to 2026-10-30 07:00 UTC: 4 733 probes through the night chain (demo-hp's PBS vzdump, Tester 1's local vzdump, both DB dumps, tier-2, the off-site push, a restore test, two controller updates). No failed probe, no 5-s timeout; slowest 303 ms (demo-hp, during the PBS vzdump). The only „unhealthy" was the controller stopped by hand for a proof. A busy night never came near ONE failed probe. - **So the alarm becomes a restart.** At `controllerUnresponsiveConfirm` = 6 unhealthy sweeps the alarm is raised, as before. At `controllerUnresponsiveRestart` = 10 (2 minutes later; ~6.5 minutes after the first failed probe) the agent restarts the controller's bootstrap unit — unless the controller's busy file is fresh (a backup, a restore, an update, an export) or cannot be read, or the brake refuses (3 restarts in 15 minutes → the crash-loop pause, which the hub mails). A swap, a parked guest, a locked guest and a vzdump keep resetting the count, as before. A refusal keeps the alarm and is logged once per reason. After a restart the count starts again from zero. - **The stanza** carries `unresponsive_restart_after_s` (120: the hub's alarm text says when the restart comes) and `unresponsive_restart_at` (equals `last_restart_at` for that act; the hub mails `controller_unresponsive_restart`). - **Refactor, no behaviour change:** the not-running restart's brake and its record are now `supervisorBrakeAllows` and `recordSupervisorRestart`, shared by both restarts. The busy-file stale log line no longer says „operator reboot". - Tests `TestSupervisor_UnresponsiveIsAlarmedThenRestarted`, `…Guards` (now also: never restarted), `…RestartRefusals` (busy fresh, busy unreadable, the brake, a crash-loop pause), `…StaleBusyFileDoesNotShield` — red first (build failure, then 3 behaviour failures); 7 mutants, each killed (one survivor — the count reset after a restart — found and pinned). ## v0.170.0 (2026-10-29) — „Reboot guest" from the hub (D65 = A): `reboot_guest` joins the agent's closed list — RELEASED (release-agent.sh from a clean clone of `ca15a31`; agent sha256 da8d12a05ef607c338b9ba307e7a81b18253a3188721bbd8421ba36658a22404, config bundle 03f2ff6442fc3ca600b1f25f26767ce4da466a770a258f3e362cf95f6e76b543; signed agent_config_update + agent_update on Tester 1, demo-hp, demo-felhom; vouched by the operator 2026-10-29 18:57:48 CET; `pinned.day0_agent` = 0.170.0) - **D65 = A (operator ruling 2026-10-29 15:50; felhom.eu `04` §6.1, `03`).** The agent's closed operator-action list is now `restart_controller` and `reboot_guest` (arg: the vmid). No signature: a reboot destroys nothing. The act is the existing guest-reboot path (`pct reboot ` of THAT guest over the existing exact grant) — never the host. - **Guards** (each refuses with the reason; nothing is called, no record is written): a guest this agent did not provision, not running, locked, or parked; the host-wide heavy-operation gate held (a backup of any tier the agent runs, a restore test, an OS step — the reboot HOLDS the gate until the guest is up again); `jobBlocker` (an agent backup job, a controller swap, a drive or NAS job, an escrow ceremony, a vzdump of the guest); the CONTROLLER busy — its `data/ctl/busy` file (a backup, a restore, an off-site run, an app update), fresh within 90 s; a stale file is a controller that stopped writing, not a busy one; any read failure but „no such file" refuses (fail closed); at most ONE reboot per hour per guest (`//operator-reboot.json`, on disk — it survives an agent restart); the operator restart's brake (a refusal in force refuses a reboot; a reboot counts as one of the 3 restarts in 15 minutes). - **During the reboot** the guest-power watchdog and the controller supervisor leave the guest alone (`rebootInFlight`): a racing start would fail the reboot's own start half. - **The result** says both times from the press: „rebooted; the guest was up after 41 s, the controller answered after 63 s" — or `failed`, said plainly. The record is written BEFORE the reboot; the new self-scoped `GET /guest/operator-reboot` gives it to the controller for one day, for the household's line „Felhom support restarted your box at