diff --git a/FABRIC-3.md b/FABRIC-3.md index 022cced..7919d6d 100644 --- a/FABRIC-3.md +++ b/FABRIC-3.md @@ -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)