Ruled (Captain Bob, 2026-11-08): "v3 dependencies for v4 should be moved to v4 and the v3 code retired and removed." When: its own milestone, "Retire v3" (after #92 ships the plug-and-play stick in alpha.4).
What v4 needs from v3 today
From v3/
Used by
src/block_subsystem.c, include/block_subsystem.h
all of v4's block storage: RAM blocks, the ramdrive, Artemis on the stick, the fence and genesis marker (v4/system/blocks.c, kernel/src/v4/sk_v4*.c)
the block-device interface the USB sticks and GPT partitions plug into; RAM/file devices for the hosted tests
src/log.c, src/platform/.../time.c
logging and time under the block layer (v4/Makefile's v3blocks.o, which test-32 links)
include/vm.h
the VM * type only, in capsule_mint.h / capsule_zuse_boot.h (v4 always passes NULL)
v3 headers
tools/mkcapsule.c compiles against them
The v4 engine (v4/src/) includes nothing from v3. A v4 boot branches to sk_v4_run() before v3's VM is set up.
What goes with v3
v3/ (197 files, ~53,000 lines of C); the kernel's v3 path (system=v3, kernel/src/vm/, repl.c, capsule birth and the Hera/Artemis/Hestia fleet, kernel-Hermes, Mama's words, the word ACL, MINT/WIREBIND, the DoE physics runtime -- 27 kernel files include v3 headers beyond the block layer); the 45 v3 capsules in capsules/ (capsules/v4/ stays); the root Makefile's hosted starforth; proof/ (52 theories, all of the v3 VM) and the nightly proofs stage.
Also to change
demo/mint-zuse.sh mints the demo's Zuse by booting system=v3 -- with #92 it can take a fresh stick's genesis instead. disk/zuse-scratch (a v3-minted pair, version 1 marker) stays readable by v4. scripts/qemu_session.py's v3 modes (v3_keys), nightly.sh, .claude/CLAUDE.md, docs/, the formal volumes' v3 material.
My calls (no preference given -- open to a ruling when the milestone starts)
Archive first: tag the last tree with v3 (archive/v3-final) before anything is removed; tags are the oracle.
The block layer moves to v4/storage/ -- v4/src stays the pure engine; the kernel and the hosted tests link v4/storage.
The proofs are archived under that tag and removed with the nightly proofs stage; v4 gets its own proofs later (and proof/COVERAGE.md's boundary goes with them).
v3-only features go with v3 -- fleet, word ACL, MINT/WIREBIND, DoE runtime -- their designs kept in FABRIC and the tag; v4 rebuilds them in later designs.
Acceptance
As always, plus: no file under v3/; the kernel builds with no -Iv3/...; system=v3 gives a clear refusal line; dict_hash unchanged on the three ISAs (v4's dictionary is untouched); test-32 0 failures.
**Ruled** (Captain Bob, 2026-11-08): "v3 dependencies for v4 should be moved to v4 and the v3 code retired and removed." **When: its own milestone, "Retire v3"** (after #92 ships the plug-and-play stick in alpha.4).
## What v4 needs from v3 today
| From `v3/` | Used by |
|---|---|
| `src/block_subsystem.c`, `include/block_subsystem.h` | all of v4's block storage: RAM blocks, the ramdrive, Artemis on the stick, the fence and genesis marker (`v4/system/blocks.c`, `kernel/src/v4/sk_v4*.c`) |
| `include/blkio.h`, `src/blkio_ram.c`, `src/blkio_file.c` | the block-device interface the USB sticks and GPT partitions plug into; RAM/file devices for the hosted tests |
| `src/log.c`, `src/platform/.../time.c` | logging and time under the block layer (`v4/Makefile`'s `v3blocks.o`, which `test-32` links) |
| `include/vm.h` | the `VM *` type only, in `capsule_mint.h` / `capsule_zuse_boot.h` (v4 always passes `NULL`) |
| v3 headers | `tools/mkcapsule.c` compiles against them |
The v4 engine (`v4/src/`) includes nothing from v3. A v4 boot branches to `sk_v4_run()` before v3's VM is set up.
## What goes with v3
`v3/` (197 files, ~53,000 lines of C); the kernel's v3 path (`system=v3`, `kernel/src/vm/`, `repl.c`, capsule birth and the Hera/Artemis/Hestia fleet, kernel-Hermes, Mama's words, the word ACL, MINT/WIREBIND, the DoE physics runtime -- 27 kernel files include v3 headers beyond the block layer); the 45 v3 capsules in `capsules/` (`capsules/v4/` stays); the root `Makefile`'s hosted `starforth`; `proof/` (52 theories, all of the v3 VM) and the nightly `proofs` stage.
## Also to change
`demo/mint-zuse.sh` mints the demo's Zuse by booting `system=v3` -- with #92 it can take a fresh stick's genesis instead. `disk/zuse-scratch` (a v3-minted pair, version 1 marker) stays readable by v4. `scripts/qemu_session.py`'s v3 modes (`v3_keys`), `nightly.sh`, `.claude/CLAUDE.md`, `docs/`, the formal volumes' v3 material.
## My calls (no preference given -- open to a ruling when the milestone starts)
1. **Archive first:** tag the last tree with v3 (`archive/v3-final`) before anything is removed; tags are the oracle.
2. **The block layer moves to `v4/storage/`** -- `v4/src` stays the pure engine; the kernel and the hosted tests link `v4/storage`.
3. **The proofs are archived under that tag and removed** with the nightly `proofs` stage; v4 gets its own proofs later (and `proof/COVERAGE.md`'s boundary goes with them).
4. **v3-only features go with v3** -- fleet, word ACL, MINT/WIREBIND, DoE runtime -- their designs kept in FABRIC and the tag; v4 rebuilds them in later designs.
## Acceptance
As always, plus: no file under `v3/`; the kernel builds with no `-Iv3/...`; `system=v3` gives a clear refusal line; `dict_hash` unchanged on the three ISAs (v4's dictionary is untouched); `test-32` 0 failures.
rajames
added this to the v4.0.0-alpha.5: SDK milestone 2026-11-08 13:01:14 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Ruled (Captain Bob, 2026-11-08): "v3 dependencies for v4 should be moved to v4 and the v3 code retired and removed." When: its own milestone, "Retire v3" (after #92 ships the plug-and-play stick in alpha.4).
What v4 needs from v3 today
v3/src/block_subsystem.c,include/block_subsystem.hv4/system/blocks.c,kernel/src/v4/sk_v4*.c)include/blkio.h,src/blkio_ram.c,src/blkio_file.csrc/log.c,src/platform/.../time.cv4/Makefile'sv3blocks.o, whichtest-32links)include/vm.hVM *type only, incapsule_mint.h/capsule_zuse_boot.h(v4 always passesNULL)tools/mkcapsule.ccompiles against themThe v4 engine (
v4/src/) includes nothing from v3. A v4 boot branches tosk_v4_run()before v3's VM is set up.What goes with v3
v3/(197 files, ~53,000 lines of C); the kernel's v3 path (system=v3,kernel/src/vm/,repl.c, capsule birth and the Hera/Artemis/Hestia fleet, kernel-Hermes, Mama's words, the word ACL, MINT/WIREBIND, the DoE physics runtime -- 27 kernel files include v3 headers beyond the block layer); the 45 v3 capsules incapsules/(capsules/v4/stays); the rootMakefile's hostedstarforth;proof/(52 theories, all of the v3 VM) and the nightlyproofsstage.Also to change
demo/mint-zuse.shmints the demo's Zuse by bootingsystem=v3-- with #92 it can take a fresh stick's genesis instead.disk/zuse-scratch(a v3-minted pair, version 1 marker) stays readable by v4.scripts/qemu_session.py's v3 modes (v3_keys),nightly.sh,.claude/CLAUDE.md,docs/, the formal volumes' v3 material.My calls (no preference given -- open to a ruling when the milestone starts)
archive/v3-final) before anything is removed; tags are the oracle.v4/storage/--v4/srcstays the pure engine; the kernel and the hosted tests linkv4/storage.proofsstage; v4 gets its own proofs later (andproof/COVERAGE.md's boundary goes with them).Acceptance
As always, plus: no file under
v3/; the kernel builds with no-Iv3/...;system=v3gives a clear refusal line;dict_hashunchanged on the three ISAs (v4's dictionary is untouched);test-320 failures.