--- name: migrate description: Use automatically when changing a legacy boundary, schema, API, dependency, architecture, or data representation; create a staged, observable migration path with compatibility and rollback limits. metadata: namespace: sillage qualified-name: "sillage:migrate" --- # Migrate in reversible slices Migration work is a sequence of small contracts, not a permission slip for a big-bang rewrite. Preserve working behavior until the replacement is proven. ## Migration packet ```text TL;DR: Current: Target: Stages: Compatibility: Rollback: Proof per stage: Cleanup: ``` Inventory real consumers and ownership before editing. For data, state invariants, idempotency, ordering, retention, locks, volume, and reconciliation. For APIs/dependencies, define version negotiation and failure behavior. Keep one stage per worktree/vertical and stop when a stage needs a new decision. Never delete or contract an old path without human approval and evidence that the replacement is live and recoverable. Route a changed target or risk to `sillage:shape`; route each implemented stage to `sillage:build` and `sillage:prove`.