FABRIC-2.md: close Multi-VM heartbeat ownership item

Punch list §B item complete. Documents the Hera-sole-owner ruling and
points to the vm_runtime.c fix (bcc72d0) and its three-arch acceptance
logs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-13 08:15:44 -04:00
co-authored by Claude Sonnet 5
parent bcc72d00bb
commit 389ca74d9f
+21 -1
View File
@@ -58,10 +58,30 @@ and recorded.
is the single most concrete open item carried into this document — real, live, and
unmeasured.
- [ ] **Multi-VM heartbeat ownership.** Whose `tick_target_ns` drives the one physical timer
- [x] **Multi-VM heartbeat ownership.** Whose `tick_target_ns` drives the one physical timer
(FABRIC.md §26.5) has only one answer while Hera is the only VM; explicitly "not resolved
for when Hermes/Artemis return." Hermes has returned (item 4.2). Same situation as the
fleet heat leak above — a deferral whose triggering condition has since become true.
**Ruled:** there is exactly one physical timer, so exactly one VM may write its re-arm
period — never whichever VM's `vm_tick()` happened to run last. Hera is the fixed point
everywhere else in this design (patron zero, sole capacity arbiter, sole birther/killer of
VMs — see FABRIC.md §20.2, §26), so she is the sole owner here too. Every other VM's Loop
#7 (`vm_tick_inference_engine()`) still adapts its own `vm->heartbeat.tick_target_ns`
exactly as before — that per-VM bookkeeping is correct and untouched — it simply never
reaches the shared physical re-arm; only Hera's does.
*Done when:* `vm_tick_inference_engine()` gates the physical-timer re-arm behind
`vm_uuid_is_hera(vm->stadium_vm_id)`, and a three-arch QEMU boot with Hermes live (item
4.2) is clean.
*Refs (FABRIC.md):* §20.2, §26.5.
> **DONE 2026-08-13.** `vm_tick_inference_engine()`
> (`src/starkernel/vm/vm_runtime.c:766`) now wraps the kernel-base re-arm block in
> `if (vm_uuid_is_hera(vm->stadium_vm_id))`, using the existing
> `vm_uuid_is_hera()` (`src/starkernel/capsule/vm_uuid.c:51`) already used the same way at
> the birth/kill call sites in `capsule_birth.c` and `capsule_vm_physics.c`. Three-arch
> acceptance boot, all clean to `ok>`, Hermes live and self-testing in every log:
> `logs/20260813-075940/amd64`, `logs/20260813-080125/aarch64`,
> `logs/20260813-080257/riscv64`. Committed `bcc72d0`.
---