docs(v4): ENGINE step 4 under MACHINE.md; Q1-Q5 and the identity gate ruled

MACHINE.md stands: v3 goes after parity; Hera, Hermes, Artemis (and
Hestia) are kernel functions. ENGINE.md section 2 amended with the rulings,
section 6's step-3 rows struck (R2). The step 4 plan rewritten: Part A
(hook at call, called in-line words) and Phases 1-8 to parity. No identity
thumbdrive, headless; work goes ahead only with Zuse attached.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rajames
2026-10-20 15:29:52 -04:00
co-authored by Claude Opus 5.5
parent d6eab090b4
commit eef6c15c28
3 changed files with 226 additions and 3 deletions
+43 -3
View File
@@ -20,6 +20,46 @@ different machine executing its FORTH.
## 2. What stays, and what is replaced
> **Amended 2026-10-20 (Captain Bob): "MACHINE.md stands; v3 goes after parity; Hera, Hermes,
> Artemis are now all kernel."** This section was written 2026-10-05, before `MACHINE.md`
> (2026-10-15). Where they disagree, `MACHINE.md` §5.1 governs: once v4 is at parity, v3 leaves
> every build, and with it the v3 VM, the Tripod, kernel-Hermes, the C ACL and the v3 PKI words.
> So the design below — a node behind each v3 `VM` record, v3's interpreter functions answered by
> a node (3c), v3's C words serving a node, the Tripod and kernel-Hermes kept — is withdrawn. Hera,
> Hermes and Artemis are functions of the kernel, not VMs. v3 stays in the tree as the reference
> until parity (`MACHINE.md` §7 item 3). What v4 does instead is
> `plans/2026-10-20-engine-step4-node-in-the-vms-place.md`. Kept below as written.
>
> **Ruled the same day ("yes, Q1-Q5 as recommended"):**
> 1. **Hera, Hermes and Artemis are functions of the kernel.** Hera is process management: the
> registry, births, `NODE-KILL`, `NODE-SLEEP`, `NODE-WAKE` and who may ask (`v4/src/manage.c`).
> The first node, which the kernel makes and POSTs, keeps the name Hera and is the root of the
> birth graph. Hermes is messaging: the wires and the kernel's serving of them (`v4/src/wire.c`,
> `message.c`), not `kernel_hermes.c`. Artemis is storage: the kernel serving blocks
> (`v4/system/blocks.c`), the disk's genesis signature, and the owner's word that the disk may
> be formatted. None has a capsule of its own.
> 2. **Hestia likewise:** the console is the kernel's (HAL, REPL); there is no Hestia node.
> 3. **What survives v3:** the kernel services that do not touch a v3 `VM` (the Stadium, the
> heartbeat, the block subsystem, the capsule directory and its signatures, the disk signature,
> the identity code: Zuse, mint, `WIREBIND`, `kernel/src/crypto`) stay, moved out of v3's
> directories when v3 goes and keyed by node where they are keyed by VM today. What is a v3 VM
> goes: `vm_core.c`, `arena.c`, `capsule_birth.c`, `mama_forth_words.c`, `kernel_hermes.c`,
> sessions and the switcher as they hold `VM *`, the C ACL fields, `v3/src`'s interpreter and C
> words.
> 4. **A word's accounts** (ruling "A", `V3-PARITY.md` 1j) are kept by the kernel in a record of its
> own per node and word ID, with the account fields `DictEntry` has; the Stadium's word layer is
> fed from it. The physics loops are ported to it in their turn.
> 5. **The words a node lacks** are written in FORTH in the layer `MACHINE.md` §3 gives them, or are
> kernel requests where only the kernel can do it. v3's POST is the measure: each module's cases
> join `v4/system/post_cases.c` when its words land. Parity is v3's whole POST passing on v4 and
> the boot of `V3-PARITY.md` §1 done by v4's means.
>
> **And, the same day: "no identity thumb drive equals headless. When a thumb drive is inserted,
> only then is there an identity and a console."** As v3 (`sk_repl_headless_wait`, `kernel_main.c`):
> with no identity drive the system runs headless, with no prompt; a console and an identity exist
> only once a drive is inserted. Work goes ahead only with the Zuse thumbdrive attached, so that
> there is Zuse.
**Stays, untouched:** everything the kernel does. The Stadium and each
patron's own accounts; sessions; the switcher; kernel-Hermes; the capsule
directory, birth protocol, hashing, signing and parity; the block
@@ -425,9 +465,9 @@ these, a group at a time, with POST after each.
| Open | Before |
|---|---|
| How the node tells a dictionary entry from a bare address at `call` | Step 3 |
| `EXECUTE`, which enters a word by a return | Step 3 |
| `>R R> R@ I J LEAVE`, which cannot be called | Step 3 |
| ~~How the node tells a dictionary entry from a bare address at `call`~~ Ruled 2026-10-20: the kernel's table of entry addresses, filled by `(WORD-DEFINED)`, emptied by `(WORD-FORGOTTEN)`; a target not in it is a bare routine | Step 3 |
| ~~`EXECUTE`, which enters a word by a return~~ Ruled 2026-10-20: `EXECUTE` calls the xt | Step 3 |
| ~~`>R R> R@ I J LEAVE`, which cannot be called~~ Ruled 2026-10-20: they stay in line and are checked when the definition holding them is compiled; every other in-line word is called | Step 3 |
| Who decides which node runs next, and when: Hera, by compudynamics; preemptive and cooperative | Step 7 |
| The node's safe moment for message delivery and switching | Step 7 |
| `PAD 42 OVER !`, a byte address given to `!` (D-1) | Step 6 |