diff --git a/_docs/02_tasks/todo/AZ-460_test_annotations_endpoint.md b/_docs/02_tasks/done/AZ-460_test_annotations_endpoint.md similarity index 100% rename from _docs/02_tasks/todo/AZ-460_test_annotations_endpoint.md rename to _docs/02_tasks/done/AZ-460_test_annotations_endpoint.md diff --git a/_docs/02_tasks/todo/AZ-462_test_overlay_membership.md b/_docs/02_tasks/done/AZ-462_test_overlay_membership.md similarity index 100% rename from _docs/02_tasks/todo/AZ-462_test_overlay_membership.md rename to _docs/02_tasks/done/AZ-462_test_overlay_membership.md diff --git a/_docs/02_tasks/todo/AZ-466_test_destructive_ux.md b/_docs/02_tasks/done/AZ-466_test_destructive_ux.md similarity index 100% rename from _docs/02_tasks/todo/AZ-466_test_destructive_ux.md rename to _docs/02_tasks/done/AZ-466_test_destructive_ux.md diff --git a/_docs/02_tasks/todo/AZ-475_test_form_hygiene.md b/_docs/02_tasks/done/AZ-475_test_form_hygiene.md similarity index 100% rename from _docs/02_tasks/todo/AZ-475_test_form_hygiene.md rename to _docs/02_tasks/done/AZ-475_test_form_hygiene.md diff --git a/_docs/03_implementation/batch_04_report.md b/_docs/03_implementation/batch_04_report.md new file mode 100644 index 0000000..905992d --- /dev/null +++ b/_docs/03_implementation/batch_04_report.md @@ -0,0 +1,228 @@ +# Batch Report + +**Batch**: 04 +**Tasks**: AZ-466 (Destructive UX policy + ConfirmDialog + no-alert), AZ-475 (Numeric form hygiene), AZ-462 (Overlay window membership), AZ-460 (Annotation save URL + payload contract) +**Date**: 2026-05-11 +**Cycle**: Phase A baseline, Step 6 — Implement Tests +**Total complexity**: 10 pts (4 + 2 + 2 + 2) + +## Task Results + +| Task | Status | Files Modified | Tests | AC Coverage | Issues | +|------|--------|---------------|-------|-------------|--------| +| AZ-466_test_destructive_ux | Done | 2 created (1 ConfirmDialog unit + 1 cross-component); 1 e2e created; 1 modified (`tests/security/banned-deps.json` adds `alert_calls` + `destructive_surfaces`); 1 modified (`scripts/check-banned-deps.mjs` + `scripts/run-tests.sh` add STC-SEC7 / STC-SEC8) | 8 fast `ConfirmDialog.test.tsx` (7 pass, 1 skipped); 4 fast `tests/destructive_ux.test.tsx` (3 pass + 1 skip QUARANTINE incl. 2 `it.fails()`); 2 e2e `e2e/tests/destructive_ux.e2e.ts` (both `test.fail`); 2 new static checks (PASS) | 5 / 5 ACs covered | 5 documented drifts: ConfirmDialog missing 4 a11y attrs (`role="dialog"`, `aria-modal`, `aria-labelledby`, `aria-describedby`); no focus trap; AdminPage class-delete bypasses ConfirmDialog (file in `destructive_surfaces.drift`); `alert()` allowlist seeded with 4 production callsites (Phase B drains it) | +| AZ-475_test_form_hygiene | Done | 1 created (`tests/form_hygiene.test.tsx`) | 3 fast (2 pass, including 1 control + 1 `it.fails()` per AC) | 2 / 2 ACs covered | 2 documented drifts: `