From bf97f339f6133d5ea745a23a0da59fed21bfae1c Mon Sep 17 00:00:00 2001 From: rajames Date: Fri, 16 Oct 2026 08:57:00 -0400 Subject: [PATCH] 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 --- docs/v4.0.0/MESH.md | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/docs/v4.0.0/MESH.md b/docs/v4.0.0/MESH.md index cc1270dd..4c37fb2f 100644 --- a/docs/v4.0.0/MESH.md +++ b/docs/v4.0.0/MESH.md @@ -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).