gates / gates (push) Successful in 6m39s
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
120 lines
7.2 KiB
Markdown
120 lines
7.2 KiB
Markdown
# REPORT — a restored app never comes back open; test builds move with the floor; Prowlarr links itself; the first release under the new rule (2026-10-15)
|
||
|
||
Written in ASD-STE100 Simplified Technical English. Design read first: `09-update-architecture.md` §3 decisions 46–49 and
|
||
245–253, `07-backup-architecture.md`, `15-media-library.md` §6. Evidence: `documentation/audits/gate-restore-2026-10-15/`.
|
||
|
||
## What waits on you
|
||
|
||
1. ~~Plex code~~ — done: your code claimed demo-hp's Plex at 13:32 UTC (addendum below).
|
||
2. **A throwaway customer for the new-box proof (R-1052).** Make it in the hub in your browser, or name one I may reuse.
|
||
Since hub 0.153.0, a customer can be created only from your browser session (decision 252), so my token cannot do it.
|
||
If you do nothing: nobody has seen a brand-new box reach the floor by itself.
|
||
|
||
## 1. A restored app: closed until the household is set up? — Yes. Proven.
|
||
|
||
- The per-app backup now records the setup gate: closed or open, and by whom.
|
||
- A restore puts the gate back as it was:
|
||
- closed then → closed now;
|
||
- open then → open;
|
||
- no record (a backup made before 0.314.0) → closed until the app's own check or „Kész" opens it.
|
||
- Never open by default.
|
||
- **Live proof on scratch guest 9202:**
|
||
- Prowlarr was installed. No account was made. The update took the app's backup. The app was removed, keeping its
|
||
backups, and then restored.
|
||
- Then a stranger got the gate: `/ping` 401, `/` 302 to the gate page, `/initialize.json` 401.
|
||
- The household got through: 200.
|
||
- The box's log says: „restored with its setup gate CLOSED — it was closed when the backup was taken".
|
||
- „Kész, beállítottam" then opened it.
|
||
- The same walk on the old code gave the stranger 200.
|
||
- **Tests:** ten deliberate breaks of the code; each one made a test fail.
|
||
- **Plex:** it follows the same rule. A unit test proves it with Plex's gate shape. I did not restore a live Plex.
|
||
|
||
## 2. Did Tester 1 leave the test build by itself? — Yes, from the new test build.
|
||
|
||
- **It could not leave `rc.4` by itself.** The floor check runs in the code the box runs, and `rc.4` has the old check.
|
||
- So I put Tester 1 on `0.314.0-rc.1` by hand. Then the floor 0.314.0 moved it to the release by itself, at 13:09:38 UTC:
|
||
„update successful (0.314.0-rc.1 → 0.314.0)".
|
||
- It moved at its next regular report, 14 minutes after the floor was set. The other two boxes moved within 13 seconds.
|
||
That difference is row R-1061 (P4).
|
||
|
||
## 3. Prowlarr: linked with no button? — Yes.
|
||
|
||
- On 9202: Sonarr first, then Prowlarr. The box ran its link step when Prowlarr came up. Sonarr appeared in Prowlarr's
|
||
Apps about 40 seconds later. A second run wrote nothing („unchanged"). Prowlarr's own connection test: 200.
|
||
- The catalog text and the website card no longer mention the button (catalog `e67aad4`).
|
||
|
||
## 4. The release
|
||
|
||
- **Version:** controller **0.314.0**, MinAgent 0.155.0. No golden (decision 250).
|
||
- **Three test boxes:** each got a per-customer floor of 0.314.0 through my token (the normal update path).
|
||
- demo-hp and demo-felhom ran 0.314.0 within 13 seconds.
|
||
- Tester 1 followed at 13:09:38 UTC, by itself.
|
||
- **Box walk checks, all three green:**
|
||
- https-only: every public name redirects to https;
|
||
- 0 unhealthy, 0 restarting and 0 stopped containers;
|
||
- the controller is healthy, and the dashboard answers 200.
|
||
- **Global floor raised by CC with its token at 13:11:04 UTC:** 303 `floor_set`. Read back from the hub database (with
|
||
its WAL): floor `0.314.0`, declared MinAgent `0.155.0`. The three per-customer floors were cleared afterwards.
|
||
demo-hp's old 0.311.0 floor was already gone.
|
||
- **Plex (R-1060):** every call to Plex now goes to the container's address. On 9201 a fake code through the dashboard
|
||
was taken as local: Plex asked plex.tv and got 500 after 938 ms. Before the fix it was 401 in 0 ms.
|
||
- **A new box reaching the floor (R-1052):** NOT done. It needs a throwaway customer (see above).
|
||
|
||
## 5. Wrong claims in the prompt; commits; register; STATUS
|
||
|
||
**Claims in the prompt that turned out wrong:**
|
||
|
||
1. „Tester 1 must leave `rc.4` by itself": impossible. `rc.4` runs the old floor check (§2).
|
||
2. „CC's token (`~/.felhom-hub/cc-token`)": the token is `HUB_TOKEN` in `~/.config/credentials`. The path does not exist.
|
||
3. „Claimed as a throwaway customer … customer deletion is session only": customer *creation* is session only too
|
||
(decision 252). CC cannot start R-1052 at all.
|
||
4. „Every controller call to Plex uses the host name `plex` (four calls)": there are five. The fifth is the general
|
||
health check's `GET /identity`. Plex answers that page to anyone (200), so I left it as it is.
|
||
|
||
**One slip of my own:** the previous task's brief said „No Co-Authored-By", but my commits that day still carried that
|
||
line (felhom.eu `2f1f6c80`, `02be5006`, `0cd9fa32`, `fb2e6b69`, `d23df1a2`; catalog `73b45a6`). The commits of this task
|
||
do not carry it.
|
||
|
||
**Commits:**
|
||
|
||
- felhom-controller: `17863fe` (code + CHANGELOG + README + REUSE), `97c992a` (a missed test file), `85f65c7`
|
||
(CONTEXT, REPORT).
|
||
- app-catalog-felhom.eu: `e67aad4` (Prowlarr's text).
|
||
- felhom.eu: this commit — decision 253 in `09`, `07`, `15` §6, the skill's release steps, the register, STATUS, CONTEXT,
|
||
the evidence.
|
||
- Drill catalog (test only): `fd4b9f1`, `c42d92b`.
|
||
|
||
**Images:** `felhom-controller:0.314.0-rc.1` (test) and `felhom-controller:0.314.0` (release).
|
||
|
||
**Register:** before **157** · opened **1** (R-1061) · closed **5** (R-1023, R-1053, R-1057, R-1058, R-1060) · after **153**.
|
||
R-1052 blocked on you.
|
||
|
||
**STATUS.md:** 58 lines. **Not-walked claims:** 35 of 55 (no change).
|
||
|
||
**Teardown:**
|
||
|
||
- Machines:
|
||
- 9202 is back on the live catalog, and its test mirror is deleted. It runs 0.314.0, with no test apps left.
|
||
- 9201: no test apps left. Its Plex is claimed to your Plex account.
|
||
- Tester 1 runs 0.314.0. Its media rig was kept.
|
||
- Hub: only the floors changed. The per-customer floors are empty again.
|
||
- Nothing ran on ep0.
|
||
|
||
## Addendum — the real Plex claim (13:32 UTC)
|
||
|
||
- You saved a fresh code. The watcher gave it to the dashboard's own claim call on demo-hp 9201, then shredded the file.
|
||
- Result: 200, „claimed": true, in 11.8 s. The box opened the gate by itself. Plex says „claimed": true.
|
||
- A stranger now meets Plex's own sign-in: the web page 200, the library 401 without a token.
|
||
- One library wiring run: `plex=done(2)` — it switched on Plex's „scan on change" settings.
|
||
- R-1060 is closed. Evidence: `documentation/audits/gate-restore-2026-10-15/plex9201/02-claim.txt`.
|
||
|
||
## Addendum 2 — a new box reaches the floor by itself (R-1052, 14:06 UTC)
|
||
|
||
- You made the test customer Tester3 with a placeholder domain (`tester3.test`). The floor path does not need a real domain.
|
||
- I installed a VM on demo-hp from the public installer, bound it through the mailed link with your phrase, and claimed it.
|
||
- **It updated itself from the golden 0.313.0 to the floor 0.314.0, 2 min 52 s after the bind** („auto-floor"), before
|
||
anyone claimed the dashboard. The hub's reports and the box's own record say the same.
|
||
- Then I switched it off through its own dashboard (the hub knows it was on purpose, so no alarm mail) and removed the VM.
|
||
- R-1052 is closed. Register now **152** (closed 6 in this task).
|
||
- **Waits on you:** delete customer Tester3 in the hub (browser only).
|