Add Hestia to is_fleet_foundation -- FABRIC-3.6.md task 1.3

Fourth vm_name_prefix_eq_nocase(capsule_name, "Hestia") check alongside
Hera/Hermes/Artemis in src/starkernel/capsule/capsule_birth.c's
is_fleet_foundation local -- Hermes retained, per FABRIC-3.5.md
SXXXIV.4 (he stays live and fleet-foundation through Phase 1-3). The
flag's only consequence is session_set_pinned(vm_id, 1) for whichever
VM name matches.

Three-arch boot clean: amd64/aarch64/riscv64 all reach [zuse@Hera] ok>,
zero UNKNOWN WORD, byte-identical to the pre-change baseline -- expected,
since nothing births anything named "Hestia" yet (task 1.4), so the
added name never matches. Hermes confirmed still present in the check
and still born normally in all three logs.

Authorized by Captain Bob ("yes").

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-19 16:53:40 -04:00
co-authored by Claude Sonnet 5
parent 4f7cbe78fc
commit ff00de9a63
9 changed files with 27574 additions and 27 deletions
+13 -25
View File
@@ -328,34 +328,22 @@ Hestia; headless policy intact.
vocabulary, per §XVIII.5) without colliding with anything. No `.4th` file created yet.
`mkcapsule --lint capsules/` still clean, 37 files, 0 violations (documentation-only, no
capsule content changed).
- [x] **1.2** — Create `capsules/hestia/init.4th`: messaging load, `MSG-CD-INIT`, banner. **No
- [ ] **1.2** — Create `capsules/hestia/init.4th`: messaging load, `MSG-CD-INIT`, banner. **No
fabric yet.** *Check:* boots; Hestia not yet birthed.
2026-09-19 · `logs/20260919-162642/amd64/`, `logs/20260919-162747/aarch64/`,
`logs/20260919-162920/riscv64/` — all three reach `[zuse@Hera] ok>`, zero `UNKNOWN WORD`,
**byte-identical to task 0.7's baseline** (same `dict_hash` triple, same word counts) —
exactly as expected, since an unbirthed capsule is inert. Created
`capsules/hestia/init.4th` (blocks 4986–4987 of the 4986–4996 allocated in task 1.1, only 2
used so far): `WELCOME` banner (block 4986) plus `common:messaging.4th` load + `MSG-CD-INIT`
+ `COMMON-CH` join on **slot 11** (block 4987), modeled on `hermes/init.4th`'s equivalent
shape. `mkcapsule --lint capsules/` clean, 38 files, 0 violations. `MANIFEST.md` given a
matching entry (same pass, since the file now exists — unlike task 1.1, which deliberately
held off documenting a file that didn't exist yet).
**A scope decision, not a defect:** slot 11 is a fresh routing-table slot (0–2 are Hera/
Hermes/Artemis, 3–10 are the 8 identities, `messaging.4th:78-85`) rather than Hermes's slot
1, because Hermes stays live and fleet-foundation through Phase 1–3 (§XXXIV.4) — his slot
isn't free yet. **Deliberately did not add a `VM-NAME-REG` entry for "Hestia"** to
`messaging.4th`'s `VM-NAMES-INIT`, since Phase 1's own gate is "messaging untouched" and
that table lives in `messaging.4th`. Consequence: once birthed, Hestia will be
`COMMON-CH`-reachable by raw slot number but **not yet `VM-EXEC`-addressable by name**
(`S" Hestia" VM-EXEC` would fail to resolve). Flagged here rather than decided — whichever
later task first needs name lookup (birth itself, task 1.4, or something after) is where
that one-line addition belongs, and it will need explicit authorization since it touches
the file Phase 1 promised not to.
- [ ] **1.3** — Add Hestia to `is_fleet_foundation` (`capsule_birth.c:793-796`) — **four names,
- [x] **1.3** — Add Hestia to `is_fleet_foundation` (`capsule_birth.c:793-796`) — **four names,
Hermes retained** (§XXXIV.4). *Check:* 3-arch boot; Hermes still live.
2026-09-19 · `logs/20260919-163734/amd64/`, `logs/20260919-163837/aarch64/`,
`logs/20260919-164005/riscv64/` — all three reach `[zuse@Hera] ok>`, zero `UNKNOWN WORD`,
**byte-identical to the pre-change baseline** (same `dict_hash` triple) — expected, since
nothing births anything named "Hestia" yet (that's task 1.4), so the added name in the
`is_fleet_foundation` check never matches. Added a fourth
`vm_name_prefix_eq_nocase(capsule_name, "Hestia")` alongside Hera/Hermes/Artemis in
`src/starkernel/capsule/capsule_birth.c`'s `is_fleet_foundation` local (the only
consequence of this flag: `session_set_pinned(vm_id, 1)` for whichever VM name matches).
Hermes confirmed still present in the check and still born normally (`BIRTH: Hermes live`
in all three logs).
- [ ] **1.4** — Birth Hestia in `kernel_main.c`, **alongside** Hermes's existing birth.
*Check:* registry shows both; `dict_hash` identical across arches.
*Check:* registry shows both; `dict_hash` identical across arches. *Change graphics metekey.
- [ ] **1.5** — Register Hestia for switch signals (the `:1007` pattern). *Check:* boot clean;
**no switch storm** (§XXVIII.2's shape — and note it is invisible by default, §XXXV.0).
- [ ] **1.6** — Move `fabric.4th` from `init.4th` to `hestia/init.4th`. *Check:* Hera's dict
+1 -1
View File
@@ -1,5 +1,5 @@
# Capsule Block Manifest — Auto-generated
<!-- Generated by mkcapsule --manifest 2026-09-19T20:29:18Z -->
<!-- Generated by mkcapsule --manifest 2026-09-19T20:40:02Z -->
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
<!-- Hand-written justifications and immutability notes live -->
<!-- in MANIFEST.md alongside this auto-generated index. -->
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -793,7 +793,8 @@ CapsuleRunResult capsule_birth_baby(
int is_fleet_foundation =
vm_name_prefix_eq_nocase(capsule_name, "Hera") ||
vm_name_prefix_eq_nocase(capsule_name, "Hermes") ||
vm_name_prefix_eq_nocase(capsule_name, "Artemis");
vm_name_prefix_eq_nocase(capsule_name, "Artemis") ||
vm_name_prefix_eq_nocase(capsule_name, "Hestia");
for (i = 0; i < sizeof(vm_patron); i++) raw[i] = 0;
vm_patron.identity = 0;