9821690980
gates / gates (push) Successful in 28s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2.6 KiB
2.6 KiB
REPORT — v0.287.0: the family gate (decisions 63/64, R-780) — 2026-10-02
Full session report: felhom.eu/REPORT-family-gate-2026-10-02.md. Evidence: felhom.eu/documentation/audits/family-gate-2026-10-02/
(A = the controller live on 9202, B = the catalog apps on 9202, B4 = a demo box, E = the floor). Architecture read:
01-topology-and-trust.md §5 (now with the family gate paragraph), 09 §3 decisions 46, 47, 63, 64.
What shipped (v0.287.0, commits 977665d + c8d5ee2)
internal/family— the household's family members: own name + password each (4×4 letters, shown once, bcrypt infamily.json0600), sessions of 30 days, asked on EVERY request (Valid), so reset / remove / logout end access at the next request. A wrong name costs the same bcrypt time as a right one.internal/stacks/family_gate.go— a template'sfamily_gate: truegets a traefik forwardAuth door per router, written BEFORE the first start (an app is never published open);family_gate_except:literal prefixes become routers without the door, anchored^/prefix(/|$)(finding F1); the record is written at install and at a removed app's restore; the tick rewrites/removes the files.min_controller:refuses a template that needs a newer box.internal/web/family_gate.go—/__felhom_gate/family(forwardAuth),/__family/start|login|logouton the dashboard host; the family cookie (Path=/__family) is NEVER accepted by RequireAuth; the sign-in locks per visitor (5/min, viarateKey, R-753) and per name (10/10 min). The Család card (Settings → Security): add / new password / remove, password once,no-store. hu + en, informal „te", no „kérjük"; parity green.
Proof
- Tests:
internal/family/family_test.go,internal/stacks/family_gate_test.go,internal/web/family_gate_test.go. Red-proofs RP-F1..F7 (each mutant made its named test fail, then reverted):A/RP-F-family-gate-mutants.txt. Full suite rc 0;controller_gates.pyOK. - Live on 9202 through the product (
A/items.txt): a stranger 0 app answers of 36 (LAN + simulated tunnel); members in with their own logins, the websocket 101; reset/remove/logout end access at once; a stranger's 7 guesses locked only the stranger; each Grimmory exception kept Grimmory's own login and the look-alikes stayed gated; the controller down → 500, never the app; the gate's own cost 0.49 ms median. Survived an Update and a remove + restore (B/box/). - Floor 0.287.0 (min_agent 0.131.0): both demo boxes on 0.287.0 in ~25 s (
E/floor.txt). Golden 0.287.0 baked, round-tripped, vouched (felhom.eu/documentation/tests/golden-0.287.0-2026-10-02/).