diff --git a/REPORT.md b/REPORT.md index 963fbf9..e588574 100644 --- a/REPORT.md +++ b/REPORT.md @@ -1,21 +1,17 @@ -# REPORT — v0.280.0: the setup gate (decision 46); "I changed it" (R-710); password fields off the page (R-709); a special-character generator (2026-09-29) +# REPORT — v0.281.0: "Done" asks the app first; sign-up closed after the first admin (decision 47); R-713 (2026-09-29 afternoon) -Architecture: `felhom.eu/documentation/architecture/09-update-architecture.md` §3 decisions 45–46, `01-topology-and-trust.md` -§5. Evidence: `felhom.eu/documentation/audits/login-gate-2026-09-29/`. Session report: `felhom.eu/REPORT-login-gate-2026-09-29.md`. +Architecture: `felhom.eu/documentation/architecture/09-update-architecture.md` §3 decisions 46–47, `01-topology-and-trust.md` +§5. Evidence: `felhom.eu/documentation/audits/gate-rollout-2026-09-29/`. Session report: +`felhom.eu/REPORT-gate-rollout-2026-09-29.md`. -- **Built only after the spike passed** (`B/B-VERDICT.md`). `setup_gate: true` → a fresh install writes - `/traefik/dynamic/setup-gate-.yml` BEFORE the first start (forwardAuth on every router the app's labels - publish, priority 100000 + rule length); the answerer (`/__felhom_gate/auth`, before the host check) lets through only - a host-bound gate cookie, minted after a valid dashboard session on `felhom./__gate/start` (60 s one-use token). - The loop (20 s) opens a gate when `setup_done_probe:` flips; „Kész, beállítottam" opens one without a probe. -- **Tests:** stacks `TestSetupGate_*` (9), `TestGenerateValue_PasswordWithASpecialCharacter`; web `TestSetupGate_*` (4), - `TestSetupGatePage_*`, `TestKnownLogin_*`, `TestR709_*`. `go build`, `go vet`, `go test ./...` green; controller gates - green; parity fixtures: 4 new cases, 6 deploy fixtures regenerated (diff = the R-709 lines and the generator only). -- **Red-proofs RP1–RP16**, each seen failing on an assertion (`C/redproofs/`). -- **Live on 9202** (drill catalog): immich, n8n, audiobookshelf (probe), uptime-kuma (button) — 0 app answers to a - stranger before each gate opened; the household in 0.2 s; a restart kept a closed gate and the household's pass; - immich's phone-app API unchanged after. mealie, wger, calibre-web: default refused, generated signs in. - R-709: the revealed value is not in the settings page. **Delivered:** floor 0.280.0; demo-hp and demo-felhom run it; - demo-hp's "I changed it" pressed on bookstack and calibre-web (the operator's ruling). -- **Not live:** a restore of a gated app (test only; R-648 forbids the whole-box backup a drill would need). -- MinAgent 0.131.0 (unchanged). +- **The press asks the probe first** (409 while "not done" or unreadable); an app without a probe confirms in the page. + Live: zipline pressed before its setup → 409. +- **Sign-up block** (`signup_block:`), written when the gate opens and BEFORE the gate comes down (a failed write keeps + the gate closed); answered by `/__felhom_gate/signup-closed`; the household's 15-minute window. Live on 9202: 11 apps + refused a stranger with the block; the window let a family member in and closed again. Never on an app this box did + not gate (Part 0; read on both demo boxes after the catalog push). +- **R-713:** code-bound `after_install` values refused; `${NAME|base64}`. Live: claper with `"` and `#{`. +- Tests: `TestSetupGateButton_*`, `TestSignupBlock_*`, `TestSignupClosed_*`, `TestSetupGatePage_ConfirmAndSignupCard`, + `TestR713_*`; full suite, vet and controller gates green; parity fixtures regenerated for the changed button only. + Red-proofs RP17–RP24, each seen failing on an assertion (RP22 re-run after its first mutation did not compile). +- Delivered: floor 0.281.0; both demo boxes run it. MinAgent 0.131.0 (unchanged).