## Summary - turn the tenant registry into a workspace-scoped recovery triage surface with backup posture and recovery evidence columns - preserve workspace overview backup and recovery drilldown intent by routing multi-tenant cases into filtered tenant registry slices - add the Spec 186 planning artifacts, focused regression coverage, and shared triage presentation helpers ## Testing - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantRegistryRecoveryTriageTest.php tests/Feature/Filament/WorkspaceOverviewSummaryMetricsTest.php tests/Feature/Filament/WorkspaceOverviewDrilldownContinuityTest.php tests/Feature/Filament/TenantResourceIndexIsWorkspaceScopedTest.php tests/Feature/Filament/WorkspaceOverviewAuthorizationTest.php tests/Feature/Guards/ActionSurfaceContractTest.php tests/Feature/Guards/FilamentTableStandardsGuardTest.php` ## Notes - no schema change - no new persisted recovery truth - branch includes the full Spec 186 spec, plan, research, data model, contract, quickstart, and tasks artifacts Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #217
4.3 KiB
Quickstart: Tenant Registry Recovery Triage
Purpose
Validate that the tenant registry becomes a useful recovery-triage surface and that workspace backup or recovery drilldowns preserve their meaning.
Prerequisites
- Start the local stack:
cd apps/platform && ./vendor/bin/sail up -d
-
Work on branch
186-tenant-registry-recovery-triage. -
Use an owner or readonly workspace member who can see multiple tenants in the same workspace.
Primary Automated Verification
Run the focused test set that covers the registry, workspace drilldowns, and scope safety:
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantRegistryRecoveryTriageTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/WorkspaceOverviewSummaryMetricsTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/WorkspaceOverviewDrilldownContinuityTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantResourceIndexIsWorkspaceScopedTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/WorkspaceOverviewAuthorizationTest.php
Expected outcomes:
- Tenant registry rows show separate
Backup postureandRecovery evidencesignals. - Exact backup and recovery filters return only matching visible tenants.
- Worst-first triage ordering places weak tenants ahead of calm rows.
- Query-bounded registry posture loading does not regress into uncontrolled per-row resolver fanout.
- Multi-tenant workspace backup and recovery metrics open the filtered tenant registry instead of
ChooseTenant. - Single-tenant workspace drilldowns still open the tenant dashboard.
- No out-of-scope tenant leaks into registry rows, filters, or destinations.
Manual Smoke Validation
Use a workspace that already contains a mixed visible tenant set with at least these cases:
- one tenant with
absentbackup posture - one tenant with
stalebackup posture - one tenant with
degradedbackup posture - one tenant with
weakenedrecovery evidence - one tenant with
unvalidatedrecovery evidence - one calm tenant with
healthybackup posture andno recent issues visible
Then verify:
- Open
/adminand confirmBackup attentionandRecovery attentioncounts still appear separately. - If
Backup attention > 1, click the metric and confirm the destination is/admin/tenantswith backup posture filter intent preserved and weak tenants first. - If
Recovery attention > 1, click the metric and confirm the destination is/admin/tenantswith recovery-evidence filter intent preserved and weak tenants first. - Open
/admin/tenantsdirectly and confirm the registry shows separateBackup postureandRecovery evidencecolumns next to metadata and lifecycle fields. - Apply a backup filter such as
degradedand confirm only degraded visible tenants remain. - Apply a recovery filter such as
unvalidatedand confirm only unvalidated visible tenants remain. - Confirm calm rows do not erase weak rows when worst-first ordering is active.
- Open a prioritized row and confirm the registry detail route preserves the same bounded weakness truth shown in the list.
- Use the safe dashboard shortcut for that prioritized tenant and confirm the tenant dashboard still shows the same bounded weakness truth.
- Confirm the registry never says
recoverable,recovery proven, orvalidated overall. - Time the first
/admin/tenantstriage scan and confirm a workspace operator can identify which visible tenants are weak on backup posture, which are weak on recovery evidence, and which tenant to open first within 10 seconds.
Optional Fixture Note
The existing fixture command below is useful for backup-health smoke work, but it does not seed the full multi-tenant mixed posture matrix required for Spec 186 by itself:
cd apps/platform && ./vendor/bin/sail artisan tenantpilot:backup-health:seed-browser-fixture --force-refresh
For Spec 186, the focused Pest tests remain the primary acceptance harness.
Formatting
Before handing off implementation, run:
cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent
No Migration Expected
This feature should complete with no schema migration and no new persisted posture summary.