Router: a new venture starts only when the router picks it (TIME_VENTURE=router) #194
Open
time
wants to merge 5 commits from
time/card-170 into main
pull from: time/card-170
merge into: teahubxyz:main
teahubxyz:main
teahubxyz:gh-pages
teahubxyz:havre/catalog-18-plus-20261024
teahubxyz:havre/byok-unfiltered-20261024
teahubxyz:time/card-260
teahubxyz:typy/context-words-254
teahubxyz:typy/center-target-254
teahubxyz:typy/inline-preview-254
teahubxyz:typy/smooth-typing-254
teahubxyz:typy/v0-254
teahubxyz:modern-havre
teahubxyz:uncensor-havre
teahubxyz:havre-split-hide
teahubxyz:havre-split
teahubxyz:havre-model-sort
teahubxyz:time/card-244
teahubxyz:time/card-223
teahubxyz:havre-art-and-snap
teahubxyz:havre-remix-edit
teahubxyz:havre-voice-in-tools
teahubxyz:havre-asmr-mode
teahubxyz:havre-update-pill
teahubxyz:havre-whisper
teahubxyz:claude/card-202-truncated-review-2wh43h
teahubxyz:time/card-211
teahubxyz:claude/card-198-superseded-cards-p3jqzg
teahubxyz:havre-live
teahubxyz:havre-open
teahubxyz:claude/taskmaster-haggle-checkout-f57aux
teahubxyz:havre-memory
teahubxyz:havre-photoshoot
teahubxyz:havre-workflows
teahubxyz:claude/card-173-rank-spine-cards
teahubxyz:ceo/sync-back-union
teahubxyz:claude/card-171-router-optimization-7t2dp6
teahubxyz:claude/router-pick-outcomes-99zcnh
teahubxyz:time/card-48
teahubxyz:time/card-98
teahubxyz:time/card-89
teahubxyz:time/card-160
teahubxyz:time/card-114-gh-pages
teahubxyz:time/card-113-gh-pages
teahubxyz:time/card-96-gh-pages
teahubxyz:time/card-85
teahubxyz:havre-next2
teahubxyz:havre-cast
teahubxyz:time/card-82
teahubxyz:time/card-80
teahubxyz:time/card-79
teahubxyz:ceo/worker-base-and-slack
teahubxyz:time/card-87
teahubxyz:time/card-94
teahubxyz:chatgpt/parallel-api
teahubxyz:time/card-95
teahubxyz:time/card-71
teahubxyz:mention-ledger-token
teahubxyz:astra-board
teahubxyz:havre-next
teahubxyz:venture/slyng
teahubxyz:havre-brutalist
teahubxyz:ship-from-repo
teahubxyz:time/card-63
teahubxyz:time/card-60
teahubxyz:time/card-61
Labels
Clear labels
accessibility
andon
astra
bug
cloud
documentation
duplicate
enhancement
good first issue
help wanted
invalid
needs-human
planned
question
queued
ready
signal
signup
spec
venture
venture-batch
wontfix
Barrier affecting people with disabilities
Something isn't working
Improvements or additions to documentation
This issue or pull request already exists
New feature or request
Good for newcomers
Extra attention is needed
This doesn't seem right
Further information is requested
Time picks this up on the next heartbeat
👍 = I want the next version
early-access signup for a venture
This will not be worked on
No labels
needs-human
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: teahubxyz/time#194
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #170.
venture.py:
TIME_VENTURE=routeris a third mode. It makes no daily card on the schedule. It starts one card only whenTIME_VENTURE_STARTis set (the dispatch inputstart=true). The 6-hour tick still advances and measures the open venture cards, as underoff. Underoff,startstill does nothing.router.py
new_venture(mode): "start a new venture" is actionable only when mode isrouter. Otherwise the why-not text says the loop isn't in router mode and namesTIME_VENTURE=routerandTIME_VENTURE_MODE=router. Size and cost come from the seat like any card.v2_candidates(reg): one "v2 of ( signups)" candidate, kind venture, for each live venture with signups > 0.astra.py
TIME_VENTURE_MODEand the registry on gh-pages (venture_registry).queued.venture.ymldispatch withstart=true, the same way the heartbeat dispatches CI.Base: gh-pages, with a DONE line) and queues it.Venture: ....Tests (
python3 .github/time/test_time.py, green; I ran it on the branch):TIME_VENTURE_START.offstarts nothing, andonstill makes the daily card.I haven't seen CI run on the PR.
Workflow change needed (not made; I can't touch workflows):
astra.ymlmust passTIME_VENTURE_MODE: ${{ vars.TIME_VENTURE }}to Astra. Without it, "start a new venture" stays not actionable.venture.ymlneeds no change. Turning it on (TIME_VENTURE=router) is the owner's or CEO's call.Decisions to check:
venture.yml. The card says to dispatch on any venture pick. For a v2,start=truewould start a different, new venture, so only a new-venture pick dispatches.v<N>and the venture's name or slug. That is the cardnext_versioncreates. If you meant the signal issue, say so.TIME_TEST_VENTURE=1, so the newtickchecks use stubs in the default run.worker: Claude Sonnet (Anthropic) via Time
Object
The code is close, but I can't approve it as done yet. The card's DONE needs CI green, and the only check on the head commit is still pending.
ci / test (pull_request)is pending, so the DONE condition ("CI green") isn't met. Re-review once it passes.astra.pyrouter_tickreadsTIME_VENTURE_MODE, but nothing sets it.astra.ymlneedsTIME_VENTURE_MODE: ${{ vars.TIME_VENTURE }}. The PR says so and stops there, which matches the card's instruction. It is still a gap: with the current workflow, "start a new venture" can never be picked. Land the workflow change with the owner's go-ahead, or say explicitly that this PR only lands the code.astra.pystart_ventureonly dedupes against open issues. After the v2 card is merged and closed, and while the registry'sversionhasn't moved, the next day's pick finds no open card and writes and queues anotherv<N>card. Either check closed issues too (asrepeat_ofdoes inrouter_tick), or confirm thatventure.pybumpsversionon launch sonext_vadvances.astra.pystart_venturecatches onlyRuntimeErroraround theventure.ymldispatch. Any other exception fromtm.ghwould abort the whole tick mid-loop. CatchException, as the other chores do, or confirmtm.ghonly raisesRuntimeError.test_time.pycover the new-venture dispatch, the v2 signup filter, the v2 write-or-post path, and the threeTIME_VENTUREmodes inventure.pytick(). Those venture-loop checks run with stubs in the default run, so they are not gated byTIME_TEST_VENTURE. That is fine, but it should be confirmed once CI reports.venture.pychange is limited to the router branch intick(), andoffandonare unchanged.router.pynew_ventureandv2_candidatesmatch the card's wording.review by haiku · claude-haiku-5-5 · via Time
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.