FABRIC.md: new prerequisite item 4.1a -- quota granting for Hermes's birth
Punch list §25 new item inserted before 4.2 (scoping only, no code). Found while scoping 4.2: no quota-granting mechanism exists at all -- quota_slot_for_vm() refuses every non-Hera vm_id by design, and both stadium_admit()'s doc and item 3.2's DONE note defer per-VM free lists to "when Hera assigns a VM its quota," which nothing builds. Distinguished from item 1.3's still-open recurring capacity-transfer arbitration: this is Hermes's one-time initial grant at birth, same shape as Hera's own whole-pool grant at stadium_boot_init(), not an instance of the open recurring loop. Ruled: reservoir is not split (Hermes gets her own fresh Q48_ONE, per-VM conservation per stadium.c's own invariant comment); cell count is an even split of Hera's current free list, touching no resident (including pinned cell 0). 4.2 is marked blocked on this item. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
4b26be90c3
commit
edfc246579
@@ -3300,8 +3300,46 @@ document and committing that amendment as its own item.*
|
|||||||
> parity output — untouched, as designed. Stadium diagnostics also identical across all
|
> parity output — untouched, as designed. Stadium diagnostics also identical across all
|
||||||
> three: `promotions=354 evictions=0`, `resident_sum=65536 reservoir=0 sum=65536
|
> three: `promotions=354 evictions=0`, `resident_sum=65536 reservoir=0 sum=65536
|
||||||
> (Q48_ONE=65536)` — the conservation invariant closes exactly.
|
> (Q48_ONE=65536)` — the conservation invariant closes exactly.
|
||||||
|
- [ ] **4.1a — Quota granting: Hermes's birth grant.** New prerequisite item, inserted
|
||||||
|
2026-08-05 while scoping 4.2 — found that no quota-granting mechanism exists at all.
|
||||||
|
`quota_slot_for_vm()` refuses every `vm_id != 0` today, permanently, by design (item 3.5's
|
||||||
|
note); `stadium_admit()`'s own doc and item 3.2's DONE note both defer per-VM free lists to
|
||||||
|
"when Hera assigns a VM its quota," which nothing builds. Item 1.3 (§25.2) resolved *when*
|
||||||
|
Hera arbitrates a capacity *transfer* between VMs that already hold quotas, but explicitly
|
||||||
|
left "how much capacity moves" unresolved and out of scope (§22.5 #2) — that is the
|
||||||
|
*recurring* mechanism, and stays open; this item is narrower: Hermes's one-time *initial*
|
||||||
|
grant at birth, the same shape as Hera's own whole-pool grant at `stadium_boot_init()`, not
|
||||||
|
an instance of the still-open recurring loop. *Refs:* §1.3, §22.3, §22.5 #2.
|
||||||
|
|
||||||
|
> **Ruled, 2026-08-05:**
|
||||||
|
> 1. **Reservoir is not part of this.** `stadium.c`'s own comment states the conservation
|
||||||
|
> invariant per-VM — `Σ(resident heat) + reservoir == Q48_ONE` for *that VM's own
|
||||||
|
> quota* — not a shared pool split across VMs. Hermes gets her own fresh `Q48_ONE`
|
||||||
|
> reservoir at birth, the same pattern as Hera's boot grant, not a fraction of Hera's.
|
||||||
|
> Only cell count is actually open.
|
||||||
|
> 2. **Cell split: even.** At Hermes's birth, half of whatever cells are currently on
|
||||||
|
> Hera's free list move to a new quota slot for Hermes. Hera's residents — including
|
||||||
|
> pinned cell 0 — are never touched; only her free list is split. No tuned constant: an
|
||||||
|
> even split needs no threshold, consistent with §22's "no tuned threshold" elsewhere in
|
||||||
|
> this design.
|
||||||
|
>
|
||||||
|
> *Done when:*
|
||||||
|
> - A new `stadium_grant_quota(VMUuid vm_id)` (or equivalent, named at implementation
|
||||||
|
> time) exists in `stadium.c`, callable at a baby VM's birth (`capsule_birth.c`).
|
||||||
|
> - Splits Hera's free list evenly by cell count (±1 for odd counts), reassigns
|
||||||
|
> `stadium_owner[idx]` for every cell that moves, and grants the new VM a fresh
|
||||||
|
> `Q48_ONE` reservoir — verified by both VMs' independent conservation checks closing
|
||||||
|
> exactly immediately after the grant, with zero residents on either side yet.
|
||||||
|
> - Hera's own residents (including cell 0) are provably untouched — same cell count and
|
||||||
|
> identities before and after the grant.
|
||||||
|
> - Refuses (does not crash) if `vm_id` already holds a quota, or if the granting VM's
|
||||||
|
> free list is empty.
|
||||||
|
> - All three architectures boot to `ok>` with logs under `logs/`, `dict_hash` unchanged
|
||||||
|
> from item 4.1's baseline (`0x3d4e1daf289da94f`) since this item touches no dictionary
|
||||||
|
> word.
|
||||||
- [ ] **4.2 — Hermes native on the Stadium.** The proving ground; produces the effort
|
- [ ] **4.2 — Hermes native on the Stadium.** The proving ground; produces the effort
|
||||||
number. *Refs:* §10.
|
number. *Refs:* §10. **Blocked on 4.1a** — Hermes cannot hold Stadium residents without a
|
||||||
|
quota, and nothing grants one yet.
|
||||||
|
|
||||||
> **Two rulings taken before work starts, 2026-08-05:**
|
> **Two rulings taken before work starts, 2026-08-05:**
|
||||||
> 1. **`stadium_owner[idx]` fix folded into this item's scope**, by explicit Captain Bob
|
> 1. **`stadium_owner[idx]` fix folded into this item's scope**, by explicit Captain Bob
|
||||||
|
|||||||
Reference in New Issue
Block a user