diff --git a/specs/005-bulk-operations/tasks.md b/specs/005-bulk-operations/tasks.md index c2932cc..db57c7e 100644 --- a/specs/005-bulk-operations/tasks.md +++ b/specs/005-bulk-operations/tasks.md @@ -113,7 +113,7 @@ ### Implementation for Bulk Sync Policies - [x] T035c Add bulk sync action to PolicyResource in app/Filament/Resources/PolicyResource.php - [x] T035d Dispatch SyncPoliciesJob for selected policies (choose per-ID or batched IDs) in app/Jobs/SyncPoliciesJob.php (or a new dedicated bulk sync job) -- [ ] T035e Manual QA: bulk sync 25 policies (verify queued processing + notifications) +- [x] T035e Manual QA: bulk sync 25 policies (verify queued processing + notifications) **Checkpoint**: Bulk sync action queues work and respects permissions @@ -133,9 +133,9 @@ ### Tests for User Story 5 ### Validation for User Story 5 -- [ ] T039 [US5] Manual test: Bulk delete 10 policies → confirm without typing (should work) -- [ ] T040 [US5] Manual test: Bulk delete 25 policies → type "delete" → button stays disabled -- [ ] T041 [US5] Manual test: Bulk delete 25 policies → type "DELETE" → button enables, operation proceeds +- [x] T039 [US5] Manual test: Bulk delete 10 policies → confirm without typing (should work) +- [x] T040 [US5] Manual test: Bulk delete 25 policies → type "delete" → button stays disabled +- [x] T041 [US5] Manual test: Bulk delete 25 policies → type "DELETE" → button enables, operation proceeds - [x] T042 [US5] Run tests: `./vendor/bin/sail artisan test tests/Feature/BulkTypeToConfirmTest.php` **Checkpoint**: Type-to-confirm working correctly for all thresholds @@ -162,13 +162,13 @@ ### Implementation for User Story 6 - [x] T049 [US6] Update BulkPolicyExportJob to emit progress after each chunk - [x] T050 [US6] Implement circuit breaker logic (abort if >50% fail) in jobs - [x] T051 [US6] Add progress polling to Filament notifications or sidebar widget -- [ ] T052 [US6] Test progress with 100 policies (manual QA, observe updates) -- [ ] T053 [US6] Test circuit breaker with mock failures (manual QA) +- [x] T052 [US6] Test progress with 100 policies (manual QA, observe updates) +- [x] T053 [US6] Test circuit breaker with mock failures (manual QA) - [x] T054 [US6] Run tests: `./vendor/bin/sail artisan test tests/Feature/BulkProgressNotificationTest.php` - [x] T054a [US6] Define/verify polling interval meets NFR-005.3 (≤10s updates) and document where configured -- [ ] T054b [US6] Manual QA: force a catastrophic job failure and verify FR-005.13 notification behavior -- [ ] T054c [US6] Manual QA: verify UI remains responsive during a 100-item queued run (NFR-005.4) +- [x] T054b [US6] Manual QA: force a catastrophic job failure and verify FR-005.13 notification behavior +- [x] T054c [US6] Manual QA: verify UI remains responsive during a 100-item queued run (NFR-005.4) **Checkpoint**: Progress tracking working, polling updates UI, circuit breaker aborts high-failure jobs @@ -194,7 +194,7 @@ ### Implementation for User Story 3 - [x] T061 [US3] Implement eligibility check per version in job (reuse pruneEligible scope) - [x] T062 [US3] Collect skip reasons for ineligible versions - [x] T063 [US3] Add type-to-confirm for ≥20 versions -- [ ] T064 [US3] Test prune with 30 versions (15 eligible, 15 ineligible) - manual QA +- [x] T064 [US3] Test prune with 30 versions (15 eligible, 15 ineligible) - manual QA - [x] T065 [US3] Verify skip reasons in notification and audit log - [x] T066 [US3] Run tests: `./vendor/bin/sail artisan test tests/Feature/BulkPruneVersionsTest.php` @@ -230,7 +230,7 @@ ### Implementation for User Story 4 - [x] T073 [US4] Filter by deletable() scope (completed, failed, aborted only) - [x] T074 [US4] Skip running restore runs with warning - [x] T075 [US4] Add type-to-confirm for ≥20 runs -- [ ] T076 [US4] Test delete with 20 completed + 5 running (manual QA, verify 5 skipped) +- [x] T076 [US4] Test delete with 20 completed + 5 running (manual QA, verify 5 skipped) - [x] T077 [US4] Run tests: `./vendor/bin/sail artisan test tests/Feature/BulkDeleteRestoreRunsTest.php` - [x] T077a [US4] Add bulk force delete restore runs job in app/Jobs/BulkRestoreRunForceDeleteJob.php @@ -262,7 +262,7 @@ ### Implementation for Additional Resource - [x] T081 Add bulk delete action to BackupSetResource in app/Filament/Resources/BackupSetResource.php - [x] T082 Verify cascade-delete logic for backup items (should be automatic via foreign key) - [x] T083 Add type-to-confirm for ≥10 sets -- [ ] T084 Test delete with 15 backup sets (manual QA) +- [x] T084 Test delete with 15 backup sets (manual QA) - [x] T085 Run tests: `./vendor/bin/sail artisan test tests/Feature/BulkDeleteBackupSetsTest.php` - [x] T085e Add bulk restore backup sets job in app/Jobs/BulkBackupSetRestoreJob.php @@ -295,9 +295,9 @@ ## Phase 10: Polish & Cross-Cutting Concerns - [ ] T090 Load test: Concurrent bulk operations (2-3 admins, different resources) - [ ] T091 [P] Security review: Verify tenant isolation in all jobs - [ ] T092 [P] Permission audit: Verify all bulk actions respect RBAC -- [ ] T093 Run full test suite: `./vendor/bin/sail artisan test` -- [ ] T094 Run Pint formatting: `./vendor/bin/sail composer pint` -- [ ] T095 Manual QA checklist: Complete all scenarios from quickstart.md +- [x] T093 Run full test suite: `./vendor/bin/sail artisan test` +- [x] T094 Run Pint formatting: `./vendor/bin/sail composer pint` +- [x] T095 Manual QA checklist: Complete all scenarios from quickstart.md - [x] T096 Document configuration options (chunk size, polling interval, retention days) - [ ] T097 Create BulkOperationRun resource page in Filament (view progress, retry failed) - [ ] T098 Add bulk operation metrics to dashboard (total runs, success rate)