Files
photoanalyzer/delivery_backlog/stories/US07-04-fault-concurrency.md

1008 B

US07-04 — Prove Concurrency and Crash Recovery

Epic: E07

As an operator, I want randomized race and fault tests so concurrency cannot produce deadlocks, stale commits, duplicate terminal states, or data loss.

Acceptance criteria

  • Test control points exist at persisted transitions without exposing production mutation APIs.
  • Tests cover database pressure, worker claim races, file changes, thumbnail races, safety/analysis races, EXIF/upload races, rename/archive conflicts, and cancellation.
  • Faults cover process death, disk full, read-only paths, DB busy/corruption, network failures, malformed providers, GPU exhaustion, subprocess hangs, and missing tools.
  • Recovery is deterministic or enters an explicit manual-recovery state.

Automated tests

  • Randomized suites repeat with recorded seeds and assert invariants after restart.
  • CI retains journals, logs, DB, seed, and filesystem manifest for any failure.

Dependencies

  • US07-02, US07-03