## Summary - add Spec 185 workspace recovery posture visibility artifacts under `specs/185-workspace-recovery-posture-visibility` - promote tenant backup health and recovery evidence onto the workspace overview with separate metrics, attention ordering, calmness coverage, and tenant-dashboard drill-throughs - batch visible-tenant backup/recovery derivation to keep the workspace overview query-bounded - align follow-up fixes from the authoritative suite rerun, including dashboard truth-alignment fixtures, canonical backup schedule tenant context, guard-path cleanup, smoke-fixture credential removal, and robust theme asset manifest handling ## Testing - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/Filament/PanelThemeAssetTest.php tests/Feature/Guards/DerivedStateConsumerAdoptionGuardTest.php` - focused regression pack for the previously failing cases passed - full suite JUnit run passed: `3401` tests, `18849` assertions, `0` failures, `0` errors, `8` skips ## Notes - no new schema or persisted workspace recovery model - no provider-registration changes; Filament/Livewire stack remains on Filament v5 and Livewire v4 - no new destructive actions or global search changes Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #216
106 lines
4.5 KiB
Markdown
106 lines
4.5 KiB
Markdown
# Quickstart: Workspace Recovery Posture Visibility
|
||
|
||
## Prerequisites
|
||
|
||
1. Start the application services if they are not already running:
|
||
|
||
```bash
|
||
cd apps/platform && ./vendor/bin/sail up -d
|
||
```
|
||
|
||
2. Use a workspace member account with access to at least one visible tenant.
|
||
|
||
3. Keep the current workspace overview route as the primary verification entry point:
|
||
|
||
```text
|
||
/admin
|
||
```
|
||
|
||
## Focused Automated Verification
|
||
|
||
Run the existing workspace overview pack first:
|
||
|
||
```bash
|
||
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/WorkspaceOverviewPermissionVisibilityTest.php
|
||
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/WorkspaceOverviewDbOnlyTest.php
|
||
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/WorkspaceOverviewContentTest.php
|
||
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/WorkspaceOverviewEmptyStatesTest.php
|
||
```
|
||
|
||
If the new attention-family coverage is split into a dedicated file, run it as part of the pack. Otherwise extend and rerun the existing governance-attention file:
|
||
|
||
```bash
|
||
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/WorkspaceOverviewGovernanceAttentionTest.php
|
||
```
|
||
|
||
Run the upstream tenant-truth guards that Spec 185 depends on:
|
||
|
||
```bash
|
||
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/DashboardRecoveryPosturePerformanceTest.php
|
||
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/DashboardKpisWidgetTest.php
|
||
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/NeedsAttentionWidgetTest.php
|
||
```
|
||
|
||
Format after code changes:
|
||
|
||
```bash
|
||
cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent
|
||
```
|
||
|
||
## Manual Validation Scenarios
|
||
|
||
### Scenario 1: Mixed workspace with backup and recovery issues
|
||
|
||
1. Open `/admin` for a workspace with multiple visible tenants.
|
||
2. Verify one visible tenant is `absent` on backup health, one is `stale`, one is `unvalidated`, one is `weakened`, and one is calm.
|
||
3. Verify the stat strip shows separate backup-attention and recovery-attention counts.
|
||
4. Verify `Needs attention` shows the expected tenant order and keeps backup health and recovery evidence separate.
|
||
|
||
### Scenario 2: Single affected tenant metric drillthrough
|
||
|
||
1. Seed a workspace where exactly one visible tenant has backup attention or recovery attention.
|
||
2. Open `/admin`.
|
||
3. Verify the matching summary metric links directly to that tenant’s dashboard.
|
||
4. Confirm the tenant dashboard still shows the same backup or recovery weakness.
|
||
|
||
### Scenario 3: Multi-tenant metric fallback
|
||
|
||
1. Seed a workspace where multiple visible tenants are affected.
|
||
2. Open `/admin`.
|
||
3. Verify the matching summary metric uses the deliberate tenant-entry fallback instead of pretending there is a single canonical tenant.
|
||
4. Confirm the operator can still choose the correct tenant from there.
|
||
|
||
### Scenario 4: Calm workspace with explicit checked domains
|
||
|
||
1. Seed a workspace where all visible tenants are healthy on backup health and `no_recent_issues_visible` on recovery evidence.
|
||
2. Open `/admin`.
|
||
3. Verify the workspace may render a calm state.
|
||
4. Verify the calmness statement explicitly includes backup health and recovery evidence.
|
||
5. Verify the wording stays bounded to visible tenants and does not claim recovery proof.
|
||
|
||
### Scenario 5: RBAC-limited member
|
||
|
||
1. Sign in as a workspace member who cannot see some tenants in the workspace.
|
||
2. Open `/admin`.
|
||
3. Verify hidden tenants do not appear in counts, item labels, or reason text.
|
||
4. Verify any calmness claim is explicitly about the visible tenant slice.
|
||
5. If a downstream capability is missing, verify the workspace item degrades to a safe disabled or fallback state rather than a dead-end link.
|
||
|
||
## Non-goals Check
|
||
|
||
Before considering the slice complete, verify that no workspace surface introduces any of the following:
|
||
|
||
- `workspace recovery is proven`
|
||
- `portfolio restore readiness is guaranteed`
|
||
- `healthy backups guarantee successful recovery`
|
||
- Any equivalent blended score or proof language stronger than the visible tenant truth supports
|
||
|
||
## Deployment Note
|
||
|
||
No new Filament assets are planned for this slice. Deployment keeps the existing asset step unchanged:
|
||
|
||
```bash
|
||
cd apps/platform && php artisan filament:assets
|
||
``` |