Move fabric.4th + font.4th to hestia/init.4th -- FABRIC-3.6.md tasks 1.6+1.7 (merged)

Tasks 1.6 and 1.7 are not independent, and the punchlist's split was
wrong: font.4th calls G-LINE/G-ELLIPSE, which are fabric.4th's own
words. Confirmed live before committing to an approach -- removed only
fabric.4th's EXEC from init.4th, left font.4th's in place, booted
amd64: Hera's boot floods with UNKNOWN WORD: 'G-LINE'/'G-ELLIPSE' the
moment font.4th loads (logs/20260919-171047/amd64/, kept as evidence).
Reverted that partial state, asked Captain Bob how to proceed given
neither task can independently pass its own three-arch-boot check, and
was told to use best practices.

Moved both together, in their original relative order, into a new
capsules/hestia/init.4th block 4988 -- a deliberate, documented
deviation from "one task, one commit," not a bundling of convenience.

Three-arch boot clean: amd64/aarch64/riscv64 all reach [zuse@Hera] ok>,
zero UNKNOWN WORD. Hestia's dict_hash identical across all three
architectures. Verified the shrink/grow live, not just inferred from
hash movement: HERE reads 20008 in Hera, 63040 in Hestia post-move.
CART-PLOT in Hera is UNKNOWN WORD; the identical call routed into
Hestia via VM-EXEC reaches the word and fails on a stack underflow
instead, proof it exists there since an unknown word can't underflow.

mkcapsule --lint capsules/ clean, 38 files / 0 violations. MANIFEST.md
updated: init.4th's block 2049 entry no longer lists fabric.4th/
font.4th; hestia/init.4th's entry gains block 4988.

Authorized by Captain Bob ("Use best practices.").

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-19 17:25:23 -04:00
co-authored by Claude Sonnet 5
parent 487769e18a
commit 5afb33049f
13 changed files with 40538 additions and 23 deletions
+29 -2
View File
@@ -379,9 +379,36 @@ Hestia; headless policy intact.
the idle prompt for 5–10s on all three architectures and confirmed it **stopped growing**
(last real output, `StarForth CLI`/`ok>`, with nothing appended after) rather than flooding
or silently stalling mid-boot. No compiler warnings.
- [ ] **1.6** — Move `fabric.4th` from `init.4th` to `hestia/init.4th`. *Check:* Hera's dict
- [x] **1.6** — Move `fabric.4th` from `init.4th` to `hestia/init.4th`. *Check:* Hera's dict
shrinks, Hestia's grows; cross-arch identity holds.
- [ ] **1.7** — Move `font.4th` likewise. *Check:* same.
**Merged with task 1.7 into one commit — see that entry.** Real dependency discovered
while attempting 1.6 alone, not a convenience bundling: recorded here and there.
- [x] **1.7** — Move `font.4th` likewise. *Check:* same.
2026-09-19 · **finding, not a defect: 1.6 and 1.7 are not independent, and doing 1.6 alone
breaks Hera's boot.** `font.4th` calls `G-LINE`/`G-ELLIPSE`, which are `fabric.4th`'s own
words (`fabric.4th` blocks 5000–5002 per `font.4th`'s own comment). Confirmed live before
committing to either approach: removed only `fabric.4th`'s `EXEC` from `init.4th`, left
`font.4th`'s in place, booted amd64 — Hera's boot floods with `UNKNOWN WORD: 'G-LINE'`/
`'G-ELLIPSE'` the moment `font.4th` loads (`logs/20260919-171047/amd64/`, kept as evidence,
not deleted). Reverted that partial state immediately (`git checkout --
capsules/init.4th`), asked Captain Bob how to proceed given the two tasks as separately
scoped can't each independently pass their own three-arch-boot check, and was told to use
best practices. **Merged both into this one commit**, moving `fabric.4th` and `font.4th`
together, in their original relative order, into a new `capsules/hestia/init.4th` block
4988 — a deliberate, documented deviation from "one task, one commit," not a bundling of
convenience.
`logs/20260919-171942/amd64/`, `logs/20260919-172123/aarch64/`,
`logs/20260919-172253/riscv64/` — all three reach `[zuse@Hera] ok>`, zero `UNKNOWN WORD`.
Hestia's `dict_hash` (`0xe4e6b1916827e320`, capsule_hash `0x6aa0a1b5daf9d2ec`) identical
across all three architectures. **Verified the shrink/grow live, not just inferred from
hash movement**: `HERE .` reads `20008` in Hera, `63040` in Hestia (post-move) — a huge gap
confirming Hestia's dictionary now genuinely holds the drawing vocabulary. `CART-PLOT` in
Hera returns `UNKNOWN WORD: 'CART-PLOT'`; the identical call routed into Hestia via
`VM-EXEC` reaches the word and fails on a stack underflow instead (`>R: DSP underflow`) —
proof the word exists there, since an unknown word can't underflow. `mkcapsule --lint
capsules/` clean, 38 files, 0 violations. `MANIFEST.md` updated: `init.4th`'s block 2049
entry no longer lists `fabric.4th`/`font.4th`; `hestia/init.4th`'s entry gains block 4988.
- [ ] **1.8** — Move `PLOT`/`FB-WIDTH`/`FB-HEIGHT` registration to Hestia's table **only**.
*Check:* **positively verify** a non-Hestia VM calling `PLOT` gets `UNKNOWN WORD`.
- [ ] **1.9** — Assert §XVIII.6's headless invariant: Hestia's birth sets no