* fix(core): roadmap upgrade rollback must restore .planning regardless of git tracking (#1542) applyMigration rolled back a failed migration with git reset --hard + git clean -fd .planning/phases/. For a commit_docs:false project (.planning gitignored — the default) that restores NOTHING (reset ignores untracked, clean without -x skips ignored), yet it threw 'Migration failed (rolled back to <sha>)' — a false claim leaving .planning half-migrated. git reset --hard is also a whole-repo op. Replace it with a surgical, git-independent rollback: record the exact renames performed and snapshot each file before rewriting it, then on failure reverse the renames and restore the snapshots (deleting files that did not previously exist). Correct whether .planning is tracked or ignored; touches only what it changed. Claude-Session: https://claude.ai/code/session_01R88n7Q54bAaVHFkDbbH1yz * chore(changeset): Fixed fragment for #1543 (roadmap upgrade surgical rollback) Claude-Session: https://claude.ai/code/session_01R88n7Q54bAaVHFkDbbH1yz * test(core): update bug-685 execSync count floor after surgical rollback (#1542) The #1542 surgical, git-independent rollback removed the rev-parse/reset/clean git execSync calls from roadmap-upgrade.cts, leaving only the git status precondition. bug-685 asserted calls.length >= 4; lower the floor to >= 1 — the durable guard (every remaining git execSync sets windowsHide:true) is unchanged. Claude-Session: https://claude.ai/code/session_01R88n7Q54bAaVHFkDbbH1yz --------- Co-authored-by: Tom Boucher <trekkie@nomorestars.com>
5.2 KiB
5.2 KiB