# Tasks: App Protection Policy Type Coverage (009) **Branch**: `feat/009-app-protection-policy` | **Date**: 2025-12-29 **Input**: [spec.md](./spec.md), [plan.md](./plan.md) ## Phase 1: Contracts - [ ] T001 Add App Protection assignments endpoints + type family to `config/graph_contracts.php`. ## Phase 2: Sync filtering - [ ] T002 Filter out `#microsoft.graph.targetedManagedAppConfiguration` during `appProtectionPolicy` sync. ## Phase 3: Restore endpoint compatibility - [ ] T003 Resolve derived update/assign endpoints for App Protection based on `@odata.type`. ## Phase 4: UI normalization - [ ] T004 Add `AppProtectionPolicyNormalizer` (booleans/durations + grouped sections). ## Phase 5: Tests + Verification - [ ] T005 Add contract coverage tests in `tests/Unit/GraphContractRegistryActualDataTest.php`. - [ ] T006 Add sync filtering test in `tests/Feature/Jobs/*`. - [ ] T007 Add unit tests for derived endpoint resolution + normalizer output. - [ ] T008 Run tests (targeted): `./vendor/bin/sail artisan test --filter=appProtectionPolicy` - [ ] T009 Run Pint: `./vendor/bin/pint --dirty`