Neural Inverse is Open Source →
DocsProject Configuration

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

FieldTypeDescription
neuralInverseModernisationtrueMarker field — always true
version"2"Format version
role"source" | "target"This project's role in the session
projectLabelstringHuman-readable label for this project
projectIdstringStable UUID for this project
pairedProjectsIProjectRef[]All other projects in the session
migrationPatternstringPattern ID or free-form name
sessionIdstringShared across all projects in the session
createdAtnumberUnix timestamp in milliseconds

Paired Project Reference

{
  "role": "target",
  "label": "My Modern Project",
  "uri": "file:///absolute/path/to/project",
  "id": "proj-tgt-def456"
}
FieldDescription
role"source" or "target"
labelDisplay name for this project
uriAbsolute URI (file:// scheme) to the project root
idStable 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 SystemConfig File
PlatformIOplatformio.ini
ESP-IDFsdkconfig, CMakeLists.txt (ESP-IDF signature)
Keil MDK*.uvprojx
IAR Embedded Workbench*.ewp
S32 Design Studio*.s32project
CoDeSysproject 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.


Was this page helpful?

Last edited