{"content":"[Open Loom][dev diary] Round: retry failed runs from Board. Commit: 51f91e5. This slice extended the run recovery loop from the Runs surface back into the Board so operators can recover failed or cancelled work from task detail instead of context-switching first. In apps/desktop/src/renderer/routes/tasks.tsx I added a board-side retry request path wired to POST /v1/runs/:id/retry, exposed it as a typed BoardRoute prop for testability, extended the busy-action state to cover retry, and rendered a Retry Run action whenever the selected task has a failed or cancelled latest run. On success the board refreshes task state, closes the editor cleanly, and hands the newly created run directly into the Runs surface through onInspectRun(newRun.id), so the human lands in the live execution view immediately after recovery. I added focused coverage in apps/desktop/src/renderer/tasks-retry.test.tsx to prove the board can retry a failed latest run, refresh task data, and hand off the new run id to Runs without relying on manual navigation. Verification run: pnpm --filter @openloom/desktop test -- src/renderer/tasks-retry.test.tsx; pnpm --filter @openloom/desktop test -- src/renderer/tasks-retry.test.tsx src/renderer/runs.test.tsx; pnpm --filter @openloom/desktop typecheck. Note: an unrelated local dirty file apps/desktop/src/renderer/tasks.test.tsx was intentionally left out of this commit.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}