4fe2f81a32
gates / gates (push) Successful in 13s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
30 lines
2.1 KiB
Markdown
30 lines
2.1 KiB
Markdown
# REPORT — agent v0.133.0: a restore-test can never fill a box's disk (2026-09-24, R-672, R-673)
|
||
|
||
Full record: `felhom.eu/documentation/audits/r672-2026-09-24/README.md`.
|
||
|
||
## Shipped (released, not delivered)
|
||
Tag `v0.133.0` (`9bdb4da`), package sha256 `3aa30345…e69b6`, verified by anonymous download. Delivery needs the
|
||
operator's signed `agent_update` job per box.
|
||
|
||
- **Space preflight** before anything is created: free ≥ restored × 1.2 + 5 GiB, `restored` UNCOMPRESSED (vzdump
|
||
log "Total bytes written" / PBS snapshot size), thin metadata with room, off the tested guest's pool when
|
||
another eligible storage fits, unknown refuses, reported as a non-pass (`skipped`).
|
||
- **Scratch teardown retried every 10 min**; operator told once after 3 failed tries.
|
||
- **Thin pool ≥ 90 %** → immediate host report (hub v0.124.0 alarms `storage_fill_critical`, per pool per 6 h).
|
||
- **R-673:** the stale-lock sweep on the same timer, under the one-heavy-op gate.
|
||
|
||
## Red-proofs (each seen failing; files in `felhom.eu/documentation/audits/r672-2026-09-24/redproofs/`)
|
||
1. preflight removed → the 2026-09-24 restore issued again; 2. archive FILE size used → "the compressed file size
|
||
was used"; 3. timer pass a no-op → "the leaked scratch was not destroyed by the timer"; 4. sweep without the gate →
|
||
"the sweep ran while a backup held the gate"; 5. no 90 % edge → "0 report requests, want 1"; 6. every skip dropped →
|
||
"a space refusal never reached the host report". Full suite `go test ./...` green; `agent_gates.py` OK.
|
||
|
||
## Live (demo-hp, the on-demand `--selftest=restore-test`, cadence OFF)
|
||
(a) factor 10 → refused: needs 215.5 GiB, has 22.1 GiB. (b) normal margin → refused: restoring 21.1 GiB needs 30.3 GiB,
|
||
has 22.1 GiB — correct: no full restore-test fits demo-hp under 80 % pool use. (c) a forced teardown failure could not
|
||
run live (it needs a scratch guest, which (b) shows cannot be created within the 80 % rule) — unit tests only. Pool
|
||
58.99 % before and after every run; nothing created.
|
||
|
||
## Observations
|
||
1. demo-hp has no second eligible storage for a restore-test: `nvme-scratch` takes `rootdir`, but the agent holds no grant there. FILED: R-672
|