A migration is the same decision, a few hundred times.
Most call sites are mechanical. The handful that disagree with the plan are the migration, and they are the easiest part to lose between agent sessions.
How Skyflo runs a framework or dependency migration with AI coding agents across multiple repositories, keeping the plan, the exceptions, and the reasoning attached to one goal.
Migration ledger
mg-208 · logging API v2 · 5 registered checkouts
applied
Direct replacement. Matched the plan exactly.
applied
Direct replacement. Matched the plan exactly.
exception
Old API is called before the config loads. Ordering fix agreed in the plan review.
exception
Public surface. Deprecation shim kept for one minor version.
open
No test coverage on the code path. Flagged rather than changed silently.
Illustrative example. One row is still open, and each exception keeps its reasoning for the next pass.
Where the cost actually is.
A migration produces two things: a large diff, and a small set of exceptions that took real thought. Coding agents are good at the first. The second is what disappears when the session ends.
By the fortieth call site you have decided three things that were not in the original plan: this wrapper keeps a deprecation shim, that module has to move before the config loads, this path has no coverage so it gets flagged rather than quietly changed.
Those decisions are the migration. Start a fresh session for the next repository and you re-derive them badly, or you skip them and the two halves of the change disagree.
The mission keeps the plan, the conversation, and the exceptions between passes. Its record survives the session, so the next pass starts from what was decided instead of re-deriving it from the original instructions.
What the next pass inherits.
Source-linked memory from earlier passes is retrieved when it is relevant to a later mission, so the reasoning behind an exception is available the next time something touches that code.
Every record carries the work that produced it. When later work returns to an open call site, the reason the SDK kept its shim is attached to the SDK, with a link to the change that established it.
Memory is reviewable: what the evidence supports is kept, anything weaker waits for you, and you can dismiss or remove any record. A migration produces a lot of decisions, and not all of them deserve to outlive the migration.
The checks a migration repeats in every repository compound too. When a second repository verifies the same command sequence, Skyflo can propose it as a Skill, so the next pass calls the gate by name instead of rediscovering it.
Run the migration as one objective.
One mission, one plan, and a record that keeps the exceptions between passes instead of losing them.
Start free. macOS 14+, Apple silicon and Intel. Agent subscriptions and model keys you bring are billed by their providers.