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:
co-authored by
Claude Sonnet 5
parent
bcc72d00bb
commit
389ca74d9f
+21
-1
@@ -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`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user