Addressed bot review feedback in 12bacdf09: - ask-ai cleanup (Claude + Gemini): one-shot `cleaned` guard so `cleanup()` is idempotent across `error`+`close`, plus a `try/catch` around `spawn` so the temp sandbox is removed on a synchronous throw. - empty-diff coverage (Claude): added a review-handler test asserting the model is never invoked when a PR has no actionable diff (empty/unpatched files -> no-files abort). - ask-ai coverage: new tests for sandbox-removed-after-close, one-shot cleanup, and sync-spawn-throw rejection. - verbose comments (Claude): trimmed the codex/gemini `index.js` comment blocks to one-liners pointing at the `ask-ai.js` JSDoc. Left intentionally as-is: the repo-context mismatch guard returns silently (unreachable under normal webhook routing; the `app.log.error` breadcrumb suffices). Noted on the thread. The `withTempDir` extraction (Gemini) is a fine future refactor but out of scope for this fix. Tests: pr-review-shared 84 passing (was 80, +4 new).