Gate rollout 2026-09-29 afternoon: 32/34 gated, sign-up blocks (decision 47 + CC mechanism), R-713; R-707/R-711/R-713 closed, R-714..R-716 opened; STATUS, CONTEXT, report
gates / gates (push) Successful in 27s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-29 11:25:14 +02:00
parent fd9c77b92e
commit 1749e73e50
83 changed files with 1303 additions and 21 deletions
@@ -136,7 +136,9 @@ the dashboard's own `/__gate/start`). The controller is in an app's request path
open, the gate's traefik router is removed and the app is reached exactly as without it. The gate decides who creates
the first admin. **Who may sign up afterwards** is `09` §3 decision 47 (operator ruling 2026-09-29): once the first admin
exists, open sign-up is closed; only the admin adds people, from the app's own user page. An app that cannot close it
says so on its page.
says so on its page. Mechanism (controller ≥ 0.281.0): the box keeps a small traefik router on the app's own sign-up
address once the gate opens, answered "sign-up is closed" by the controller; the household opens it for 15 minutes
from the app page to let a family member in. The controller is in THAT address's path only.
---
@@ -515,7 +515,18 @@ R-636's louder repeated alarm.
the household's first admin exists, a stranger can no longer make an account; only the admin adds people, from the
app's own user page, and the app page says how. Where an app cannot close sign-up, it stays in the catalog and its
page says plainly that anyone who finds the address can make an account; STATUS asks the operator about it.
Mechanism and per-app proof: *(filled in by the 2026-09-29 afternoon session)*.
**Mechanism — decided by CC unattended 2026-09-29, operator may reverse.** *How does the box close sign-up in apps
that keep the switch only in their own admin settings?* Options: (a) per-app switches — an env read at start plus a
restart, or the app's admin API; (b) a box-side block of the app's own sign-up address once the gate opens, with a
household window to let a family member in. Costs: (a) measured impossible for most — opengist and wishlist keep
it only in their admin settings (no env, no CLI), vikunja has an env but then no way to add a user except its CLI;
(b) one more traefik router per app, and a family member joins through a 15-minute window instead of an in-app
invite. **Chose (b)**: it works the same for every app, needs no credentials and no restart, and leaves installed
apps untouched (only an app whose gate this box opened gets a block). Built in controller v0.281.0
(`internal/stacks/signup_block.go`): the block goes up before the gate comes down; a failed write keeps the gate
closed. **Proven on 9202:** 11 apps let a stranger sign up after the setup and refused it with the block; 11 more
refuse by themselves; the window let a family member in and closed again. wanderer cannot be gated yet (R-714).
Evidence `audits/gate-rollout-2026-09-29/`.
Same day, operator: CC changes the admin passwords of demo-hp's installed bookstack and calibre-web and stores them
in the operator's credentials file (not in any repo).