0%

Migration Planner Runtime and Skill

Goal

  • Turn deterministic project research and a target release into an idempotent executable migration plan through the canonical plan writer.

Files

  • CREATE scripts/migration_planner_runtime/
  • CREATE .claude/skills/migration-planner/
  • CONSUME scripts/create_plan_runtime/api.py
  • CONSUME scripts/plan_corpus/read.py
  • CONSUME scripts/harness_dist/capability_gap.py as cross-runtime precedent

Work Items

  • Define migration inputs as ProjectProfile plus current/target ReleaseManifest, resolved overlays, provider probes, and retained project-owned paths.
  • Compute conflicts, adapter changes, obsolete copied assets, migration steps, rollback limits, acceptance probes, and authorization points without mutating the target.
  • Generate a deterministic static v7 specification and call only create_plan_runtime.api.scaffold_fresh_static_specification; lint against direct plan.json or internal writer imports.
  • Derive plan identity and a specification digest from canonical ProjectProfile plus target release; use plan_corpus.read.load_plan to return the existing matching plan, and create a distinct governed plan for a changed target without overwriting a valid plan.
  • Expose the runtime through one thin migration-planner skill and prove research, dry-run, plan authoring, error, and idempotency paths.

Verification

  • Write failing positive, negative, interruption, concurrency, and idempotency cases before implementation.
  • Pin the consumer-visible outcome through the real CLI/runtime entry point.
  • Run focused pytest and the owning runtime self-test with a 150-second test timeout.
  • Run python -m scripts.harness_dist verify --root . when distributed artifact classification changes.