# daemon-hygiene-r2 — run report (2026-07-25 21:42 → 2026-07-26 02:34)

Engine 0.1.51, preset `cursor-only`, `--concurrency 1 --unattended`, base `9c97e773`.
Verified before launch: `make test` on a clean worktree at that base is **RC=0,
130 files, 1013 pass / 0 fail, 9m10s**.

## Outcome

| | 7h run (0.1.50) | r2 (0.1.51) |
| --- | --- | --- |
| wall clock | 7h00m | 4h52m |
| terminal event | `run.error` | `run.done` |
| gate0 runs per red | 2 | **1** |
| gate0 reds | 24 | **5** |
| failClass recorded | `timeout` (all 24, wrong) | `check-failed` (all 5, correct) |
| tasks landed | 0 | 0 |

Task outcomes: t1 `wrapper-timeout-repeated`, t3 `zero-diff`, t4 `zero-diff`
(all quarantined); t2 never dispatched (depends on t1).

`GATE_MAX_ATTEMPTS = 1` is confirmed live: 5 `gate0.start` / 5 `gate0.fail`.
`gate0.fail` now records `check`, `rc`, and an `outputTail` log path, so every
red below was diagnosable from the journal alone.

## What the 5 reds actually were

**None of them were caused by a task diff.** Both causes are checks that cannot
*complete*, which produce no per-test failure lines — so `retry_check_isolated`
correctly declined to re-run, and the fixer was handed a red with nothing in the
diff to repair. Hence 4/4 zero-diff give-ups.

1. **3 reds — `tar: ./.tmpjail-work/work: Cannot open: Permission denied`**
   `test/engine-provenance-runtime.test.sh:27` tars the whole repo root with only
   `--exclude=.git --exclude=.worktrees`. A leftover `.tmpjail-work/work`
   directory at mode `0000` (a deliberate permission-jail fixture) makes that tar
   exit non-zero, and `run-tests.sh` aborts the suite. `test/autonomy-e2e.test.sh:41`
   already carries `--exclude=.tmpjail-work` for exactly this reason — the
   provenance test is the inconsistent one. Leaked copies found at the repo root
   and in every task worktree.

2. **2 reds — `TIMEOUT test/codex-sidecar-contract.test.sh exceeded 600s`**
   The same file passes in **8.8s** standalone on a clean worktree. It is
   load-sensitive, not Codex-dependent (it uses a fake `cdx` binary).

## Also observed

Load-sensitive wall-clock failures persist even at `--concurrency 1`, because
gate0 and the cursor agent are themselves the load:
`src/control-config.test.js` (`writeConfigDefaults rechecks If-Match…`, 2407ms),
`src/test/runner-transcript.test.js` (`per-task ceiling overrides…`, 2691ms),
`src/test/runplan-pause.test.js`.

t1's fixer seat (`wrappers/ca.sh`, cursor composer-2.5) consumed **2h01m**
(21:50 → 23:51) across its attempts before `wrapper-timeout-repeated`.

## Verdict

The attribution fix did what it was built for: bounded loops, correct labels,
diagnosable records, clean termination. It does not cover **a check that cannot
complete** — an infra red with no test-failure signature. That is the next gap.
