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.

- 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.
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:


Step 3: Review the Pull Request
When the agent finishes, Morph automatically creates a pull request.

- Click Review Pull Request to open it in GitHub
- Review the code changes as you would any PR
- Leave comments, request changes if needed
- Merge when satisfied
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.
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 Statuses
As a milestone moves through its lifecycle, its status badge updates on the roadmap. Here’s what each one means:| Status | Meaning |
|---|---|
| Not Started | Hasn’t been approved yet. No work has begun. |
| In Progress | The 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. |
| Merged | You’ve merged the PR. Milestone complete. |
| Failed | The agent crashed. All progress halted. |
| PR Generation Failed | Tasks 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
| Status | Meaning |
|---|---|
| Ready | Waiting to be picked up. This is the default for new tasks. |
| In Progress | The agent is working on it. |
| Completed | Done. |
| Failed | The 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.- Click + Add Task on the milestone view
- Fill in the title
- Use the markdown editor to describe the task, its scope, and definition of done
- Submit
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 Type | What it does |
|---|---|
| Execution | Writes and migrates code. This is what you’ll mostly see. |
| Verification | Runs tests and checks builds. |
| Lifecycle Discovery | Discovers how the target application builds and runs. Runs as part of the foundation milestone. |
| BE Functional Testing | Generates and runs backend functional tests (API/CLI) against origin and target. |
| FE Functional Testing | Generates and runs frontend visual tests with screenshot and video comparison. |
| Milestones Planning | Plans out the milestones for your project. |
| Tasks Planning | Breaks a milestone into individual tasks. |
| Wiki Writing | Generates documentation about the source and destination projects. |
| Pull Request Creation | Creates the pull request once tasks are done. |
| Pull Request Verification | Reviews the generated pull request. |
| Milestone Report | Summarizes what was done in a milestone. |
| Milestone Edit Validation | Checks 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
Related Docs
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