234e827b21
PBS floor ct/9201/2026-06-23T17:28:25Z; baseline host/guest/container/agent state; invariant (no rootfs placeholders) PASS; Phase 2.3 (mp1 in vzdump) PASS captured opportunistically. Flagged: onboot:0, two leftover absent drive-intents. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017PsnU2ASocYrvzqE82YDYW
4.6 KiB
4.6 KiB
TEST REPORT — NO-MERCY CAMPAIGN: stable-path model + /mnt/sys_drive + server restart
Date: 2026-06-23 · Class: destructive test campaign (operator-authorized, DEMO only)
Targets: guest 9201 (demo-felhom) on felhom-pve (192.168.0.162, N100, PVE 9) ·
controller v0.81.0 · agent v0.40.0 · hub hub.felhom.eu
Rule: report-don't-fix. No product-code changes. Findings get evidence + file:line + a proposed
fix direction (NOT implemented).
Status legend
PASS = effect asserted AND wrong-outcome ruled out · FAIL = wrong outcome observed · INCONCLUSIVE = could not assert cleanly (reason given).
Phase 0 — floor + baseline (non-destructive) — ✅ COMPLETE
PBS floor (hard restore floor)
- Snapshot id:
felhom-pbs:backup/ct/9201/2026-06-23T17:28:25Z(PBS datastorefelhom-spike@felhom@pbs!n100@192.168.0.180). Backup finished successfully (00:00:15, incremental, reused 89.9%). - Used? Not yet (recorded for restore if a later phase wedges 9201).
- Note:
felhom-pbsstorage resolves to the PBS server on 192.168.0.180 datastorefelhom-spike. Writing the floor snapshot there is normal PBS operation (the demo's nightly job already does) — it does not mutate/break 180 as a host, consistent with the guardrail.
Baseline — HOST (pct config 9201)
rootfs: local-lvm:vm-9201-disk-0,size=32G·mp0: vm-9201-disk-1,mp=/var/lib/docker,backup=1,size=200Gmp1: vm-9201-disk-2,mp=/mnt/sys_drive,backup=1,size=50G·mp8: /mnt/felhom-drives(bind) ·mp9: …/bootstrap → /etc/felhom-bootstrap,ro=1onboot: 0⚠️ — flagged for Phase 4.1 (the spec asserts 9201 auto-starts on host reboot; withonboot: 0a plain host reboot will not auto-start it). Pre-existing config.- Drives (host
lsblk -f):felhom-usb=/dev/sdb1UUIDda9e7089-…(916 GB HDD);felhom-flash=/dev/sdc1UUID81a26531-…(117 GB USB). Both mounted host-side at raw/mnt/<name>AND bind-mounted to stable/mnt/felhom-drives/<name>under the shared parent.
Baseline — GUEST
findmnt /mnt:/mnt/sys_drive=pve-vm--9201--disk--2(distinct device);/mnt/felhom-drives/{flash,usb}=sdc1[/felhom-data]/sdb1[/felhom-data].- Invariant (bug signature) — PASS: no rootfs placeholder dirs at raw
/mnt/felhom-flash//mnt/felhom-usbinside the guest (not present (good)for both).
Baseline — CONTAINER (felhom-controller)
settings.jsonstorage paths = ONLY stable/mnt/felhom-drives/felhom-flash+/mnt/felhom-drives/felhom-usb(no raw entries). Bothfindmntto the correctsdX1[/felhom-data]./mnt/sys_drive= disk-2.- Container
/= docker-data overlay (197G, the 200G mp0)./mnt/sys_driveseparate (50G).
Baseline — AGENT state (/var/lib/felhom-agent/)
guest-binds.json→9201:[uuid:81a26531 (flash), uuid:ce9d1d81 (absent), uuid:da9e7089 (usb)].drive-intents.json:277a2179→enrolled (absent),81a26531→enrolled (flash),ce9d1d81→ejected (absent),da9e7089→enrolled (usb). ⚠️ Two leftover intents for physically-absent drives (277a2179enrolled-absent,ce9d1d81ejected) — relevant to Phase 4.3 intent-gate.- Agent version:
felhom-agent 0.40.0.
Deployed apps at baseline
- Only base infra running:
filebrowser,felhom-controller,cloudflared,traefik(all healthy). No customer apps deployed — tests needing "an app on a drive" will deploy a small one.
Scratch
- Loop devices: LOOP_A=
/dev/loop0(/root/nomercy-scratch/loopA.img, 2G), LOOP_B=/dev/loop1(/root/nomercy-scratch/loopB.img, 2G). For teardown in Phase 5.
Phase 2.3 (opportunistic, captured during the floor vzdump) — ✅ PASS
- The floor
vzdump 9201log:including mount point mp1 ('/mnt/sys_drive') in backupand theproxmox-backup-clientinvocation carries--include-dev /mnt/vzsnap0/./mnt/sys_drive. mp1 is in the archive. Wrong outcome (mp1 excluded /backup=0) ruled out. (Optional restore-to-scratch deferred.)
Phase 1 — stable-vs-raw path model — ⏳ IN PROGRESS
Phase 2 — /mnt/sys_drive third volume — ⏳ PENDING (2.3 PASS captured)
Phase 3 — server restart + retired banner — ⏳ PENDING
Phase 4 — host reboot + chaos — ⏳ PENDING
Phase 5 — restore to clean baseline — ⏳ PENDING
Findings (running)
None yet beyond the flagged baseline observations (onboot:0, leftover absent intents).
Method notes
- User-facing actions: method stated per test (claude-in-chrome vs exact-endpoint). The demo controller
renders
/settingsunauthenticated and is reachable in-guest at127.0.0.1:8080(curl in-container).