## Summary - align tenant dashboard KPI, attention, compare, and operations truth so the page does not read calmer than the tenant's actual state - preserve tenant-safe drill-through continuity into findings, baseline compare, and canonical operations, including disabled helper states for permission-limited members - add the Spec 173 artifact set and focused regression coverage for dashboard truth alignment and drill-through behavior ## Validation - `vendor/bin/sail bin pint --dirty --format agent` - `vendor/bin/sail artisan test --compact tests/Feature/Filament/DashboardKpisWidgetTest.php tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php tests/Feature/Filament/NeedsAttentionWidgetTest.php tests/Feature/Filament/BaselineCompareNowWidgetTest.php tests/Feature/Filament/BaselineCompareSummaryConsistencyTest.php tests/Feature/Findings/FindingsListDefaultsTest.php tests/Feature/Findings/FindingsListFiltersTest.php tests/Feature/Findings/FindingAdminTenantParityTest.php tests/Feature/OpsUx/CanonicalViewRunLinksTest.php tests/Feature/Filament/TenantDashboardTenantScopeTest.php tests/Feature/Filament/TenantDashboardDbOnlyTest.php tests/Feature/Filament/TableStandardsBaselineTest.php tests/Feature/Filament/TableDetailVisibilityTest.php` - integrated browser smoke on the tenant dashboard, including a permission-limited member scenario Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #204
7.6 KiB
7.6 KiB
Quickstart: Tenant Dashboard KPI & Attention Truth Alignment
Goal
Validate that the tenant dashboard no longer appears calmer than the tenant's real governance, findings, compare, and operations state, and that KPI and attention drill-throughs lead to semantically matching destinations.
Prerequisites
- Start Sail.
- Ensure you have a tenant with dashboard access and current workspace context.
- Seed or create tenant scenarios for:
- no attention-worthy conditions
- overdue active findings with no new drift
- lapsed accepted-risk governance
- expiring governance
- high-severity active findings
- compare trust limitations or stale compare posture
- healthy operations-only activity with otherwise healthy governance
- failed, warning, or unusually long-running or stalled operations that require follow-up
- Ensure the current user is entitled to the tenant dashboard, tenant findings list, Baseline Compare landing, and canonical Operations routes.
- Prepare one in-scope tenant member who can open the dashboard but lacks at least one downstream destination capability so disabled or non-clickable affordances can be verified.
Implementation Validation Order
1. Run existing compare and attention truth baselines
vendor/bin/sail artisan test --compact tests/Feature/Filament/NeedsAttentionWidgetTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/BaselineCompareNowWidgetTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/BaselineCompareSummaryConsistencyTest.php
Expected outcome:
- Existing aggregate-backed compare and governance truth remains stable.
- Compare posture still suppresses false calm for stale, unavailable, failed, and limited-confidence scenarios.
2. Run focused dashboard truth-alignment coverage
vendor/bin/sail artisan test --compact tests/Feature/Filament/DashboardKpisWidgetTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php
Expected outcome:
- KPI labels match their count universe.
- High-severity and active findings semantics are consistent or explicitly differentiated.
- The full tenant dashboard does not present an all-clear when overdue, lapsed, or expiring governance, compare-limited conditions, or attention-worthy operations follow-up exist.
3. Run destination continuity and tenant-scope coverage
vendor/bin/sail artisan test --compact tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php
vendor/bin/sail artisan test --compact tests/Feature/OpsUx/CanonicalViewRunLinksTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantDashboardTenantScopeTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantDashboardDbOnlyTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TableStandardsBaselineTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TableDetailVisibilityTest.php
Expected outcome:
- Canonical Operations links opened from the tenant dashboard preserve tenant context.
- Dashboard drill-throughs remain tenant-safe and DB-only at render time.
- Members who can see a dashboard state but lack the downstream capability get disabled or non-clickable explanatory affordances instead of clickable dead-end links.
- Recent table surfaces retain their diagnostic framing and detail-visibility rules in the final verification pack.
4. Run destination-side findings filter coverage
vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingsListDefaultsTest.php
vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingsListFiltersTest.php
vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingAdminTenantParityTest.php
Expected outcome:
- Findings destinations still honor the tabs and filters that dashboard drill-throughs depend on.
- Active, overdue, and high-severity continuity remains recognizable on the target list.
5. Format touched implementation files
vendor/bin/sail bin pint --dirty --format agent
Expected outcome:
- All changed implementation files conform to project formatting rules.
6. Re-run the final verification pack
vendor/bin/sail artisan test --compact tests/Feature/Filament/DashboardKpisWidgetTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php
vendor/bin/sail artisan test --compact tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/NeedsAttentionWidgetTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/BaselineCompareNowWidgetTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/BaselineCompareSummaryConsistencyTest.php
vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingsListDefaultsTest.php
vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingsListFiltersTest.php
vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingAdminTenantParityTest.php
vendor/bin/sail artisan test --compact tests/Feature/OpsUx/CanonicalViewRunLinksTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantDashboardTenantScopeTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantDashboardDbOnlyTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TableStandardsBaselineTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TableDetailVisibilityTest.php
Expected outcome:
- The formatted implementation still passes the same consolidated verification pack described in the tasks artifact.
Manual Smoke Check
- Start a 10-second timer and open
/admin/t/{tenant}for seeded tenants representing overdue findings, expiring governance, compare limitations, healthy operations-only activity, and attention-worthy operations follow-up. - Within the 10-second scan, confirm an operator can tell whether the tenant has governance attention, compare caution, operations-only activity, attention-worthy operations follow-up, or no immediate action required.
- For a tenant with overdue findings but no
newdrift findings, confirm the dashboard still reads as needing attention and does not fall back to calm or trustworthy wording. - Click the relevant KPI and confirm the findings destination shows the same subset or explicitly broader related framing.
- Click a
Needs Attentionitem for overdue findings, high-severity active findings, lapsed governance, expiring governance, compare posture, and operations follow-up and confirm each lands on the correct tenant-scoped working surface. - Open the operations KPI or operations attention path and confirm
/admin/operationsopens with tenant context preserved. - Sign in as the permission-limited in-scope member and confirm any visible dashboard state without downstream capability renders helper text with a disabled or non-clickable affordance instead of a clickable dead-end link.
- Verify that
Recent Drift FindingsandRecent Operationsstill read as recent context rather than the page's primary queue. - Click one row in
Recent Drift Findingsand one row inRecent Operationsand confirm each opens the expected canonical detail surface. - Switch to a tenant with healthy compare posture and no attention-worthy conditions and confirm calm or healthy signals return consistently.
Non-Goals For This Slice
- No new database migration.
- No new Graph contract or provider workflow.
- No new tenant-posture hero component.
- No new dashboard route family.
- No conversion of recent tables into full action queues.