docs: F3 provisioning runbook (vmid from full host list) + campaign F1/F2 resolution banner
Companion to felhom-agent v0.60.0 (proof-of-launch destroy gating + restore- test band-advance). New documentation/runbooks/provisioning.md; campaign doc updated with the resolution status and the operator manifest-bump follow-up. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,25 +4,18 @@
|
||||
|
||||
---
|
||||
|
||||
# REPORT — "no-mercy" campaign: full effects of the `felhom` pool + scoped-token migration
|
||||
# REPORT — F3 doc: operator vmid selection runbook (companion to agent v0.60.0 F1/F2 fix)
|
||||
|
||||
**Date:** 2026-07-02 · **Class:** Runbook-style validation (aggressive, throwaway env) · **No code change, no version bump.**
|
||||
**Findings doc:** [`documentation/audits/CAMPAIGN-pool-effects-2026-07-01.md`](documentation/audits/CAMPAIGN-pool-effects-2026-07-01.md)
|
||||
**Date:** 2026-07-02 · **Repo:** `felhom.eu` (`documentation/` only, no version bump) · **Class:** doc
|
||||
companion to the Risky/supervised fix in felhom-agent v0.60.0 (see that repo's REPORT.md for the full
|
||||
F1/F2 deliverables).
|
||||
|
||||
Executed the full pool-effects campaign on felhom-pve (agent v0.59.0 live, host-install v1.7.0 scoped ACL): source-traced every `ListLXC` consumer in felhom-agent (read-only), then ran the complete agent→PVE operation matrix under the scoped token on scratch pool guests 9310/9311, adversarial pool-blindness probes with non-pool decoys, blast-radius regression re-confirms, and pool-membership side-effect checks.
|
||||
|
||||
## Headline results
|
||||
|
||||
1. **Track A — 16/16 ops PASS, zero surprise 403s.** The scoped token is functionally complete for the agent's real operation surface (incl. the previously untested Destroy+disk-reap, Snapshot/Rollback/Delete, SetConfig Network/CPU/Options, Resize, ListRunningTasks, TaskLogTail, and the full restore-test cycle).
|
||||
2. **B1 (the campaign's most important result):** the provision vmid is **always externally supplied** (no `nextid` scan in agent OR hub — collision-avoidance is operator-side). Adversarially provisioning onto an existing **non-pool** vmid: the pool-blind duplicate guard misses it, PVE refuses the restore (no clobber), **but the compensating rollback then attempts to DESTROY the innocent guest** — stopped only by the pool ACL (403). Same shape live-proven for the restore-test scratch band (a squatter at 990000 additionally makes the restore-test **permanently FAIL** with false "backup unrestorable" alerts). Safe-but-noisy under the scoped ACL; a genuine destroy-risk under any broad token.
|
||||
3. **Containment intact (Track C):** non-pool guest ops 403, non-granted-storage writes 403, drive audit readable (3b-fix holds).
|
||||
4. **Hub inventory is pool-only (B3, by design — now recorded as a decision):** operators must pick vmids from the host's real guest list, never the hub view. No pool-name leak into any customer/controller-facing field (Track D); `--adopt-pool` idempotent; uninstall never deletes a non-empty pool.
|
||||
|
||||
## Fix list (full detail + severities in the findings doc)
|
||||
|
||||
- **F1 (HIGH, blocks shared-box trial):** arm the bring-up/restore-test compensating destroy only after `RestoreLXC` returns a UPID — never destroy what the job didn't create.
|
||||
- **F2 (MED, blocks trial):** restore-test should advance past an "already exists" band vmid (or pre-verify via fenced root CLI); document 990000–990009 as reserved fleet-wide.
|
||||
- **F3 (MED, doc-only, blocks trial):** provisioning runbook must say vmid selection uses the host's full guest list, not the hub inventory.
|
||||
- F4/F5/F6 (LOW/INFO): non-pool source-config read in restore-test, pool-blind eject dependent-scan, latent reconcile desired-state rule.
|
||||
|
||||
Demo left exactly as found: pool `felhom` = {9201}, all scratch/decoy guests and campaign artifacts removed, agent active, controller healthy.
|
||||
- **NEW `documentation/runbooks/provisioning.md`** — the F3 note from
|
||||
`documentation/audits/CAMPAIGN-pool-effects-2026-07-01.md`: operators MUST pick a provision `-vmid`
|
||||
from the host's full guest list (`pct list` + `qm list` on the node), never from the pool-only hub
|
||||
inventory; documents the reserved bands (9999, 990000–990009 fleet-wide) and the safe collision
|
||||
behavior under agent >= v0.60.0.
|
||||
- **`documentation/audits/CAMPAIGN-pool-effects-2026-07-01.md`** — resolution banner added: F1 fixed at
|
||||
root (proof-of-launch destroy gating, all three destroy paths), F2 fixed (band-advance + skip), F3
|
||||
documented; F4/F5/F6 remain open; operator follow-up = hub Day-0 artifact manifest bump to agent
|
||||
0.60.0 (binary published to Gitea).
|
||||
|
||||
Reference in New Issue
Block a user