§H.12 steps 7-9: thread real parent VMUuid through the birth call chain

Session.parent now comes from the actual birthing VM's own
stadium_vm_id, not a hardcoded vm_uuid_hera(). Added a VMUuid parent
parameter to capsule_birth_baby() and, one level up, to
capsule_console_birth()/capsule_runcap_birth() (neither had a VM* in
their own signature, but every caller did). Updated all 6 real call
sites: BIRTH, CAPSULE-BIRTH, CONNECT-ARTEMIS, CONNECT-HERMES,
RUNCAP-TEST, PAIR-TEST (mama_forth_words.c) and the console+user birth
pair in capsule_wirebind_try_attach() (capsule_wirebind.c). Two
functions had their vm parameter marked __attribute__((unused)), now
genuinely used -- attribute removed.

Steps 8 (Session.name from capsule name) and 9 (identity defaults to
installed=0) were already satisfied by step 5's existing
session_register() call and its identity-zeroing -- confirmed by
inspection, no further code needed.

Verified 3-arch boot to ok> (amd64/aarch64/riscv64).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-03 06:38:32 -04:00
co-authored by Claude Opus 5
parent 09998af999
commit ed86a759e1
17 changed files with 27626 additions and 18 deletions
+21 -5
View File
@@ -4001,11 +4001,27 @@ work, not new invention.
comment and this entry.
**Phase 3 — Session fields wired at birth**
- [ ] **7.** Populate `Session.parent` from the birthing VM's `stadium_vm_id`.
- [ ] **8.** Populate `Session.name` from the capsule's own name string (already available at
this point in `capsule_birth.c`).
- [ ] **9.** Confirm `Session.identity` defaults to `installed=0` correctly (no behavior
change expected yet).
- [x] **7. DONE 2026-09-03, larger than one line — a real signature-threading pass.**
`Session.parent` now comes from the actual birthing VM's own `stadium_vm_id`, not a
hardcoded `vm_uuid_hera()`. This meant adding a `VMUuid parent` parameter to
`capsule_birth_baby()` and, one level up, to `capsule_console_birth()` and
`capsule_runcap_birth()` (neither had a `VM *` in their own signature, but every one of
their callers did) — traced all 6 real call sites across `mama_forth_words.c` (4: `BIRTH`,
`CAPSULE-BIRTH`, `CONNECT-ARTEMIS`, `CONNECT-HERMES`, plus `RUNCAP-TEST`/`PAIR-TEST` = 6
total) and `capsule_wirebind.c` (2: console + user birth in
`capsule_wirebind_try_attach()`), confirmed each has a real `VM *` (`vm`/`mama_vm`) in
scope, and passed `vm->stadium_vm_id` through at every one. Two functions
(`mama_word_connect_artemis`/`_hermes`) had their `vm` parameter marked
`__attribute__((unused))`, now genuinely used — attribute removed. User explicitly chose
this option (full threading) over leaving the earlier `vm_uuid_hera()` hardcode in place.
- [x] **8. Already satisfied by step 5.** `session_register(vm_id, parent, capsule_name)`
already passes the capsule's own name string — nothing further needed.
- [x] **9. Confirmed by code inspection.** `session_register()` (step 2) zeroes `identity`
unconditionally — `installed` reads 0 by construction, matching `VMIdentity`'s own
documented default. No behavior change, as expected.
Verified 3-arch boot to `ok>` (amd64/aarch64/riscv64) for step 7's actual code changes,
which also exercises 8 and 9 unchanged.
**Phase 4 — Creator-ceiling enforcement (H.3, birth-time snapshot)**
- [ ] **10.** `dictionary_snapshot_acl_from_parent(child, parent)`: for each word also present