FABRIC-3.md: BMAPFMT flags bit values decided -- CLAIMED/MIGRATING/STALE

blk_meta_t's existing unused flags field (uint64_t) uses orthogonal bits,
not a mutually-exclusive enum: bit 0 = CLAIMED, bit 1 = MIGRATING (serves
MIGSM), bit 2 = STALE (serves UNCLEAN), 61 bits reserved. BMAPFMT's field
design (owner_fp, acl_allow, acl_ttl, and now these flags bits) is fully
decided; only the actual code edit to block_subsystem.h/.c remains.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-02 18:29:05 -04:00
co-authored by Claude Opus 5
parent a05e6d60ba
commit ce1618dcd8
+20 -12
View File
@@ -1782,21 +1782,24 @@ pubkey-based model — flagged, not silently reused.
placeholder to fill reflexively. */
uint64_t reserved_future; /* untouched budget, same reasoning. */
```
`flags` (already existing, already generic) does double duty as the **state** field from
Step 1 — no new field, just future-defined bit values (`CLAIMED`/`MIGRATING`/`STALE`/etc.).
Everything else in `blk_meta_t` (`checksum`, timestamps, `content_type`, hash, chain links,
`app_data[15]`) is untouched.
`flags` (already existing, already generic, `uint64_t` on `blk_meta_t`, confirmed unused —
zero callers) does double duty as the **state** field from Step 1. **Bit values decided
2026-09-02**: orthogonal bits, not a mutually-exclusive enum — a block can be both
`CLAIMED` and `MIGRATING` at once. Starting set: bit 0 = `CLAIMED`, bit 1 = `MIGRATING`
(serves `MIGSM`), bit 2 = `STALE` (serves `UNCLEAN` — interrupted flush), remaining 61 bits
reserved. Everything else in `blk_meta_t` (`checksum`, timestamps, `content_type`, hash,
chain links, `app_data[15]`) is untouched.
4. **Allocation granularity**: claims quantize to whole devblocks (3 Forth blocks), matching
the existing packing — a cell never needs to describe partial-devblock ranges.
**Resolved 2026-09-02 (part of item #1 below):** blocks need temporary elevation, reusing the
same `ACL-TTL` mechanism as the word card, gated the same way by Zuse's eligibility list
(§H.5) — see the `acl_ttl` field added above.
**Resolved 2026-09-02:** blocks need temporary elevation, reusing the same `ACL-TTL`
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):** the specific `flags` bit values for each
state; 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 produced the field design, not the code change).
**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.
### F.5 — `WIREBIND` (breadcrumb only — followed into `RUNCAP` instead, 2026-08-27)
@@ -3680,7 +3683,12 @@ became a 4-byte `acl_ttl` (mirroring `DictEntry`'s countdown shape) plus 3 bytes
slack, kept lean rather than fully mirroring `DictEntry`'s `acl_mode`/`acl_pinned` too
("lean, TTL only" — a block isn't "pinned"/"strict" the way a word is).
`BMAPFMT`'s field design (now including the TTL) is done but **the code change was never
**`flags` bit values decided 2026-09-02**: `blk_meta_t`'s existing `flags` field (`uint64_t`,
doubling as block state) uses orthogonal bits, not a mutually-exclusive enum. Starting set:
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.
### H.7 — Messaging protocol groundwork (prerequisite to the message card)