diff --git a/docs/v4.0.0/MESH.md b/docs/v4.0.0/MESH.md index af5048ea..45bde8fe 100644 --- a/docs/v4.0.0/MESH.md +++ b/docs/v4.0.0/MESH.md @@ -1318,6 +1318,28 @@ she then sends the newborn its capsules through the port that joins them. Putting a node to sleep, waking it, and removing it are requests of the same kind. Only Hera's requests are honoured. +**Changed 2026-10-16: births follow v3** (Captain Bob: "we want v3 +behavior for v4"). The last sentence above no longer holds, and is kept as +what step 5 built. v3, as built (`kernel/src/capsule/mama_forth_words.c`, +`capsule_birth.c`; `FABRIC-3.5.md` §IX.2, §XV.1): + +- Any VM may birth. `BIRTH` and `CAPSULE-BIRTH` are registered in every + VM, not in Hera alone. Hera differs from the others only in her access + to the kernel's capsule repository (`FABRIC-3.md` §XX). +- The child's parent is the VM that births it. Authority goes only down + the birth graph, never sideways or up. +- The child cannot have more than its parent: its words' access records + are copied from its parent's at birth, once, and never kept in step + after (`dictionary_snapshot_acl_from_parent`). +- `S" name" BIRTH` births from the capsule `name:init.4th`. A name that is + already live is not born again, and Hera cannot be born again. +- `KILL` is Hera's alone. + +So in v4 a node's requests to be given a node, to wire it and to send it +its capsules are honoured from any node, and the newborn is wired to the +node that asked and is its child. Killing stays Hera's. How each of these +is carried on a mesh is the design of step 7 (section 10). + The unit rule (ruling 5) is Hera's, in capsule code: it is what she does with those requests. The engine and the host do not know it.