TenantAtlas/specs/225-assignment-hygiene/quickstart.md
ahmido 12fb5ebb30
Some checks failed
Main Confidence / confidence (push) Failing after 1m20s
feat: add findings hygiene report and control catalog layering (#264)
## Summary
- add the workspace-scoped findings hygiene report, overview signal, and supporting classification service for broken assignments and stale in-progress work
- add Spec 225 artifacts and focused findings hygiene test coverage alongside the new Filament page and workspace overview wiring
- align product roadmap and spec candidates around the layered canonical control catalog, CIS library, and readiness model
- extend SpecKit constitution and templates with the XCUT-001 shared-pattern reuse guidance

## Notes
- validation commands and implementation close-out notes are documented in `specs/225-assignment-hygiene/plan.md` and `specs/225-assignment-hygiene/quickstart.md`
- this PR targets `dev` from `225-assignment-hygiene`

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #264
2026-04-22 12:26:18 +00:00

82 lines
4.2 KiB
Markdown

# Quickstart: Assignment Hygiene & Stale Work Detection
## Prerequisites
1. Start the local platform stack.
```bash
cd apps/platform && ./vendor/bin/sail up -d
```
2. Work with a workspace that has at least two visible tenants, several open findings, and at least two tenant users.
3. Ensure at least one scenario can represent each hygiene state:
- a finding assigned to a user who later loses tenant access or is soft-deleted
- a finding left `in_progress` beyond the stale window without later workflow movement
4. Remember that `/admin/findings/hygiene` is a workspace-context canonical page, so tenant selection should not be required to open it.
## Automated Validation
Run formatting and the narrowest proving suites for this feature:
```bash
cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingsAssignmentHygieneReportTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingsAssignmentHygieneClassificationTest.php tests/Feature/Findings/FindingsAssignmentHygieneOverviewSignalTest.php
```
## Manual Validation Flow
### 1. Confirm the canonical report opens in workspace context
1. Open `/admin/findings/hygiene` without selecting an active tenant.
2. Confirm the page opens as a workspace-context findings surface.
3. Confirm row drilldown still lands on the existing tenant finding detail page.
### 2. Validate broken-assignment detection
1. Start with an open assigned finding in a visible tenant.
2. Remove the assignee's tenant membership or soft-delete the assigned user.
3. Reload the hygiene report.
4. Confirm the finding appears once with `Broken assignment` and still shows owner context.
### 3. Validate stale in-progress detection
1. Start with an open finding moved to `In progress` more than seven days ago.
2. Ensure no later assignment or reopen workflow activity exists for that finding.
3. Reload the hygiene report.
4. Confirm the finding appears with `Stale in progress`.
5. Move a comparable finding to `In progress` recently or reassign it recently and confirm it does not appear as stale.
6. Reopen a comparable finding after it would otherwise qualify as stale and confirm it no longer appears as stale until seven days pass from the reopen activity.
### 4. Validate multi-reason and unique-count behavior
1. Prepare one finding that is both assigned to an unworkable assignee and stale in progress.
2. Reload the report and workspace overview.
3. Confirm:
- the report shows one row with both reasons visible
- the workspace overview counts one unique hygiene issue, not two separate rows
### 5. Validate overview discoverability
1. Open `/admin` with visible hygiene issues present.
2. Confirm the findings hygiene signal appears with one CTA into the report.
3. Confirm the signal description is a short summary derived from broken-assignment and stale-in-progress counts rather than an undefined severity ordering.
4. Open the CTA and verify the canonical report reflects the same visible issue truth.
5. Repeat the check with no visible hygiene issues and confirm the same signal remains visible in a calm state with zero issues and the canonical CTA into the report.
### 6. Validate tenant-prefilter and hidden-tenant safety
1. Open the report with an active tenant selected.
2. Confirm the report is prefiltered to that tenant while keeping the fixed hygiene scope.
3. If the prefilter hides issues that exist in other visible tenants, confirm the empty state explains that boundary and offers exactly one `Clear tenant filter` CTA.
4. Confirm hidden-tenant findings never appear in rows, counts, filter values, or empty-state hints.
## Reviewer Notes
- The feature is Livewire v4.0+ compatible and stays on existing Filament v5 primitives.
- Provider registration remains unchanged in `apps/platform/bootstrap/providers.php`.
- No globally searchable resource behavior changes in this feature.
- No new destructive action is introduced on the hygiene report, so no new confirmation flow is required there.
- Asset strategy is unchanged: no new panel or shared assets, and the existing deploy `filament:assets` step remains sufficient.