docs: close Phase B (B7 concurrent burn-in PASS + B8 stability)

Concurrent capacity burn-in run on the Linux host as ci-runner with the
static-IP pool: WinBuild2025 40/40 PASS (~78.6s/round) and LinuxBuild2404
40/40 PASS (~70.2s/round) — 80/80 jobs, 20/20 rounds, near-deterministic
(static IP eliminates the DHCP IP-acquire variance of the §6/§7 baselines).

- RUNBOOK §9: concurrent burn-in result + ip-pool reset/recovery note.
- PhaseB-user-checklist Passo 7/8 marked done; fixed two checklist bugs:
  run as ci-runner (the simone path needs g+w on the /var/lib/ci root for
  ip-pool.tmp, not just the sub-dirs), and the Linux command was missing
  -SnapshotName BaseClean-Linux (default BaseClean is Windows-only).
- idea-2-linux-host §8 DoD: Phase B complete (B1–B7 + >2 weeks stability).
- TODO §2.8 [P2]: ip-pool is not reconciled against live clones; a killed
  job leaks its lease permanently and exhausts the 4-IP pool. Proposed fix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 01:44:56 +02:00
parent 210b4f5f16
commit 5bff7b4f0c
4 changed files with 131 additions and 44 deletions
+13
View File
@@ -299,6 +299,19 @@ Cooldown: max 3 restart/h via JSON state file `F:\CI\State\runner-restart-log.js
Oltre il limite: EventId 1004 (Error) + webhook `:sos:` senza restart. Webhook opzionale
Discord/Gitea identico a `Watch-DiskSpace.ps1`.
### 2.8 [P2] [ ] IP-pool auto-riconciliazione vs clone reali — APERTO (2026-06-07)
`ip-pool.json` non viene riconciliato contro i clone vivi all'avvio. Un job
killato mid-flight (SIGKILL/crash) **leaka il lease in modo permanente**; con
soli 4 IP (`192.168.79.201204`) per parallelism 4, un singolo leak esaurisce
il pool e ogni round successivo fallisce con `IP pool exhausted after 60s`.
Emerso durante il burn-in B7 (RUNBOOK §9) — pool inquinato da lease del 25 mag
mai rilasciati. Workaround manuale: reset a `{}` con `build-vms/` vuoto.
**Fix proposto**: all'allocazione (o in `vm cleanup`), rilasciare i lease il
cui clone-dir non esiste più in `CloneBaseDir`. Opzionale: allargare il pool
(es. 201210) per dare margine oltre parallelism. Aggiungere test.
---
## 3. Performance & throughput