Skip to content

migration-state.json

migration-state.json tracks the current state of the modernization effort. It captures overall progress, per-context status, parity test results, blockers, and velocity metrics. This file changes frequently as work progresses.

{
"started": "2026-01-20",
"lastUpdated": "2026-02-08",
"overallProgress": 0.18,
"contexts": [
{
"name": "Accounts",
"status": "in-progress",
"progress": 0.45,
"entitiesMigrated": 12,
"entitiesTotal": 27,
"parityTests": { "passing": 68, "failing": 4, "total": 72 },
"assignedTeam": "Zeta",
"notes": "Tax parity replicated; GL entry validation pending"
},
{
"name": "Stock",
"status": "not-started",
"progress": 0.0,
"entitiesMigrated": 0,
"entitiesTotal": 48,
"parityTests": { "passing": 0, "failing": 0, "total": 0 },
"assignedTeam": null,
"notes": "Blocked on Accounts completion (dependency)"
}
],
"blockers": [
{
"id": "BLOCK-001",
"context": "Accounts",
"description": "AccountsController God-class (4,412 LOC) requires decomposition before extraction",
"severity": "high",
"created": "2026-01-25",
"resolved": null
}
],
"velocity": {
"entitiesPerWeek": 4.2,
"testsPerWeek": 22,
"estimatedCompletion": "2026-04-15"
}
}
FieldTypeRequiredDescription
startedstringYesISO date when modernization began
lastUpdatedstringYesISO date of last update
overallProgressnumberYesOverall progress (0.0 to 1.0)

Per-bounded-context progress:

FieldTypeRequiredDescription
namestringYesContext name (matches domains.json)
statusstringYesStatus: "not-started", "in-progress", "complete", "blocked"
progressnumberYesProgress percentage (0.0 to 1.0)
entitiesMigratednumberYesEntities successfully migrated
entitiesTotalnumberYesTotal entities in this context
parityTestsobjectYesParity test results (see below)
assignedTeamstringNoTeam or agent assigned to this context
notesstringNoFree-text notes on current status
FieldTypeDescription
passingnumberTests currently passing
failingnumberTests currently failing
totalnumberTotal tests written
FieldTypeRequiredDescription
idstringYesUnique blocker identifier
contextstringYesAffected bounded context
descriptionstringYesWhat is blocking progress
severitystringYesSeverity: "low", "medium", "high", "critical"
createdstringYesISO date when identified
resolvedstringNoISO date when resolved (null if unresolved)
FieldTypeRequiredDescription
entitiesPerWeeknumberNoAverage entities migrated per week
testsPerWeeknumberNoAverage parity tests written per week
estimatedCompletionstringNoProjected completion date
StatusMeaning
not-startedNo extraction work has begun
in-progressExtraction is underway
completeAll entities migrated, parity tests passing
blockedWork cannot proceed due to a blocker
const spec = await ModernizeSpec.load("/path/to/project");
spec.migrationState.updateContext("Accounts", {
progress: 0.45,
entitiesMigrated: 12,
parityTests: { passing: 68, failing: 4, total: 72 },
});
await spec.save();
Terminal window
npx modernizespec progress --context Accounts --progress 0.45

AI agents with MCP access can update progress directly through the modernize_update_progress tool.

Agents should update migration-state.json after completing work on any context:

  1. Update entitiesMigrated count
  2. Update parityTests with latest test run results
  3. Adjust progress based on entities migrated / total
  4. Add or resolve blockers as appropriate
  5. Update lastUpdated timestamp