Added comprehensive documentation and planning artifacts for the platform productization readiness and roadmap reconciliation. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #417
23 KiB
Feature Specification: Spec 345 - Platform Productization Readiness & Roadmap Reconciliation Gate
Feature Branch: 345-platform-productization-readiness-roadmap-reconciliation-gate
Created: 2026-06-02
Status: Draft
Type: Readiness audit / roadmap reconciliation / productization gate / backlog governance
Runtime posture: Read-only first. No feature implementation. Documentation, classification, and follow-up scoping only.
Input: User-provided Spec 345 draft plus repo truth from docs/product/*, specs/*, docs/ui-ux-enterprise-audit/*, and current apps/platform surfaces.
Spec Candidate Check (mandatory — SPEC-GATE-001)
- Problem: TenantPilot has accumulated many real platform slices, follow-up candidates, and roadmap themes, but the repo lacks one current-answer package for productization readiness, backlog hygiene, and app-boundary discipline after recent Specs 338, 342, 343, and 344.
- Today's failure: The product can keep shipping feature-by-feature while candidate status, roadmap wording, and real runtime maturity drift apart. That creates a concrete risk of starting
/customerportaltoo early, duplicating already-finished work, or prioritizing the wrong next spec. - User-visible improvement: Product direction becomes explicit and reviewable: the repo gets one source package that says what is already productized, what is merely repo-real, what is still missing before a sellable MSP/operator platform, what belongs in
/platform, and what must stay deferred to/customerportalor/website. - Smallest enterprise-capable version: One bounded, docs-only reconciliation pass that inspects current repo truth, classifies candidates, maps roadmap themes to implementation state, scores platform readiness, and recommends the next 3-7 specs without adding any runtime feature.
- Explicit non-goals: No routes, migrations, models, services, jobs, Filament resources/pages, views, tests, assets, or customer portal work. No navigation rebuild. No backlog deletion without explanation. No "analysis paralysis" multi-pass program.
- Permanent complexity imported: One spec package with readiness and reconciliation reports only. No new persisted truth, enum family, abstraction layer, or runtime taxonomy.
- Why now: Recent specs materially improved the platform, especially Customer Review Workspace, but
docs/product/spec-candidates.md,docs/product/roadmap.md, and older product-truth artifacts predate that latest repo state. The next spec choice should be made from current truth, not stale backlog wording. - Why not local: Fixing one candidate note or one roadmap paragraph would not answer the core question: whether the platform is productized enough to keep pushing
/platformwork or should pivot to a different app boundary. - Approval class: Core Enterprise.
- Red flags triggered: Broad audit scope, cross-document reconciliation, and potential taxonomy drift. Defense: this spec is bounded to one read-only pass, reuses existing repo vocabulary, and forbids runtime expansion.
- Score: Nutzen: 2 | Dringlichkeit: 2 | Scope: 2 | Komplexität: 1 | Produktnähe: 2 | Wiederverwendung: 2 | Gesamt: 11/12
- Decision: approve.
Candidate Source And Completed-Spec Guardrail
- Candidate source: Directly user-provided as Spec 345; supported by
docs/product/spec-candidates.md,docs/product/roadmap.md,docs/product/implementation-ledger.md, and UI audit follow-up ledgers. - Completed-spec check: No
specs/345-*package or345-*branch existed before this work. Completed or implementation-closed specs are context only and must not be rewritten or normalized back into prep state. - Related completed context:
specs/338-workspace-environment-resource-scope-contract/specs/339-provider-connection-scope-hardening/specs/340-post-scope-contract-browser-verification-gate/specs/341-canonical-link-query-cleanup/specs/342-customer-review-workspace-final-consumption-productization/specs/343-customer-review-attestation-accepted-risk-lifecycle/specs/344-customer-review-workspace-density-audience-polish/
- Close alternatives deferred:
- starting a new feature spec without reconciling backlog truth,
- starting
/customerportalwork inside Filament/platform, - broad roadmap rewrite without file-level repo evidence,
- runtime cleanup disguised as a planning spec.
Spec Scope Fields (mandatory)
- Scope: canonical-view
- Primary Routes:
- Audited surfaces only; no route changes:
/admin/admin/workspaces/{workspace}/overview/admin/workspaces/{workspace}/environments/{environment}/admin/reviews/workspace/admin/governance/inbox/admin/governance/decisions/admin/workspaces/{workspace}/operations/admin/evidence/overview/admin/audit-log/admin/provider-connections
- Audited surfaces only; no route changes:
- Data Ownership: No data model or ownership change. This spec only audits current workspace-owned, environment-owned, review-owned, and system-owned surfaces.
- RBAC: No authorization behavior changes. The reports must verify existing membership/capability boundaries and keep
/platform,/customerportal,/website, and/systemresponsibilities explicit.
For canonical-view handling:
- Default filter behavior when tenant-context is active: Preserve current repo truth only. Workspace hubs remain workspace-owned and may narrow through explicit page-local filters such as
environment_id; environment-bound pages stay route-owned. - Explicit entitlement checks preventing cross-tenant leakage: Audit and document existing deny-as-not-found and capability posture only. No new checks are introduced by Spec 345.
UI Surface Impact (mandatory — UI-COV-001)
- No UI surface impact
- Existing page changed
- New page/route added
- Navigation changed
- Filament panel/provider surface changed
- New modal/drawer/wizard/action added
- New table/form/state added
- Customer-facing surface changed
- Dangerous action changed
- Status/evidence/review presentation changed
- Workspace/environment context presentation changed
UI/Productization Coverage (mandatory when UI Surface Impact is not "No UI surface impact"; otherwise write N/A - no reachable UI surface impact plus rationale)
- Route/page/surface: N/A - no reachable UI surface impact
- Current or new page archetype: N/A
- Design depth: N/A
- Repo-truth level: repo-verified docs-only work
- Existing pattern reused: existing productization audit and spec-artifact patterns
- New pattern required: none
- Screenshot required: no; screenshots remain optional unless a future browser audit reruns evidence capture
- Page audit required: no new page audit; existing page reports are read-only inputs
- Customer-safe review required: yes, as an audit lens only
- Dangerous-action review required: yes, as an audit lens only; no runtime action changes
- Coverage files updated or explicitly not needed:
docs/ui-ux-enterprise-audit/route-inventory.mddocs/ui-ux-enterprise-audit/design-coverage-matrix.mddocs/ui-ux-enterprise-audit/page-reports/...docs/ui-ux-enterprise-audit/strategic-surfaces.mddocs/ui-ux-enterprise-audit/grouped-follow-up-candidates.mddocs/ui-ux-enterprise-audit/unresolved-pages.mdN/A - no reachable UI surface impact
- No-impact rationale when applicable: Spec 345 inspects current UI surfaces and productization evidence but does not change runtime UI, navigation, copy, actions, or state.
Cross-Cutting / Shared Pattern Reuse (mandatory when the feature touches notifications, status messaging, action links, header actions, dashboard signals/cards, alerts, navigation entry points, evidence/report viewers, or any other existing shared operator interaction family; otherwise write N/A - no shared interaction family touched)
- Cross-cutting feature?: yes
- Interaction class(es): navigation entry points, evidence/report viewers, governance decision surfaces, dashboard/workbench maturity, productization/audit follow-up lanes
- Systems touched:
docs/product/spec-candidates.md,docs/product/roadmap.md,docs/product/implementation-ledger.md,docs/ui-ux-enterprise-audit/*, recent spec packages, and current Filament pages/resources as read-only evidence - Existing pattern(s) to extend: repo-truth maps, spec close-out artifacts, UI audit page reports, implementation ledger maturity language
- Shared contract / presenter / builder / renderer to reuse: none in runtime; this is documentation-level reuse only
- Why the existing shared path is sufficient or insufficient: existing artifacts already contain the needed evidence, but no single package currently reconciles them after recent platform productization work
- Allowed deviation and why: none
- Consistency impact: keep vocabulary stable across repo truth: workspace/environment, customer-safe output, evidence, review pack, accepted risk, governance inbox, decision register, provider readiness, monitoring,
/platform,/customerportal,/website,/system - Review focus: prevent duplicate or stale candidate wording from being treated as active truth once repo evidence shows the work is already implemented or belongs to a different boundary
OperationRun UX Impact (mandatory when the feature creates, queues, deduplicates, resumes, blocks, completes, or deep-links to an OperationRun; otherwise write N/A - no OperationRun start or link semantics touched)
- Touches OperationRun start/completion/link UX?: no
- Shared OperationRun UX contract/layer reused: N/A
- Delegated start/completion UX behaviors: N/A
- Local surface-owned behavior that remains: audit-only classification of existing OperationRun-linked surfaces
- Queued DB-notification policy: N/A
- Terminal notification path: N/A
- Exception required?: none
Provider Boundary / Platform Core Check (mandatory when the feature changes shared provider/platform seams, identity scope, governed-subject taxonomy, compare strategy selection, provider connection descriptors, or operator vocabulary that may leak provider-specific semantics into platform-core truth; otherwise write N/A - no shared provider/platform boundary touched)
- Shared provider/platform boundary touched?: no runtime boundary change
- Boundary classification: N/A - audit only
- Seams affected: provider readiness, provider connections, and workspace/environment boundary docs are inspected as existing truth only
- Neutral platform terms preserved or introduced:
/platform,/customerportal,/website,/system, workspace, managed environment, provider connection, evidence, review pack, governance decision - Provider-specific semantics retained and why: existing Microsoft-shaped runtime seams remain as-is; this spec only documents where follow-up work still deepens or avoids that coupling
- Why this does not deepen provider coupling accidentally: no code, model, or taxonomy changes are introduced
- Follow-up path: document-in-feature only
UI / Surface Guardrail Impact (mandatory when operator-facing surfaces are changed; otherwise write N/A)
N/A - no operator-facing surface change.
Proportionality Review (mandatory when structural complexity is introduced)
- New source of truth?: no
- New persisted entity/table/artifact?: no runtime artifact; docs-only report files inside the spec package only
- New abstraction?: no
- New enum/state/reason family?: no
- New cross-domain UI framework/taxonomy?: no; reuse existing bucket language from the user-provided spec
- Current operator problem: unclear productization status and stale backlog wording make it hard to choose the next safe platform spec
- Existing structure is insufficient because: the evidence exists, but it is spread across spec packages, candidate ledgers, roadmap themes, and UI audit files without one current reconciliation
- Narrowest correct implementation: one documentation-only reconciliation pass with explicit reports and a next-spec recommendation
- Ownership cost: limited to keeping the Spec 345 package current if future roadmap/productization reviews reuse it
- Alternative intentionally rejected: a broad roadmap rewrite or runtime cleanup pass, because either would expand beyond the immediate decision need
- Release truth: current-release truth
Compatibility posture
This feature assumes a pre-production environment.
Backward compatibility, legacy aliases, migration shims, historical fixtures, and compatibility-specific tests are out of scope unless explicitly required by a later implementation spec.
Testing / Lane / Runtime Impact (mandatory for runtime behavior changes)
- Test purpose / classification: N/A
- Validation lane(s): N/A
- Why this classification and these lanes are sufficient: Spec 345 is docs-only. Validation is limited to repo inspection and documentation integrity checks.
- New or expanded test families: none
- Fixture / helper cost impact: none
- Heavy-family visibility / justification: none
- Special surface test profile: N/A
- Standard-native relief or required special coverage: none
- Reviewer handoff: verify report consistency and that no runtime files changed
- Budget / baseline / trend impact: none
- Escalation needed: none
- Active feature PR close-out entry: N/A
- Planned validation commands:
git status --short --branchgit diff --statgit diff --check
Summary
TenantPilot should answer one product question before starting the next major feature slice:
Is the current /platform control plane productized enough for MSP/operator use, and which backlog items are still real after recent specs?
Spec 345 is the readiness gate for that answer. It:
- builds a repo-truth readiness view for the current platform,
- reconciles spec candidates and roadmap themes against actual repo state,
- separates
/platform,/customerportal,/website, and/systemboundaries, and - recommends the next implementation specs without starting a new runtime feature.
Problem Statement
TenantPilot now has strong repo-real foundations and several productized strategic surfaces, but product direction is vulnerable to drift because:
- newer specs have closed or narrowed older backlog items,
- roadmap wording still reflects pre-342/343/344 product gaps,
- customer-safe consumption work could be misread as a cue to start a full customer portal,
- some candidate groups are already covered, while others are still only prepared or still truly open,
- the platform may be demoable before it is fully sellable, and those are not the same decision.
Without a reconciliation gate, /platform, /customerportal, /website, and /system responsibilities can blur and the next spec can be chosen from stale assumptions.
Product Intent
Immediate priority:
Make the platform control plane sellable and MSP/operator usable before opening a separate customer portal product surface.
The platform should first provide stable, trusted outputs:
- review packages
- evidence summaries
- findings and accepted-risk states
- governance decisions
- operations/proof links
- customer-safe handoff data
- clear workspace/environment scope
- operator-ready workflows
Only after those outputs are stable should /customerportal consume them.
Goals
G1 - Establish a platform productization readiness view
Assess whether the current /platform app is productized enough for MSP/operator usage, covering at minimum:
- Workspace/Environment shell
- Customer Review Workspace
- Evidence Overview / Review Packs
- Governance Inbox / Decision Register
- Findings / Accepted Risks
- Provider Readiness / Onboarding
- Monitoring / Operations / Alerts / Audit
- Localization / copy quality
- Test and browser confidence
G2 - Reconcile spec candidates
Classify every discovered candidate into:
- A - Now platform-critical
- B - Platform productization
- C - Feature expansion
- D - Customer Portal /
/customerportal - E - Website /
/website - F - Covered / obsolete / duplicate
- G - Research / roadmap only
G3 - Reconcile roadmap vs repo truth
Map roadmap themes to actual repo state:
- repo-real and productized
- repo-real but not productized
- partially implemented
- candidate only
- roadmap only
- deferred / external app
G4 - Separate app boundaries
Clarify what future work belongs to:
/platform/customerportal/website/system
G5 - Recommend the next implementation specs
Recommend the next 3-7 specs and clearly separate:
- must-do-before-sellable
- should-do-next
- defer
- do-not-build-now
- move-to-customerportal
- move-to-website
G6 - Avoid creating new product scope
This spec is a gate, not a new feature slice. It must not create runtime behavior.
Non-Goals
This spec must not:
- build Customer Portal
- add new customer-facing routes
- implement a new Filament page or dashboard
- add new database tables
- refactor workspace/environment routing
- change app runtime behavior
- rebuild navigation
- fix all UI findings
- implement PSA/ITSM handoff
- implement Provider Readiness runtime changes
- implement Localization overhaul
- implement AI runtime consumers
- delete candidate history without explanation
Inputs
The audit must inspect and reconcile:
- current specs under
specs/ - at minimum recent Specs 338, 343, and 344 plus adjacent productization specs
docs/product/spec-candidates.mddocs/product/roadmap.mddocs/product/implementation-ledger.mddocs/product/discoveries.mddocs/ui-ux-enterprise-audit/*- read-only runtime surfaces under
apps/platform/app/Filament/,apps/platform/resources/views/filament/, andapps/platform/tests/
Output Artifacts
Required outputs in specs/345-platform-productization-readiness-roadmap-reconciliation-gate/:
spec.mdplan.mdtasks.mdrepo-truth-map.mdplatform-readiness-report.mdcandidate-reconciliation.mdroadmap-reconciliation.mdapp-boundary-map.mdnext-spec-recommendation.mdchecklists/requirements.md
Optional:
artifacts/screenshots/only if a future browser audit captures new screenshots
Classification Model
Candidate buckets
- A - Now platform-critical: required before the platform can be considered sellable/MSP-ready
- B - Platform productization: improves existing platform surfaces without creating major new features
- C - Feature expansion: useful capability, but not required for immediate platform sellability
- D - Customer Portal: belongs to future
/customerportal, not Filament/platform - E - Website: belongs to
/website - F - Covered / obsolete / duplicate: already implemented, replaced, or superseded
- G - Research / roadmap only: not ready for implementation
Readiness states
- 1 - Productized
- 2 - Functional but not productized
- 3 - Partially implemented
- 4 - Candidate only
- 5 - Roadmap only
- 6 - Deferred / external app
Platform Areas To Assess
Assess and report on:
- Workspace / Environment shell
- Customer Review Workspace
- Evidence / Review Pack outputs
- Governance Inbox / Decision Register
- Findings / Accepted Risks
- Provider Connections / Readiness / Onboarding
- Monitoring / Operations / Alerts / Audit
- Localization / Copy / Customer-safe language
- Test and browser confidence
App Boundary Rules
/platform
Internal MSP/operator/admin control plane. Allowed: Filament, operations, evidence generation, review workspace, governance inbox, accepted risks, findings workflow, provider readiness, audit log, internal acknowledgement, and customer-safe output preparation.
/customerportal
External customer consumption plane. Allowed later: customer-facing review summaries, evidence downloads, accepted-risk summaries, findings/follow-ups, review history, customer-safe documents, branding, and customer language.
/website
Marketing and public product website. Allowed later: landing pages, pricing, docs, lead generation.
/system
Platform operator / break-glass / system administration. Keep separate from /platform tenant/workspace behavior.
Required Reports
Spec 345 must produce:
repo-truth-map.mdplatform-readiness-report.mdcandidate-reconciliation.mdroadmap-reconciliation.mdapp-boundary-map.mdnext-spec-recommendation.mdchecklists/requirements.md
Each report must stay repo-grounded and distinguish current runtime truth from candidate-only or roadmap-only ideas.
Acceptance Criteria
AC1 - Read-only posture preserved
No runtime app files are changed.
AC2 - Every candidate classified
All discovered candidates are classified into A-G with no unknown remainder.
AC3 - Roadmap reconciled to repo truth
Roadmap themes are mapped to implemented/productized/partial/candidate-only/roadmap-only/deferred states.
AC4 - App boundaries are explicit
Reports clearly separate /platform, /customerportal, /website, and /system.
AC5 - Platform readiness is assessed
The package answers:
- Is the platform ready for MSP/operator daily use?
- Is it demoable?
- Is it sellable?
- What blocks it?
AC6 - Next spec recommendation is concrete
One primary next spec and a follow-up sequence are named with rationale.
AC7 - No feature expansion sneaks in
No routes, migrations, controllers, Filament pages, customer portal pages, services, models, or runtime UI changes are introduced.
AC8 - Known quality risks are documented
Broad merge-readiness or full-suite readiness must not be claimed without evidence.
AC9 - Requirements checklist passes
checklists/requirements.md confirms the package is complete and internally consistent.
Risks
- Analysis paralysis: mitigate by limiting the work to one reconciliation pass and one next-spec recommendation.
- Candidate volume: mitigate by merging duplicate themes and classifying at candidate-lane level where the repo already groups them that way.
- Customer Portal drift: mitigate by explicit boundary mapping and by not selecting
/customerportalas the default next spec. - Runtime changes sneaking in: mitigate with read-only guard and
git diff --check. - Roadmap rewrite without repo truth: mitigate by citing real specs, code paths, tests, and audit artifacts.
Validation Commands
Required:
git status --short --branchgit diff --statgit diff --check
No runtime test suite is required for this docs-only spec unless explicitly requested later.
Definition Of Done
Spec 345 is complete when:
- the full spec package exists,
- candidate, roadmap, and readiness reports are filled from repo truth,
- app boundaries are explicit,
- the next-spec recommendation is concrete,
- platform blockers are prioritized,
- no runtime files changed,
git diff --checkpasses,- and the final response states the recommended next implementation spec and why.