Files
ui/_docs/03_implementation/reviews/batch_05_review.md
T
Oleksandr Bezdieniezhnykh 6d03643c2c
ci/woodpecker/push/build-arm Pipeline was successful
[AZ-461] [AZ-464] [AZ-470] [AZ-472] Batch 5 - detection/bulk-validate/panel-width/classes tests
- AZ-461 sync image detect URL canary (FT-P-11) PASS;
  async-video QUARANTINE (FT-P-12) + X-Refresh-Token drift
  (FT-P-13) recorded as it.fails() with controls.
- AZ-464 bulk-validate URL + UI sync (≤2 s) PASS;
  body shape drift {annotationIds,status} vs contract
  {ids,targetStatus:30} captured as it.fails().
- AZ-470 panel-width debounce + rehydration: entire task
  is Phase-B target (useResizablePanel has no PUT writer
  / no rehydration); 3 ACs as it.fails() with controls.
- AZ-472 DetectionClasses load + click + fallback PASS;
  hotkey arithmetic P=0 PASS, P=20/P=40 it.fails() for
  classes[idx+P]-against-dense-array drift.

Code review: PASS (0 findings). Fast: 18/18 files,
102 passed / 13 skipped. Static: 21/21 PASS.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 04:38:22 +03:00

7.4 KiB
Raw Blame History

Code Review Report

Batch: 5 — AZ-461, AZ-464, AZ-470, AZ-472 Date: 2026-05-11 Verdict: PASS Mode: Full (per-batch invocation by /implement)

Inputs

  • Task specs:
    • _docs/02_tasks/todo/AZ-461_test_detection_endpoints.md (3 ACs, 2 pts)
    • _docs/02_tasks/todo/AZ-464_test_bulk_validate.md (3 ACs, 2 pts)
    • _docs/02_tasks/todo/AZ-470_test_panel_width_persistence.md (3 ACs, 2 pts)
    • _docs/02_tasks/todo/AZ-472_test_detection_classes.md (4 ACs, 3 pts)
  • Changed files (8 total, all under Blackbox Tests OWNED scope):
    • tests/detection_endpoints.test.tsx
    • tests/bulk_validate.test.tsx
    • tests/panel_width_persistence.test.tsx
    • tests/detection_classes.test.tsx
    • e2e/tests/detection_endpoints.e2e.ts
    • e2e/tests/bulk_validate.e2e.ts
    • e2e/tests/panel_width_persistence.e2e.ts
    • e2e/tests/detection_classes.e2e.ts

Findings

# Severity Category File:Line Title
None

No Critical, High, Medium, or Low findings.

Phase Walkthrough

Phase 1 — Context Loading

