Project Configuration
The Modernisation.inverse file is the session contract written to each project root. It records the session ID, migration pattern, project role, and all paired projects.
Commit this file to version control. It is the sole source of truth for session restoration.
File Format (v2)
{
"neuralInverseModernisation": true,
"version": "2",
"role": "source",
"projectLabel": "ACME-COBOL-Mainframe",
"projectId": "proj-src-abc123",
"pairedProjects": [
{
"role": "target",
"label": "ACME-Modern-PaymentService",
"uri": "file:///path/to/modern/project",
"id": "proj-tgt-def456"
}
],
"migrationPattern": "cobol-to-typescript",
"sessionId": "sess-b3f8c21a",
"createdAt": 1742300000000
}Fields
| Field | Type | Description |
|---|---|---|
neuralInverseModernisation | true | Marker field — always true |
version | "2" | Format version |
role | "source" | "target" | This project's role in the session |
projectLabel | string | Human-readable label for this project |
projectId | string | Stable UUID for this project |
pairedProjects | IProjectRef[] | All other projects in the session |
migrationPattern | string | Pattern ID or free-form name |
sessionId | string | Shared across all projects in the session |
createdAt | number | Unix timestamp in milliseconds |
Paired Project Reference
{
"role": "target",
"label": "My Modern Project",
"uri": "file:///absolute/path/to/project",
"id": "proj-tgt-def456"
}| Field | Description |
|---|---|
role | "source" or "target" |
label | Display name for this project |
uri | Absolute URI (file:// scheme) to the project root |
id | Stable ID matching the projectId in that project's own file |
Multi-Project Sessions
For 1:N, N:1, or N:M topologies, pairedProjects contains multiple entries. Each source project lists all target projects, and vice versa.
Example — monolith-to-microservices (1:3):
Source (Modernisation.inverse in monolith root):
{
"role": "source",
"projectId": "proj-src-mono",
"pairedProjects": [
{ "role": "target", "label": "AuthService", "uri": "file:///services/auth", "id": "proj-tgt-auth" },
{ "role": "target", "label": "PaymentService", "uri": "file:///services/payment", "id": "proj-tgt-pay" },
{ "role": "target", "label": "OrderService", "uri": "file:///services/order", "id": "proj-tgt-ord" }
]
}Each target (Modernisation.inverse in service root):
{
"role": "target",
"projectId": "proj-tgt-auth",
"pairedProjects": [
{ "role": "source", "label": "ACME-Monolith", "uri": "file:///monolith", "id": "proj-src-mono" }
]
}v1 → v2 Migration
If a project contains a v1 Modernisation.inverse file (pre-v2 format with legacyFolderUri/modernFolderUri), the IDE migrates it automatically on load.
v1 format (automatically upgraded):
{
"neuralInverseModernisation": true,
"legacyFolderUri": "file:///path/to/legacy",
"modernFolderUri": "file:///path/to/modern",
"migrationPattern": "cobol-to-java",
"sessionId": "sess-old123"
}The v1 fields legacyFolderUri and modernFolderUri are converted to sources and targets arrays in the v2 format. The original file is updated in place.
Firmware & Embedded Projects
Firmware projects do not require special Modernisation.inverse configuration — the file format is identical. The migration pattern ID (e.g. bare-metal-to-freertos) determines how the IDE treats the source files.
The Discovery engine automatically detects firmware build systems:
| Build System | Config File |
|---|---|
| PlatformIO | platformio.ini |
| ESP-IDF | sdkconfig, CMakeLists.txt (ESP-IDF signature) |
| Keil MDK | *.uvprojx |
| IAR Embedded Workbench | *.ewp |
| S32 Design Studio | *.s32project |
| CoDeSys | project XML |
| CMake (Zephyr / FreeRTOS) | CMakeLists.txt with Zephyr/FreeRTOS markers |
No manual configuration is needed — open the folder and run Discovery.
Ignored Files
To exclude files from scanning (but keep them as AI context), add a .neuralinverseignore file to the project root:
# Fully ignore (excluded from scan and context)
vendor/
*.generated.h
# Context-only (excluded from scanning, included as AI context)
docs/Lines prefixed with # are comments. The ignore system has two modes:
- Fully ignore: excluded from scanning and not provided as AI context
- Context-only: excluded from scanning but included in AI context to help translation
The IDE also suggests ignores automatically based on package.json, .gitignore, tsconfig.json, and file tree analysis.
Last edited