Knowledge Portal · engineering documentation

Skip to content

ADR-005 — Platform vs Product Separation ​

Status: Accepted
Date: 2026-06-28
Phase: 12-1A
Deciders: Platform Architect
Authority: PLATFORM_BOUNDARIES.md


Context ​

Dental Clinic ROS mixes Laravel application runtime, product architecture (ANPA, MODULE_BOUNDARIES), and ERP engineering platform. Phase 11-11 operational acceptance identified onboarding confusion and extraction blockers from dual stacks.

ZEP requires an immutable boundary between platform and product that survives extraction and multi-product reuse.


Decision ​

Separation model ​

ConcernPlatform (ZEP)Product (e.g. Dental Clinic)
PurposeHow we engineerWhat we build
RuntimeIDE engineering sessionLaravel / application
GovernancePlatform ConstitutionProject Constitution
BoundariesExtension registryModule boundaries
Releaseszaixos-platform@v*v*-product-name
TestsManifest parity, contractsModules, features, domain
AGENTS.mdPointer to platform guideApplication + Filament context
ComplianceEngineering process onlyDomain compliance (healthcare, etc.)

Hard rules ​

  1. No product domain references in platform normative documents
  2. No platform contract edits in product repos
  3. Product extensions only through .zaixos/extensions/manifest.yml
  4. Single owner per asset — see PLATFORM_BOUNDARIES
  5. Independent freeze — product tag records platform pin

Distribution (resolved for v1.0 GA) ​

MechanismClassificationRole
Composer package zaixos/engineering-platformPublicPrimary integration for PHP/Laravel products
Git submodule to platform repoPublicTransition + non-Composer consumers
Git templateExperimentalGreenfield — Phase 13+
CLI installerExperimentalPhase 13+
Platform generatorExperimentalPhase 14+

Primary integration path for Dental Clinic: Composer package + platform.lock — no ambiguity for Phase 12-2 planning.

Transitional state (Dental Clinic) ​

Until Phase 12-7:

  • Embedded docs/development/ ERP docs remain content authority hosted in product
  • Platform repo becomes canonical host at extraction
  • Parity tests required before embedded removal

Consequences ​

Positive ​

  • Restaurant, School, ERP SaaS reuse same platform
  • Product architects focus on domain; platform architect on engineering
  • Extraction scope is explicit

Negative ​

  • Two constitution documents to understand
  • Migration effort for Dental Clinic

Alternatives considered ​

AlternativeRejected because
Single constitution for allProduct domain pollutes platform
Platform inside Laravel moduleCouples PHP-only; wrong layer
Copy ERP per product without packageDrift

ADR-005 — Platform builds engineering; products build business systems.

ZAIXOS Knowledge Portal — public engineering docs at /docs · Staff operations at /admin