diff --git a/FABRIC-3.md b/FABRIC-3.md index 7919d6d..f987e51 100644 --- a/FABRIC-3.md +++ b/FABRIC-3.md @@ -1796,10 +1796,20 @@ pubkey-based model — flagged, not silently reused. mechanism as the word card, gated the same way by Zuse's eligibility list (§H.5) — see the `acl_ttl` field added above. Also resolved same day: the `flags` bit values above. -**Not yet scoped (deferred within this node):** whether `blk_get_meta()`/`blk_set_meta()` -need new FORTH word wrappers or stay C-only like `zuse_cert_seed`'s "no FORTH access" -precedent; the actual repurposing edit to `block_subsystem.h`/`.c` itself — this pass (plus -the `acl_ttl` pass before it) produced the full field design, not the code change. +**Decided 2026-09-02: yes, FORTH wrappers.** Mirrors the existing word-level ACL split +exactly — raw C accessors (e.g. `BLK-ACL-ALLOW@`/`!`, `BLK-ACL-TTL@`/`!`, `BLK-OWNER@`), actual +elevation/policy logic composed in FORTH on top, presumably a new capsule alongside `ACL.4th` +— per this project's own standing hard rule ("ACL policy belongs in `ACL.4th`, never in C... +Compose in FORTH first"). `zuse_cert_seed`'s "no FORTH access" is a different case, not a +counter-precedent: that field is private signing-key material, walled off from FORTH for +key-material-specific reasons — block ACL fields (`owner_fp`, `acl_allow`, `acl_ttl`, `flags` +bits) are ordinary ACL state, same category as `DictEntry`'s `acl_allow`/`acl_ttl` (which +already have FORTH accessors), not key material. + +**Only remaining open item on this whole node**: the actual code edit to +`block_subsystem.h`/`.c` plus the new FORTH-wrapper primitives and policy capsule — field/API +design is now fully decided across this pass and the two before it (`acl_ttl`, `flags` bit +values, this FORTH-wrapper decision), nothing implemented yet. ### F.5 — `WIREBIND` (breadcrumb only — followed into `RUNCAP` instead, 2026-08-27) @@ -3688,8 +3698,13 @@ doubling as block state) uses orthogonal bits, not a mutually-exclusive enum. St bit 0 = `CLAIMED`, bit 1 = `MIGRATING` (serves `MIGSM`), bit 2 = `STALE` (serves `UNCLEAN`), remaining 61 bits reserved. -`BMAPFMT`'s field design (TTL + flags bits) is now complete but **the code change was never -made** — this refactor is presumably where it finally lands. +**FORTH-wrapper question decided 2026-09-02: yes.** Mirrors the word-level ACL split — raw C +accessors (`BLK-ACL-ALLOW@`/`!`, `BLK-ACL-TTL@`/`!`, `BLK-OWNER@`), policy composed in FORTH on +top. `zuse_cert_seed`'s C-only precedent doesn't apply — that's key material, block ACL fields +are ordinary ACL state like `DictEntry`'s. + +`BMAPFMT`'s field/API design (TTL + flags bits + FORTH wrappers) is now fully complete but +**the code change was never made** — this refactor is presumably where it finally lands. ### H.7 — Messaging protocol groundwork (prerequisite to the message card)