ADR-0009: Greenfield kernel; legacy SmartInventory as a connector
ADR-0009: Greenfield kernel; legacy SmartInventory as a connector
Status
Accepted
Date
2026-06-24
Context
The kernel doctrine is “one kernel, no private reality … move private reality into kernel projections.” But SmartInventory is a live .NET 4.8 / Postgres product with real customers and ~1626 branches. Taken literally by a 2–3 person team, “move private reality into the kernel” is a multi-year rewrite-and-cutover — the classic platform-rewrite grave.
The doctrine is right for new modules built on the kernel; it cannot mean “rewrite the running business before the kernel has earned trust.” The first proof lifecycle even confirms this: it builds a SmartProjects as-built loop, which is largely net-new capability rather than a re-implementation of existing SmartInventory screens.
Decision
Greenfield kernel; legacy coexists as an external system. SmartInventory is not migrated initially. The kernel is proven on the new as-built slice. The live product keeps running and becomes just another connector — an import source into the Data Plane and a writeback target via the integration realm.
“No private reality” governs everything built on the kernel going forward. It is not a mandate to absorb the live product on day one. The migration path stays open for later, on the kernel’s terms, once it has earned trust.
Alternatives Considered
Strangler / incremental
Route SmartInventory features through the kernel table-by-table.
- Rejected for now: heavy coordination and real risk against live customers with a 3-person team. Reconsider once the kernel is proven.
New-customers-only fork
Kernel product for net-new customers; existing customers stay on legacy permanently.
- Rejected: forks the company into two products to maintain indefinitely. ADR-0009 keeps the migration path open instead of forking.
Big-bang replace
Rewrite SmartInventory on the kernel and cut over.
- Rejected outright: highest risk, multi-year for a small team — the explicit trap.
Consequences
- The kernel earns trust on net-new capability while the running business is untouched.
- The
integrationrealm’s connector + writeback machinery (ADR-0010) is exercised against a real target (legacy SmartInventory) from early on — the stub target and a real-ish target coincide. - A future migration of legacy customers onto the kernel will need its own ADR; this one deliberately leaves that open rather than deciding it now.