diff --git a/FABRIC.md b/FABRIC.md index 7fb999a..43df90c 100644 --- a/FABRIC.md +++ b/FABRIC.md @@ -1710,11 +1710,20 @@ rule looks correct. ### 22.5 Open -1. **The resting floor.** A VM that goes quiet loses capacity; if it wakes it may not - regain it fast enough. The obvious guard is a floor below which a quota cannot fall — - but that is a tuned number, which this design otherwise avoids. Decide it deliberately. - A principled alternative: floor a VM's quota at the mass of its pinned patrons, which is - not a tuned constant but a derived one. +1. ~~**The resting floor.**~~ **RESOLVED by item 1.2 (§25.2), 2026-08-04.** A VM that goes + quiet loses capacity; if it wakes it may not regain it fast enough. The obvious guard is a + floor below which a quota cannot fall — but that is a tuned number, which this design + otherwise avoids. + + **Floor = max(mass of pinned patrons, one message-sized cell).** The first term is the + principled alternative this section already named: derived, not tuned. The second term + closes a gap the first term leaves open on its own — a VM with zero pinned patrons would + otherwise get a floor of zero, and a VM with zero quota cannot receive anything, including + the message that would be the reason for it to wake up and regrow via §22.1's + density-gradient feedback. That is a deadlock: no capacity to receive, no way to ever + regain capacity. One message-sized cell is itself derived, from §23.3's cell sizing rule + ("size the cell so a typical message is exactly one cell"), not a second tuned constant — + so the discipline this section wanted to preserve still holds with both terms in place. 2. **What arbitrates a transfer, concretely?** §7 says Hera. Under §22.3 a transfer is arithmetic on two integers, so the mechanism is trivial — but *when* she does it, and on what signal, is not yet stated. It should read off the density gradient (§22.1) rather @@ -2263,9 +2272,14 @@ document and committing that amendment as its own item.* > Item 3.1 is now unblocked on this item; the ninth wire and the reserved header bytes > (§23.3) are the concrete carry-forward. -- [ ] **1.2 — The resting floor.** Whether a VM's quota has a floor, and whether it is the +- [x] **1.2 — The resting floor.** Whether a VM's quota has a floor, and whether it is the mass of its pinned patrons (derived) or a constant (tuned). *Refs:* §22.5 #1. + > **RESOLVED 2026-08-04.** Floor = max(mass of pinned patrons, one message-sized cell). + > Both terms derived, neither tuned — the second closes a reachability gap the first term + > leaves open for a VM with nothing pinned (zero quota means it can never receive the + > message that would let it regrow). Full argument in §22.5 #1. + - [ ] **1.3 — What triggers a capacity transfer.** Hera arbitrates; on what signal, and how often. Should read the density gradient, not a schedule. **Constraint, not optional:** arbitration mutates patron mass, so §18.5's invariant binds