Skip to content

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 integration realm’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.