docs(cache): end-to-end numbers, operator runbook, and a vmrun gotcha
Measured through the real pipeline, not the unit tests: a Rust job goes from 186s to 84s (build phase 150s -> 47s), and 75s with the source modified, which is the scenario CI actually runs. The entry is 645 MB and costs 8s to restore. The test that decides whether this ships is row 4: a deliberate type error in fury-core, built warm. The cache restored 645 MB of dependencies and the build still went red with E0308, exit 1, publishing nothing. A cache that can turn a red build green is the worst failure a CI system has because it is silent -- re-run that row whenever the prune rules change. AGENTS.md #17 records something found while validating: `vmrun list` is per-user. Run as the wrong user it answers "Total running VMs: 0" while a clone is very much alive, which makes the "no VMs running" check before a deploy --force (#14) unreliable. `ps | grep vmware-vmx` is user-independent and was already the recommended diagnosis.
This commit is contained in:
@@ -35,7 +35,7 @@ _Last updated: 2026-05-11 (post Sprint 15: §7.5 DONE — Rinomina Setup-* → I
|
||||
| [x] | Gitea Workflow Integration | 5 | 0 | tutti completati — example.yml usa composite action |
|
||||
| [x] | §1 Sicurezza & hardening | 3 | 0 | 1.1, 1.4, 1.6 done; 1.2/1.3/1.5/1.7/1.8 deferred (home lab) |
|
||||
| [x] | §2 Affidabilità & resilienza | 7 | 0 | tutto done (2.1-2.7) |
|
||||
| [ ] | §3 Performance & throughput | 4 | 1 | 3.1/3.2/3.3/3.6 done; 3.4/3.5 deferred; **3.8 cache cargo pianificata** |
|
||||
| [x] | §3 Performance & throughput | 5 | 0 | 3.1/3.2/3.3/3.6/3.8 done; 3.4/3.5 deferred — **§3 CHIUSO** |
|
||||
| [x] | §4 Osservabilità & manutenzione | 3 | 0 | 4.1/4.3/4.4 done (4.2 Prometheus, 4.5 Dashboard rimossi) |
|
||||
| [x] | §5 Qualità codice & test | 5 | 0 | 5.1/5.2/5.3/5.4/5.5 done |
|
||||
| [x] | §6 Scalabilità & estensioni | 5 | 0 | 6.1-6.2 done, 6.3 deferred (home lab), 6.4-6.5 done, 6.6 done |
|
||||
@@ -938,8 +938,19 @@ cioè nelle invocazioni manuali/burn-in.
|
||||
`Start-Job`/`pwsh`/`$IsWindows`. Lo shim resta solo per il runner Windows, dove
|
||||
`CI_VENV_PYTHON` è sempre settato. Il bug non è più raggiungibile sull'host Linux.
|
||||
|
||||
### 3.8 [P2] [ ] Cache delle dipendenze cargo per i job Rust — PIANIFICATO (2026-07-22)
|
||||
File: [plans/cargo-dependency-cache.md](plans/cargo-dependency-cache.md).
|
||||
### 3.8 [P2] [x] Cache delle dipendenze cargo per i job Rust — COMPLETATO 2026-07-22
|
||||
File: [src/ci_orchestrator/cargo_cache.py](src/ci_orchestrator/cargo_cache.py),
|
||||
[src/ci_orchestrator/assets/cargo-cache-prune.sh](src/ci_orchestrator/assets/cargo-cache-prune.sh),
|
||||
piano in [plans/cargo-dependency-cache.md](plans/cargo-dependency-cache.md),
|
||||
numeri in [plans/cargo-dependency-cache-measurements.md](plans/cargo-dependency-cache-measurements.md).
|
||||
|
||||
**Risultato misurato end-to-end**: job Rust da **186 s → 84 s** (fase build
|
||||
150 s → 47 s). Con sorgente modificato — lo scenario CI vero — 75 s. Entry da
|
||||
645 MB, restore 8 s. `--no-cargo-cache` e i tag `v*` restano a freddo.
|
||||
|
||||
**La prova che conta**: errore di compilazione deliberato in `fury-core`,
|
||||
run a caldo → `error[E0308]`, job exit 1. La cache non può nascondere una
|
||||
regressione. Da ripetere ogni volta che cambiano le regole di potatura.
|
||||
|
||||
Misurato in furyrs#12: dei ~133 s di un job Rust, ~120 s sono la compilazione
|
||||
delle ~490 dipendenze esterne, che `Cargo.lock` committato tiene **bit-identiche
|
||||
@@ -975,7 +986,12 @@ concorrenti.
|
||||
cambio di `Cargo.lock`, centinaia di MB l'una) senza estendere `retention run`
|
||||
ripeterebbe l'errore di §2.9 su scala maggiore.
|
||||
|
||||
**Prossimo passo**: Task 0 del piano — misurare prima di costruire, come in #12.
|
||||
**Nota emersa implementando**: l'asserzione prevista dal piano era tautologica
|
||||
— ri-cercava gli stessi glob che aveva appena cancellato, quindi provava solo
|
||||
che `rm` fosse andato a buon fine, non che i pattern coprissero la realtà.
|
||||
Sostituita con un oracolo indipendente: i depfile `.d` che cargo scrive dicono
|
||||
da quali sorgenti ogni artefatto è stato compilato. Dettaglio nel documento
|
||||
delle misure.
|
||||
|
||||
### 8.1 [P3] [ ] Mirror GitHub Actions su Gitea locale (rimuovi dipendenza github.com)
|
||||
File: [.gitea/workflows/lint.yml](.gitea/workflows/lint.yml), Gitea (org `actions`).
|
||||
|
||||
Reference in New Issue
Block a user