Cutover (Stage 5)
Cutover is the final stage. The IDE checks readiness, writes all approved translated files to the target project on disk, and exports a tamper-evident audit bundle.
Cutover is irreversible — it writes to the target project filesystem. The audit bundle is your compliance record.
Readiness Gate
Before cutover can be approved, the IDE runs 8 checks:
Blocking Checks (must all pass)
| Check | Description |
|---|---|
| All units terminal | No units in pending or translating state |
| No pending decisions | All blocking human decisions resolved |
| No unresolved divergences | All validation divergences reviewed |
| Required sign-offs obtained | All compliance officer approvals collected |
If any blocking check fails, the Approve Cutover button is disabled and the failing checks are listed.
Warning Checks (flagged, not blocking)
| Check | Description |
|---|---|
| Skipped units present | One or more units were skipped |
| Low-confidence units | Units with translation confidence below medium |
Info Checks
| Check | Description |
|---|---|
| Critical path on schedule | All critical path units are approved |
| Regulated data reviewed | All units with regulated data hits have been reviewed |
Approving Cutover
Click Approve Cutover in the Cutover pane. If any blocking check is failing, this throws a CutoverNotReadyError and lists the unmet conditions.
Once approved, the IDE writes all approved units to disk.
File Commit
The commit writer iterates over all approved units and writes unit.targetText to unit.targetFile using the IDE's file service. Existing files are overwritten.
After writing, each unit transitions from approved → committed.
Audit Bundle Export
After files are committed, the IDE exports an IAuditBundle:
{
"sessionId": "sess-b3f8c21a",
"exportedAt": 1742300000000,
"units": [
{
"unitId": "...",
"sourceFile": "src/PAYMENT.cbl",
"targetFile": "src/PaymentService.java",
"sourceLang": "cobol",
"targetLang": "java",
"outcome": "approved",
"confidence": "high",
"fingerprintSimilarity": 0.94,
"decisions": [],
"divergences": [],
"approvedBy": "...",
"approvedAt": 1742299000000
}
],
"complianceFrameworks": ["iso-26262", "misra-c"],
"bundleHash": "a3f8c21b...",
"chainIntegrity": true
}The bundleHash is a FNV-1a hash computed over the serialised unit records. The chainIntegrity field is true when the hash matches the computed value — it detects any post-export modification of the bundle.
See Audit Bundle for the full structure and tamper-evidence details.
After Cutover
The session state is preserved — you can open the Modernisation panel to review the audit bundle or re-run validation on specific units. The Modernisation.inverse files remain in the project roots.
To start a new session on the same projects, run End Modernisation Session and begin the wizard again.
Last edited