Files
StarForth/src/starkernel/capsule
Robert Allan JamesandClaude Sonnet 5 030a3e6dc0 Milestone 6: hard-refuse flip, scoped to INVALID only -- closes Milestone 6
Before flipping, found CAPSULE_SIG_MISSING (no signature at all) is the
normal state everywhere except this machine -- CI and any other
checkout have no access to the offline key, by design. Refusing on
MISSING the same as INVALID would brick boot everywhere but here.
Decided (on request): enforce ONLY on CAPSULE_SIG_INVALID (a signature
that IS present but doesn't verify -- unambiguous tampering/corruption
evidence). MISSING/NO_ROOT_KEY stay WARN-only permanently.

All three capsule_birth.c call sites now return CAPSULE_RUN_ERR_INVALID
on CAPSULE_SIG_INVALID, after logging the same WARN as before.

Verified on all three architectures, both directions, per the original
rollout commitment: positive case (real signed capsules) reboots clean
with zero warnings on amd64/aarch64/riscv64. Negative case (same
one-byte signature corruption used for the WARN-only proof, on Mama's
own init.4th) now genuinely refuses identically on all three:
"capsule sig: init.4th: INVALID" then "Init: Mama birth FAILED". The
feared "no ok> at all" blast radius didn't materialize -- kernel_main.c
already had graceful error handling for a failed Mama birth (log and
continue, pre-existing code); the kernel reaches a degraded ok> rather
than crashing, on all three architectures. Final acceptance pass (real
signed capsules, tampering reverted) clean on all three.

Milestone 6 is now fully closed except magic-number content-type
detection (shared with Milestone 4, separate scope, not started).
Documented in FABRIC-3.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U14ET9CWAtbQMbYqomKgXd
2026-08-26 22:08:20 -04:00
..

src/starkernel/capsule/

Kernel-side capsule system: locating, validating, and executing the immutable, content-addressed .4th initialization payloads in capsules/ (embedded into the kernel image via tools/mkcapsule.c).

  • capsule_find.c — locates a capsule by name in the generated capsule directory.
  • capsule_validate.c — validates a capsule's content hash before use.
  • capsule_birth.c — the birth protocol: allocate VM ID → execute IDENTITY (capsule code) → execute PERSONALITY (block 1 from ramdrive) → log parity record.
  • capsule_run.c — capsule execution against a VM instance.
  • capsule_loader.c — loads capsule block content into kernel ramdrive block RAM, writing each Block N header to its literal numbered block address (not reordered).
  • capsule_vm_hooks.c — VM integration hooks for capsule execution.
  • capsule_vm_physics.c — physics-runtime bindings for capsule-birthed VMs.
  • mama_forth_words.c — Mama VM-specific FORTH word bindings.