From b53016007adaab1e36b11816d8fd9323414fce22 Mon Sep 17 00:00:00 2001 From: teahubxyz Date: Sat, 17 Oct 2026 20:16:32 +0000 Subject: [PATCH] heartbeat: 55-minute job, and the claude seat's token for reviews The job timeout moves from 20 to 55 minutes: workers can overlap inside one run (#75), and at 20 every in-flight worker died together. TIME_SEAT_CLAUDE reaches the heartbeat so the reviewer can post as the `claude` user once #76 lands; until then it is unused. Both on the owner's explicit instruction (CEO session). Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD --- .github/workflows/heartbeat.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/heartbeat.yml b/.github/workflows/heartbeat.yml index f891577..6f772c7 100644 --- a/.github/workflows/heartbeat.yml +++ b/.github/workflows/heartbeat.yml @@ -24,7 +24,7 @@ jobs: (startsWith(github.event.comment.body, '**Approve') || startsWith(github.event.comment.body, 'Approve') || startsWith(github.event.comment.body, '**Object') || startsWith(github.event.comment.body, 'Object')))) runs-on: ubuntu-latest - timeout-minutes: 20 + timeout-minutes: 55 # workers can overlap inside one job now (#75); under the hourly cadence, and the concurrency group queues the next run steps: - uses: actions/checkout@v5 with: @@ -37,6 +37,7 @@ jobs: VENICE_API_KEY: ${{ secrets.VENICE_API_KEY }} ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} # user-level secret on teahubxyz (docs/decisions.md on the spine) TIME_TOKEN: ${{ secrets.TIME_TOKEN }} # repo secret: the `time` bot opens and merges PRs (Gitea denies that to the Actions identity) + TIME_SEAT_CLAUDE: ${{ secrets.TIME_SEAT_CLAUDE }} # the `claude` seat: the reviewer's verdict is a real Gitea review by its own user (#76) TIME_TRUSTED: ${{ vars.TIME_TRUSTED }} # org owners etc.; collaborators are trusted without being listed TIME_RUN_IMAGE: node:22-bookworm # the worker's shell runs in a throwaway container, not next to these secrets TIME_MODE: ${{ vars.TIME_MODE }}