feat(v4): the mesh boot to spec -- Hera born empty in the kernel's fabric; births, kills, every node stepping together (#189)

ENGINE step 4 Phase 1, Tasks 5b-5d, and the edge cases (Captain Bob, 2026-11-13: "Build it to proper
spec"; "Check for the edge cases"; "Yes, add it to v4-checks").

- v4/system/mesh.c, v4/include/v4/mesh.h: the nucleus assembled by the ROM and given to Hera as F18
  cells; Hera born empty at place 0, the kernel on port 0, the console on port 1; told she is 10, in the
  registry, the kernel's words, FORTH-79, sealed, POST, the kernel's capsules. NODE-BORN / NODE-KILL in
  the owner's room.
- No scheduler: v4_mesh_tell returns once the node told says how its text ended, and
  v4_mesh_step / v4_mesh_busy let the host step the fabric while it waits, so nodes run between
  lines as during them. A text left "waiting" is owed its end: the next line ends it "Interrupted"
  and is then run (MESH.md 7b.6).
- kernel: sk_v4.c boots through the mesh; its idle steps the fabric while a node can run, and halts
  only when none can (#151 kept). stadium_return_quota and stadium_ops_forget on a kill.
- Tests: v4/tests/test_mesh_boot.c (32 checks: the boot, births, kills, rebirth, a live number, a
  fault, no such node, Hera not killing herself, no room, a line too long, a node running for ever,
  a wait broken by the next line), run by `make -C v4 test` and under ASan+UBSan by `sanitize`
  (v4-checks); kernel/tests quota return; scripts/qemu_session.py births() and the edges on bare
  metal.
- Docs: ENGINE.md 6 "who runs next" struck (settled: no scheduler); the Phase 1 plan; FABRIC-3
  XLVIII.23; .claude/memory/rules.md: alpha.5 closed to new work.
- Evidence: v4-checks 80 programs under the sanitizers, 0 failures; the hosted builds alike; two
  stopped v4-checks runs labelled STOPPED; three development amd64 boots labelled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017RzZgrf7V7Zk2iczBXDRbm
This commit is contained in:
Claude
2026-11-13 17:00:08 +00:00
parent d7d3e088db
commit 046ce0be65
34 changed files with 1166 additions and 181 deletions
+21
View File
@@ -6625,3 +6625,24 @@ and memorize frequently so we can pick up where we left off").
`test_host_quit.c`), A2's five (`test_host_compile.c`); the depth checks moved to the new figures.
- **Next:** Phase 1 -- v4 in the kernel's boot, the Stadium and the heartbeat started; then Phase 2,
the word accounts at `call`; then Phase 7, the loops on them.
### 23. #189 Phase 1: v4 in the kernel's boot -- the Stadium, the opcodes, the fabric, births (2026-11-13)
- **The Stadium on a v4 boot** (plan `2026-11-13-engine-step4-phase1-v4-in-the-kernels-boot.md`,
Tasks 1-4): made for both systems in v3's order, keyed by node ("A new node key": Hera, node 10, is
patron zero under hers); v3's checks after POST; the 32 opcodes as Stadium patrons, charged per
heartbeat tick ("Both": HEAT-OP's feed, about 0.5 us a charge -- kept); acceptance fails a v4 boot
without the physics.
- **A wrong turn, and its correction.** Asked "who runs next", I offered choices of scheduling
policy, and "Hera by compudynamics now" was ruled on that framing. Captain Bob: "Scheduler? Have we
regressed?" The design has none (`JUSTIFICATION.md` 4; `fabric.h`; this file's turn-attractor,
"without a scheduler"). The ruling was withdrawn; "Build it to proper spec." And 5a's "Hera as
now, in a fabric" could not carry births: the old boot spoke only her console's wire and ran no
other node.
- **To spec** (Task 5): the kernel boots the fabric (`v4/mesh.h`): the nucleus assembled by the
machine's ROM, Hera born empty and given it, every node stepped together. A born node's room comes
from the kernel's heap and its Stadium quota from Hera's; killed, both are given back
(`stadium_return_quota`). Seen on bare metal: `11 2 2 BIRTH` -- node 11's parity line; Hera sends
it `6 7 * .`, it answers 42; `11 KILL`; the Stadium CONSERVED after.
- **Next:** Phase 2, the word accounts at `call` -- the kernel's record per word, fed by the hook
(A1); then Phase 7, the loops on those records. And retiring v3 as a boot target (#156).