Worker: build where the card says (Base: <branch>), finish what it starts (the cap gates launches), oldest card first #121

Merged
time merged 5 commits from ceo/worker-base-and-slack-2 into main 2026-10-18 04:59:23 +00:00
5 Commits
Author SHA1 Message Date
teahubxyzandClaude Fable 5.1 d7bfabee4e changelog: say why oldest-first matters (also moves the head past a status from a cancelled heartbeat run)
ci / test (pull_request) Successful in 34s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 04:57:25 +00:00
teahubxyzandClaude Fable 5.1 d534bb7522 the slack is per thread: #75 overlaps workers in one process, and one run leaving finishing() must not drop another's allowance
ci / test (pull_request) Successful in 35s
heartbeat / tick (pull_request_review) Canceled after 0s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 04:47:46 +00:00
teahubxyzandClaude Fable 5.1 d8e51704c8 changelog: Base: branches, a launched worker finishes, oldest card first
ci / test (pull_request) Successful in 34s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 04:44:56 +00:00
teahubxyzandClaude Fable 5.1 cfaefb734a tests: a card's Base: branch (14b); the cap gates launches, a run under way finishes, open PRs get reviewed, oldest first (57)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 04:44:32 +00:00
teahubxyzandClaude Fable 5.1 5f4e37b213 worker: build where the card says (Base: <branch>), finish what it starts (TIME_CAP_SLACK), oldest card first
A `Base: <branch>` line in a card makes the seat worker cut its branch from that base (named time/card-N-<base>), see
that branch's files and open the PR against it: every venture card lives on gh-pages and until now the worker always
branched from main, which is why #60, #63, #95 ran out of turns and #109 targeted the wrong branch.

The daily spend cap gates launches; a run that began within budget may finish, up to TIME_CAP_SLACK x the cap (1.5),
and a PR already open gets its review on a capped day too (#87's run was stopped at step 27 with the spend lost). The
monthly cap stays hard. The tick takes the oldest ready card first, as promote_next does.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 04:43:55 +00:00