v1.21.0 — resilient MkdirAll for virtio-fs launch failures
Fix: spurious launch failed: mkdir … on virtio-fs shared mounts
parley tui → N (new idea) could fail with launch failed: mkdir .../runs/<id>: <errno> even though the run dir was created and the run ran in the background (orphaned). Root cause: an AppleVirtIOFS (virtio-fs) shared mount with weak cross-process cache coherence makes os.MkdirAll return a transient ENOENT/ENOTDIR from a stale dentry/attribute cache while the dir is (or becomes) present.
Fix: new internal/fsutil.MkdirAllResilient — healthy path is exactly one os.MkdirAll (zero overhead); on error it returns nil when a fresh Stat shows the directory, fails fast on fs.ErrPermission, otherwise retries [0,5,20,50]ms and returns the last mkdir error. fs.ErrExist is never trusted blindly. Applied on the new-idea launch path (CreateIdea, Store.Append, runmanifest) and the live run path (runner/steer/phase58/handoff dirs, hitl questions).
Designed + reviewed via Parley Deck (claude/codex/agy/hermes) — all participants ACCEPT. 8 internal/fsutil tests; full suite green.
Install/upgrade (macOS): brew update && brew upgrade parley-deck-cli
Windows: download the x64 or arm64 .exe below.