a2cde9406e
`recovery::enqueue_pending_for_user` previously enqueued any case with `analysis_input.json` and no `document.md`, ignoring the failure marker that `auto_trigger::evaluate_case` already honours. A timed-out LLM call (e.g. Llama 3.1 405B at ~20 tok/s with default 4096 max_tokens) left the input in place, the next case-list reload re-enqueued it, and the worker hung another full timeout window — starving fresh user clicks behind a failed retry loop. Recovery now mirrors the same skip: if a marker exists whose `last_recording_mtime` matches the input's, treat it as "already tried, do not retry until input changes". Fresh recordings bump the mtime and recovery picks the case back up.