§H.12 steps 10-11: creator-ceiling enforcement, birth-time ACL snapshot
dictionary_snapshot_acl_from_parent(child, parent): walks the child's dictionary, copies acl_allow/acl_mode/acl_pinned/acl_ttl from the parent's matching word (by name, via vm_find_word() -- FIND's own lookup, not modified) onto the child's entry. One-time snapshot at birth, no live sync, matching H.3's decided rationale (a program developed against one ACL set must not have it silently changed by later parent changes). Called once, after dict_hash/parity logging rather than before -- the snapshot depends on the parent's current ACL state, which can vary run-to-run once Zuse elevations exist, so applying it earlier would break the "same capsule twice produces the same dict hash" determinism invariant. Verified 3-arch boot to ok> (amd64/aarch64/riscv64). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ed86a759e1
commit
a268abe925
+15
-5
@@ -4024,11 +4024,21 @@ work, not new invention.
|
||||
which also exercises 8 and 9 unchanged.
|
||||
|
||||
**Phase 4 — Creator-ceiling enforcement (H.3, birth-time snapshot)**
|
||||
- [ ] **10.** `dictionary_snapshot_acl_from_parent(child, parent)`: for each word also present
|
||||
in the parent's dictionary, copy `acl_allow`/`acl_mode`/`acl_pinned`/`acl_ttl` into the
|
||||
child's matching entry.
|
||||
- [ ] **11.** Call it once, right after a child's dictionary finishes loading in
|
||||
`capsule_birth.c`.
|
||||
- [x] **10. DONE 2026-09-03.** `dictionary_snapshot_acl_from_parent(child, parent)` added as a
|
||||
static helper in `capsule_birth.c`: walks `child->latest`'s link chain, looks up each name
|
||||
in `parent` via `vm_find_word()` (the same C-level lookup `FIND` itself uses — not a
|
||||
modification to `FIND`, per the standing "never modify `FIND`" rule), copies
|
||||
`acl_allow`/`acl_mode`/`acl_pinned`/`acl_ttl` onto the child's matching entry when found.
|
||||
Baby-specific words the parent doesn't have are left untouched — nothing to cap them
|
||||
against.
|
||||
- [x] **11. DONE 2026-09-03.** Called once via `vm_find_entry_ptr(parent)` (the same internal
|
||||
registry lookup `capsule_birth_mama()` already uses for Hera's own entry) to get the
|
||||
parent's live `VM*`, right after `dict_hash`/parity logging — deliberately *after*, not
|
||||
before: the snapshot depends on the parent's *current* ACL state, which can vary run-to-run
|
||||
once Zuse-granted elevations exist, so applying it before the hash would make
|
||||
`birth_dict_hash` no longer a pure function of capsule content, breaking the "same capsule
|
||||
booted twice produces the same dict hash" determinism invariant this codebase relies on
|
||||
elsewhere. Verified 3-arch boot to `ok>` (amd64/aarch64/riscv64).
|
||||
|
||||
**Phase 5 — `BMAPFMT` (§F.4/§H.6, independent, can run any time)**
|
||||
- [ ] **12.** Edit `blk_meta_t` in `include/block_subsystem.h`: replace the old 4 ownership
|
||||
|
||||
Reference in New Issue
Block a user