Skip to main content
Milestones are the heart of your migration. Each one delivers a working increment that you review before proceeding, so changes stay small, reviewable, and safe. Within each milestone, the agent breaks the work into tasks and handles them automatically. For a high-level overview of the roadmap, see the Roadmap page.

The Three-Step Milestone Process

Each milestone follows three steps:

Step 1: Review the Milestone

Before any code is generated, understand what the milestone will accomplish: Click on a milestone to expand it and click Review & Approve to open the milestone details. Milestone expanded This opens the detail page where you can inspect the full plan: Milestone review and approve Here’s what to look at and what you can change:
  • Relevant Files: the source files that will be migrated.
  • Test Files: the tests tied to this milestone.
  • Milestone description: the full scope, design decisions, and risks. Read this carefully. If the approach doesn’t match what you want (e.g., the wrong library is being proposed, or a design decision doesn’t fit your architecture), edit it now. It’s much easier to fix the plan than to fix the generated code later.
If you edit anything, click Save Changes. You can also check Validate following milestones to have Morph verify that your edits won’t break later milestones.
Tip: You don’t have to change anything. If the plan looks good, just approve. But if something looks off, this is the cheapest place to fix it.

Editing Milestones

How to adjust milestone plans before approving

Step 2: Approve and Start

Once you’re happy with the plan, click Approve & Start. Morph prepares a sandbox and the agent begins: Milestone initializing The agent handles everything from here: it plans the tasks, works through them one by one, and commits code after each task. Milestone agent planning A Tasks tab appears where you can watch progress. As the agent works, individual tasks show up with their IDs (e.g., M1-TA002), titles, and status. Tasks in progress

Step 3: Review the Pull Request

When the agent finishes, Morph automatically creates a pull request. PR generating The milestone moves to Pending Review: Pending review
  1. Click Review Pull Request to open it in GitHub
  2. Review the code changes as you would any PR
  3. Leave comments, request changes if needed
  4. Merge when satisfied
You can also add new tasks at this point with the + Add Task button.

Reviewing Pull Requests

Best practices for reviewing migration PRs

After Merging

Once you merge the pull request, the milestone is complete and the next one is ready to go. Milestone merged

The Foundation Milestone

Milestone 1 (the foundation milestone) includes an extra automated step: lifecycle discovery for the target repository. Before the agent starts writing migration code, Morph analyzes the target repo to determine how it should be installed, built, run, and tested. The discovered configuration is saved as a Lifecycle Setup that you can review and edit. If discovery cannot get the target application healthy automatically, the configuration is saved as Draft and a warning appears so you can fix it before proceeding.

Milestone Test Summary

After a milestone finishes execution, a test summary appears on the milestone card showing per-repo functional test results:
  • Backend tests — Repository name with a passed/total count (e.g., 5/5 passed) and a comparison indicator when origin data is available
  • Frontend tests — Repository name with total test count and origin comparison count
Milestone test summary showing per-repo results This gives you a quick signal of migration health at a glance. For the full breakdown, navigate to the Functional Testing dashboard.

Milestone Statuses

As a milestone moves through its lifecycle, its status badge updates on the roadmap. Here’s what each one means:
StatusMeaning
Not StartedHasn’t been approved yet. No work has begun.
In ProgressThe agent is actively working on tasks.
Pending Review (Success)All tasks completed. A pull request is ready for your review.
Pending Review (Fail)The agent finished, but not all tasks completed. A PR is still created with whatever succeeded.
MergedYou’ve merged the PR. Milestone complete.
FailedThe agent crashed. All progress halted.
PR Generation FailedTasks finished, but the pull request couldn’t be created.

Tasks

You don’t need to interact with individual tasks. They execute automatically as part of the milestone. But here’s how they work under the hood.

Task Statuses

StatusMeaning
ReadyWaiting to be picked up. This is the default for new tasks.
In ProgressThe agent is working on it.
CompletedDone.
FailedThe task ran into an error.

Task Dependencies

Tasks can depend on other tasks. For example, “Implement authentication middleware” might need “Create project scaffolding” to finish first. Morph handles execution order automatically:
  • A task stays in Ready until all of its dependencies have completed.
  • Once a dependency finishes, tasks waiting on it become eligible to run.
  • If a dependency fails, all tasks waiting on it are skipped. This prevents the agent from building on top of work that didn’t succeed.
  • Tasks with no dependencies can run in parallel.
  • If dependencies form a loop (Task A needs Task B, which needs Task A), Morph catches this and stops with an error.

Adding Your Own Tasks

You can add tasks to a milestone at any point, for example if you spot something during a pull request review.
  1. Click + Add Task on the milestone view
  2. Fill in the title
  3. Use the markdown editor to describe the task, its scope, and definition of done
  4. Submit
Morph automatically reviews your task for conflicts with the existing plan.

Task Types

Most tasks you see are Execution tasks, where the agent is writing and migrating code. But there’s a lot more happening under the hood to make sure the output is correct. Morph automatically plans, verifies, reviews, and validates your code across multiple passes:
Task TypeWhat it does
ExecutionWrites and migrates code. This is what you’ll mostly see.
VerificationRuns tests and checks builds.
Lifecycle DiscoveryDiscovers how the target application builds and runs. Runs as part of the foundation milestone.
BE Functional TestingGenerates and runs backend functional tests (API/CLI) against origin and target.
FE Functional TestingGenerates and runs frontend visual tests with screenshot and video comparison.
Milestones PlanningPlans out the milestones for your project.
Tasks PlanningBreaks a milestone into individual tasks.
Wiki WritingGenerates documentation about the source and destination projects.
Pull Request CreationCreates the pull request once tasks are done.
Pull Request VerificationReviews the generated pull request.
Milestone ReportSummarizes what was done in a milestone.
Milestone Edit ValidationChecks that your edits won’t break later milestones.

Tips

  • Review before approving. It’s much cheaper to fix the plan than to fix generated code. Edit the milestone description if something looks off.
  • Don’t rush merges. Review PRs carefully. It’s easier to catch issues now than after several milestones have built on top.
  • Use rules for recurring issues. If Morph keeps making the same mistake, create a Rule to prevent it in future milestones.
  • One milestone at a time. Complete each milestone before starting the next to keep changes properly integrated.

Creating Rules

Encode preferences for better results across milestones

Roadmap

High-level view of your migration

Reviewing Pull Requests

Best practices for PR review

Editing Milestones

Adjust plans before approving

Functional Testing

Verify behavior with auto-generated tests

Troubleshooting

Common issues and how to fix them