# Automatic folder analysis verification — 2026-09-15

## Delivered behavior

The app's normal launch loads its existing presets and scans configured `data/` subfolders in a utility task. New folders without manifests receive unreviewed full-photo subject entries; folders with authored manifests retain their roles/crops. The app invokes pose-batch in a separate process with a 15-minute folder timeout. A failed folder is reported without blocking the others. Completed source/manifest-matched results are reused. Hidden/empty folders and symlink inputs are skipped. A rescan button uses the same pipeline.

Selection prefers a valid saved-review binding, preserving a configured saved run or otherwise the most recently saved matching review. This prevents another valid raw run from making corrections appear lost. Missing data directories report a configuration/folder failure. Additional photos in an existing authored manifest are reported rather than reassigned automatically.

## Tests and review

- Core discovery tests began with the missing API and passed after implementation. Seven deterministic tests cover fresh import, reuse, folder failure isolation/retry, legacy results/unlisted photos, changed source invalidation, symlink exclusion, saved-review selection, and missing-root error.
- Worker test first failed on the missing worker, then verified nonzero subprocess exits and timeout termination without killing the app.
- Model integration test covers concurrent-call suppression, mixed ready/failed folders and an unchanged active unsaved document.
- Final full suite: 22 native tests and 49 core tests (2 skipped private Vision tests): 69 passed, 2 skipped, zero failures. Build and `git diff --check` passed.
- Independent subagent review identified saved-run selection and missing-root reporting; both fixed and independently rereviewed with no remaining concrete findings. It also reviewed the prior coaching checklist implementation and found no concrete defect. Review was read-only; root owned builds and final verification.

## Real launch check

The new app visibly ran analysis on launch while the previous session remained usable. It reported 7 sessions ready, 4 newly analyzed. All four new folders appeared in Sessions; the 2023 session opened with eight photos and 9/9 coaching topics per subject. A second scan reported 0 newly analyzed and reused the same analysis outputs.

Analyzed 21 identified SV650 source photos: 8 Carolina, 8 older Harris Hill, 4 COTA, 1 May Harris Hill. Source-photo review preceded inference, and group-photo crops isolate the subject where possible. No file-level analysis errors; a few individual 2D/3D requests returned noPose while the other detector supplied unreviewed results. This is not proof of anatomical accuracy.

Native coaching audit passed all 21 subjects / 189 topic dispositions. Originals, watermarks and existing joint/lean evidence were preserved. The Aprilia rider photo `2025-05-26-HarrisHillCCW/IMG_0942.jpeg` remains unassigned pending the user's reference-role choice; the app correctly reports one unlisted image for that folder. It was not attributed to James.

## Operational checks

On the next launch, unchanged folders should reuse their analysis outputs. Failure notices should name affected folders and leave existing sessions usable. Repeated new analysis directories for unchanged inputs, disappearing saved corrections, or lost source-role assignments are regression signals. Logs and failed outputs stay local for diagnosis. If the repository moves, rebuild so the bundle's configured data directory follows it. The scanner detects new folders on launch/rescan; it is not a continuous filesystem watcher.
