feat(v4): the system hands no GONE on; (GONE-HOOK) goes (MESH step 7, increment 2)

Ruling 7 as amended: the kernel tells a node's going, so the system's
hand-on is not used.  (GONE-HOOK), (DOWN) and (RUN) go from quit.f18, and
COLD's hook-clearing from system.f18; the cell is free again.  The tests of
the hand-on go with it (mesh: the hand-on checks and the fourth disturbed
exchange; depth sweep: path 10, as before 529ba0fc).  A believed GONE going
no further is still checked.  test_host_unit.c's message for GONE down the
graph now says the kernel tells.  MESH.md: 9a.6 items 5 and 7, and step 7's
record of both increments.

Suite EXIT 0; depth sweep 230 runs, 0 failures; mkcapsule lint 0
violations.  Hosted and bare metal, all three ISAs: word_count=317
dict_hash=0xfec8c47cfc6f437f.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rajames
2026-10-20 13:05:45 -04:00
co-authored by Claude Opus 5.5
parent 9138ebd8bb
commit 6cb8f1285f
9 changed files with 51 additions and 82 deletions
+35 -5
View File
@@ -1524,18 +1524,23 @@ Each test is written to fail first.
4. **GONE down the graph.** A node of unit 2 waiting on a node of unit 1
ends "Node gone" when Hera kills that node. A GONE from any node but a
node's own centre is still not believed.
5. **The new message path** (a centre passing a GONE on to the nodes it
5. ~~**The new message path** (a centre passing a GONE on to the nodes it
birthed): every depth of both stacks (`v4/tests/test_host_depth.c`);
and the passing on disturbed at every engine step -- the centre
removed, a child removed, the wire cut -- with every node left coming
to rest and answering (`v4/tests/test_host_mesh.c`'s way).
to rest and answering (`v4/tests/test_host_mesh.c`'s way).~~
**Withdrawn with ruling 7 (2026-10-16):** no node passes a GONE on, so
there is no new message path on a node. The kernel's telling is tested
in C at both widths (`v4/tests/test_manage.c`) and in the fabric
(`v4/tests/test_host_unit.c`, item 4).
6. **The kernel's side.** The registry and who may ask, tested in C at
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 system changes
(`(GONE-HOOK)`), so the products' `dict_hash` changes; it must be the
same on all three ISAs (ruled 2026-10-16, planning).
`make -C v4 test-32`, as `.claude/CLAUDE.md` says. The system changes,
so the products' `dict_hash` changes; it must be the same on all three
ISAs (ruled 2026-10-16, planning). (The change was first `(GONE-HOOK)`;
with ruling 7 it is that word's going.)
**A limit kept, not widened:** `test_host_unit.c` is not run at 32 bits;
POST's expected results are 64-bit (step 5).
@@ -2114,6 +2119,31 @@ Each is tested, committed and pushed before the next.
(riscv64): POST 538 of 538, `word_count=318`,
`dict_hash=0x248b4edc47f4357e` on all six systems (the system changed,
so the hash did); `make -C v4 test-32`, 0 failures.
- **Amended 2026-10-20, ruling 7 (the kernel tells a node's going).**
Two increments, each accepted on its own.
*Increment 1* (5707b07a): `manage.c`'s `KILL` puts a GONE about the
node on the wire of every live node from its parent, as if its parent
had sent it; `centre.4th` loses `GONE-DOWN` and its table of the
nodes it birthed; `hera.4th`'s `KILL` is the kernel's kill and
`NO-ROUTE`. Accepted in 9138ebd8: `logs/20261020-084230` (amd64),
`-084520` (aarch64), `-084933` (riscv64), POST 538 of 538,
`dict_hash=0x248b4edc47f4357e` on all three.
*Increment 2*: the system's hand-on goes -- `(GONE-HOOK)`, `(DOWN)`
and `(RUN)` from `quit.f18`, `COLD`'s hook-clearing from
`system.f18`; the cell is free again (`v4/tests/host_map.h`). The
tests of the hand-on go with it: the mesh test's hand-on checks and
its fourth disturbed exchange, and the depth sweep's path "AWAIT
ended by a GONE that is handed on", which is again as before
529ba0fc. What stays: a GONE believed from a node's centre goes no
further (`v4/tests/test_host_mesh.c`, 244 checks); GONE down the graph
ends a wait in the second unit (`v4/tests/test_host_unit.c`, 126
checks); the kernel's side (`v4/tests/test_manage.c`, 52 checks, both
widths). Verified: `make -C v4 test test-32 sanitize hosted-check`
(depth sweep 230 runs, 0 failures); `mkcapsule --lint capsules/`, 0
violations; three bare-metal boots, `logs/20261020-125114` (amd64),
`-125411` (aarch64), `-125820` (riscv64): POST 538 of 538, `PARITY:OK`,
`word_count=317`, `dict_hash=0xfec8c47cfc6f437f` on all six systems;
`make -C v4 test-32`, 0 failures.
8. **The hosted product is the five nodes**, on three ISAs: acceptance 1
to 5.
9. **The same on bare metal:** acceptance 6.