docs(v4): MESH.md 9a, the rulings made while planning step 7

Fixed request numbers; NODE-BORN takes the number; GONE handed on through
the system's (GONE-HOOK), so dict_hash changes; a reader per asker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rajames
2026-10-16 08:57:00 -04:00
co-authored by Claude Opus 5.5
parent f4f566bb37
commit bf97f339f6
+33 -8
View File
@@ -1409,7 +1409,10 @@ Checked in the code on 2026-10-16 (`kernel/src/capsule/mama_forth_words.c`,
capsule. It gains the child's port.
- `UNIT ( n -- )`, as now, giving `childport` 2.
- The words that join two outer nodes (`(JOIN)`, `(SAY)`), as now.
- Passing a believed GONE on to the nodes this node birthed.
- `GONE-DOWN ( n -- )`: n is gone; every node this one birthed is told,
as from this one, and n leaves its table if it was one of them. It is
put in the system's `(GONE-HOOK)` when the capsule is loaded, before
the node seals.
- **`hera.4th`**: what is Hera's alone.
- `KILL ( n -- )`, `PAUSE ( n -- )`, `RESUME ( n -- )`.
- `UNIT-KILL ( n -- )`: asks the kernel for n's children, kills each, and
@@ -1417,15 +1420,25 @@ Checked in the code on 2026-10-16 (`kernel/src/capsule/mama_forth_words.c`,
- `CENTRE ( n -- )`: births node n on her port 6 into its port 6 with
`S" v4:centre.4th" BIRTH-AS`, sets her way to n+1 to n+4 to port 6,
and sends it the text `n UNIT`, waiting for it to end.
- Her own table of the nodes she birthed goes: the kernel's registry
replaces it.
**The system's part (ruled 2026-10-16, planning).** A node believes a GONE
in the system (`(GONE?)`, `capsules/v4/sys/quit.f18`), so the system hands
it on: a variable, `(GONE-HOOK)`, holds the xt of a word that is given the
number of the node that is gone; 0, as at switch-on, does nothing. `COLD`
clears it if it points at or above the sealed system.
- Her table of the nodes she birthed is `centre.4th`'s, as every
centre's is: it is whom she tells a GONE. A node she did not birth she
finds through the kernel's registry.
### 9a.4 The kernel (`v4/include/v4/manage.h`, `v4/src/manage.c`)
- **The registry.** For each live node: its number, its place, and its
parent's number. A node is entered when its birther reports its parity
(`NODE-PARITY`), which gains the parent: the node that asks. A number
that is already live is refused, as v3 refuses a name that is live.
parent's number. A node is entered when it is born, with the node that
asked as its parent: `NODE-BORN ( number -- place | -1 )` takes the
number (ruled 2026-10-16, planning). A number that is already live is
refused before anything is sent, as v3 refuses a name that is live; -1
is no room. Hera is entered by whoever made her, as v3's kernel enters
Hera at boot.
- **Every node's port 0 serves the requests**, and the kernel checks who
may ask:
@@ -1442,6 +1455,17 @@ Checked in the code on 2026-10-16 (`kernel/src/capsule/mama_forth_words.c`,
not live does nothing, as v3's `KILL` of a dead VM.
- **Two queries:** `NODE-CHILD ( number i -- child | 0 )`, the i-th live
child of that node; `NODE-PLACE ( number -- place | -1 )`.
- **The requests' numbers are fixed** (ruled 2026-10-16, planning): -6 to
-18, below the block requests' -1 to -5 (`v4/include/v4/blocks.h`), the
same for every node. The capsules make the words themselves
(`-7 KERNEL-WORD NODE-BORN`); no host types them in.
| -6 | -7 | -8 | -9 | -10 | -11 | -12 | -13 | -14 | -15 | -16 | -17 | -18 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| `NODE-ME` | `NODE-BORN` | `NODE-WIRE` | `NODE-UNWIRE` | `NODE-SLEEP` | `NODE-WAKE` | `NODE-KILL` | `NODE-PARITY` | `CAPSULE-OPEN` | `CAPSULE-CELL` | `CAPSULE-LINE` | `NODE-CHILD` | `NODE-PLACE` |
- **A capsule is read by the node that opened it** (ruled 2026-10-16,
planning): two nodes birthing at once do not share one reader.
### 9a.5 Not in this step
@@ -1487,8 +1511,9 @@ Each test is written to fail first.
both cell widths.
7. **Nothing else changes.** `make -C v4 test test-32 sanitize
hosted-check`; `mkcapsule --lint capsules/`; the three QEMU boots and
`make -C v4 test-32`, as `.claude/CLAUDE.md` says. The products load
neither capsule, so their `dict_hash` must not move.
`make -C v4 test-32`, as `.claude/CLAUDE.md` says. The system changes
(`(GONE-HOOK)`), so the products' `dict_hash` changes; it must be the
same on all three ISAs (ruled 2026-10-16, planning).
**A limit kept, not widened:** `test_host_unit.c` is not run at 32 bits;
POST's expected results are 64-bit (step 5).