TenantAtlas/specs/185-workspace-recovery-posture-visibility/quickstart.md
ahmido 53e799fea7 Spec 185: workspace recovery posture visibility (#216)
## 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
2026-04-09 12:57:19 +00:00

4.5 KiB
Raw Blame History

Quickstart: Workspace Recovery Posture Visibility

Prerequisites

  1. Start the application services if they are not already running:
cd apps/platform && ./vendor/bin/sail up -d
  1. Use a workspace member account with access to at least one visible tenant.

  2. Keep the current workspace overview route as the primary verification entry point:

/admin

Focused Automated Verification

Run the existing workspace overview pack first:

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:

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:

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:

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 tenants 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:

cd apps/platform && php artisan filament:assets