"pan admin migrate-plan-home <project-key> — one-time bridge that copies planning artifacts and item progress from the state worktree into <planHome>/.pan/ (PAN-3917 D8)"
Install
npx skillscat add eltmon/overdeck/pan-admin-migrate-plan-home Install via the SkillsCat registry.
pan admin migrate-plan-home
Run the command now:
pan admin migrate-plan-home <project-key> [--commit] [--dry-run]
pan admin migrate-plan-home <project-key> --repair-ignore [--dry-run]Usage
pan admin migrate-plan-home lexerra --dry-run # preview only, writes nothing
pan admin migrate-plan-home lexerra --commit # copy + commit in the plan home
pan admin migrate-plan-home lexerra --repair-ignore # only drop the legacy .pan/ ignore line, commit .gitignoreOptions:
--commit— commit the migrated artifacts in the plan home, and repair a legacy.pan/
ignore rule (below). The commit holds only files this run wrote, plus files an earlier run
copied that still match the state worktree. Any other uncommitted.pan/change (an operator
or live agent edit) is listed as "left uncommitted" and stays out of the commit.--repair-ignore— do only the ignore repair: remove Overdeck's legacy.pan/line and commit.gitignorealone. Copies nothing and never calls the tracker. Not combinable with--commit.--dry-run— report what would be copied, and whether.pan/is ignored, without writing anything--state-root <dir>/--plan-home <dir>— override resolution (tests, odd setups)--open-issues <file>— read open issue ids from a file instead of calling the tracker
What It Does
Copies drafts/, specs/, continues/, orders/, notes/, andbacklog/sequence.md for open issues out of~/.overdeck/state/<project>/ into <planHome>/.pan/ — the same .pan/
home resolvePlanHome and the rest of the xBRIEF/orders/backlog code already
read. Closed-issue artifacts stay behind on the archived overdeck-state
branch. It also reads each open issue's records/<issue>.json
(tasks.statusOverrides, falling back to the top-level field) and merges
those item statuses into .pan/continues/<ISSUE>.xbrief.json's items map
(completed → done), so a project's in-flight checklist progress survives
the cutover.
It never replaces a file that already exists under .pan/. A destination
that differs from the state copy (including a continue file whose records
statuses changed) is listed as a conflict, left alone, and counted inremaining, so the run exits 1 until you reconcile it by hand. The state
worktree stopped moving at the Cut, so the plan-home copy is often the newer
one.
Idempotent: run it again and it copies nothing and reports 0 remaining.
It never writes to the state worktree, never deletes anything, and never
pushes.
A plan home that ignores .pan/ (PAN-3996)
Before the Cut, Overdeck wrote .pan/ into project .gitignore files. Before
copying anything, the command runs git check-ignore against .pan/ in the
plan home:
- Overdeck's legacy line (an exact
.pan/or.panline in the repo's
top-level.gitignore): with--committhat line is removed and.gitignoreis committed together with the artifacts throughgit add -- <paths>+git commit --only -- <paths>, so unrelated staged or
unstaged work stays out of the commit. If.gitignorealready has
uncommitted changes,--commitrefuses before copying. If the commit then
fails (a hook, a foreign rule behind the legacy line), the line is put back,
so a rerun repairs it again. Without--commitnothing is edited and it
warns that the copies are ignored by git.--dry-runnames the rule.--repair-ignoremakes the same edit and commits.gitignorealone. - Any other rule (nested
.gitignore,.git/info/exclude,core.excludesFile, a broader pattern): never edited. It is reported with
itsfile:line;--commitrefuses before copying.
A refused run or a git failure prints one migrate-plan-home: … line and
exits 1. When the ignore check itself cannot run, a copy or --dry-run
reports that and carries on; --commit stops. pan doctor's Plan home .pan/ tracking row flags the same
condition for every registered project.
When to Use
- Once per project, before that project's record plane is deleted (PAN-3917
D8) —panopticon-cliandmind-your-nowfirst (FR-16). --dry-runfirst, always — see how many open issues and files it found
before--commit.
See Also
docs/THE-CUT.md— the no-loss map; this verb's own row explains when it
in turn gets dropped.src/lib/pan-dir/migrate-plan-home.ts— the library.docs/WORKSPACES-AND-PROJECTS.md— plan-home /pan_records.reporesolution.