Rename FABRIC series: FABRIC.md->0, FABRIC-2.md->1, FABRIC-3.md->2, FABRIC-4.md unchanged

FABRIC.md -> FABRIC-0.md
FABRIC-2.md -> FABRIC-1.md
FABRIC-3.md -> FABRIC-2.md (the current/living document)
FABRIC-4.md unchanged (new #3 to follow separately)

Every cross-reference repo-wide updated to match, including doc-comment
citations inside kernel source (.c/.h) files -- done via an ordered
placeholder substitution (FABRIC-3.md->placeholder2, FABRIC-2.md->
placeholder1, FABRIC.md->placeholder0, then placeholders resolved to
final names) in a single pass per file to avoid double-shifting
already-renamed references.

One line in capsules/font.4th grew past the 64-char block-format limit
as a side effect of the longer filename; shortened it and reverified
with mkcapsule --lint (34/34 pass) before rebuilding.

Verified 3-arch boot to ok> (amd64/aarch64/riscv64, each in the
foreground) after the fix; logs and DoE CSVs from this session's
verification runs included per this repo's own audit-artifact
convention.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019YcT3H2PQeyujrzjqS3Var
This commit is contained in:
Robert Allan James
2026-09-04 11:22:51 -04:00
co-authored by Claude Sonnet 5
parent ff2941dfb9
commit b031b802e3
128 changed files with 37154 additions and 9572 deletions
+4 -4
View File
@@ -5,11 +5,11 @@
--- ---
> **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative. > **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative.
> `FABRIC.md`/`FABRIC-2.md` (repo root — read `FABRIC-2.md` first, it is the current/living > `FABRIC-0.md`/`FABRIC-1.md` (repo root — read `FABRIC-1.md` first, it is the current/living
> one) are the sole design-of-record for Artemis work now. Kept here as historical record > one) are the sole design-of-record for Artemis work now. Kept here as historical record
> only; do not read this for current design authority, and do not cite it in place of > only; do not read this for current design authority, and do not cite it in place of
> `FABRIC.md`/`FABRIC-2.md`. Artemis becoming the pre-Artemis-closeout blocker (item 4.6) is > `FABRIC-0.md`/`FABRIC-1.md`. Artemis becoming the pre-Artemis-closeout blocker (item 4.6) is
> tracked in `FABRIC-2.md`, not here. See `.claude/CLAUDE.md`'s own pointer. > tracked in `FABRIC-1.md`, not here. See `.claude/CLAUDE.md`'s own pointer.
--- ---
@@ -148,7 +148,7 @@ for this scope. `capsules/artemis/init.4th` implements the full flat-pool
target above. target above.
**Corrected 2026-08-13 — the "boots live in the Tripod fleet... on every **Corrected 2026-08-13 — the "boots live in the Tripod fleet... on every
kernel boot" claim below is stale since item 0.1 (`FABRIC.md` Phase 0), kernel boot" claim below is stale since item 0.1 (`FABRIC-0.md` Phase 0),
same pattern already found and fixed in `TRIPOD.md`.** Two distinct things same pattern already found and fixed in `TRIPOD.md`.** Two distinct things
were being conflated: Artemis's block-storage *device* (the virtio-blk were being conflated: Artemis's block-storage *device* (the virtio-blk
disk, `disk/artemis.img`) genuinely does auto-attach at the C level at disk, `disk/artemis.img`) genuinely does auto-attach at the C level at
+5 -5
View File
@@ -10,12 +10,12 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
> **Superseded subsystem docs (Captain Bob, 2026-08-15):** `.claude/TRIPOD.md`, > **Superseded subsystem docs (Captain Bob, 2026-08-15):** `.claude/TRIPOD.md`,
> `.claude/HERMES.md`, `.claude/ARTEMIS.md`, and `.claude/CONSOLE.md` are all superseded — > `.claude/HERMES.md`, `.claude/ARTEMIS.md`, and `.claude/CONSOLE.md` are all superseded —
> `FABRIC.md` and `FABRIC-2.md` (both design history/archival as of 2026-08-25) and > `FABRIC-0.md` and `FABRIC-1.md` (both design history/archival as of 2026-08-25) and
> `FABRIC-3.md` (current/living, read this one first) are the sole authoritative source for > `FABRIC-2.md` (current/living, read this one first) are the sole authoritative source for
> Tripod/Hermes/Artemis/Console work now. The four subsystem docs remain in the repo as > Tripod/Hermes/Artemis/Console work now. The four subsystem docs remain in the repo as
> historical record only; each carries its own superseded-header pointing here. Do not treat > historical record only; each carries its own superseded-header pointing here. Do not treat
> them as current, do not read them for design authority, and do not cite them in place of > them as current, do not read them for design authority, and do not cite them in place of
> `FABRIC.md`/`FABRIC-2.md`/`FABRIC-3.md`. > `FABRIC-0.md`/`FABRIC-1.md`/`FABRIC-2.md`.
> **Scope:** This repo is LithosAnanke — the bare-metal UEFI kernel that boots StarForth > **Scope:** This repo is LithosAnanke — the bare-metal UEFI kernel that boots StarForth
> directly on hardware. StarForth (the hosted FORTH-79 VM) has its own separate repository > directly on hardware. StarForth (the hosted FORTH-79 VM) has its own separate repository
@@ -133,14 +133,14 @@ The word-level ACL system is fully implemented, including kernel parity. Key con
- Measured overhead: +0.0054%–+0.0088% across all 9 cells; CV = 0.000% - Measured overhead: +0.0054%–+0.0088% across all 9 cells; CV = 0.000%
- Report confirmed to exist: `experiments/bare_metal/analysis/report/bare_metal_doe_report.pdf` - Report confirmed to exist: `experiments/bare_metal/analysis/report/bare_metal_doe_report.pdf`
(~2MB, with LaTeX source and figures) — patent support material (~2MB, with LaTeX source and figures) — patent support material
- **Correction (found 2026-08-20/21, `FABRIC-2.md` §§M–T):** the "ACL-RWT" name itself was - **Correction (found 2026-08-20/21, `FABRIC-1.md` §§M–T):** the "ACL-RWT" name itself was
wrong — the Rolling-Window-of-Truth mechanism it was named after was dead code, removed wrong — the Rolling-Window-of-Truth mechanism it was named after was dead code, removed
2026-07-08 (`ACL-RECHECK-RW` was never reachable — `acl_recheck()` only ever looks up the 2026-07-08 (`ACL-RECHECK-RW` was never reachable — `acl_recheck()` only ever looks up the
11-char `ACL-RECHECK`, never the 14-char `-RW` variant). What this campaign actually 11-char `ACL-RECHECK`, never the 14-char `-RW` variant). What this campaign actually
measured was the live `ACL-TTL` mechanism under a misleading name, and at `-O0`, before measured was the live `ACL-TTL` mechanism under a misleading name, and at `-O0`, before
real compiler optimization landed. The corrected, current figure — same live mechanism, real compiler optimization landed. The corrected, current figure — same live mechanism,
correct name, re-run on the current substrate — is **+0.0603% ACL-TTL enforcement overhead, correct name, re-run on the current substrate — is **+0.0603% ACL-TTL enforcement overhead,
architecture-independent, CV=0.000%** (`FABRIC-2.md` §T, memory architecture-independent, CV=0.000%** (`FABRIC-1.md` §T, memory
`project_acl_ttl_overhead_final.md`). Use that number, not the one above. `project_acl_ttl_overhead_final.md`). Use that number, not the one above.
**Before writing or modifying any `.4th` capsule file**, read `experiments/bare_metal/README.md` **Before writing or modifying any `.4th` capsule file**, read `experiments/bare_metal/README.md`
+3 -3
View File
@@ -20,11 +20,11 @@
> **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative, and its > **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative, and its
> core premise below ("Console is a 4th Tripod VM, Quadrupod, StarForth-dialect-only") was > core premise below ("Console is a 4th Tripod VM, Quadrupod, StarForth-dialect-only") was
> architecturally reversed by a later, decided ruling: `FABRIC.md` §17.5 — the framebuffer is > architecturally reversed by a later, decided ruling: `FABRIC-0.md` §17.5 — the framebuffer is
> a **utility**, not a patron, not a VM. What actually shipped is direct C > a **utility**, not a patron, not a VM. What actually shipped is direct C
> (`src/starkernel/hal/console.c`/`vt100.c`/`framebuffer.c` plus keyboard drivers), called > (`src/starkernel/hal/console.c`/`vt100.c`/`framebuffer.c` plus keyboard drivers), called
> straight from the kernel, no Hera-spawned Console VM anywhere. `FABRIC.md`/`FABRIC-2.md` > straight from the kernel, no Hera-spawned Console VM anywhere. `FABRIC-0.md`/`FABRIC-1.md`
> (repo root — read `FABRIC-2.md` first) are the sole design-of-record for Console/framebuffer > (repo root — read `FABRIC-1.md` first) are the sole design-of-record for Console/framebuffer
> work now. Kept here as historical record only. See `.claude/CLAUDE.md`'s own pointer. > work now. Kept here as historical record only. See `.claude/CLAUDE.md`'s own pointer.
--- ---
+2 -2
View File
@@ -5,10 +5,10 @@
--- ---
> **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative. > **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative.
> `FABRIC.md`/`FABRIC-2.md` (repo root — read `FABRIC-2.md` first, it is the current/living > `FABRIC-0.md`/`FABRIC-1.md` (repo root — read `FABRIC-1.md` first, it is the current/living
> one) are the sole design-of-record for Hermes work now. Kept here as historical record > one) are the sole design-of-record for Hermes work now. Kept here as historical record
> only — note its message-layout table (8 cells) is confirmed stale against the real shipped > only — note its message-layout table (8 cells) is confirmed stale against the real shipped
> capsule (9 cells, `capsules/hermes/init.4th`), see `FABRIC-2.md`. Do not read this for > capsule (9 cells, `capsules/hermes/init.4th`), see `FABRIC-1.md`. Do not read this for
> current design authority. See `.claude/CLAUDE.md`'s own pointer. > current design authority. See `.claude/CLAUDE.md`'s own pointer.
--- ---
+4 -4
View File
@@ -5,10 +5,10 @@
--- ---
> **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative. > **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative.
> `FABRIC.md`/`FABRIC-2.md` (repo root — read `FABRIC-2.md` first, it is the current/living > `FABRIC-0.md`/`FABRIC-1.md` (repo root — read `FABRIC-1.md` first, it is the current/living
> one) are the sole design-of-record for Tripod work now. Kept here as historical record > one) are the sole design-of-record for Tripod work now. Kept here as historical record
> only; do not read this for current design authority, and do not cite it in place of > only; do not read this for current design authority, and do not cite it in place of
> `FABRIC.md`/`FABRIC-2.md`. See `.claude/CLAUDE.md`'s own pointer. > `FABRIC-0.md`/`FABRIC-1.md`. See `.claude/CLAUDE.md`'s own pointer.
--- ---
@@ -35,8 +35,8 @@ or work execution logic in Hera — stop. You have the wrong VM.
## The Immediate Goal ## The Immediate Goal
**Corrected 2026-08-13 — stale since item 0.1 (`FABRIC.md` Phase 0), flagged in **Corrected 2026-08-13 — stale since item 0.1 (`FABRIC-0.md` Phase 0), flagged in
`FABRIC-2.md` §A item 5.3, never fixed until now.** This section used to say Hera spawns `FABRIC-1.md` §A item 5.3, never fixed until now.** This section used to say Hera spawns
Hermes and Artemis automatically at boot. She does not, by deliberate design: item 0.1 Hermes and Artemis automatically at boot. She does not, by deliberate design: item 0.1
pruned `capsules/init.4th` to boot Hera alone (confirmed current — pruned `capsules/init.4th` to boot Hera alone (confirmed current —
`capsules/init.4th` births no other VM). Hermes and Artemis-as-VM-patron births happen `capsules/init.4th` births no other VM). Hermes and Artemis-as-VM-patron births happen
+1 -1
View File
@@ -42,7 +42,7 @@ corrected to the valid SMC32 encoding (`0x84000009`).
Full three-arch DoE campaign (`L8-DOE`, 48 trials each) re-run clean on all Full three-arch DoE campaign (`L8-DOE`, 48 trials each) re-run clean on all
three architectures post-fix: stress campaigns 30/30 PASS, clean `BYE` exit, three architectures post-fix: stress campaigns 30/30 PASS, clean `BYE` exit,
no exceptions. Full investigation trail, evidence, and dead ends in no exceptions. Full investigation trail, evidence, and dead ends in
`FABRIC-2.md` Sections H and I. `FABRIC-1.md` Sections H and I.
## 2026-07-24 — Kernel 3-arch acceptance test re-run; amd64 dict_hash non-determinism root-caused (`lithosananke`) ## 2026-07-24 — Kernel 3-arch acceptance test re-run; amd64 dict_hash non-determinism root-caused (`lithosananke`)
+17 -17
View File
@@ -1,8 +1,8 @@
# FABRIC.md — the Stadium # FABRIC-0.md — the Stadium
**Status: CLOSED, 2026-08-12.** This document is archival. It is not edited further and no **Status: CLOSED, 2026-08-12.** This document is archival. It is not edited further and no
new work is added to it — everything still open as of the closure date was carried forward new work is added to it — everything still open as of the closure date was carried forward
into **`FABRIC-2.md`**, which is now the living document. Read `FABRIC-2.md` first for into **`FABRIC-1.md`**, which is now the living document. Read `FABRIC-1.md` first for
current status; come back here only for the historical design argument and decision record current status; come back here only for the historical design argument and decision record
behind it. behind it.
@@ -20,7 +20,7 @@ places were found where something had actually been resolved by later work but t
document's own note was never updated (§19.6 #3, §21.5 #4, the §25.7 `stadium_owner[idx]` document's own note was never updated (§19.6 #3, §21.5 #4, the §25.7 `stadium_owner[idx]`
bullet, and item 4.5's own parent checkbox) — those four are fixed in place below, since bullet, and item 4.5's own parent checkbox) — those four are fixed in place below, since
they were bookkeeping errors, not open work. Everything else genuinely still open is in they were bookkeeping errors, not open work. Everything else genuinely still open is in
`FABRIC-2.md`. `FABRIC-1.md`.
**How to read what remains.** §1–15 are the original design argument, written before any **How to read what remains.** §1–15 are the original design argument, written before any
code was examined. §16 onward are findings and decisions made against the actual tree, in code was examined. §16 onward are findings and decisions made against the actual tree, in
@@ -35,7 +35,7 @@ quotes that reproduce an earlier section verbatim, and in §12's preserved quest
which several sections quote. which several sections quote.
**On `docs/lithosananke/ROADMAP.md`.** As of 2026-08-11, Captain Bob stated this document **On `docs/lithosananke/ROADMAP.md`.** As of 2026-08-11, Captain Bob stated this document
superseded ROADMAP.md entirely. That still holds, transitively, through `FABRIC-2.md` now. superseded ROADMAP.md entirely. That still holds, transitively, through `FABRIC-1.md` now.
--- ---
@@ -375,7 +375,7 @@ Ten minutes on paper. It confirmed the design and caught one case, which is what
## 10. Sequencing ## 10. Sequencing
**FABRIC.md first, then Hermes native on the fabric, then measure, then Console, then **FABRIC-0.md first, then Hermes native on the fabric, then measure, then Console, then
Artemis last.** Artemis last.**
> **Amended by §16.5 and §21.2.** This ordering is still right for the *subsystems*, but it > **Amended by §16.5 and §21.2.** This ordering is still right for the *subsystems*, but it
@@ -419,7 +419,7 @@ re-running it. Automated, but budget for it.
This is why the admission test comes before code. This is why the admission test comes before code.
**Early signal:** ARTEMIS.md, HERMES.md, CONSOLE.md and TRIPOD.md each currently describe **Early signal:** ARTEMIS.md, HERMES.md, CONSOLE.md and TRIPOD.md each currently describe
their own heat mechanics. After FABRIC.md, each should shrink to roughly three lines — their own heat mechanics. After FABRIC-0.md, each should shrink to roughly three lines —
what an entry is here, what heat means, what the reap event is. If any one of them gets what an entry is here, what heat means, what the reap event is. If any one of them gets
*longer*, that subsystem is fighting the fabric, and you will know which one before *longer*, that subsystem is fighting the fabric, and you will know which one before
writing code. writing code.
@@ -1562,7 +1562,7 @@ noun was overloaded.
2.1** — `vm_physics_touch()` was restated on the virtual tick (no `now_ns` parameter at 2.1** — `vm_physics_touch()` was restated on the virtual tick (no `now_ns` parameter at
all), closing exactly the gap this point raised. This item's own cross-reference (*Refs:* all), closing exactly the gap this point raised. This item's own cross-reference (*Refs:*
§19.6 #3) points back here; this note closes the loop the other direction. Never annotated §19.6 #3) points back here; this note closes the loop the other direction. Never annotated
here at the time (found during the 2026-08-12 FABRIC-2.md audit). here at the time (found during the 2026-08-12 FABRIC-1.md audit).
--- ---
@@ -1623,13 +1623,13 @@ There is no renormalisation anywhere. `vm_physics_conserved()` tests a genuine i
dropped. **The "guarded, shouldn't happen" description was only half right** — the dropped. **The "guarded, shouldn't happen" description was only half right** — the
Hera-is-root case was reachable via `S" Hera" KILL` (`mama_word_kill()` called Hera-is-root case was reachable via `S" Hera" KILL` (`mama_word_kill()` called
`vm_physics_retire()` before `capsule_vm_kill()`'s own Hera guard ran), fixed 2026-08-13 `vm_physics_retire()` before `capsule_vm_kill()`'s own Hera guard ran), fixed 2026-08-13
(`FABRIC-2.md` §C). The broken-parent-chain case remains genuinely unreachable (`FABRIC-1.md` §C). The broken-parent-chain case remains genuinely unreachable
(`parent_vm_id` is set once at birth, never rewritten) and is not tracked further. (`parent_vm_id` is set once at birth, never rewritten) and is not tracked further.
2. ~~**Truncation** (`:304-305`). The proportional fan-out computes 2. ~~**Truncation** (`:304-305`). The proportional fan-out computes
`(moved_total * heat) / others_total` per VM in integer arithmetic. The shares sum to `(moved_total * heat) / others_total` per VM in integer arithmetic. The shares sum to
*less than* `moved_total`. **Every multi-VM touch loses a little heat**, so the sum drifts *less than* `moved_total`. **Every multi-VM touch loses a little heat**, so the sum drifts
downward monotonically. `VM_PHYSICS_EPSILON_Q48` is 3277 — 5% of `Q48_ONE` — so given downward monotonically. `VM_PHYSICS_EPSILON_Q48` is 3277 — 5% of `Q48_ONE` — so given
enough touches this would eventually trip.~~ **WRONG, corrected 2026-08-13** (`FABRIC-2.md` enough touches this would eventually trip.~~ **WRONG, corrected 2026-08-13** (`FABRIC-1.md`
§B "Fleet heat leak," investigated when item 4.2 made this measurable) — the truncated §B "Fleet heat leak," investigated when item 4.2 made this measurable) — the truncated
`share` is what actually moves on *both* sides of `vm_physics_transfer()`, so the fleet `share` is what actually moves on *both* sides of `vm_physics_transfer()`, so the fleet
sum cannot drift from this path; only path 1 above can. Left standing here per this sum cannot drift from this path; only path 1 above can. Left standing here per this
@@ -1655,7 +1655,7 @@ conservation law the project makes claims about. It is small per touch and may b
tolerable, but it is monotonic, and nobody has measured how far it drifts over a long run.~~ tolerable, but it is monotonic, and nobody has measured how far it drifts over a long run.~~
**WRONG, corrected 2026-08-13** — see the strikethrough correction on path 2 above. Path 1 **WRONG, corrected 2026-08-13** — see the strikethrough correction on path 2 above. Path 1
(the dying-VM-is-root/broken-chain drop) is the only live defect; it is tracked in (the dying-VM-is-root/broken-chain drop) is the only live defect; it is tracked in
`FABRIC-2.md` §C, not here, per this document's closure. `FABRIC-1.md` §C, not here, per this document's closure.
### 20.3 Nesting — §12 Q6 is less open than it looks ### 20.3 Nesting — §12 Q6 is less open than it looks
@@ -1898,7 +1898,7 @@ level it was born on.
4. ~~**§20.5 #4 remains open.**~~ **RESOLVED by item 1.7 (§25.2), 2026-08-04** — this 4. ~~**§20.5 #4 remains open.**~~ **RESOLVED by item 1.7 (§25.2), 2026-08-04** — this
section (§21.5) was written before that ruling and never updated to point to it. Bounded section (§21.5) was written before that ruling and never updated to point to it. Bounded
by a Kconfig-tunable cap, default 2, enforced at VM-birth time. See §20.5 #4 for the full by a Kconfig-tunable cap, default 2, enforced at VM-birth time. See §20.5 #4 for the full
resolution. Stale cross-reference, not new work (found during the 2026-08-12 FABRIC-2.md resolution. Stale cross-reference, not new work (found during the 2026-08-12 FABRIC-1.md
audit). audit).
--- ---
@@ -3672,7 +3672,7 @@ document and committing that amendment as its own item.*
> - Self-test scaffolding (`kernel_main.c`, diagnostic-only, not production code): > - Self-test scaffolding (`kernel_main.c`, diagnostic-only, not production code):
> +119 / −0, 1 file. > +119 / −0, 1 file.
> - **Total: 12 implementation files, +759 / −120 (879 lines changed).** > - **Total: 12 implementation files, +759 / −120 (879 lines changed).**
> - **File count:** 12 implementation files (13 including this write-up in `FABRIC.md` > - **File count:** 12 implementation files (13 including this write-up in `FABRIC-0.md`
> itself). > itself).
- [ ] **4.3 — Console.** Settles 1.11 as part of the work. *Refs:* §17.5. - [ ] **4.3 — Console.** Settles 1.11 as part of the work. *Refs:* §17.5.
@@ -5109,7 +5109,7 @@ document and committing that amendment as its own item.*
- [x] **4.4c — Wire `console_fb_init()` into the boot path.** Found while verifying 4.4d - [x] **4.4c — Wire `console_fb_init()` into the boot path.** Found while verifying 4.4d
(below) by screendump — not a bug in 4.4a/4.4b, a pre-existing, deliberate gap. (below) by screendump — not a bug in 4.4a/4.4b, a pre-existing, deliberate gap.
`kernel_main.c:830-834` has an explicit comment: *"console.c / vt100.c are superseded by `kernel_main.c:830-834` has an explicit comment: *"console.c / vt100.c are superseded by
the Console drawing-fabric redesign (FABRIC.md §27) and are deliberately not invoked the Console drawing-fabric redesign (FABRIC-0.md §27) and are deliberately not invoked
here... `fb_init()` wires the raw GOP framebuffer directly... nothing else touches it."* here... `fb_init()` wires the raw GOP framebuffer directly... nothing else touches it."*
Only raw `fb_init()` runs; `console_fb_init()` (which calls `vt100_init()`) is never Only raw `fb_init()` runs; `console_fb_init()` (which calls `vt100_init()`) is never
called anywhere in the boot sequence. Consequence, confirmed by screendump: `vt100_putc()` called anywhere in the boot sequence. Consequence, confirmed by screendump: `vt100_putc()`
@@ -6261,11 +6261,11 @@ document and committing that amendment as its own item.*
> **Parent closed 2026-08-12.** All six sub-items (4.5a–4.5f) below are `[x]` done; 4.5f's > **Parent closed 2026-08-12.** All six sub-items (4.5a–4.5f) below are `[x]` done; 4.5f's
> own done-when is satisfied by 4.4g's real landing, not a separate pass. This checkbox was > own done-when is satisfied by 4.4g's real landing, not a separate pass. This checkbox was
> never flipped at the time — pure bookkeeping, not new work (found during the FABRIC-2.md > never flipped at the time — pure bookkeeping, not new work (found during the FABRIC-1.md
> audit). One real loose end surfaced by 4.5f's own text, not closed by any of this: the > audit). One real loose end surfaced by 4.5f's own text, not closed by any of this: the
> ACL-RWT DoE campaign's overhead numbers (CLAUDE.md, "+0.0054%–+0.0088%") were all measured > ACL-RWT DoE campaign's overhead numbers (CLAUDE.md, "+0.0054%–+0.0088%") were all measured
> at `-O0`, before this item enabled real optimization — nobody has re-measured or even > at `-O0`, before this item enabled real optimization — nobody has re-measured or even
> asked whether they're still comparable. Carried forward to FABRIC-2.md. > asked whether they're still comparable. Carried forward to FABRIC-1.md.
- [x] **4.5a — Full ISR/interrupt-context global-state audit, all three architectures.** - [x] **4.5a — Full ISR/interrupt-context global-state audit, all three architectures.**
Investigation only, no code change. For each architecture, enumerate every vector actually Investigation only, no code change. For each architecture, enumerate every vector actually
@@ -6797,7 +6797,7 @@ so.*
folded into item 4.2's scope by explicit Captain Bob ruling**, fixed and verified: a folded into item 4.2's scope by explicit Captain Bob ruling**, fixed and verified: a
resident cell's evict-credit lands in the correct VM's reservoir with two VMs holding resident cell's evict-credit lands in the correct VM's reservoir with two VMs holding
quotas (Hera + Hermes), not just asserted from reading the code. This bullet was never quotas (Hera + Hermes), not just asserted from reading the code. This bullet was never
struck through at the time; stale, not new work (found during the 2026-08-12 FABRIC-2.md struck through at the time; stale, not new work (found during the 2026-08-12 FABRIC-1.md
audit). See item 4.2's *Done when* list and its 2026-08-05 addendum. audit). See item 4.2's *Done when* list and its 2026-08-05 addendum.
- **Taxonomy and lexicon.** Raised by Captain Bob 2026-08-04, mid-item-3.1. This document's - **Taxonomy and lexicon.** Raised by Captain Bob 2026-08-04, mid-item-3.1. This document's
physics-flavored vocabulary (heat, mass, density, patron, Stadium, and the rest) needs a physics-flavored vocabulary (heat, mass, density, patron, Stadium, and the rest) needs a
@@ -6805,7 +6805,7 @@ so.*
covers the growing set of Kconfig build knobs (`STADIUM_MAX_VM_COUNT` and its siblings) so covers the growing set of Kconfig build knobs (`STADIUM_MAX_VM_COUNT` and its siblings) so
the terminology in code, Kconfig help text, and this document stays one language instead the terminology in code, Kconfig help text, and this document stays one language instead
of drifting apart. Not scoped, not placed in a phase. Captain Bob: "I guess that we didn't of drifting apart. Not scoped, not placed in a phase. Captain Bob: "I guess that we didn't
finish out FABRIC.md quite as much as we thought." finish out FABRIC-0.md quite as much as we thought."
### 25.7.1 Second review pass — 2026-08-03, pre-coding. Awaiting rulings. ### 25.7.1 Second review pass — 2026-08-03, pre-coding. Awaiting rulings.
+4420
View File
File diff suppressed because it is too large Load Diff
+4575 -4359
View File
File diff suppressed because it is too large Load Diff
-4636
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -1,12 +1,12 @@
# FABRIC-4.md — forward-looking design notes # FABRIC-4.md — forward-looking design notes
**Status:** Not a successor to `FABRIC-3.md` and not a punch-list document. `FABRIC-3.md` is **Status:** Not a successor to `FABRIC-2.md` and not a punch-list document. `FABRIC-2.md` is
still the living document — nothing here supersedes it, and this file doesn't follow the still the living document — nothing here supersedes it, and this file doesn't follow the
close-and-carry-forward discipline `FABRIC.md` → `FABRIC-2.md` → `FABRIC-3.md` used (that close-and-carry-forward discipline `FABRIC-0.md` → `FABRIC-1.md` → `FABRIC-2.md` used (that
chain triggers on *closing* a document; `FABRIC-3.md` isn't closed). This is a separate, chain triggers on *closing* a document; `FABRIC-2.md` isn't closed). This is a separate,
lower-discipline scratchpad for design ideas caught early — theory-stage, pre-punch-list, lower-discipline scratchpad for design ideas caught early — theory-stage, pre-punch-list,
often missing a stated "why" on purpose (captured as raised, not fully justified yet). An idea often missing a stated "why" on purpose (captured as raised, not fully justified yet). An idea
graduates out of here into `FABRIC-3.md` §I (or wherever `FABRIC-3.md` is by then) once it has graduates out of here into `FABRIC-2.md` §I (or wherever `FABRIC-2.md` is by then) once it has
a real scope, not before. a real scope, not before.
--- ---
+31 -31
View File
@@ -513,9 +513,9 @@ Slide 2: "Formally: f(t) = f₀ * e^(-λt)"
**Added 2026-08-13**, closing a real, acknowledged documentation-debt item: the physics **Added 2026-08-13**, closing a real, acknowledged documentation-debt item: the physics
vocabulary built on top of the original heat/decay/inference model above (patron, mass, vocabulary built on top of the original heat/decay/inference model above (patron, mass,
density, Stadium, and the Kconfig knob names built on them) accumulated across density, Stadium, and the Kconfig knob names built on them) accumulated across
`FABRIC.md`/`FABRIC-2.md` without an explicit statement, in one place, that these are named `FABRIC-0.md`/`FABRIC-1.md` without an explicit statement, in one place, that these are named
analogies — the same discipline Section III already applies to "heat," extended to the analogies — the same discipline Section III already applies to "heat," extended to the
newer terms. Definitions below are drawn directly from `FABRIC.md`'s own DECIDED sections newer terms. Definitions below are drawn directly from `FABRIC-0.md`'s own DECIDED sections
(cited inline), not invented here. (cited inline), not invented here.
### 9.1 The metaphor, restated for this layer ### 9.1 The metaphor, restated for this layer
@@ -537,7 +537,7 @@ LITERAL IMPLEMENTATIONS (No Metaphor):
K → Σ execution_heat_q48 across live entries, conserved at 1.0 K → Σ execution_heat_q48 across live entries, conserved at 1.0
``` ```
The Stadium metaphor is a **venue**, not a building: §2 (`FABRIC.md`) is explicit that a The Stadium metaphor is a **venue**, not a building: §2 (`FABRIC-0.md`) is explicit that a
patron *arrives and departs* — the Stadium holds what is live, not everything that exists. patron *arrives and departs* — the Stadium holds what is live, not everything that exists.
That is the load-bearing distinction between "Stadium" and "warehouse" below, and it is why That is the load-bearing distinction between "Stadium" and "warehouse" below, and it is why
the dictionary-at-rest is warehouse, not Stadium, even though every dictionary entry is the dictionary-at-rest is warehouse, not Stadium, even though every dictionary entry is
@@ -549,29 +549,29 @@ the dictionary-at-rest is warehouse, not Stadium, even though every dictionary e
*Definition*: The Stadium's fixed-size unit of storage — a patron header, or a continuation *Definition*: The Stadium's fixed-size unit of storage — a patron header, or a continuation
cell owned by exactly one patron. cell owned by exactly one patron.
*Formal*: A closed, two-constructor sum type: `Cell = Header | Continuation(owner)`, fixed *Formal*: A closed, two-constructor sum type: `Cell = Header | Continuation(owner)`, fixed
at build time (`FABRIC.md` §3). at build time (`FABRIC-0.md` §3).
*Measurement*: Proposed size 64 bytes (`FABRIC.md` §23.3, **not yet built** — see *Measurement*: Proposed size 64 bytes (`FABRIC-0.md` §23.3, **not yet built** — see
`FABRIC-2.md`'s §23.4 #2 closure: the one real patron kind actually shipped, Hermes `FABRIC-1.md`'s §23.4 #2 closure: the one real patron kind actually shipped, Hermes
messages, did not adopt this cell shape). messages, did not adopt this cell shape).
*Category*: Storage unit. *Category*: Storage unit.
*Warning*: Not a pointer target — links between cells are Stadium-array indices, never *Warning*: Not a pointer target — links between cells are Stadium-array indices, never
addresses (`FABRIC.md` §3, §13). addresses (`FABRIC-0.md` §3, §13).
**Code field** **Code field**
*Definition*: A closed-enumeration behaviour tag stored in a patron header, dispatched by *Definition*: A closed-enumeration behaviour tag stored in a patron header, dispatched by
the engine rather than branched on by kind. the engine rather than branched on by kind.
*Formal*: `behaviour ∈ {MIGRATE, DELIVER, EXPIRE, COOL, ...}` — a fixed datatype, not an *Formal*: `behaviour ∈ {MIGRATE, DELIVER, EXPIRE, COOL, ...}` — a fixed datatype, not an
open extension point (`FABRIC.md` §3, §13, §18.3). open extension point (`FABRIC-0.md` §3, §13, §18.3).
*Category*: Dispatch mechanism. *Category*: Dispatch mechanism.
*Note*: This is deliberately **the entire type system** — the engine never asks what kind *Note*: This is deliberately **the entire type system** — the engine never asks what kind
of patron it holds, only what its code field says to do (`FABRIC.md` §3). of patron it holds, only what its code field says to do (`FABRIC-0.md` §3).
**Density** **Density**
*Definition*: A patron's heat share divided by its mass — heat per unit of occupied *Definition*: A patron's heat share divided by its mass — heat per unit of occupied
Stadium floor space. Stadium floor space.
*Formal*: `density(p) = heat(p) / mass(p)`, derived, never stored (`FABRIC.md` §19.2). *Formal*: `density(p) = heat(p) / mass(p)`, derived, never stored (`FABRIC-0.md` §19.2).
*Measurement*: Used for ranking and admission (denser evicts sparser), not computed by a *Measurement*: Used for ranking and admission (denser evicts sparser), not computed by a
separate scheduler — it is read, not decided (`FABRIC.md` §19.3). separate scheduler — it is read, not decided (`FABRIC-0.md` §19.3).
*Category*: Derived quantity. *Category*: Derived quantity.
*Warning*: This is the one place the thermodynamic metaphor is literal in form (quantity *Warning*: This is the one place the thermodynamic metaphor is literal in form (quantity
per unit volume) even though heat itself remains metaphorical. per unit volume) even though heat itself remains metaphorical.
@@ -581,65 +581,65 @@ per unit volume) even though heat itself remains metaphorical.
*Formal*: `K = Σ execution_heat_q48`, held at `Q48_ONE` (1.0) by construction — verified by *Formal*: `K = Σ execution_heat_q48`, held at `Q48_ONE` (1.0) by construction — verified by
`vm_physics_conserved()` (`capsule_vm_physics.c`). `vm_physics_conserved()` (`capsule_vm_physics.c`).
*Measurement*: A correctness check, not a diagnostic — it is 1.0 by construction and can *Measurement*: A correctness check, not a diagnostic — it is 1.0 by construction and can
never itself signal system state (`FABRIC.md` §14, §19.1). Entropy over the heat never itself signal system state (`FABRIC-0.md` §14, §19.1). Entropy over the heat
*distribution* is the actual instrument; K is not. *distribution* is the actual instrument; K is not.
*Category*: Invariant. *Category*: Invariant.
*Warning*: Not an occupancy ratio (`Σmass / capacity`) — that definition was considered and *Warning*: Not an occupancy ratio (`Σmass / capacity`) — that definition was considered and
explicitly rejected because it contradicts the already-implemented, tested mechanism explicitly rejected because it contradicts the already-implemented, tested mechanism
(`FABRIC.md` §19.1). (`FABRIC-0.md` §19.1).
**Mass** **Mass**
*Definition*: The number of Stadium cells a patron occupies — its footprint. *Definition*: The number of Stadium cells a patron occupies — its footprint.
*Formal*: Integer ≥ 1, an entry field independent of heat; never enters K *Formal*: Integer ≥ 1, an entry field independent of heat; never enters K
(`FABRIC.md` §3, §19.2). (`FABRIC-0.md` §3, §19.2).
*Category*: Structural quantity, not conserved. *Category*: Structural quantity, not conserved.
*Note*: A large patron is not "referenced" from the Stadium — it simply occupies more *Note*: A large patron is not "referenced" from the Stadium — it simply occupies more
cells. By-reference storage is reserved for things outside the Stadium entirely cells. By-reference storage is reserved for things outside the Stadium entirely
(`FABRIC.md` §19.3, §23.1). (`FABRIC-0.md` §19.3, §23.1).
**Mass conservation vs. heat conservation** **Mass conservation vs. heat conservation**
*Definition*: Two independent invariants that must not be confused. Heat (K) is conserved *Definition*: Two independent invariants that must not be confused. Heat (K) is conserved
globally and moved by traffic. Mass is conserved *per patron* during a residency — globally and moved by traffic. Mass is conserved *per patron* during a residency —
identity and mass never change as a side effect of use — but is not a fleet-wide summed identity and mass never change as a side effect of use — but is not a fleet-wide summed
invariant the way heat is (`FABRIC.md` §24.2). invariant the way heat is (`FABRIC-0.md` §24.2).
**Patron** **Patron**
*Definition*: A live thing occupying a Stadium cell or linked run of cells — the unit the *Definition*: A live thing occupying a Stadium cell or linked run of cells — the unit the
Stadium actually holds. Stadium actually holds.
*Formal*: One structure, no variants, no type field — identified by its code field's *Formal*: One structure, no variants, no type field — identified by its code field's
behaviour, not by a kind tag (`FABRIC.md` §3, §13). behaviour, not by a kind tag (`FABRIC-0.md` §3, §13).
*Measurement*: Nine header wires: identity, heat, TTL, pin, link, code field, mass, *Measurement*: Nine header wires: identity, heat, TTL, pin, link, code field, mass,
payload, contains (`FABRIC.md` §3, with amendments cited in place). payload, contains (`FABRIC-0.md` §3, with amendments cited in place).
*Category*: The Stadium's sole occupant type. *Category*: The Stadium's sole occupant type.
*Known kinds (as of this writing)*: words (dictionary — fully migrated and live via *Known kinds (as of this writing)*: words (dictionary — fully migrated and live via
`stadium_word_dispatch()`, `FABRIC.md` §16.3/§17.7), blocks (Artemis), messages (Hermes — shipped with a `stadium_word_dispatch()`, `FABRIC-0.md` §16.3/§17.7), blocks (Artemis), messages (Hermes — shipped with a
**different** shape than this header, see `FABRIC-2.md`'s §23.4 #2 closure), VMs (Tripod, **different** shape than this header, see `FABRIC-1.md`'s §23.4 #2 closure), VMs (Tripod,
`FABRIC.md` §20), dirty events (console, `FABRIC.md` §17.5). Five kinds, not four — an `FABRIC-0.md` §20), dirty events (console, `FABRIC-0.md` §17.5). Five kinds, not four — an
earlier draft undercounted (`FABRIC.md` §1). earlier draft undercounted (`FABRIC-0.md` §1).
**Reap** **Reap**
*Definition*: The event that ends a patron's residency — not destruction, a return of its *Definition*: The event that ends a patron's residency — not destruction, a return of its
cells and remaining heat to the pool. cells and remaining heat to the pool.
*Formal*: Consumed on delivery (messages), on redraw (dirty events), on cooling below floor *Formal*: Consumed on delivery (messages), on redraw (dirty events), on cooling below floor
(VMs), or on eviction by a denser newcomer (`FABRIC.md` §17.2, §17.5, §19.3). (VMs), or on eviction by a denser newcomer (`FABRIC-0.md` §17.2, §17.5, §19.3).
*Category*: Lifecycle event. *Category*: Lifecycle event.
**Stadium** **Stadium**
*Definition*: A single, bounded region of memory outside any VM, holding everything *Definition*: A single, bounded region of memory outside any VM, holding everything
currently live. currently live.
*Formal*: A fixed-size array of cells, index-linked (not pointer-linked), allocated at *Formal*: A fixed-size array of cells, index-linked (not pointer-linked), allocated at
boot before any VM exists, not part of the heap (`FABRIC.md` §2, §17.6). boot before any VM exists, not part of the heap (`FABRIC-0.md` §2, §17.6).
*Measurement*: Per-VM quota over a single global cell pool, elastic under pressure, *Measurement*: Per-VM quota over a single global cell pool, elastic under pressure,
arbitrated by Hera (`FABRIC.md` §22) — not per-VM physical regions. arbitrated by Hera (`FABRIC-0.md` §22) — not per-VM physical regions.
*Category*: The bounded live-state substrate this whole vocabulary describes. *Category*: The bounded live-state substrate this whole vocabulary describes.
*Warning*: "Live" is the operative word — the Stadium holds what is live, not everything *Warning*: "Live" is the operative word — the Stadium holds what is live, not everything
that exists. A dictionary word sitting cold and unexecuted is warehouse, not Stadium, even that exists. A dictionary word sitting cold and unexecuted is warehouse, not Stadium, even
once the dictionary itself migrates into this representation (`FABRIC.md` §2, §16.3). once the dictionary itself migrates into this representation (`FABRIC-0.md` §2, §16.3).
**Warehouse** **Warehouse**
*Definition*: What lies beneath the Stadium — storage for things not currently live. *Definition*: What lies beneath the Stadium — storage for things not currently live.
*Formal*: Artemis (block storage) and the resting dictionary are warehouse; the Stadium is *Formal*: Artemis (block storage) and the resting dictionary are warehouse; the Stadium is
the floor above it (`FABRIC.md` §17.5's three-category taxonomy: warehouse / Stadium / the floor above it (`FABRIC-0.md` §17.5's three-category taxonomy: warehouse / Stadium /
utility). utility).
*Category*: Storage layer, outside the engine's live-state model. *Category*: Storage layer, outside the engine's live-state model.
@@ -647,7 +647,7 @@ utility).
*Definition*: External infrastructure the Stadium consumes but never contains — beside the *Definition*: External infrastructure the Stadium consumes but never contains — beside the
building, not inside or beneath it. building, not inside or beneath it.
*Formal*: The framebuffer and devices generally; the engine never learns about a utility's *Formal*: The framebuffer and devices generally; the engine never learns about a utility's
existence, which is what makes it a boundary rather than an exception (`FABRIC.md` §17.5). existence, which is what makes it a boundary rather than an exception (`FABRIC-0.md` §17.5).
*Category*: Third taxonomy category, coordinate with warehouse and Stadium, not a *Category*: Third taxonomy category, coordinate with warehouse and Stadium, not a
sub-case of either. sub-case of either.
@@ -655,7 +655,7 @@ sub-case of either.
Per Bob's own flag: code, Kconfig, and documentation terminology must not drift apart. Per Bob's own flag: code, Kconfig, and documentation terminology must not drift apart.
The table below is the current, verified wiring status of every `STADIUM_*` Kconfig The table below is the current, verified wiring status of every `STADIUM_*` Kconfig
symbol — confirmed by direct source grep during the `FABRIC-2.md` closure work this symbol — confirmed by direct source grep during the `FABRIC-1.md` closure work this
vocabulary accompanies, not assumed from the symbol's name or Kconfig help text alone. vocabulary accompanies, not assumed from the symbol's name or Kconfig help text alone.
| Kconfig symbol | Vocabulary term | Wiring status (2026-08-13) | | Kconfig symbol | Vocabulary term | Wiring status (2026-08-13) |
@@ -664,8 +664,8 @@ vocabulary accompanies, not assumed from the symbol's name or Kconfig help text
| `STADIUM_MEMORY_PERCENT` | Stadium capacity sizing | **Live** — read in `stadium.c` | | `STADIUM_MEMORY_PERCENT` | Stadium capacity sizing | **Live** — read in `stadium.c` |
| `STADIUM_WORD_HEAT_QUANTUM` | Heat (word-patron admission) | **Live** — read in `stadium_words.c` | | `STADIUM_WORD_HEAT_QUANTUM` | Heat (word-patron admission) | **Live** — read in `stadium_words.c` |
| `STADIUM_WORD_COOL_RATE_Q48` | Heat decay rate (word patrons) | **Live** — read in `stadium_words.c` | | `STADIUM_WORD_COOL_RATE_Q48` | Heat decay rate (word patrons) | **Live** — read in `stadium_words.c` |
| `STADIUM_CONTAINS_DEPTH_MAX` | `contains` wire depth cap (§3, §8) | **Declared, not yet enforced** — reap-gating enforcement is item 3.5's scope, not implemented (`FABRIC-2.md` §A item 5.3 area; not a bug, a known sequencing gap) | | `STADIUM_CONTAINS_DEPTH_MAX` | `contains` wire depth cap (§3, §8) | **Declared, not yet enforced** — reap-gating enforcement is item 3.5's scope, not implemented (`FABRIC-1.md` §A item 5.3 area; not a bug, a known sequencing gap) |
| `STADIUM_CAPACITY_TICK` | Capacity-loop cadence, distinct from heat's (§22.4) | **Dead** — declared with the correct intended default (1000, matching §22.4's precedent) but never read by any code path; only appearance beyond its own default is a compile-time `> 0` static assertion in `stadium.h`. Found and reported during this session's §12 Q5 closure (`FABRIC-2.md`) — `vm_physics_heartbeat_tick()` still literally shares `HEARTBEAT_INFERENCE_FREQUENCY` instead | | `STADIUM_CAPACITY_TICK` | Capacity-loop cadence, distinct from heat's (§22.4) | **Dead** — declared with the correct intended default (1000, matching §22.4's precedent) but never read by any code path; only appearance beyond its own default is a compile-time `> 0` static assertion in `stadium.h`. Found and reported during this session's §12 Q5 closure (`FABRIC-1.md`) — `vm_physics_heartbeat_tick()` still literally shares `HEARTBEAT_INFERENCE_FREQUENCY` instead |
This table is a snapshot, not a promise — it will drift the moment any of these symbols is This table is a snapshot, not a promise — it will drift the moment any of these symbols is
wired or unwired. Re-verify against source before relying on it for anything past a casual wired or unwired. Re-verify against source before relying on it for anything past a casual
+1 -1
View File
@@ -6,7 +6,7 @@
> Tripod/Stadium/word-level ACL existed, and before "Phase 1 Starting (HAL)" had any of the > Tripod/Stadium/word-level ACL existed, and before "Phase 1 Starting (HAL)" had any of the
> meaning it has now. Kept for historical record only. For current status, see > meaning it has now. Kept for historical record only. For current status, see
> `docs/lithosananke/ROADMAP.md` (repo-specific, LithosAnanke roadmap) and > `docs/lithosananke/ROADMAP.md` (repo-specific, LithosAnanke roadmap) and
> `FABRIC.md`/`FABRIC-2.md`/`FABRIC-3.md` (design history and current work) — not this > `FABRIC-0.md`/`FABRIC-1.md`/`FABRIC-2.md` (design history and current work) — not this
> document. > document.
**Version**: 1.0 **Version**: 1.0
+152 -152
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -65,7 +65,7 @@ Block 4137
( item 4.6 -- Stadium cell-index arena, not a heat arena. One ) ( item 4.6 -- Stadium cell-index arena, not a heat arena. One )
( slot per possible LBN, holding STADIUM-NONE or a live cell ) ( slot per possible LBN, holding STADIUM-NONE or a live cell )
( index -- residency exists only while a block is allocated ) ( index -- residency exists only while a block is allocated )
( (admission-on-allocate, FABRIC-2.md item 4.6's ruling). ) ( (admission-on-allocate, FABRIC-1.md item 4.6's ruling). )
CREATE BLK-CELL ART-DATA-BLKS CELLS ALLOT CREATE BLK-CELL ART-DATA-BLKS CELLS ALLOT
Block 4138 Block 4138
( Cell-index accessors and LBN conversion. Heat itself now ) ( Cell-index accessors and LBN conversion. Heat itself now )
+1 -1
View File
@@ -5,7 +5,7 @@ Block 4019
( Policy words this file: BLK-ACL-CHECK ) ( Policy words this file: BLK-ACL-CHECK )
( Mirrors ACL.4th's C-primitive/FORTH-policy split, ) ( Mirrors ACL.4th's C-primitive/FORTH-policy split, )
( applied to blocks instead of words. ) ( applied to blocks instead of words. )
( FABRIC-3.md H.12 step 16, 2026-09-03. ) ( FABRIC-2.md H.12 step 16, 2026-09-03. )
256 CONSTANT BLK-ACL-BASE-TTL 256 CONSTANT BLK-ACL-BASE-TTL
Block 4020 Block 4020
+1 -1
View File
@@ -1,6 +1,6 @@
# capsules/contrib/ # capsules/contrib/
Milestone 7 (contributor capsules / trust tiers), FABRIC-3.md §I.5. Milestone 7 (contributor capsules / trust tiers), FABRIC-2.md §I.5.
Any `.4th` file placed here gets `FLAG_CONTRIB` in addition to the usual Any `.4th` file placed here gets `FLAG_CONTRIB` in addition to the usual
`FLAG_PRODUCTION | FLAG_EXPERIMENT` pair — `tools/mkcapsule.c`'s `FLAG_PRODUCTION | FLAG_EXPERIMENT` pair — `tools/mkcapsule.c`'s
+1 -1
View File
@@ -1,6 +1,6 @@
Block 4900 Block 4900
( fabric.4th -- Console drawing-fabric coordinate machinery ) ( fabric.4th -- Console drawing-fabric coordinate machinery )
( FABRIC.md item 4.3.3. 45-degree cavalier orthographic ) ( FABRIC-0.md item 4.3.3. 45-degree cavalier orthographic )
( projection. Z is depth-into-screen, not height. Q48.16 ) ( projection. Z is depth-into-screen, not height. Q48.16 )
( throughout. Raw pixel write (PLOT/FB-WIDTH/FB-HEIGHT) is ) ( throughout. Raw pixel write (PLOT/FB-WIDTH/FB-HEIGHT) is )
( C; this capsule is the FORTH-side policy on top of it. ) ( C; this capsule is the FORTH-side policy on top of it. )
+4 -4
View File
@@ -6,7 +6,7 @@ Block 4925
( (fabric.4th 5000-5002); straight strokes stay G-LINE. Not ) ( (fabric.4th 5000-5002); straight strokes stay G-LINE. Not )
( every round-ish letter was converted -- only ones a single ) ( every round-ish letter was converted -- only ones a single )
( circle/arc/ellipse renders cleanly without per-glyph angle ) ( circle/arc/ellipse renders cleanly without per-glyph angle )
( tuning (S/s/&/2/3/5/6/8/9 etc. stay blocky; see FABRIC.md). ) ( tuning (S/s/&/2/3/5/6/8/9 stay blocky; FABRIC-0.md). )
Block 4926 Block 4926
( Digit 0: ELLIPSE -- true oval, not a 6-line rectangle. ) ( Digit 0: ELLIPSE -- true oval, not a 6-line rectangle. )
: G-0 ( -- adv ) : G-0 ( -- adv )
@@ -534,7 +534,7 @@ Block 4969
500 ; 500 ;
Block 4970 Block 4970
( Latin-1 Supplement, 11 glyphs. codepoints per FABRIC.md ) ( Latin-1 Supplement, 11 glyphs. codepoints per FABRIC-0.md )
( 27.6.4. DEGREE/CENT use curves; rest are line-only. ) ( 27.6.4. DEGREE/CENT use curves; rest are line-only. )
: G-DEGREE ( -- adv ) 250 600 60 G-CIRCLE 350 ; : G-DEGREE ( -- adv ) 250 600 60 G-CIRCLE 350 ;
: G-CENT ( -- adv ) : G-CENT ( -- adv )
@@ -600,7 +600,7 @@ Block 4975
: G-NBSP ( -- adv ) 300 ; : G-NBSP ( -- adv ) 300 ;
Block 4976 Block 4976
( General Punctuation, 7 glyphs. codepoints per FABRIC.md ) ( General Punctuation, 7 glyphs. codepoints per FABRIC-0.md )
( 27.6.4. ELLIPSIS uses three CIRCLEs, matching PERIOD. ) ( 27.6.4. ELLIPSIS uses three CIRCLEs, matching PERIOD. )
: G-LSQUOTE ( -- adv ) : G-LSQUOTE ( -- adv )
230 650 220 600 G-LINE 230 650 220 600 G-LINE
@@ -636,7 +636,7 @@ Block 4978
Block 4979 Block 4979
( Real DISPATCH-DIGIT, replaces fabric.4th's placeholder. ) ( Real DISPATCH-DIGIT, replaces fabric.4th's placeholder. )
( Redefinition needed -- CASE binds early (FABRIC.md 27.6.5).) ( Redefinition needed -- CASE binds early (FABRIC-0.md 27.6.5).)
: DISPATCH-DIGIT ( codepoint -- adv ) CASE : DISPATCH-DIGIT ( codepoint -- adv ) CASE
48 OF G-0 ENDOF 49 OF G-1 ENDOF 50 OF G-2 ENDOF 48 OF G-0 ENDOF 49 OF G-1 ENDOF 50 OF G-2 ENDOF
51 OF G-3 ENDOF 52 OF G-4 ENDOF 53 OF G-5 ENDOF 51 OF G-3 ENDOF 52 OF G-4 ENDOF 53 OF G-5 ENDOF
+3 -3
View File
@@ -1,13 +1,13 @@
# capsules/fonts/ # capsules/fonts/
Font capsule for FABRIC.md items 4.3.7/4.3.7b (TrueType rendering, adjunct Font capsule for FABRIC-0.md items 4.3.7/4.3.7b (TrueType rendering, adjunct
to the stroke font — §27.7). to the stroke font — §27.7).
| File | License | Provenance | | File | License | Provenance |
|------|---------|------------| |------|---------|------------|
| `JetBrainsMono-Regular.ttf` | SIL Open Font License, Version 1.1 | The JetBrains Mono Project Authors, copyright 2020 (https://github.com/JetBrains/JetBrainsMono). License string confirmed by reading the font's own embedded `name` table directly (`strings -e b JetBrainsMono-Regular.ttf`) — not taken on trust from the filename. | | `JetBrainsMono-Regular.ttf` | SIL Open Font License, Version 1.1 | The JetBrains Mono Project Authors, copyright 2020 (https://github.com/JetBrains/JetBrainsMono). License string confirmed by reading the font's own embedded `name` table directly (`strings -e b JetBrainsMono-Regular.ttf`) — not taken on trust from the filename. |
Chosen as the v1 test/default TTF font 2026-08-10 (FABRIC.md §27.7 "Update Chosen as the v1 test/default TTF font 2026-08-10 (FABRIC-0.md §27.7 "Update
2026-08-10"), resolving that item's licensing-check blocker. 2026-08-10"), resolving that item's licensing-check blocker.
**Embedded as a raw-binary capsule, not text-encoded.** `tools/mkcapsule.c`'s **Embedded as a raw-binary capsule, not text-encoded.** `tools/mkcapsule.c`'s
@@ -21,7 +21,7 @@ relative path, per `build_capsule_name()`). Fetch it with
`capsule_find_by_name()` (`include/starkernel/capsule.h`) — that returns `capsule_find_by_name()` (`include/starkernel/capsule.h`) — that returns
`offset`/`length` into the arena without ever routing through `offset`/`length` into the arena without ever routing through
`capsule_exec_payload()`, so nothing tries to interpret the font bytes as `capsule_exec_payload()`, so nothing tries to interpret the font bytes as
FORTH source. This superseded FABRIC.md §27.7 decision #3 (hex/base64 FORTH source. This superseded FABRIC-0.md §27.7 decision #3 (hex/base64
text-encoding) — see that section's 2026-08-10 correction note. text-encoding) — see that section's 2026-08-10 correction note.
No SIL OFL 1.1 full license text is bundled here yet — only the font's own No SIL OFL 1.1 full license text is bundled here yet — only the font's own
+1 -1
View File
@@ -1,6 +1,6 @@
Block 4855 Block 4855
( Hermes v1 -- WELCOME. Generic messaging vocab moved to ) ( Hermes v1 -- WELCOME. Generic messaging vocab moved to )
( common:messaging.4th, FABRIC-3.md Phase C 2026-08-28. ) ( common:messaging.4th, FABRIC-2.md Phase C 2026-08-28. )
: WELCOME ( -- ) LOG-INFO" Hermes: loaded" ; : WELCOME ( -- ) LOG-INFO" Hermes: loaded" ;
WELCOME WELCOME
Block 4153 Block 4153
+1 -1
View File
@@ -6,7 +6,7 @@ Block 4021
( Hera's own dict -- delivered here by messaging.4th's ) ( Hera's own dict -- delivered here by messaging.4th's )
( MSG-DELIVER via VM-EXEC when a session calls the ) ( MSG-DELIVER via VM-EXEC when a session calls the )
( common:messaging.4th SEND-ELEVATE-REQUEST entrypoint. ) ( common:messaging.4th SEND-ELEVATE-REQUEST entrypoint. )
( FABRIC-3.md H.12 step 21, 2026-09-03. ) ( FABRIC-2.md H.12 step 21, 2026-09-03. )
CREATE ELEVATE-PK-BUF 32 ALLOT CREATE ELEVATE-PK-BUF 32 ALLOT
Block 4022 Block 4022
+2 -2
View File
@@ -85,7 +85,7 @@ carrying timestamp noise in git history.
- `artemis-metafence-fresh.img` — 30MB raw image, blank at creation, - `artemis-metafence-fresh.img` — 30MB raw image, blank at creation,
added 2026-08-26 for the top-of-device system-metadata fence added 2026-08-26 for the top-of-device system-metadata fence
(`meta_fence_blocks` in `blk_volume_meta_t`, FABRIC-3.md Phase 8 §C). (`meta_fence_blocks` in `blk_volume_meta_t`, FABRIC-2.md Phase 8 §C).
Same reasoning as `artemis-reloc-test.img` above: the fence is only Same reasoning as `artemis-reloc-test.img` above: the fence is only
initialized to `BLK_META_FENCE_INIT` (128) by initialized to `BLK_META_FENCE_INIT` (128) by
`blk_compute_fresh_geometry()` on a fresh format, so a genuinely blank `blk_compute_fresh_geometry()` on a fresh format, so a genuinely blank
@@ -103,7 +103,7 @@ carrying timestamp noise in git history.
or misreading adjacent fields. or misreading adjacent fields.
- `zuse.img` — 64MB raw image simulating the physical Zuse superuser - `zuse.img` — 64MB raw image simulating the physical Zuse superuser
thumbdrive for QEMU testing (FABRIC-3.md, Phase 8: `zuse.img` "bleach" thumbdrive for QEMU testing (FABRIC-2.md, Phase 8: `zuse.img` "bleach"
mechanism, added 2026-08-26). **64MB is only this fixture's size, not a mechanism, added 2026-08-26). **64MB is only this fixture's size, not a
constraint on real home-blocks thumbdrives** (Captain Bob, 2026-08-26) — constraint on real home-blocks thumbdrives** (Captain Bob, 2026-08-26) —
the design is not bound to any particular drive size; `homeblocks_sig_t`'s the design is not bound to any particular drive size; `homeblocks_sig_t`'s
BIN
View File
Binary file not shown.
+3 -3
View File
@@ -597,7 +597,7 @@ like `ttf_words.c`, not a word-registration file.
## Console Fabric — Framebuffer (`framebuffer_words.c`) ## Console Fabric — Framebuffer (`framebuffer_words.c`)
Kernel-only (`__STARKERNEL__`); no-ops on hosted builds. Raw hardware-boundary access — Kernel-only (`__STARKERNEL__`); no-ops on hosted builds. Raw hardware-boundary access —
FABRIC.md item 4.3.3. FABRIC-0.md item 4.3.3.
| Word | Stack Effect | Description | | Word | Stack Effect | Description |
|---|---|---| |---|---|---|
@@ -618,7 +618,7 @@ FABRIC.md item 4.3.3.
## Console Fabric — TrueType Text (`ttf_words.c`) ## Console Fabric — TrueType Text (`ttf_words.c`)
Kernel-only (`__STARKERNEL__`); no-op on hosted builds. FABRIC.md item 4.3.7e. Kernel-only (`__STARKERNEL__`); no-op on hosted builds. FABRIC-0.md item 4.3.7e.
| Word | Stack Effect | Description | | Word | Stack Effect | Description |
|---|---|---| |---|---|---|
@@ -626,7 +626,7 @@ Kernel-only (`__STARKERNEL__`); no-op on hosted builds. FABRIC.md item 4.3.7e.
## Console Fabric — Scrollback (`scroll_words.c`) ## Console Fabric — Scrollback (`scroll_words.c`)
Kernel-only (`__STARKERNEL__`); no-op on hosted builds. FABRIC.md item 4.4q (boot-mode Kernel-only (`__STARKERNEL__`); no-op on hosted builds. FABRIC-0.md item 4.4q (boot-mode
scrollback added by 4.4ac). scrollback added by 4.4ac).
| Word | Stack Effect | Description | | Word | Stack Effect | Description |
+1 -1
View File
@@ -1,7 +1,7 @@
# M7.1: Init Capsule Architecture # M7.1: Init Capsule Architecture
**Status:** Shipped and live, not just designed — this document predates the actual **Status:** Shipped and live, not just designed — this document predates the actual
capsule/Tripod/Stadium work; see `FABRIC.md`/`FABRIC-2.md`/`FABRIC-3.md` for real status capsule/Tripod/Stadium work; see `FABRIC-0.md`/`FABRIC-1.md`/`FABRIC-2.md` for real status
(per `.claude/CLAUDE.md`'s standing redirect) (per `.claude/CLAUDE.md`'s standing redirect)
**Branch:** `master` (post-split; the old `lithosananke` branch no longer exists in this repo) **Branch:** `master` (post-split; the old `lithosananke` branch no longer exists in this repo)
**Prerequisite:** M7 (VM Parity Validation) **Prerequisite:** M7 (VM Parity Validation)
+14 -14
View File
@@ -3,7 +3,7 @@
**Branch:** `master` (post-split: this repo's `master` is the sole LithosAnanke production **Branch:** `master` (post-split: this repo's `master` is the sole LithosAnanke production
line; the old `lithosananke` branch belonged to the pre-split combined monorepo and no line; the old `lithosananke` branch belonged to the pre-split combined monorepo and no
longer exists here — see `.claude/CLAUDE.md`'s "On the branch topology" note) longer exists here — see `.claude/CLAUDE.md`'s "On the branch topology" note)
**Current:** M7.1 in progress — see `FABRIC.md`/`FABRIC-2.md`/`FABRIC-3.md` for real status **Current:** M7.1 in progress — see `FABRIC-0.md`/`FABRIC-1.md`/`FABRIC-2.md` for real status
--- ---
@@ -28,7 +28,7 @@ belongs here.
Applied to the two planned releases: the **v2.0.0** cut (even major, so LTS) is the QEMU Applied to the two planned releases: the **v2.0.0** cut (even major, so LTS) is the QEMU
release; **v2.5.0** is the hardware bare-metal release that transfers v2.0.0's QEMU story to release; **v2.5.0** is the hardware bare-metal release that transfers v2.0.0's QEMU story to
real boards. See `FABRIC-3.md` §G for the release-gate punch lists. real boards. See `FABRIC-2.md` §G for the release-gate punch lists.
**Board-by-board hardware rollout, decided 2026-08-29 (extends the above as boards come **Board-by-board hardware rollout, decided 2026-08-29 (extends the above as boards come
online).** Real silicon is arriving incrementally (Beelink SER5 in hand now; RasPi 5 + Milk-V online).** Real silicon is arriving incrementally (Beelink SER5 in hand now; RasPi 5 + Milk-V
@@ -151,8 +151,8 @@ M4 APIC ██████████████████
M5 Timer ████████████████████ COMPLETE M5 Timer ████████████████████ COMPLETE
M6 Heap ████████████████████ COMPLETE M6 Heap ████████████████████ COMPLETE
M7 VM Parity ████████████████████ COMPLETE M7 VM Parity ████████████████████ COMPLETE
M7.1 Capsules ████████████████░░░░ LIVE — see FABRIC.md/FABRIC-2.md/FABRIC-3.md M7.1 Capsules ████████████████░░░░ LIVE — see FABRIC-0.md/FABRIC-1.md/FABRIC-2.md
M8 REPL ░░░░░░░░░░░░░░░░░░░░ OBSOLETE — see FABRIC.md §25.5 item 4.4 M8 REPL ░░░░░░░░░░░░░░░░░░░░ OBSOLETE — see FABRIC-0.md §25.5 item 4.4
M9 Block I/O ░░░░░░░░░░░░░░░░░░░░ PLANNED M9 Block I/O ░░░░░░░░░░░░░░░░░░░░ PLANNED
M10 Networking ░░░░░░░░░░░░░░░░░░░░ FUTURE M10 Networking ░░░░░░░░░░░░░░░░░░░░ FUTURE
``` ```
@@ -328,15 +328,15 @@ APIC Timer: started
**Goal:** Content-addressed, immutable init capsules for VM birth **Goal:** Content-addressed, immutable init capsules for VM birth
**Status:** Design Complete (see [M7.1.md](M7.1.md)) — this section predates the actual **Status:** Design Complete (see [M7.1.md](M7.1.md)) — this section predates the actual
capsule/Tripod/Stadium work and is not current. **See `FABRIC.md`/`FABRIC-2.md` for real capsule/Tripod/Stadium work and is not current. **See `FABRIC-0.md`/`FABRIC-1.md` for real
status** (per `.claude/CLAUDE.md`'s standing redirect) — Tripod (Hera/Hermes/Artemis), status** (per `.claude/CLAUDE.md`'s standing redirect) — Tripod (Hera/Hermes/Artemis),
word-level ACL Phases 1–7, and the Stadium physics-economy migration are all live, not just word-level ACL Phases 1–7, and the Stadium physics-economy migration are all live, not just
designed. Most recently: item 4.6 (Artemis's block-heat arena migrated to Stadium designed. Most recently: item 4.6 (Artemis's block-heat arena migrated to Stadium
admission-on-allocate) verified passing its 30-rep stress campaign on all three admission-on-allocate) verified passing its 30-rep stress campaign on all three
architectures 2026-08-18, after fixing a quota-grant ordering bug (`capsule_birth.c`) that architectures 2026-08-18, after fixing a quota-grant ordering bug (`capsule_birth.c`) that
had made every admission fail; see `FABRIC-2.md` Section H. The same pass also fixed a had made every admission fail; see `FABRIC-1.md` Section H. The same pass also fixed a
long-standing aarch64-only crash on `BYE` (wrong PSCI conduit — SMC has nothing to answer it long-standing aarch64-only crash on `BYE` (wrong PSCI conduit — SMC has nothing to answer it
under AAVMF/no-EL3 boot; switched to HVC), see `FABRIC-2.md` Section I. under AAVMF/no-EL3 boot; switched to HVC), see `FABRIC-1.md` Section I.
**Core Concepts:** **Core Concepts:**
@@ -379,7 +379,7 @@ under AAVMF/no-EL3 boot; switched to HVC), see `FABRIC-2.md` Section I.
## Phase 4: Interactive Forth (M8) ## Phase 4: Interactive Forth (M8)
> **⚠ OBSOLETE (2026-08-11).** This entire M8 section is superseded by > **⚠ OBSOLETE (2026-08-11).** This entire M8 section is superseded by
> `FABRIC.md` §25.5 item 4.4 (REPL). The console/REPL design has moved past > `FABRIC-0.md` §25.5 item 4.4 (REPL). The console/REPL design has moved past
> what's scoped here — do not use this section as a source for REPL or > what's scoped here — do not use this section as a source for REPL or
> CANVAS design decisions. Kept in place for history only. > CANVAS design decisions. Kept in place for history only.
@@ -387,7 +387,7 @@ under AAVMF/no-EL3 boot; switched to HVC), see `FABRIC-2.md` Section I.
**Status:** Scoped 2026-08-11 (this section). Substrate (interrupt-driven keyboard **Status:** Scoped 2026-08-11 (this section). Substrate (interrupt-driven keyboard
input, glyph rendering) already complete via Stadium's Console fabric work input, glyph rendering) already complete via Stadium's Console fabric work
(FABRIC.md §25.5 items 4.3.5–4.3.7f) — see "What's already done" below. This (FABRIC-0.md §25.5 items 4.3.5–4.3.7f) — see "What's already done" below. This
scoping pass covers what's left: wiring the existing keyboard-event stream into scoping pass covers what's left: wiring the existing keyboard-event stream into
the REPL's character input path. the REPL's character input path.
@@ -401,11 +401,11 @@ is a second input source feeding the same loop.
aarch64/riscv64 virtio-keyboard-pci + GIC/PLIC), converged behind one shared aarch64/riscv64 virtio-keyboard-pci + GIC/PLIC), converged behind one shared
interface: `KEY-EVENT ( -- keycode pressed -1 | 0 )` in interface: `KEY-EVENT ( -- keycode pressed -1 | 0 )` in
`src/word_source/keyboard_words.c`, `keycode` in the Linux input keycode `src/word_source/keyboard_words.c`, `keycode` in the Linux input keycode
namespace. FABRIC.md items 4.3.5–4.3.5f, verified live on all three namespace. FABRIC-0.md items 4.3.5–4.3.5f, verified live on all three
architectures with real keypresses. architectures with real keypresses.
- Glyph rendering, both paths: the stroke-drawn font (`TEXT`, capsule-based, - Glyph rendering, both paths: the stroke-drawn font (`TEXT`, capsule-based,
113-glyph v1 repertoire, FABRIC.md 4.3.6–4.3.6g) and TrueType (`TTF-TEXT`, 113-glyph v1 repertoire, FABRIC-0.md 4.3.6–4.3.6g) and TrueType (`TTF-TEXT`,
proportional spacing via real `hmtx` advance widths, FABRIC.md 4.3.7–4.3.7f). proportional spacing via real `hmtx` advance widths, FABRIC-0.md 4.3.7–4.3.7f).
Neither is required for the REPL text itself, though — see the VT100 finding Neither is required for the REPL text itself, though — see the VT100 finding
below. below.
- **The REPL's on-screen text already renders independently of both of the - **The REPL's on-screen text already renders independently of both of the
@@ -468,7 +468,7 @@ ok 1 2 + .
3 ok 3 ok
``` ```
(via a real keypress on all three architectures, same live-keypress (via a real keypress on all three architectures, same live-keypress
verification standard FABRIC.md 4.3.5f already established — not a verification standard FABRIC-0.md 4.3.5f already established — not a
serial-injected synthetic test, though serial injection must still work serial-injected synthetic test, though serial injection must still work
identically afterward.) identically afterward.)
@@ -546,7 +546,7 @@ LithosAnanke is successful when:
1. **M7 Parity** — VM dictionary hash reproducible across boots 1. **M7 Parity** — VM dictionary hash reproducible across boots
2. **M7.1 Capsules** — Birth protocol enforced, provenance logged 2. **M7.1 Capsules** — Birth protocol enforced, provenance logged
3. ~~**M8 REPL** — Interactive Forth at bare metal~~ — superseded, this criterion is now met 3. ~~**M8 REPL** — Interactive Forth at bare metal~~ — superseded, this criterion is now met
via Stadium's Console fabric work (`FABRIC.md` §25.5 item 4.4), not a standalone M8; see via Stadium's Console fabric work (`FABRIC-0.md` §25.5 item 4.4), not a standalone M8; see
the OBSOLETE banner above Phase 4 the OBSOLETE banner above Phase 4
4. **M9 Persistence** — State survives reboot 4. **M9 Persistence** — State survives reboot
@@ -27,7 +27,7 @@ What actually exists, as of 2026-08-19:
|-----------|------|--------------|---------------| |-----------|------|--------------|---------------|
| Word-level DoE (**this HOWTO**) | `doe.4th` | `DOE` / `EXEC-DOE ( seed n-reps -- )` | A single embedded arithmetic workload (`DOE-WORK`), run across the 16 L8 factor configurations, streaming a CSV row per run to serial. Not auto-run anywhere. | | Word-level DoE (**this HOWTO**) | `doe.4th` | `DOE` / `EXEC-DOE ( seed n-reps -- )` | A single embedded arithmetic workload (`DOE-WORK`), run across the 16 L8 factor configurations, streaming a CSV row per run to serial. Not auto-run anywhere. |
| Compudynamics fleet campaign | `doe-campaign.4th` | `CAMPAIGN` / `SMOKE-CAMPAIGN` / `THREE-VM-CAMPAIGN` | Spawns Hermes/Artemis and drives real `VM-EXEC` touches between them to measure fleet heat conservation (`VM-CONSERVED?`). Not auto-run anywhere. | | Compudynamics fleet campaign | `doe-campaign.4th` | `CAMPAIGN` / `SMOKE-CAMPAIGN` / `THREE-VM-CAMPAIGN` | Spawns Hermes/Artemis and drives real `VM-EXEC` touches between them to measure fleet heat conservation (`VM-CONSERVED?`). Not auto-run anywhere. |
| Artemis stress campaign | `capsules/artemis/init.4th` | `ART-STRESS-CAMPAIGN` | Runs unconditionally at the bottom of the file, so it fires automatically every time Artemis is born. This is the actual source of the live `[Artemis][HADES][DOE ]` CSV rows visible during every kernel boot — unrelated to either mechanism above, and the subject of FABRIC-2.md's item 4.6 fix. | | Artemis stress campaign | `capsules/artemis/init.4th` | `ART-STRESS-CAMPAIGN` | Runs unconditionally at the bottom of the file, so it fires automatically every time Artemis is born. This is the actual source of the live `[Artemis][HADES][DOE ]` CSV rows visible during every kernel boot — unrelated to either mechanism above, and the subject of FABRIC-1.md's item 4.6 fix. |
Only the first is a self-contained "package/library" in the sense the Only the first is a self-contained "package/library" in the sense the
cookbook wants — a capsule you load and call with your own parameters, not cookbook wants — a capsule you load and call with your own parameters, not
@@ -4,7 +4,7 @@
# SDK HOWTO — `capsules/sdk.4th` # SDK HOWTO — `capsules/sdk.4th`
**Status:** WORKING. Part of the v1.9.0 scoping work (FABRIC-2.md section K). **Status:** WORKING. Part of the v1.9.0 scoping work (FABRIC-1.md section K).
Loads the two cookbook capsules (turtle graphics, DoE library) and adds an Loads the two cookbook capsules (turtle graphics, DoE library) and adds an
`SDK` vocabulary entry point plus `FENCE` protection on top of them. `SDK` vocabulary entry point plus `FENCE` protection on top of them.
@@ -54,7 +54,7 @@ word wrongly destroyed every other word back to the fence too; forgetting
an older word (which correctly cascades to remove newer words, per an older word (which correctly cascades to remove newer words, per
FORTH-79 semantics) crashed with a SIGSEGV — a use-after-free in the FORTH-79 semantics) crashed with a SIGSEGV — a use-after-free in the
dictionary relink logic. Found and fixed as part of this work; full dictionary relink logic. Found and fixed as part of this work; full
root-cause writeup in FABRIC-2.md section K. Three POST cases were added to root-cause writeup in FABRIC-1.md section K. Three POST cases were added to
`dictionary_manipulation_words_test.c` (Module 14) alongside `FORGET`'s `dictionary_manipulation_words_test.c` (Module 14) alongside `FORGET`'s
own, including the exact regression scenario, so it can't silently return. own, including the exact regression scenario, so it can't silently return.
@@ -144,7 +144,7 @@ rather than a `POLYGON` call with `n=5`.
documented in `DOE-LIBRARY-HOWTO-20260819.md`) — it carried a stale documented in `DOE-LIBRARY-HOWTO-20260819.md`) — it carried a stale
`TEMP: ... revert once that run is done` comment for a verification `TEMP: ... revert once that run is done` comment for a verification
run that had already closed. Reverted to disabled, matching the run that had already closed. Reverted to disabled, matching the
file's own note (FABRIC-2.md section K/L). file's own note (FABRIC-1.md section K/L).
- The kernel's heartbeat CSV logging (`[HADES][DOE ]` rows) draws to - The kernel's heartbeat CSV logging (`[HADES][DOE ]` rows) draws to
the *same* console surface `PLOT` draws pixels to, and scrolls the *same* console surface `PLOT` draws pixels to, and scrolls
continuously — anything drawn gets visually overwritten within a continuously — anything drawn gets visually overwritten within a

Some files were not shown because too many files have changed in this diff Show More