Ordering + limit-only Test für created_at DESC in DependencyExtractionFeatureTest.php UI Test für masked Identifier (ID: 123456…) + Guest-Access blocked in InventoryItemDependenciesTest.php Quickstart ergänzt um manuellen <2s Check in quickstart.md pr-gate Checkbox-Format normalisiert (kein leading space) in pr-gate.md Co-authored-by: Ahmed Darrazi <ahmeddarrazi@adsmac.local> Reviewed-on: #49
2.1 KiB
2.1 KiB
Requirements Checklist — Inventory Dependencies Graph (042)
Scope
- This checklist applies only to Spec 042 (Inventory Dependencies Graph).
- MVP scope: show direct inbound/outbound edges only (no depth>1 traversal / transitive blast radius).
Constitution Gates
- Inventory-first: edges derived from last-observed inventory data (no snapshot/backup side effects)
- Read/write separation: no Intune write paths introduced
- Single contract path to Graph: Graph access only via GraphClientInterface + contracts (if used)
- Tenant isolation: all reads/writes tenant-scoped
- Automation is idempotent & observable: unique key + upsert + run records + stable error codes
- Data minimization & safe logging: no secrets/tokens; avoid storing raw payloads outside allowed fields
- No new tables for warnings; warnings persist on InventorySyncRun.error_context.warnings[]
Functional Requirements Coverage
- FR-001 Relationship taxonomy exists and is testable (labels, directionality, descriptions)
- FR-002 Dependency edges stored in
inventory_linkswith unique key (idempotent upsert) - FR-003 Inbound/outbound query services tenant-scoped, limited (MVP: limit-only unless pagination is explicitly implemented)
- FR-004 Missing prerequisites represented as
target_type='missing'with safe metadata + UI badge/tooltip - FR-005 Relationship-type filtering available in UI (single-select, default “All”)
Non-Functional Requirements Coverage
- NFR-001 Idempotency: re-running extraction does not create duplicates; updates metadata deterministically
- NFR-002 Unknown reference shapes handled gracefully: warning recorded in run metadata; does not fail sync; no edge created for unsupported types
Tests (Pest)
- Extraction determinism + unique key (re-run equality)
- Missing edges show “Missing” badge and safe tooltip
- 50-edge limit enforced and truncation behavior is observable (if specified)
- Tenant isolation for queries and UI
- UI smoke: relationship-type filter limits visible edges