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