Stage E: every born VM is a switch participant (FABRIC-3.8 §3.6, G4)
capsule_birth_baby() registers each VM at its LIVE completion point, beside the common-channel subscription. register() is idempotent. The Artemis/ Hestia registrations in kernel_main.c and WIREBIND's own call are removed (Hera, never born through capsule_birth_baby, stays with set_current). Probe (restored away): Tripod registered once each (3 slots), a WORKER-BIRTH VM becomes a participant with no hand registration (4) and KILL frees it (3), WIREBIND registers exactly console+user, zero duplicates, on amd64/aarch64/riscv64. Acceptance: dict_hash unchanged, relay 3, idle growth 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
604ad7aadc
commit
c7185facf0
@@ -920,6 +920,20 @@ CapsuleRunResult capsule_birth_baby(
|
||||
* and does not fail the birth itself. */
|
||||
(void)sk_hermes_channel_subscribe(SK_HERMES_CHANNEL_COMMON, vm_id);
|
||||
|
||||
/* FABRIC-3.8.md §3.6 (Stage E, G4): every born VM is a switch
|
||||
* participant -- same choke point, same "only once birth has fully
|
||||
* completed" rule as the subscription above (its capsule code has
|
||||
* already run to completion on the birthing VM's stack). BIRTH,
|
||||
* WORKER-BIRTH, UNATTENDED-BIRTH and WIREBIND identities all pass
|
||||
* through here, so none of them registers on its own any more. Soft
|
||||
* failure, same posture: a full table leaves this VM runnable only by
|
||||
* VM-EXEC, not a failed birth. A VM with no native stack is registered
|
||||
* but never chosen (sk_vm_switch_decide() skips it). */
|
||||
if (sk_vm_switch_signal_register(vm_id) < 0) {
|
||||
log_message(LOG_WARN, "capsule_birth_baby: switch-signal table full -- %s won't be switched to",
|
||||
capsule_name);
|
||||
}
|
||||
|
||||
capsule_parity_log_birth(vm_id, cap->capsule_id, cap->content_hash, dict_hash);
|
||||
|
||||
/* §H.12 step 11: applied AFTER dict_hash/parity logging above, not
|
||||
|
||||
Reference in New Issue
Block a user