3f382bf762
From AUDIT-blast-radius-hostroot-localapi-2026-07-02.md. Each fix ships with a non-hollow test + a companion red-proof (shown failing on the pre-fix impl). Sudoers install-source grants became globs — deploy the sudoers drop-in with the binary. A1 (stale-lock pool-membership) deliberately excluded (spike). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
1.8 KiB
1.8 KiB
CONTEXT — felhom-agent working state
Snapshot of the current state + open threads. Authoritative history lives in
CHANGELOG.md(top entry = current); the end-of-task detail lives inREPORT.md.
Current
- v0.61.0 (2026-07-03) — blast-radius audit fixes B1 + D1 + D2 + D3 from
felhom.eu/documentation/audits/AUDIT-blast-radius-hostroot-localapi-2026-07-02.md: random temp staging for root-installed scripts (+ sudoers/manifest glob updates), mkfs-wrapper member/RO re-checks (validated byscripts/mkfs-guarded-harness.sh), classifyClaim empty-lsblk fail-safe, and the blank-format anti-retarget (durable-id-bound, AGENT-001's benign-branch twin). - Deployed on demo host
felhom-pve(nodedemo-felhom), non-rootfelhom-agentservice user, pool-scoped token (felhompool).
Open threads
- A1 (LOW, pending SPIKE — not fixed in v0.61.0): stale-lock recovery
(
internal/localapi/stalelock.go) reaps guests by a pool-blindListLXCscan, not ownership. Contained by the pool-scoped token today; must be fixed before any broad/root-token deployment. It is a spike, not a patch: the role lacksPool.Audit, so there is no cheap authorized pool-membership read — which read to use is the open design question. - Deferred audit items (housekeeping/design, all INFO): C1 (controller-swap version floor), C2 (NAS server allowlist), A2 (gate journal cross-check), B2–B5, E1/E2.
- Drive-enrollment leftovers: (a)
runStorageInitslow-device detached-format polling; (b) Impl-3 shared-box operator format gate. - BUNDLE leftover: non-root agent can't read the PBS key; migration must preserve cert/key/tokens.
- Not run (needs a supervised session): the destructive D1/D3 live proofs (real mkfs on a crafted member; a live /dev re-enumeration race during a real format).