Venture loop on Teahub with Claude seats (port of #48) #139

Closed
opened 2026-10-18 16:58:10 +00:00 by teahubxyz · 3 comments
Owner

The venture loop never ran on prod: venture.py was still GitHub-shaped (#48). The owner wants it back on the Claude API, with fable leading and the other three Claude seats voting and executing, every 6 hours.

Changes (PR from ceo/venture-teahub, already open; Time adopts and reviews it):

  • Seats: fable chairs (LAUNCH.md synthesis, launch drafts, the build's judge); haiku, sonnet, opus pitch, vote and write plans; claude:sonnet builds; claude:opus takes the second fix round. TIME_WORKER is no longer coerced to Venice.
  • Scout: GitHub's public search, unauthenticated (the forge has no /search/repositories).
  • Gitea shapes: cards via tm.issues (pull_request: null), label ids on create, tm.unlabel, reactions null, 50-row pages, milestone id, trusted /time retry via tm.trusted, signups by label or prefilled title, seats and Time's users never count as signups.
  • Pages: no Pages API; each venture at https://<slug>.yolopreneur.lol/ (TIME_VENTURE_PAGES_DOMAIN), links on the forge.
  • Astra never queues venture/venture-batch/signal/signup issues.
  • Test 79 pins the port (runs in CI); the lifecycle tests stay behind TIME_TEST_VENTURE=1 until their fake is ported.

The 6-hour schedule and the workflow's seat variables are a separate workflow PR (CEO merge).

DONE: PR merged with test_time.py green in CI, and a venture.yml run with start=true posts its scout/pitch beats on a new venture card.

The venture loop never ran on prod: venture.py was still GitHub-shaped (#48). The owner wants it back on the Claude API, with fable leading and the other three Claude seats voting and executing, every 6 hours. Changes (PR from `ceo/venture-teahub`, already open; Time adopts and reviews it): - Seats: fable chairs (LAUNCH.md synthesis, launch drafts, the build's judge); haiku, sonnet, opus pitch, vote and write plans; `claude:sonnet` builds; `claude:opus` takes the second fix round. `TIME_WORKER` is no longer coerced to Venice. - Scout: GitHub's public search, unauthenticated (the forge has no `/search/repositories`). - Gitea shapes: cards via `tm.issues` (`pull_request: null`), label ids on create, `tm.unlabel`, reactions null, 50-row pages, milestone `id`, trusted `/time retry` via `tm.trusted`, signups by label or prefilled title, seats and Time's users never count as signups. - Pages: no Pages API; each venture at `https://<slug>.yolopreneur.lol/` (`TIME_VENTURE_PAGES_DOMAIN`), links on the forge. - Astra never queues `venture`/`venture-batch`/`signal`/`signup` issues. - Test 79 pins the port (runs in CI); the lifecycle tests stay behind `TIME_TEST_VENTURE=1` until their fake is ported. The 6-hour schedule and the workflow's seat variables are a separate workflow PR (CEO merge). DONE: PR merged with test_time.py green in CI, and a `venture.yml` run with `start=true` posts its scout/pitch beats on a new venture card.
teahubxyz added the ready label 2026-10-18 16:59:33 +00:00

⏱️ Time: adopted PR #140, built outside the worker. haiku reviewed it on the PR.

⏱️ Time: adopted PR #140, built outside the worker. `haiku` reviewed it on the PR. <!-- time {"beat":"pr","pr":140,"adopted":true,"launched":false,"seat":"haiku","as":"seat","review":"venice","seats":["haiku"]} -->

⏱️ Time: the reviewer objected on PR #140. Over to a human (or comment /time retry to send it back to the worker with the review attached).

⏱️ Time: the reviewer objected on PR #140. Over to a human (or comment `/time retry` to send it back to the worker with the review attached). <!-- time {"beat":"needs-human","pr":140} -->
teahubxyz removed the ready label 2026-10-18 17:14:30 +00:00
time closed this issue 2026-10-18 17:24:36 +00:00
Author
Owner

First live run (venture.yml run 981, start=true): the Claude seats scouted, pitched (6 pitches: haiku, sonnet, opus two each) and voted unanimously for Loot Drop (#148), Cartridge (#149) and Huebrain (#150), plus today's single card #147. DONE line met: scout and pitch beats on a new venture card.

One thing caught mid-run: the GitHub-era venture cards (#11, #12, #15, #18, #20, #27, #28, #29, #43) carried their history as comments authored by teahubxyz (the migration), and Time counts only its own beats, so each looked unstarted and would have been re-pitched as a brand-new venture. Batch #26 was reused that way before I noticed; its new children are the three above. I closed the nine old cards (their ventures are live and listed in ventures.json; their signal issues stay open for housekeeping's 7-day sweep), so the loop runs only on cards it made itself.

First live run (venture.yml run 981, `start=true`): the Claude seats scouted, pitched (6 pitches: haiku, sonnet, opus two each) and voted unanimously for Loot Drop (#148), Cartridge (#149) and Huebrain (#150), plus today's single card #147. DONE line met: scout and pitch beats on a new venture card. One thing caught mid-run: the GitHub-era venture cards (#11, #12, #15, #18, #20, #27, #28, #29, #43) carried their history as comments authored by `teahubxyz` (the migration), and Time counts only its own beats, so each looked unstarted and would have been re-pitched as a brand-new venture. Batch #26 was reused that way before I noticed; its new children are the three above. I closed the nine old cards (their ventures are live and listed in `ventures.json`; their signal issues stay open for housekeeping's 7-day sweep), so the loop runs only on cards it made itself.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: teahubxyz/time#139