From d335033a6d390b9d68040f57a676f0be660b3903 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Thu, 17 Sep 2026 02:20:11 +0200 Subject: [PATCH] chaos night round 12: the closing control round, and the truth table complete Steady at t+1s, every door 200 at both readings, household 2 lines 0 failures, and no new alarm - the newest feed entry is still round 11's recovery. Nothing was raised about a box nothing was done to. Checked rather than assumed: inject.sh's default branch exits 2 on an unknown accident, so the control rounds never reach it - the runner handles the no-accident case itself. A broken injector produces exactly the same result as a control round, and only the code path distinguishes them. Alarm truth table, all twelve rounds: 17 alarms fired, 17 true, 0 missing. Three design gaps filed (R-547, R-549, R-550). Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS --- .../audits/DRILL-chaos-night-2026-09-17.md | 25 ++++++++- .../alarm-truth-table.txt | 7 ++- .../round-12.txt | 52 +++++++++++++++++++ 3 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 documentation/audits/evidence-chaos-night-2026-09-17/round-12.txt diff --git a/documentation/audits/DRILL-chaos-night-2026-09-17.md b/documentation/audits/DRILL-chaos-night-2026-09-17.md index 1d3f8bdd..2ab070e4 100644 --- a/documentation/audits/DRILL-chaos-night-2026-09-17.md +++ b/documentation/audits/DRILL-chaos-night-2026-09-17.md @@ -483,7 +483,30 @@ its keep: when a measurement could have been early, it is re-taken rather than t **The drive came back clean** — `/dev/sdd`, 98 G, 2 % used, mounted at `/mnt/felhom-drives/hdd_1`, with the guest's mountpoint config unchanged, 26 containers up and every real front door serving. -### Rounds 8-12 +### Round 12 — `use` paperless-ngx / accident: **nothing** (closing control round) + +**00:15:48Z–00:16:55Z.** The night's last round, drawn as a control. + +| the five things | | +|---|---| +| what the customer saw | Nothing at all. The app answered 200 on all three reads, and every front door answered 200 at both readings. | +| what the box did by itself | Nothing needed doing. 26 containers before and after. | +| time to steady | **1 s** — it never left steady. | +| alarm fired / true? | **none, and none should have.** The newest entry in the feed is still round 11's `health_recovered` at 00:13. | +| should have fired, did not | **none** | + +**Checked rather than assumed:** `inject.sh` has no „nothing" case — its default branch exits 2 on an +unknown accident. The control rounds never reach it, because the runner handles the no-accident case +itself and says so („accident: none — control round, deliberately"). This matters because *a broken +injector produces exactly the same result as a control round*, and the only way to tell them apart is +to look at which code path ran. + +**What the closing control round is worth.** It shows the quiet is real: after eleven rounds of power +cuts, resets, full disks, severed networks and a drive pulled out of a running machine, a round in +which nothing was done produced nothing — no alarm, no restart, no drift. The alarm feed is not +simply noisy. + +### Rounds 8-12 — *(written up individually above)* PENDING diff --git a/documentation/audits/evidence-chaos-night-2026-09-17/alarm-truth-table.txt b/documentation/audits/evidence-chaos-night-2026-09-17/alarm-truth-table.txt index bcdf4c0c..befba2e0 100644 --- a/documentation/audits/evidence-chaos-night-2026-09-17/alarm-truth-table.txt +++ b/documentation/audits/evidence-chaos-night-2026-09-17/alarm-truth-table.txt @@ -26,10 +26,13 @@ R11| data drive pulled | storage_disconnected (error) -> app_start_failed x4 | | -> health_recovered (info) | | ("Adatlemez"). Recovery unaided in 67 s after the drive returned. | | | | NOTE: the round's own snapshot missed health_recovered by SECONDS. Re-read after | | | | the precondition found it. Not a missing alarm - a premature reading, caught. +R12| none (control) | none | n/a | none - and none should have. The newest feed entry is still R11's recovery at 00:13. + | | | | Verified the control round runs its OWN path: inject.sh's default branch exits 2, so a + | | | | broken injector could not masquerade as a quiet round. -## Running totals, rounds 1-11 +## Running totals, ALL TWELVE ROUNDS alarms fired: 17 - alarms TRUE: 17 (17/17 - no false alarm in eleven rounds) + alarms TRUE: 17 (17/17 - NO FALSE ALARM IN TWELVE ROUNDS) alarms MISSING: 0 design gaps found: 3 (R-547: a transient full disk is never mentioned to anyone) (R-549: one failed report push spends the whole staleness budget) diff --git a/documentation/audits/evidence-chaos-night-2026-09-17/round-12.txt b/documentation/audits/evidence-chaos-night-2026-09-17/round-12.txt new file mode 100644 index 00000000..4de35257 --- /dev/null +++ b/documentation/audits/evidence-chaos-night-2026-09-17/round-12.txt @@ -0,0 +1,52 @@ +=== how the injector handles a control round (token 'nothing') === + 112: *) say "UNKNOWN ACCIDENT $A"; exit 2 ;; +=== how round 1, the other control round, was invoked === + 1:2026-09-16T21:07:14Z === ROUND 1: offsite-run / adventurelog / accident: nothing === + 40: nothing was announced that had not happened. + round 12 armed for 2026-09-17T00:15:48Z (use paperless-ngx + nothing — the closing control round) +=== round 12 launched 2026-09-17T00:15:48Z (due 00:15:48Z) === +2026-09-17T00:15:48Z ================ ROUND 12 : use paperless-ngx, while: nothing ================ +2026-09-17T00:15:50Z --- BEFORE --- containers=26 paperless=200 status=200 paste=200 +2026-09-17T00:15:50Z (immich/photos is a KNOWN PRE-EXISTING failure — not caused by this round) +2026-09-17T00:15:50Z --- ACTION: use on paperless-ngx --- +2026-09-17T00:15:50Z paperless read 1 -> 200 +2026-09-17T00:15:51Z paperless read 2 -> 200 +2026-09-17T00:15:51Z paperless read 3 -> 200 +2026-09-17T00:15:51Z --- ACCIDENT: none — control round, deliberately --- +2026-09-17T00:15:51Z --- AFTER: what the box did BY ITSELF --- +2026-09-17T00:15:52Z t+1s containers=26 (before 26) +2026-09-17T00:15:52Z STEADY after 1s +2026-09-17T00:15:52Z front doors, FIRST reading at 2026-09-17T00:15:52Z - TOO EARLY to trust if the accident just ended: +2026-09-17T00:15:53Z paperless=200 status=200 paste=200 wiki=200 +2026-09-17T00:16:53Z front doors, SECOND reading at 2026-09-17T00:16:53Z, 60 s later - THIS is the one to trust: +2026-09-17T00:16:54Z paperless=200 status=200 paste=200 wiki=200 +2026-09-17T00:16:55Z household log lines: before=188 after=190 +2026-09-17T00:16:55Z household lines this round: 2 failures: 0 +2026-09-17T00:16:55Z --- alarms --- + | Time | Severity | Type | Message | Source + | Sep 17 00:13 | info | health_recovered | Rendszer állapot helyreállt: ok (volt: warn) | controller + | Sep 17 00:11 | info | storage_reconnected | Meghajtó újra csatlakoztatva: Adatlemez | controller + | Sep 16 23:53 | warning | health_degraded | Rendszer állapot romlott (volt: ok) | controller + | Sep 16 23:51 | warning | app_start_failed | Telepített alkalmazás nem fut: Paperless-ngx | controller + | Sep 16 23:51 | warning | app_start_failed | Telepített alkalmazás nem fut: Jellyfin | controller + | Sep 16 23:51 | warning | app_start_failed | Telepített alkalmazás nem fut: Nextcloud | controller + | Sep 16 23:51 | warning | app_start_failed | Telepített alkalmazás nem fut: Immich | controller + | Sep 16 23:51 | error | storage_disconnected | Meghajtó váratlanul leválasztva: Adatlemez | controller +2026-09-17T00:16:55Z ================ END ROUND 12 ================ + +[exited with code 0] + +## NOTE ON THE CONTROL ROUND'S MACHINERY +inject.sh has no "nothing" case - its default branch is `*) say "UNKNOWN ACCIDENT $A"; exit 2 ;;`. +The control round never reaches it: run_round.sh handles the no-accident case itself and printed +"--- ACCIDENT: none - control round, deliberately ---". Round 1, the other control round, was run +the same way. So the control rounds are control rounds by design, not by an injector no-op that +might have silently failed. Checked rather than assumed, because "nothing happened" is exactly the +result a broken injector would also produce. + +## WHAT THIS ROUND MEASURED +Steady at t+1s. Doors 200 at BOTH readings (00:15:52Z and 00:16:53Z). Household 2 lines, 0 failures +(before=188 after=190). NO new alarm: the newest entry in the feed is still round 11's +health_recovered at 00:13. Nothing was raised about a box that nothing was done to. +That is the point of a closing control round: it shows the alarm feed is not simply noisy, and that +the quiet after eleven rounds of abuse is real quiet.