Time retries its own parked cards (error / stuck) instead of waiting for a human /time retry
#78
Closed
opened 2026-10-17 19:22:57 +00:00 by teahubxyz
·
5 comments
No Branch/Tag Specified
main
gh-pages
havre/catalog-18-plus-20261024
havre/byok-unfiltered-20261024
time/card-260
typy/context-words-254
typy/center-target-254
typy/inline-preview-254
typy/smooth-typing-254
typy/v0-254
modern-havre
uncensor-havre
havre-split-hide
havre-split
havre-model-sort
time/card-244
time/card-223
havre-art-and-snap
havre-remix-edit
havre-voice-in-tools
havre-asmr-mode
havre-update-pill
havre-whisper
claude/card-202-truncated-review-2wh43h
time/card-211
claude/card-198-superseded-cards-p3jqzg
havre-live
havre-open
claude/taskmaster-haggle-checkout-f57aux
havre-memory
havre-photoshoot
havre-workflows
claude/card-173-rank-spine-cards
ceo/sync-back-union
claude/card-171-router-optimization-7t2dp6
claude/router-pick-outcomes-99zcnh
time/card-48
time/card-98
time/card-170
time/card-89
time/card-160
time/card-114-gh-pages
time/card-113-gh-pages
time/card-96-gh-pages
time/card-85
havre-next2
havre-cast
time/card-82
time/card-80
time/card-79
ceo/worker-base-and-slack
time/card-87
time/card-94
chatgpt/parallel-api
time/card-95
time/card-71
mention-ledger-token
astra-board
havre-next
venture/slyng
havre-brutalist
ship-from-repo
time/card-63
time/card-60
time/card-61
No results found.
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
ready
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#78
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.
Depends on #93
Why. #60, #61 and #63 sat parked for a day because an
errororstuckcard only moves on a human/time retry. A parked card is Time's to retry, within the governor; a human should only hear about it once Time has given up. Both this card and #93 changetick(), so this one lands after it; rebase on #75'stick()if that has landed too.Change (
.github/time/time.py).tick()'s planning loop, afterlastis settled and the/time retrybranch:elif last and last["beat"] in ("error", "stuck") and mode == "live"→ count prior automatic retries on the card (beatscarryingauto_retry); if fewer thanTIME_AUTO_RETRY(default 1) and no open PR is linked to the card, setlast = Noneandauto = True. A card with an open PR is left to the existing review path.autothrough the plan tuple. On dispatch, the "working on this" beat says "Retrying on my own, resuming the branch." and both dispatch beats carry"auto_retry": true. A seat worker getssteps = int(TIME_WORKER_STEPS * 1.5)on an automatic retry:venice_work(..., steps=None)gains the kwarg and uses it in place of the env default. (Handsalready resumes the card's branch, so the second pass continues the first one's work.) Follow-up, onceseats.jsoncarries tiers: the second automatic retry escalates one tier (Terra → Sol) instead of adding turns.stuckcomment ends "I'll dispatch again on my own next beat; comment/time retryto force one."; theerrorcomment ends "I'll retry on my own next beat (TIME_AUTO_RETRY times in all); comment/time retryfor one more."Tests.
errorwith no PR → redispatched next beat, beat carriesauto_retry;stuckwith no PR → retried too; after one automatic retry (default) a seconderrorwaits for a human, withTIME_AUTO_RETRY=2it tries again;stuckwith an open linked PR is reviewed, not redispatched; dry-run retries nothing; avenice:worker on an automatic retry getssteps == 60whenTIME_WORKER_STEPS=40(stubvenice_workwith**kwto capture it). PopTIME_WORKER,TIME_WORKER_STEPS,TIME_AUTO_RETRYafter.CHANGELOG line under "### Added".
DONE: PR open with the code above,
python3 .github/time/test_time.pygreen including the new checks, CI greenFollow-up from an executed independent Sol review of #75: also cover genuine budget-cap resumption, not only
error/stuck. Currently a worker writesdispatched, then hitsBudget; the latercappedbeat is filtered out ofreal, leavingdispatchedas the last state. When allowance returns, no PR exists and it eventually becomes stuck rather than resuming immediately. Preserve the same branch/revision context and count one retry per attempt, not per receipt.PR #75 now fixes the NEW case where another request merely holds an in-flight reservation: the waiting worker resumes in the same heartbeat when that reservation settles. It deliberately does not claim to fix true-cap recovery or cross-process reservations. Add a test for dispatch -> actual cap -> authoritative pool reset/allowance returns -> exactly one continuation, with no manual retry and no duplicate active worker. Keep the current pool's budget check; do not raise caps to make the test pass.
⏱️ Time: Claude Sonnet (Anthropic) is working on this now, on branch
time/card-78.⏱️ Time:
sonnetopened PR #132 (23 steps, claude-sonnet-5-5). Review and landing follow on the next beat.⏱️ Time: PR #132 is up for this card.
haikureviewed it on the PR.⏱️ Time: approved and green, merged PR #132. Card done.