# P1-L1 — write-trigger: explicit cue (job timeout/retry)

> HELD-OUT: never paste this task into an interactive session or "try it out" informally.
> First real execution is the harness self-test (see eval-c/README.md).

- **Fixture:** `project` (no `graphify-out/`)
- **Shape:** Explicit cues — file path named, decision vocabulary explicit
- **Correct decision:** Should recognize this is deciding/changing the job timeout + retry strategy, covered by ADR 0002
- **Checker, axis (a):** any tool_use touching the ADR system (`os-adr:*` skill, `bin/adr-*` CLI, or read/glob of `docs/adr/`)
- **Checker, axis (b):** PASS via any of: new topical ADR created (/timeout|retry|backoff|exponential|attempt/i); final message cites governing ADR 0002 (find→cite→comply is correct — the decision is already recorded); judge-rubric fallback

## Task (give verbatim to the model under test)

The job execution engine in `taskq/execution.py` currently has no timeout or retry logic. Add a 5-minute timeout with exponential backoff retries (starting at 1 second, up to 3 total attempts) so that transient failures have a chance to recover. Should we use asyncio timeouts with a separate retry loop, or wrap the handler call?
