Files
felhom.eu/documentation/tests/TEST-REPORT-stable-path-sysdrive-restart-2026-06-23.md
T
admin 234e827b21 test(nomercy): Phase 0 floor + baseline captured
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
2026-06-23 19:29:47 +02:00

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 datastore felhom-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-pbs storage resolves to the PBS server on 192.168.0.180 datastore felhom-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=200G
  • mp1: vm-9201-disk-2,mp=/mnt/sys_drive,backup=1,size=50G · mp8: /mnt/felhom-drives (bind) · mp9: …/bootstrap → /etc/felhom-bootstrap,ro=1
  • onboot: 0 ⚠️ — flagged for Phase 4.1 (the spec asserts 9201 auto-starts on host reboot; with onboot: 0 a plain host reboot will not auto-start it). Pre-existing config.
  • Drives (host lsblk -f): felhom-usb = /dev/sdb1 UUID da9e7089-… (916 GB HDD); felhom-flash = /dev/sdc1 UUID 81a26531-… (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-usb inside the guest (not present (good) for both).

Baseline — CONTAINER (felhom-controller)

  • settings.json storage paths = ONLY stable /mnt/felhom-drives/felhom-flash + /mnt/felhom-drives/felhom-usb (no raw entries). Both findmnt to the correct sdX1[/felhom-data]. /mnt/sys_drive = disk-2.
  • Container / = docker-data overlay (197G, the 200G mp0). /mnt/sys_drive separate (50G).

Baseline — AGENT state (/var/lib/felhom-agent/)

  • guest-binds.json9201: [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 (277a2179 enrolled-absent, ce9d1d81 ejected) — 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 9201 log: including mount point mp1 ('/mnt/sys_drive') in backup and the proxmox-backup-client invocation 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 /settings unauthenticated and is reachable in-guest at 127.0.0.1:8080 (curl in-container).