FABRIC-3.md: BMAPFMT gets FORTH wrappers, design fully closed

Decided: yes, FORTH wrappers for the block-card ACL primitives, mirroring
the word-level ACL split (raw C accessors, policy composed in FORTH).
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 (owner_fp, acl_allow, acl_ttl, flags bits, FORTH
wrappers) is now fully decided across this and the prior three passes --
only the actual code edit remains.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-02 18:36:52 -04:00
co-authored by Claude Opus 5
parent ce1618dcd8
commit 197ff03963
+21 -6
View File
@@ -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)