The publication guard compared snapshot init's JSON against the literal argv
spelling, but init reports canonical destinations, so a plan under macOS /tmp
or /var (realpath /private/...) always denied init_mismatch. The guard also
hard-failed on the first errored init, so a corrected re-run never bound.
- bin/gstack-autoplan-snapshot.ts: export canonicalDestination (the inner
destination() path math); initializePlan output is unchanged.
- autoplan/bin/phase-publication-hook.ts: compare activePlan/restorePath
against the canonicalized argv; a mistyped tool path is unbindable, not a
crash; skip errored inits and deny init_failed only when the most recent
init errored; Write/Edit to the active plan match by canonical path.
- autoplan/bin/guard-reasons.ts: init_mismatch never says re-run; init_failed
does.
- tests: PAX-3638 Fix A/A2/B/C cases (bun test -t "Fix B" runs one fix); the
three autoplan-init assertions that failed on macOS now compare canonical
paths. 9 of the 11 new guard cases fail against the previous hook.
- docs: init_mismatch, init_failed, Symlinked plan directories.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>