Retired Peak Runtime Ownership
peak-api and the standalone PeakPro portal are retired. This page is the current ownership and verification reference that prevents those runtime surfaces from returning; it is not a migration plan or a compatibility promise.
Current runtime boundary
The following rules are enforced by source guards and the owner catalog:
apps/microservices/peak-apimust not exist as a runnable service, image, OpenAPI specification, generated SDK, deployment target, or public route host.- The standalone PeakPro portal must not return. Shared portal code belongs in
apps/websites/portals/shared; user-facing product surfaces belong in the retail or support portal. - Legacy Peak tenant/public aliases are not preserved. Current clients call the destination service directly.
- Historical
Peak/PeakPronames are allowed only where a migration catalog, evidence validator, guard test, or persisted compatibility field requires them. - The current
apps/microservices/ai-apiservice is a separate service and is not permission to restorepeak-api, its old aliases, or its former mixed-domain ownership.
The executable governance map is tools/peak-rearchitecture/src/main/java/com/myriad/peak_rearchitecture/migration/PeakRearchitectureCatalog.kt. It is not a runtime router. New work must follow the current service that owns the route and data, not add a branch to the catalog.
Current owner map
| Domain boundary | Current owner | Notes |
|---|---|---|
| Account administration and account-scoped workflow surfaces | management-api | Includes the native account/control-plane routes and support-facing orchestration. |
| Account product and entitlement authority | auth, orchestrated where needed by management-api | Do not restore Peak-owned entitlement writes or usage routes. |
| Canonical POS catalog, inventory, customer, store, tax, and checkout-adjacent state | merchant-api | Peak-specific historical rows may remain an evidence/backfill overlay; they are not a reason to restore routes. |
| Private reporting, export, integration, and consolidation execution | tx-bundler, behind service facades | tx-bundler remains a private backend boundary rather than a public replacement for Peak routes. |
| Current AI runtime | ai-api | Owns only its current API contract. It does not inherit retired Peak non-AI domains or aliases. |
| Gateway processor, merchant/location, card, settlement, and tax-engine effects | Gateway, through the owning service's SDK adapter | Monorepo services retain authorization and DTO ownership. |
The catalog records table-family classifications and closure evidence for the retired system. Its PhysicalMigrationPlan fields describe evidence and rollback expectations for remaining storage cleanup; they do not mean that peak-api is still serving traffic.
When ownership appears ambiguous, inspect the current controller and repository first, then update the catalog and this page in the same reviewed change if the authoritative boundary moved. Do not recreate a compatibility proxy while resolving the disagreement.
Compatibility and data closure
Route retirement and physical data closure are separate facts:
- Source guards prove that the retired service, portal, clients, deployment entries, and forbidden route aliases are absent.
- The catalog identifies the owner and storage role for each historical table family.
- Real dual-read, backfill, and traffic-window artifacts prove that physical closure is safe.
Required evidence is stored outside the prose under artifacts/peak-rearchitecture/<slice>/:
dual-read-parity.jsonbackfill-ledger.jsoncompatibility-telemetry-window.json
scripts/peak_rearchitecture_evidence_gate.py derives the expected artifact set from the catalog and validates the artifact schema. Missing evidence is BLOCKED, not passed and not a reason to fabricate a placeholder. The completion audit's --allow-blocked option permits source-only work to exit successfully when the only outstanding condition is missing live closure evidence; it does not declare the migration complete.
Do not drop, rewrite, or backfill historical tables from this page. Data movement requires the owning service's reviewed runbook, an observed parity result, an idempotent ledger, a rollback boundary, and explicit authorization for the target environment.
Scope locks
These phrases are also checked by the completion audit and must remain exact:
- #1504 remains excluded from this re-architecture gate until it has a current owner and issue-specific evidence.
- Tap to Pay remains excluded from this re-architecture gate; Android/payment validation owns that proof separately.
- Feature Mode is consistently implemented as vertical.
- Feature Level is consistently implemented as package/capability level.
PeakRearchitectureCatalog.excludedIssues is the machine-readable excluded set. A future issue may leave the set only with an assigned destination owner and its own verification evidence.
Verification
Run the non-mutating source and evidence checks from the repository root:
python3 scripts/check_retired_peak_surfaces.py
python3 scripts/check_former_peakpro_naming.py
python3 scripts/peak_rearchitecture_completion_audit.py --allow-blocked
Interpret the results as follows:
| Result | Meaning |
|---|---|
PASS source checks | No forbidden retired runtime or naming surface was found in the scanned source. |
BLOCKED closure evidence | Required real migration evidence is absent; source retirement may still be valid. |
FAIL | A retired surface returned, a required scope lock is missing, or an evidence artifact is malformed. Fix the owning source/evidence problem; do not weaken the guard. |
The direct guard implementations are scripts/check_retired_peak_surfaces.py, scripts/check_former_peakpro_naming.py, scripts/peak_rearchitecture_evidence_gate.py, and scripts/peak_rearchitecture_completion_audit.py.