64 lines
3.0 KiB
Markdown
64 lines
3.0 KiB
Markdown
# Quickstart: Inventory Coverage Truth (177)
|
|
|
|
## Goal
|
|
|
|
Implement the Spec 177 truth correction without changing inventory-sync execution semantics or adding persistence.
|
|
|
|
The implementation is complete when:
|
|
- the inventory KPI header no longer shows a misleading unqualified coverage percentage,
|
|
- the coverage page answers tenant coverage truth first,
|
|
- inventory-sync run detail shows per-type results in human-readable form,
|
|
- and run continuity is RBAC-safe.
|
|
|
|
## Suggested Implementation Order
|
|
|
|
1. Add the derived runtime contract and resolver under `app/Support/Inventory`.
|
|
2. Add unit tests for basis-run selection, `Unknown` derivation, and follow-up classification.
|
|
3. Refactor `InventoryKpiHeader` to consume the new resolver and switch to count-based summary facts.
|
|
4. Refactor `InventoryCoverage` to consume the same resolver and move capability metadata into secondary treatment.
|
|
5. Add the inventory-sync run detail section and its custom Blade view.
|
|
6. Extend RBAC and feature tests for safe continuity and truthful rendering.
|
|
7. Run Pint and the focused Sail test pack.
|
|
|
|
## Verification Workflow
|
|
|
|
### Unit and focused feature tests
|
|
|
|
Run the smallest focused set first:
|
|
|
|
```bash
|
|
export PATH="/bin:/usr/bin:/usr/local/bin:$PATH"
|
|
cd /Users/ahmeddarrazi/Documents/projects/TenantAtlas
|
|
vendor/bin/sail artisan test --compact tests/Unit/Support/Inventory/TenantCoverageTruthResolverTest.php
|
|
vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryCoverageTableTest.php
|
|
vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryCoverageAdminTenantParityTest.php
|
|
vendor/bin/sail artisan test --compact tests/Feature/Operations/TenantlessOperationRunViewerTest.php
|
|
vendor/bin/sail artisan test --compact tests/Feature/Inventory/RunInventorySyncJobTest.php
|
|
vendor/bin/sail bin pint --dirty --format agent
|
|
```
|
|
|
|
### Manual operator walkthrough
|
|
|
|
1. Open the inventory items list for a tenant with a recent inventory-sync run.
|
|
2. Confirm the header shows count-based coverage truth, not `Coverage %`.
|
|
3. Open the coverage page and verify the summary cites the basis run and the per-type table leads with coverage state and follow-up.
|
|
4. Open the cited inventory-sync run and verify the new per-type coverage section renders without opening raw JSON.
|
|
5. Verify a user without access to the run sees safe explanatory guidance instead of a dead-end link.
|
|
|
|
## Out-of-Scope Guardrails
|
|
|
|
Do not do any of the following in this slice:
|
|
- add a new coverage table or materialized summary artifact
|
|
- rewrite `InventorySyncService` or `RunInventorySyncJob`
|
|
- introduce restore-readiness or compare-readiness semantics into coverage
|
|
- add a first-class stale coverage state family
|
|
- add page-local badge mappings or local semantic color logic
|
|
|
|
## Completion Checklist
|
|
|
|
- Count-based KPI summary shipped
|
|
- Coverage page is tenant-truth-first
|
|
- Capability metadata is visibly secondary
|
|
- Run detail has human-readable per-type coverage
|
|
- Safe continuity works for both authorized and unauthorized viewers
|
|
- Focused tests and Pint pass |