From 34646295dc27cf1b720ffea2bada87332aa8778b Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Sun, 9 Aug 2026 10:34:57 +0200 Subject: [PATCH 1/4] Rehearsal 2026-08-09: pre-phase + Gate 0 recorded before the destructive walk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Venue demo-hp, operator-approved at STOP 1. Records the state that P1 destroys, plus seven pre-walk findings, while they can still be checked against a live box. R-268 CLOSED — the leaked per-guest local-API token is rotated and the rotation is PROVEN in both directions (old refused, new accepted, channel up with a positive observable). Rotating it surfaced three defects: - an out-of-process rotation does NOT revoke the old token. The daemon serves Lookup from a stale index and re-reads only on a MISS, so a superseded token is a direct hit. Red-proved in a unit probe AND live on hardware; the shipped RemintCoherence test passes only because it looks up the NEW token first. - R-268's own recipe is incomplete: ensureLocalAPI returns early on a present local_api block, so writing bootstrap.json is not enough — the controller serves the old token from controller.yaml across restarts. - the agent-channel alarm never closes: the UP branch does not notify from an unseeded state, and the alarm's own remedy ("re-bootstrap") resets it. Gate 0 complete: dataset planted in the Calibre library (coverage verified, not assumed) with two Hungarian accented filenames; the comparator watched FAILING three ways including an NFC->NFD rename that renders identically; off-site run driven through the product's own button; restore point recorded by identity as snapshot 41c830db, confirmed to carry all four files. Also corrects the record: demo-hp's off-site tier is HEALTHY. Three hub surfaces agreed it was absent and all three mislead — the panel showing 0 snapshots renders the LOCAL tier, 162 KB rounds to 0.0 GB, and a two-day-old stuck event reads as current. And the managed-update floor is live at 0.200.0, not 0.156.0. --- .../REHEARSAL-byo-reinstall-2026-08-09.md | 256 ++++++++++++++++ .../GATE0-before-manifest.json | 26 ++ .../GATE0-demo-hp-before.txt | 282 ++++++++++++++++++ 3 files changed, 564 insertions(+) create mode 100644 documentation/audits/REHEARSAL-byo-reinstall-2026-08-09.md create mode 100644 documentation/audits/evidence-rehearsal-2026-08-09/GATE0-before-manifest.json create mode 100644 documentation/audits/evidence-rehearsal-2026-08-09/GATE0-demo-hp-before.txt diff --git a/documentation/audits/REHEARSAL-byo-reinstall-2026-08-09.md b/documentation/audits/REHEARSAL-byo-reinstall-2026-08-09.md new file mode 100644 index 0000000..9af4eaf --- /dev/null +++ b/documentation/audits/REHEARSAL-byo-reinstall-2026-08-09.md @@ -0,0 +1,256 @@ +# REHEARSAL — the BYO reinstall walk (2026-08-09) + +> **Status: IN PROGRESS.** Pre-phase and Gate 0 are complete; STOP 1 passed. The walk (P1–P7) has not +> started. This file is written before the destructive phase deliberately — a finding that exists only +> in a session that later crashes is a finding nobody has. + +**Venue: `demo-hp` (HP t740, `felhom-host`, guest 9201, customer `demo-hp`).** Operator-approved at +STOP 1. **Driven from DooPlex.** All times UTC unless marked; the host runs CEST (UTC+2). + +--- + +## 1. Baselines — re-confirmed live on arrival, not taken from the spec + +| | spec said | live reading | source | +|---|---|---|---| +| `felhom-agent` | v0.128.0 @ `28ba8593b8` | **0.128.0** on demo-felhom, **0.127.0** on demo-hp; HEAD == `origin/main` == `28ba8593b8` | `felhom-agent --version` on both nodes; `git rev-parse` | +| `felhom-controller` | v0.210.0 @ `c732fe1283` | **0.210.0** demo-felhom, **0.208.0** demo-hp; HEAD == `origin/main` == `c732fe1283` | hub `/configs`; `git rev-parse` | +| hub | v0.101.0 @ `56f8aa611c` | **0.101.0** (deployed image tag matches) | `kubectl get deploy hub`; page footer | +| Day-0 manifest | golden 0.210.0 / agent 0.128.0 / min 0.127.0 | **all three already saved** — golden `0.210.0` (`b9f701fa…`), agent `0.128.0` (`c6eba73b…`), min agent `0.127.0`, wrapper `104db0a4…` | hub `/configuration`, selected `