FABRIC-3.md §H: close gap #3 -- word card IS the existing ACL system

Checked capsules/ACL.4th directly: both existing modes (STRICT, TTL)
already default to allow=1, matching the word card's default-permissive
baseline. Since each VM has its own dictionary, existing per-word ACL
state is already scoped per-session for free. Confirmed: the word card is
the existing acl_ttl/acl_allow/acl_mode/acl_pinned system reused as-is,
not a new parallel structure. Surfaces one new follow-on gap: creator-
ceiling enforcement at VM birth time isn't designed anywhere yet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-02 18:52:32 -04:00
co-authored by Claude Opus 5
parent fdecb91908
commit 33286cb3a2
+20 -8
View File
@@ -3629,10 +3629,21 @@ the message card at once — one card per relevant axis. **Confirmed: an action
the cards for the dimensions it actually touches** — a pure VM-level operation only checks the
VM card, not the full stack every time.
Whether/how the existing word-level ACL (`acl_ttl`/`acl_allow`/`acl_mode`/`acl_pinned` on
`DictEntry`, see `.claude/CLAUDE.md`'s "Word-Level ACL System") folds into or reconciles with
this new stack-of-cards model is unresolved — the word card (H.5) explicitly reuses one piece
of it (`ACL-TTL`), but the rest is open.
**Word-ACL reconciliation resolved 2026-09-02.** Checked `capsules/ACL.4th` directly: both
existing modes (`STRICT` — "always allow, TTL stays 0 (recheck always)"; `TTL` — "compute TTL
from heat; set allow=1") already default to `allow=1` — no path in the current system denies
by default, already matching the word card's "default-permissive baseline" almost exactly.
Since each VM has its own dictionary (H.10), the existing per-word ACL state is already
naturally scoped per-session, for free. **Confirmed: the word card is not a new parallel
structure — it's the existing `acl_ttl`/`acl_allow`/`acl_mode`/`acl_pinned` system, wholesale,
reused as-is.** The stack-of-cards framing is new vocabulary for what already exists, not a
new mechanism.
**The one genuinely new piece, not present in today's system at all**: creator-ceiling
enforcement. Nothing today caps a newly-birthed VM's word-ACL state against its parent's —
this needs to happen somewhere in capsule birth (copying/capping the child dictionary's
`acl_allow`/`acl_mode`/`acl_pinned` against the parent's own values at birth time). Where
exactly this lands in the birth flow is not yet designed.
### H.4 — VM card
@@ -3747,10 +3758,11 @@ Explicitly open items surfaced during this capture pass, none decided yet:
2. **CLOSED 2026-09-02 — `parent` and `name` session fields (H.2).** Confirmed as-is, no
adjustment. All five session fields now confirmed (still subject to the general
"revisiting... around and around" caveat, but no longer an open gap specifically).
3. **Word-level ACL reconciliation (H.3).** How (or whether) the existing
`acl_ttl`/`acl_allow`/`acl_mode`/`acl_pinned` `DictEntry` fields fold into the stack-of-
cards model, beyond the one confirmed reuse (`ACL-TTL` as the word card's escape hatch,
H.5).
3. **CLOSED 2026-09-02 — word-level ACL reconciliation (H.3).** The word card *is* the
existing `acl_ttl`/`acl_allow`/`acl_mode`/`acl_pinned` system, wholesale, no new parallel
structure. New follow-on gap surfaced by this closure: creator-ceiling enforcement at VM
birth time isn't designed anywhere yet (nothing today caps a child's word-ACL state against
its parent's).
4. **CLOSED 2026-09-02 — temporary-elevation invocation path (H.5).** Trigger decided: a live
message-based request (`ELEVATE-REQUEST` on `common` or a private topic, Zuse's session
grants/`NACK`s, write happens on receipt via `ACL-ALLOW!`/`ACL-TTL!`), gated by a