1008 B
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