FABRIC.md: unblock and restate acceptance for item 4.1

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 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-05 11:29:12 -04:00
co-authored by Claude Sonnet 5
parent c0bbff21c9
commit bd92c57834
+23 -8
View File
@@ -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.