TenantAtlas/specs/146-central-tenant-status-presentation/checklists/implementation-readiness.md
ahmido 6ca496233b feat: centralize tenant lifecycle presentation (#175)
## Summary
- add a shared tenant lifecycle presentation contract and referenced-tenant adapter for canonical lifecycle labels and helper copy
- align tenant, chooser, onboarding, archived-banner, and tenantless operation viewer surfaces with the shared lifecycle vocabulary
- add Spec 146 design artifacts, audit notes, and regression coverage for lifecycle presentation across Filament and onboarding surfaces

## Validation
- `vendor/bin/sail bin pint --dirty --format agent`
- `vendor/bin/sail artisan test --compact tests/Feature/Badges/TenantStatusBadgeTest.php tests/Unit/Badges/TenantBadgesTest.php tests/Unit/Tenants/TenantLifecycleTest.php tests/Unit/Support/Tenants/TenantLifecyclePresentationTest.php tests/Feature/Filament/TenantLifecyclePresentationAcrossTenantSurfacesTest.php tests/Feature/Filament/ReferencedTenantLifecyclePresentationTest.php tests/Feature/Filament/TenantLifecycleStatusDomainSeparationTest.php tests/Feature/Filament/TenantViewHeaderUiEnforcementTest.php tests/Feature/Onboarding/TenantLifecyclePresentationCopyTest.php tests/Feature/Onboarding/OnboardingDraftAuthorizationTest.php tests/Feature/Onboarding/OnboardingDraftLifecycleTest.php`

## Notes
- Livewire v4.0+ compliance preserved; this change is presentation-only on existing Filament v5 surfaces.
- Panel provider registration remains unchanged in `bootstrap/providers.php`.
- No global-search behavior changed; no resource was newly made globally searchable or disabled.
- No destructive actions were added or changed.
- No asset registration strategy changed; existing deploy flow for `php artisan filament:assets` remains unchanged.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #175
2026-03-16 18:18:53 +00:00

10 KiB

Implementation Readiness Checklist: Central Tenant Status Presentation

Purpose: Final pre-implementation gate for requirement readiness, scope control, lifecycle semantics, test obligations, and repo-specific constraints before coding begins. Created: 2026-03-16 Feature: /Users/ahmeddarrazi/Documents/projects/TenantAtlas/specs/146-central-tenant-status-presentation/spec.md

Note: This checklist is generated from the current feature artifacts and is intended to validate whether the requirements are complete, clear, bounded, and implementation-ready.

Requirement Completeness

  • CHK001 Are the feature guardrails explicit that this work only standardizes lifecycle presentation and does not change lifecycle ownership, transitions, tenant-workspace relationships, authorization planes, queued work, or OperationRun behavior? [Completeness, Spec Scope Fields, Spec §Requirements]
  • CHK002 Are the exact primary routes and surface families in scope defined clearly enough to prevent lifecycle rollout from drifting into unrelated screens? [Completeness, Spec §Scope, Spec §Primary Routes]
  • CHK003 Are canonical-view constraints documented clearly enough that referenced tenant lifecycle is presentation-only and does not broaden record selection, tenant inclusion, or filtering behavior? [Completeness, Spec §Canonical-view specs, Spec §Assumptions]
  • CHK004 Are the inherited boundaries from Spec 143 and Spec 145 identified precisely enough that implementers know which lifecycle semantics and action semantics are fixed inputs rather than open design questions? [Dependency, Spec §Assumptions]
  • CHK005 Are all required in-scope lifecycle-bearing surface types covered in the requirements, including table, detail, selector, banner, summary, and canonical-viewer contexts? [Coverage, Spec §FR-012, Data Model §3]

Scope Guardrails

  • CHK006 Are the out-of-scope areas stated strongly enough to block scope creep into provider health, consent, verification, RBAC, governance posture, run outcome, or other adjacent status systems? [Clarity, Spec §FR-006, Spec §Edge Cases]
  • CHK007 Is it clear which surfaces may continue to omit lifecycle by design so implementers do not treat omission as a defect or expand the rollout unintentionally? [Gap, Spec §Edge Cases]
  • CHK008 Is the surface list bounded well enough that newly discovered lifecycle-bearing screens are deferred unless they are tenant management surfaces already named in the spec or the tenantless operations viewer plus its OperationRunResource enterprise-detail summary payload? [Ambiguity, Spec §Primary Routes]
  • CHK009 Are the plan and tasks aligned that this feature is read-only presentation work with no schema changes, no remote calls, no new actions, and no audit/mutation flow changes? [Consistency, Plan §Technical Context, Tasks §Operations, Tasks §Filament UI Action Surfaces]

Canonical Lifecycle Semantics

  • CHK010 Are the canonical lifecycle states exhaustive and stable as draft, onboarding, active, and archived, with operator-facing labels fixed as Draft, Onboarding, Active, and Archived? [Clarity, Spec §FR-001, Spec §FR-004, Data Model §1]
  • CHK011 Is the authoritative presentation contract defined with enough detail to support both machine-readable lifecycle state and operator-facing presentation without reintroducing local UI dictionaries? [Completeness, Spec §FR-002, Data Model §2]
  • CHK012 Are allowed density differences between surfaces constrained clearly enough that concise and detailed variants may change verbosity but never change lifecycle meaning? [Consistency, Spec §FR-004, Spec §FR-011, Spec §FR-012, Data Model §3]
  • CHK013 Are non-canonical pseudo-lifecycle labels such as Pending, Suspended, Inactive, or Error explicitly forbidden as primary lifecycle vocabulary? [Clarity, Spec §FR-007]
  • CHK014 Are mixed-status requirements specific enough that lifecycle cannot be used as shorthand for readiness, failure, provider connectivity, authorization, or run state? [Clarity, Spec §FR-006, User Story 3, Research §Decision 2]
  • CHK015 Can the success criteria objectively catch the core failure mode that valid canonical states render as Unknown, blank, or a generic fallback? [Acceptance Criteria, Spec §SC-001, Spec §FR-003]

BADGE-001 Centralization

  • CHK016 Do the requirements define one authoritative centralization point for lifecycle presentation strongly enough that new or changed code cannot justify local match, formatStateUsing(), template strings, or helper-method mappings? [Completeness, Spec §BADGE-001, Spec §FR-009]
  • CHK017 Is the relationship between the new lifecycle presentation contract and the existing BadgeCatalog / BadgeRenderer / TenantStatusBadge architecture explained clearly enough to avoid parallel badge systems? [Consistency, Plan §Summary, Plan §Implementation Approach, Research §Decision 1]
  • CHK018 Are badge-only semantics versus richer helper-copy semantics separated clearly enough that implementers know the badge primitives stay centralized while detailed copy is still derived from the same contract? [Clarity, Plan §Implementation Approach, Research §Decision 3, Data Model §2]
  • CHK019 Are the existing code anchors identified explicitly enough to guide implementation toward reuse rather than reinvention? [Dependency, Quickstart §Prerequisites, Research §Supporting Findings]

Surface Coverage And Viewer Scope

  • CHK020 Are tenant management surfaces identified clearly enough that tenant index, tenant detail, archived banner, choose-tenant, and onboarding-linked tenant presentation are all indisputably in scope? [Completeness, Plan §Planned Workstreams, Tasks T012-T017]
  • CHK021 Are operations-viewer surfaces identified precisely enough that TenantlessOperationRunViewer and the OperationRunResource enterprise-detail summary payload are clearly in scope, while any additional canonical viewer rollout is explicitly out of scope? [Clarity, Research §Supporting Findings, Tasks T019-T020]
  • CHK022 Is viewer scope defined strongly enough that referenced tenant lifecycle may appear only after existing server-side entitlement checks have already granted access to the canonical record? [Clarity, Spec §Canonical-view specs, Data Model §4]
  • CHK023 Do the requirements make it explicit that no lifecycle hints may leak for unauthorized tenants, inaccessible records, or tenants filtered out by existing tenant-context or viewer rules? [Coverage, Spec §Explicit entitlement checks, Plan §Constitution Check]

Invalid Fallback Policy

  • CHK024 Is the invalid fallback policy specific enough that fallback remains reserved for corrupted or unexpected non-canonical data only, never for valid canonical states? [Clarity, Spec §FR-008, Data Model §2, Research §Decision 4]
  • CHK025 Is the distinction between canonical rendering failure and genuinely invalid data defined clearly enough that reviewers can reject implementations that silently normalize unsupported aliases? [Ambiguity, Research §Decision 4]
  • CHK026 Are the requirements explicit about how invalid fallback should remain visually and semantically separate from real lifecycle meaning so operators do not confuse bad data with Draft, Onboarding, Active, or Archived? [Clarity, Spec §FR-008, Spec §Edge Cases]

Test Readiness

  • CHK027 Are the before-implementation testing expectations explicit that foundational and story-specific tests should be written first and fail before surface work begins? [Completeness, Tasks §Within Each User Story]
  • CHK028 Are the required test files and responsibilities defined precisely enough to cover the central contract, tenant surfaces, referenced-tenant viewers, mixed-status separation, and onboarding copy? [Coverage, Tasks T001-T003, T009-T025]
  • CHK029 Do the test requirements cover both positive and negative cases, including all four canonical states, invalid fallback, onboarding/archived referenced tenants, and separation from provider or RBAC status domains? [Coverage, Plan §Testing Strategy, Tasks T009-T024]
  • CHK030 Are the minimum validation commands documented clearly enough that implementers know the required Sail and Pest workflow before and after coding? [Completeness, Quickstart §Focused Validation Commands]

Laravel And Filament Repo Constraints

  • CHK031 Are the Laravel and Filament implementation constraints captured clearly enough that this work remains compatible with Laravel 12, Filament v5, and Livewire v4 without introducing action-surface or panel-registration regressions? [Consistency, Plan §Technical Context, Spec §Filament Action Surfaces]
  • CHK032 Is it explicit that Filament action behavior, destructive confirmations, global-search behavior, and authorization enforcement remain unchanged because this feature only alters read-only presentation? [Consistency, Spec §Filament Action Surfaces, Plan §Constitution Check]
  • CHK033 Are repo-specific delivery rules documented sufficiently that implementation must stay Sail-first, Pest-based, BADGE-001-compliant, and formatting-complete through Pint rather than ad hoc local workflows? [Dependency, Quickstart §Focused Validation Commands, Tasks T024-T025]

Traceability And Open Questions

  • CHK034 Is there enough traceability from requirements to plan and tasks that reviewers can detect if any in-scope surface or lifecycle rule lacks an implementation task or regression test? [Traceability, Spec §FR-001-012, Tasks T004-T025]
  • CHK035 Do the documents explicitly freeze canonical-view scope to the tenantless operations viewer and its OperationRunResource enterprise-detail summary payload for this feature? [Ambiguity, Spec §Primary Routes, UI Action Matrix]
  • CHK036 Are the readiness criteria strong enough that coding can be blocked if any of the above lifecycle semantics, viewer-scope boundaries, or fallback rules remain undocumented or conflicting? [Acceptance Criteria, Spec §Success Criteria, Plan §Post-Design Re-check]

Notes

  • Check items off as completed: [x]
  • Use this as the final gate before implementation starts, not as an implementation test plan.
  • If any ambiguity item remains unresolved, update the feature docs before coding rather than widening viewer scope during implementation.
  • Reviewed against the finalized feature packet on 2026-03-16. All readiness gates pass.