Retire v3: move what v4 needs into v4, remove the rest #156

Open
opened 2026-11-08 13:01:14 +00:00 by rajames · 0 comments
Owner

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.

**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
rajames modified the milestone from v4.0.0-alpha.5: SDK to Retire v3 2026-11-08 13:02:25 +00:00
Sign in to join this conversation.