The readiness matrix tracks whether each of the 36 current first-level src/Platform directories has passed the Application-surface checks. Ready means that surface passed current checks — it is not a claim that every persistence, QueryShape, Native AOT, external connector, or asymmetric-storage concern is production-complete. Those remain governed by their own manifests and acceptance evidence.
What “Ready” means
A module reaches Ready only after:
- Application handlers are checked for avoidable Result/template/list-query/tenant-context friction;
- module-specific architecture tests exist, or the module is explicitly out of scope;
- relevant Application/Unit/Integration tests run for the changed behavior;
- the minimum quality gates pass.
Out of Scope is allowed only when a module has no Application surface or is a shared contract package.
Current status
Repository-wide persistence closure: Closed.
| Module | Application surface | Status |
|---|---|---|
| AIManage | Yes | Ready |
| Announcements | Yes | Ready |
| Authorization | Yes | Ready |
| BitzOrcas.Platform.Application | Shared Application | Out of Scope |
| BitzOrcas.Platform.Contracts | Shared Contracts | Out of Scope |
| Catalog | Yes | Ready |
| Chat | Yes | Ready |
| Comments | Yes | Ready |
| CommercialDistribution | Yes | Ready |
| DocumentStructure | Yes | Ready |
| Documents | Yes | Ready |
| Files | Yes | Ready |
| Gdpr | Yes | Ready |
| Guidance | Yes | Ready |
| I18n | Yes | Ready |
| Identity | Yes | Ready |
| IndustryExtensions | No (opt-in industry packages) | Out of Scope |
| LegalCalculators | No (optional legal package) | Out of Scope |
| LegalConnectors | Yes | Ready |
| LicenseManagement | Yes | Ready |
| MasterData | Yes | Ready |
| Menu | Yes | Ready |
| Numbering | Yes | Ready |
| Notifications | Yes | Ready |
| Operations | Yes | Ready |
| OpsExtension | Yes | Ready |
| PlatformBilling | Yes | Ready |
| ReleaseManagement | Yes | Ready |
| Reporting | Yes | Ready |
| RiskControl | Yes | Ready |
| Search | Yes | Ready |
| ToolConnectors | Yes | Ready |
| Tracker | Yes | Ready |
| Webhooks | Yes | Ready |
| Website | Yes | Ready |
| Workflow | Yes | Ready |
ProductionDepth is not a synonym for Ready
Current source governance uses four production-depth classes:
- Core: common in the default Profile with substantial production-path evidence; target tenant and environment configuration still apply.
- Optional: enabled explicitly by Profile or configuration and fail-closed when absent.
- ConnectorRequired: requires a real provider, gateway, or key; an interface alone is not production evidence.
- Sample: an extensible skeleton or shallow default that must not be presented as a large-scale production default.
The 2026-08-03 source snapshot classifies Identity, Authorization, Files, Notifications, Webhooks, Menu, MasterData, Numbering, ReleaseManagement, Announcements, and Operations probes/configuration as Core. Workflow, Chat, AIManage, Gdpr, RiskControl, Website, CommercialDistribution, LicenseManagement, and PlatformBilling are Optional — the standalone Tickets entry in the original snapshot merged into Tracker afterwards and corresponds to that row. LegalConnectors and ToolConnectors are ConnectorRequired. Search and Reporting retain Sample/shallow-default boundaries. A Ready module omitted from that snapshot must not be inferred as Core; its owner must supply real deployment evidence.
Persistence closure
The authoritative ledger is 0006-persistence-surface-classification.json. When its closureStatus is Closed, src/Platform and src/Modules contain no *Entity.cs, *PersistenceMappingSpecs.cs, or production QueryFilterTranslator files, and no MigrationCandidate/DeleteCandidate/ParityBlocker/FrameworkMigrationSeam entries remain. Architecture tests bidirectionally set-compare source declarations, mapping files, and translator files against this manifest.
The Sprint-by-Sprint review log that produced this matrix is an internal process artifact and stays in the source repository.
Review order and commands
Start with a bidirectional directory/matrix comparison. The architecture test fails if a new root has no classification or a deleted root leaves a stale row:
# All 36 first-level Platform roots must match the authoritative matrix.find src/Platform -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | sortdotnet test tests/BitzOrcas.Architecture.Tests \ --filter FullyQualifiedName~PlatformModuleReadinessMatrixTestsThen verify that persistence closure did not regress through a new Entity, mapping, or translator. Zero local matches are only a scan; the bidirectional 0006 manifest gate remains authoritative:
# The Platform/Modules production migration surface should remain empty.rg --files src/Platform src/Modules | rg 'Entity\.cs$|PersistenceMapping(Specs)?\.cs$|QueryFilterTranslator'
# Run manifest, dual-ORM, and exception-ledger architecture gates.dotnet test tests/BitzOrcas.Architecture.Tests \ --filter "FullyQualifiedName~PersistenceSurface|FullyQualifiedName~OrmParity"Continuous review also covers owner transfers, dual-ORM parity, the AOT exception ledger, and final Docker contracts. Keep sprint history out of the Ready row: behavioral evidence belongs in module tests, and remaining risk belongs in its owning manifest.