# Tasks: Driver Updates (WUfB Add-on) (018) **Branch**: `feat/018-driver-updates-wufb` **Date**: 2026-01-03 **Input**: [spec.md](./spec.md), [plan.md](./plan.md) ## Phase 1: Setup - [x] T001 Create/confirm spec, plan, tasks, checklist. ## Phase 2: Research & Design - [ ] T002 Verify Graph resource + `@odata.type` for driver update profiles. - [ ] T003 Verify PATCHable fields and define `update_strip_keys` / `update_whitelist`. - [ ] T004 Verify assignment endpoints (`/assignments`, `/assign`) for this resource. - [ ] T005 Decide restore mode (`enabled` vs `preview-only`) based on risk + patchability. ## Phase 3: Tests (TDD) - [ ] T006 Add sync test ensuring `windowsDriverUpdateProfile` policies are imported and typed correctly. - [ ] T007 Add snapshot/version capture test asserting full payload is stored. - [ ] T008 Add restore preview test for this type (entries + restore_mode shown). - [ ] T009 Add restore execution test asserting only patchable properties are sent and failures are reported with Graph metadata. - [ ] T010 Add normalized display test for key fields. ## Phase 4: Implementation - [ ] T011 Add `windowsDriverUpdateProfile` to `config/tenantpilot.php`. - [ ] T012 Add Graph contract entry in `config/graph_contracts.php`. - [ ] T013 Implement any required snapshot hydration (if Graph uses subresources). - [ ] T014 Implement restore apply support in `RestoreService` (contract-driven sanitization). - [ ] T015 Add a `WindowsDriverUpdateProfileNormalizer` and register it. ## Phase 5: Verification - [ ] T016 Run targeted tests. - [ ] T017 Run Pint (`./vendor/bin/pint --dirty`).