All 4 task specs read; ACs catalogued; module-layout.md consulted for OWNED/READ-ONLY/FORBIDDEN envelope. Every changed file falls under tests/** or e2e/**, both Owns globs of the Blackbox Tests cross-cutting component (epic AZ-455). No file outside the envelope was modified.

Phase 2 — Spec Compliance

Task AC Test Today Drift documented
AZ-461 AC-1 (FT-P-11 sync image URL) tests/detection_endpoints.test.tsx PASS
AZ-461 AC-2 (FT-P-12 async video, QUARANTINE) it.fails() + control runs + emits "FT-P-12 awaits AC-25" log spec mandates QUARANTINE marker
AZ-461 AC-3 (FT-P-13 X-Refresh-Token header) it.fails() + control drift — production sets only Authorization header wired in Phase B
AZ-464 AC-1 (FT-P-20 URL) tests/bulk_validate.test.tsx PASS
AZ-464 AC-2 (FT-P-20 body shape) it.fails() + control drift — {annotationIds, status:2} vs contract {ids, targetStatus:30} flips with AC-04 wire enum
AZ-464 AC-3 (FT-P-21 + NFT-PERF-07 ≤ 2 s) wall-clock perf assertion PASS
AZ-470 AC-1 (FT-P-37 + NFT-PERF-08 debounce) it.fails() + control drift — useResizablePanel has no PUT writer flips when PUT writer wired
AZ-470 AC-2 (FT-P-37 body) it.fails() drift — depends on AC-1 writer flips when writer wired
AZ-470 AC-3 (FT-P-38 rehydration) it.fails() + control drift — no read of panelWidths from settings flips with rehydration effect
AZ-472 AC-1 (FT-P-44 load) tests/detection_classes.test.tsx PASS
AZ-472 AC-2 P=0 (FT-P-45 hotkey) direct assertion PASS
AZ-472 AC-2 P=20 (FT-P-45 hotkey) it.fails() drift — classes[idx+P] against dense array flips with filter-then-index OR sparse array
AZ-472 AC-2 P=40 (FT-P-45 hotkey) it.fails() drift — classes[idx+40] exceeds length same as P=20
AZ-472 AC-3 (FT-P-46 click) userEvent.click PASS
AZ-472 AC-4 (FT-P-47 fallback) empty + 500 + id-set test PASS

Every AC has at least one test (running or it.fails() per spec direction). AC-2 and AC-3 of AZ-461 explicitly require running tests with documented drift markers — both satisfied. All it.fails() markers have inline justification anchored to a documented production behavior, with control tests pinning the current shape so a regression does not slip through silently.

No Spec-Gap findings.

Phase 3 — Code Quality

  • AAA pattern (// Arrange / // Act / // Assert) applied throughout, with sections elided where empty per coderule.mdc test convention.
  • No bare catch / no error suppression. Every test uses MSW handlers + seedBearer/clearBearer deterministically.
  • Helper functions (captureDetectAndBootstrap, rigDatasetAndBulk, rigPanelEnv, captureClassesGets) under 50 lines each; named for caller intent.
  • No DRY violations across the batch — each task isolated; the only shared helper is tests/helpers/auth which already existed.
  • it.fails() placements match documented drift. Comments explain why and when each test flips green, never narrating what the code does.

No findings.

Phase 4 — Security Quick-Scan

  • No SQL, no shell exec, no eval/new Function in any test.
  • seedBearer() uses test-fixture token; no hardcoded production secrets.
  • No sensitive data in logs (console.log exists in only one place — the AZ-461 AC-2 quarantine marker, mandated by spec).

No findings.

Phase 5 — Performance Scan

  • waitFor timeouts bounded (10003000 ms); no infinite waits.
  • No N+1 patterns. selectItemsWithCtrlClick iterates the bounded seedItems (3 rows).
  • Fake-timer use in tests/panel_width_persistence.test.tsx is correct (shouldAdvanceTime: true) and reset in afterEach.
  • Wall-clock perf assertion (elapsed ≤ 2000 ms) for AC-3 of AZ-464 / NFT-PERF-07 measured from click time, not request-receipt time — slightly stricter than spec, which is fine.

No findings.

Phase 6 — Cross-Task Consistency

  • All 4 fast tests share the same scaffolding shape: server.use(...), seedBearer(), renderWithProviders, AAA structure, clearBearer().
  • No conflicting MSW patterns; each task's handler block is self-contained and uses the same paginate / jsonResponse / errorResponse helpers from tests/msw/helpers.
  • All 4 tasks declare Dependencies: AZ-456_test_infrastructure, which is satisfied (test infra was completed in earlier batches).
  • E2E companions follow the established Playwright pattern (page.route interception + test.fail() for known drifts + test.skip(...) for seed gaps).

No findings.

Phase 7 — Architecture Compliance

  • Layer direction: every import in the batch flows leaf-ward (test → production); no upstream production code added or modified.
  • Public API respect: imports from src/types, src/components/FlightContext, src/components/DetectionClasses, src/features/annotations/AnnotationsPage, src/features/annotations/classColors, src/features/dataset/DatasetPage. Per module-layout.md Public API tables, all five are de-facto Public API entries of their owning components. Static profile (STC-S6, STC-S13) passes against the same rule set.
  • No new cyclic dependencies — tests are leaves of the import graph.
  • No duplicate symbols across components — each task's test helpers are file-private.
  • No cross-cutting concerns re-implemented locally — all logging goes through console.log only at the spec-mandated AZ-461 AC-2 quarantine marker.

No findings.

Baseline Delta

_docs/02_document/architecture_compliance_baseline.md does not exist for this workspace — no baseline delta to compute.

Verdict Logic

  • 0 Critical findings
  • 0 High findings
  • 0 Medium findings
  • 0 Low findings

PASS

Notes

  • The batch is test-only. No production source was modified. Every it.fails() is paired with documented drift evidence in the task spec or in the test file's header comment.
  • bun run test:fast — 18 files / 102 passed / 13 skipped (pre-existing skip count unchanged).
  • ./scripts/run-tests.sh --static-only — all checks PASS.
  • No new lint errors introduced (ReadLints clean on all 8 changed files).

Outputs (for /implement)

  • verdict: PASS
  • findings: []
  • critical_count: 0
  • high_count: 0
  • report_path: _docs/03_implementation/reviews/batch_05_review.md