From bd92c578347a3e2b92fe63a0bb33e56189cad2cb Mon Sep 17 00:00:00 2001 From: Robert Allan James Date: Wed, 5 Aug 2026 11:29:12 -0400 Subject: [PATCH] FABRIC.md: unblock and restate acceptance for item 4.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Records two decisions and restates item 4.1's Done-when criteria now that §17.7 is DECIDED: word identity maps to a Stadium cell via a kernel-side word_id -> cell_index table in stadium.c, not a new DictEntry field, keeping the shared vendored struct and dict_hash untouched; acceptance no longer leans on the old cache's HotwordsStats (being retired kernel-side, not extended) but on new Stadium-side counters, the hosted build staying unaffected, and a three-arch boot with dict_hash matching the pre-4.1 baseline. Co-Authored-By: Claude Sonnet 5 --- FABRIC.md | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/FABRIC.md b/FABRIC.md index 5ea0965..3e7382a 100644 --- a/FABRIC.md +++ b/FABRIC.md @@ -3227,15 +3227,30 @@ document and committing that amendment as its own item.* (§11).* - [ ] **4.1 — Hot words onto the Stadium.** Replaces the round-robin eviction with density - ranking. Measurable before and after via `stats.evictions` / `stats.promotions`. - *Refs:* §17.3. + ranking, via the reservoir mechanism (§17.7) and a kernel-side `word_id → cell_index` map + (no `DictEntry` change, decided 2026-08-05). *Refs:* §17.3, §17.7. - > **Blocked, 2026-08-04, before any code:** converting `execution_heat` into the Stadium's - > `heat` field turned out not to be the simple `q48_from_u64()` scale first assumed — - > Captain Bob wants real word-level conservation, mirroring §19.1's fleet invariant, and - > that conflicts with the existing absolute promotion threshold and moves `dict_hash`. See - > §17.7 (LEANING, paper only) for the open questions. This item does not resume until §17.7 - > reads DECIDED. + > **Unblocked 2026-08-05 — §17.7 reads DECIDED.** Acceptance restated below now that the + > mechanism itself changed; the original "measurable via `stats.evictions`/ + > `stats.promotions`" presumed reusing the old cache's `HotwordsStats`, which this item + > retires on the kernel side rather than extends. + > + > *Done when:* + > - Kernel builds only: `hotwords_cache_lookup()`/`hotwords_cache_evict_*()` call sites in + > `dictionary_management.c` are bypassed under `__STARKERNEL__`, per §17.3's resolution — + > the old cache's *effect* retires there; its code stays compiled and untouched. + > - Word dispatch feeds the Stadium: an already-resident word gets the reservoir-quantum + > touch (§17.7); a non-resident word attempts `stadium_admit()` with a starter-quantum + > candidate on every dispatch (Option B). + > - New Stadium-side promotion/eviction counters exist (same shape as + > `HotwordsStats.promotions`/`.evictions`, not that struct) and are observable via a + > diagnostic word or boot console output. + > - Hosted builds are unaffected — `execution_heat`, the old cache, and its stats keep + > working exactly as today; no shared-source behaviour changes for hosted. + > - All three architectures boot to `ok>`/`zuse)ok>` with logs under `logs/`. `dict_hash` + > is expected to still match the pre-4.1 baseline exactly, since it hashes only name and + > `execution_heat`, and neither changes under this item — a mismatch means something + > leaked into the hashed fields and is a regression, not something to explain away. - [ ] **4.2 — Hermes native on the Stadium.** The proving ground; produces the effort number. *Refs:* §10. - [ ] **4.3 — Console.** Settles 1.11 as part of the work. *Refs:* §17.5.