Stage K-4: quota slots released to the best donor; message cells out of the admission fallback (FABRIC-3.10.8 §4.4)

- stadium_release_quota(): evict every patron but pending messages, mark
  the slot retiring; stadium_retire_sweep() releases a retiring slot once
  nothing is resident -- free cells to the best donor (ruled), word row
  and block-table entries cleared, slot free for reuse. Swept at release
  and after evictions while any slot is retiring.
- Called on KILL and reap, and for the nine synthetic self-test ids after
  the boot self-tests. Hera's slot never released.
- Admission fallback skips DELIVER (message) cells.
- Probe (removed): slots in use == live VMs after boot and after 56-64
  churned VMs on all three ISAs; forced fallback kept the message cell
  resident and intact; conserved everywhere; K-1's post-churn Hermes
  refusal gone (1 2 + . -> 3 on the churned system). Heap growth per
  28-VM churn halved (~3.4 KB/VM still retained -- open as K-8).
- Standard sequence on amd64/aarch64/riscv64: hash, G, ledger unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-26 05:44:33 -04:00
co-authored by Claude Opus 5.5
parent 9e41fb03ab
commit 1166713cc9
21 changed files with 56959 additions and 9 deletions
+12
View File
@@ -622,6 +622,18 @@ int stadium_cell_decay(size_t cell_index, uint64_t factor_q48, uint64_t *consume
* session_set_pinned(), the sole pin choke point). -1 if out of range. */
int stadium_cell_set_pin(size_t cell_index, int pinned);
/*
* FABRIC-3.10.8 K-4: quota slots are released (cells to the best donor,
* ruled 2026-09-26). stadium_release_quota() retires vm_id's slot (every
* patron but its pending messages evicted); stadium_retire_sweep() releases
* each retiring slot once nothing is resident. Call release on VM death
* (KILL, reap) and when a self-test's synthetic id is done. Hera's slot is
* never released. Returns 0, or -1 (no such slot, already retiring, Hera).
*/
int stadium_release_quota(VMUuid vm_id);
void stadium_retire_sweep(void);
uint64_t stadium_slots_released(void);
#endif /* __STARKERNEL__ */
#endif /* STARKERNEL_VM_STADIUM_H */