96829d0d0f
gates / gates (push) Successful in 3s
- family_gate / family_gate_except / min_controller format (README, REUSE); gate family-gate + decoys - templates/grimmory (v3.5.0, exceptions OPDS/Kobo/KOReader/Komga) + onboarding/grimmory.md - templates/metube (2026.09.29, no exceptions; ladder .28 -> .29) + onboarding/metube.md; fixture MeTube - volume-persistence gate: routed port read from the label NAME (R-801, red-proofed); APP_EXERCISE (R-788) - box_walk: family_cookie; no cached "not gated" while an app has no router Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
1.7 KiB
1.7 KiB
REPORT — the family gate in the catalog: Grimmory and MeTube published (2026-10-02)
Session report: felhom.eu/REPORT-family-gate-2026-10-02.md. Evidence: felhom.eu/documentation/audits/family-gate-2026-10-02/.
- Format:
family_gate: true,family_gate_except:(literal prefixes, anchored by the box),min_controller:(README §family gate; REUSE row). Gatefamily-gate(check-family-gate.py): refuses a non-literal exception, an exception without the gate, a missing/lowmin_controller, and a family app while the newest baked golden < 0.287.0. Decoys seen red:B/family-gate-decoys-red.txt. - Grimmory published (v3.5.0 + mariadb:11.4): setup gate for the first admin + the family gate for good; exceptions
OPDS v1/v2, Kobo, KOReader, Komga API — a stranger measured on each (the app's own 401), look-alikes stay gated.
Record
onboarding/grimmory.md, all 61 ids. R-775's lock cannot be aimed from outside any more. - MeTube published (2026.09.29): behind the family gate with no exception; the websocket passes the gate for a
member (101) and is refused for a stranger; downloads to
${USERDATA_PATH}/media/metube; own-use sentence (hu, en). Ladder 2026.09.28 → .29 (bench + 9202). Recordonboarding/metube.md, all 61 ids. - Gates on the bench:
catalog_gates.py grimmoryandmetubeexit 0, every gate OK, family-gate against golden 0.287.0. - Found and fixed here: the volume-persistence gate never sent a request to any app (port read from label values;
R-801,
routed_ports(), red-proofed) — a full re-sweep is owed;APP_EXERCISEgives MeTube its own write path (R-788).box_walk.pyno longer caches "not gated" from a moment without a router.