Resolves item #3 of docs/working/archive/session-logs/2026-07-24-punch-list.md ("riscv64 hosted build isn't reachable via plain make"), the last open item from that list. Decided against options (b) chasing GCC's riscv64 nanosleep-visibility failure at its root (undiagnosed, open-ended) and (c) leaving it manual — instead wired the already-verified clang recipe (commit4485c38/e287334) into the Makefile, mirroring the existing rpi4-cross pattern. Makefile: new riscv64-clang target. CFLAGS deliberately does not reuse $(BASE_CFLAGS) (hardcodes -std=c99); clang needs -std=c11 -pthread here instead. Registered in `make help` and .PHONY. docs/lithosananke/hosted-acceptance-test/README.md: riscv64 section now points at `make riscv64-clang` instead of the long manual invocation. Updated Background section and commit list to reflect that all three punch-list items touching this doc (#1 asm fix, #2 doc command, #3 make target) are now resolved. Verified: `make riscv64-clang` produces a binary with identical results to the manual command it replaces (965 passed / 0 failed, "ALL IMPLEMENTED TESTS PASSED!", "3 Goodbye!" for the piped acceptance script). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
LithosAnanke — StarForth Kernel Branch
Branch: lithosananke
Status: M7 Complete (VM Parity Validation)
Parent: master (hosted StarForth)
What is LithosAnanke?
LithosAnanke is the kernel branch of StarForth — a UEFI-bootable microkernel with the StarForth VM as its native execution engine.
Etymology: Lithos (stone/foundation) + Ananke (necessity/inevitability)
The name reflects the project's nature: a necessary foundation for StarshipOS.
Architecture
┌─────────────────────────────────────────────────────────────┐
│ UEFI Firmware │
│ • ExitBootServices → handoff to kernel │
└─────────────────────┬───────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────┐
│ LithosAnanke Boot (M0) │
│ • UEFI loader collects BootInfo │
│ • Memory map, ACPI tables, framebuffer │
└─────────────────────┬───────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────┐
│ LithosAnanke HAL (M1-M6) │
│ • PMM: Physical Memory Manager (bitmap) │
│ • VMM: Virtual Memory Manager (4-level paging) │
│ • IDT: Interrupt Descriptor Table │
│ • APIC: Timer + IRQ routing │
│ • Heap: kmalloc/kfree │
│ • Console: Serial UART │
└─────────────────────┬───────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────┐
│ StarForth VM (M7+) │
│ • 295 FORTH-79 words │
│ • Parity validation (hash=0x684bbf2fa1d96d55) │
│ • Physics-driven adaptive runtime │
│ • Init capsule system (M7.1) │
└─────────────────────────────────────────────────────────────┘
Current Milestones
| Milestone | Description | Status |
|---|---|---|
| M0 | UEFI Boot + Serial Output | Complete |
| M1 | Physical Memory Manager | Complete |
| M2 | Virtual Memory Manager | Complete |
| M3 | IDT + Interrupts | Complete |
| M4 | APIC Timer | Complete |
| M5 | Timer Calibration | Complete |
| M6 | Kernel Heap | Complete |
| M7 | VM Parity Validation | Complete |
| M7.1 | Init Capsule Architecture | Design Complete |
| M8 | REPL + Interactive Forth | Planned |
| M9 | Block Storage | Planned |
Build & Run
# Build kernel with VM integration
make -f Makefile.starkernel ARCH=amd64 STARFORTH_ENABLE_VM=1
# Run in QEMU
make -f Makefile.starkernel ARCH=amd64 STARFORTH_ENABLE_VM=1 qemu
Output artifacts:
build/amd64/kernel/starkernel_loader.efi— UEFI loaderbuild/amd64/kernel/starkernel_kernel.elf— Kernel binary
Documentation
Core Design
| Document | Description |
|---|---|
| M7.1.md | Init Capsule Architecture |
| ROADMAP.md | Milestone roadmap |
| amd64-isr-fix/README.md | APIC timer ISR fix + kernel 3-arch acceptance test |
| hosted-acceptance-test/README.md | Hosted VM 3-arch acceptance test (amd64 native, aarch64/riscv64 under QEMU user-mode) |
HAL (Hardware Abstraction Layer)
| Document | Description |
|---|---|
| hal/overview.md | HAL architecture and principles |
| hal/interfaces.md | HAL interface specifications |
| hal/lithosananke-integration.md | Kernel-specific HAL implementation |
| hal/platform-implementations.md | Platform implementation guide |
| hal/migration-plan.md | Migration from hosted to kernel |
Key Concepts
One Truth Per VM
Every VM has exactly one birth capsule — its identity and provenance.
PARITY:BIRTH vm_id=42 capsule_id=0xA13F mode=p capsule_hash=0x... dict_hash=0x...
DOMAIN vs PERSONALITY
DOMAIN is a construction concept that exists only in Mama FORTH. It's how Mama classifies, composes, and selects capsules. DOMAIN is never visible to baby VMs.
PERSONALITY is the result of executing a production (p) INIT capsule. It's what the baby VM is — its vocabulary, invariants, capabilities. PERSONALITY is immutable and defines the VM's entire worldview.
Production (p) vs Experiment (e)
- (p) capsules are truth-bearing — they can birth VMs
- (e) capsules are Mama-only workloads — experiments that never touch babies
A baby VM never sees, executes, or knows about (e) capsules.
Content-Addressed Capsules
Capsules are identified by content hash, not names. Names lie. Hashes don't.
Mama FORTH
The root VM that holds all truths, manages child VMs, and enforces the birth protocol. Mama:
- Maintains the capsule directory
- Selects (p) capsules for birth
- Executes (e) capsules for experimentation
- Logs all births and runs for provenance
Directory Structure
src/starkernel/
├── boot/ # UEFI loader, ELF loader
├── hal/ # Console, host services
├── memory/ # PMM, VMM, kmalloc
├── arch/amd64/ # x86_64 specific (APIC, IDT, timer)
├── vm/ # VM integration
│ ├── arena.c # VM memory arena
│ ├── parity.c # Parity validation
│ ├── bootstrap/ # sk_vm_bootstrap
│ └── host/ # Host services shim
└── kernel_main.c # Entry point
Contributing
The lithosananke branch is experimental. Changes should:
- Maintain parity validation (M7 baseline)
- Pass QEMU boot test
- Not break hosted StarForth (master branch)
References
- StarForth README — Main project
- FORTH-79 Standard
- OSDev Wiki
- UEFI Specification