Commit Graph
189 Commits
Author SHA1 Message Date
time f8273000e6 card #85: update dojo/agent-management/08_heal_the_andon.py 2026-10-19 02:19:56 +00:00
time 75ca22a7ba card #85: update dojo/agent-management/07_a_block_you_can_repair.py 2026-10-19 02:19:55 +00:00
time a855684e11 card #85: update dojo/agent-management/06_hand_off_with_a_receipt.py 2026-10-19 02:19:55 +00:00
time 4f1641701e card #85: update dojo/agent-management/05_act_as_yourself.py 2026-10-19 02:19:54 +00:00
time 317997b1c7 card #85: update dojo/agent-management/04_route_through_the_bus.py 2026-10-19 02:19:39 +00:00
time 48da588663 card #85: update dojo/agent-management/03_retry_on_your_own.py 2026-10-19 02:19:38 +00:00
time b7cdee8f3e card #85: update dojo/agent-management/02_size_the_card.py 2026-10-19 02:19:37 +00:00
time 00a7b021ca card #85: update dojo/agent-management/01_read_the_room.py 2026-10-19 02:19:37 +00:00
time 1c7cc02ac6 card #85: kept dojo/run.py, dojo/lib.py (generated) 2026-10-19 02:19:21 +00:00
time 21d47f9129 card #85: update dojo/run.py
time/worker-run python3 - <<'EOF' p="dojo/run.py"; s=open(p).read() s=s.replace("args.turns, spent, args.max_usd - s
2026-10-19 02:19:16 +00:00
time 8b28d227d9 card #85: update dojo/lib.py 2026-10-19 02:18:55 +00:00
teahubxyzandClaude Opus 5.5 b7bd03c6fd pools: pace Claude spend to the Anthropic credit ($161.49 left on 2026-10-19, lapses 2026-11-08)
ci / test (push) Successful in 36s
time/worker-run cd .github/time; grep -n "stuck_h =\|auto_max =\|TIME_AUTO_RETRY" time.py | head | cut -c1-220; sed
The owner's credit: $200 granted 2026-10-13, $162.22 left on the 18th by the console, expiring 2026-11-08. The ledger
books $38.51 of Claude spend since the grant, so $161.49 as of the 19th. Paced over the 20 days left that is about
$8/day for the anthropic route; the $100 monthly cap stays hard and binds first in October.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 01:10:37 +00:00
teahubxyzandClaude Opus 5.5 ec043b2985 Adaptive budget: pace spend to each capacity pool (re-cut of #167 onto main) (#174)
ci / test (push) Successful in 36s
Adaptive budget: pace spend to each capacity pool (#174, re-cut of #167)

The worker's #82 change (sonnet via Time): budget_check(route) paces each call to its capacity pool in
time/pools.json (expiring credit spread over the days left, refilling windows, or TIME_DAILY_USD without a pool);
the monthly cap stays hard. pools.json is read through the API once per run, since every workflow checks out only
.github/time. Ships empty: nothing changes until it is filled in. Closes #82.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 01:10:09 +00:00
time 463a6fecbb ledger: 1 calls, $0.00 2026-10-19 01:07:54 +00:00
time 0fdce2c58f ledger: 1 calls, $0.18 2026-10-19 01:02:01 +00:00
teahubxyzandClaude Opus 5.5 b8d52252f4 Router v1: the factory ranks its own next work (dry to start) (#169)
ci / test (push) Successful in 34s
Router v1: the factory ranks its own next work, dry to start (#169)

Astra's seat judges every candidate (kind, value, size); router.py ranks them with the owner's weights per kind
(time/router.json), a restless boost and card age. dry posts the table; live queues from the top within the day's
money and the heartbeat promotes queued cards in ranked order. Astra reads the last 14 days of its log. Closes #168.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 01:00:17 +00:00
time b8041955ab ledger: 19 calls, $0.55 2026-10-19 00:10:39 +00:00
teahubxyz 3d1865ecb9 Signups count by the venture's name, not only its slug (#159)
ci / test (push) Successful in 35s
Co-authored-by: teahubxyz <boring+teahub@agentmail.to>
2026-10-19 00:10:37 +00:00
time ef00a80f7f ledger: 1 calls, $0.00 2026-10-19 00:07:41 +00:00
teahubxyzandClaude Opus 5.5 97e3e1f35f venture: the lead (opus) researches and picks the day's venture alone; fable is out (#164)
ci / test (push) Successful in 35s
venture: the lead (opus) researches and picks the day's venture alone; fable is out (#164)

One seat, TIME_VENTURE_LEAD (opus), runs the day's venture: a research round over the top trending repos (with the
start of their READMEs) and the studio's track record, TIME_VENTURE_FIELD candidates with a verdict each, one pick;
no pitches, no vote. It writes the launch plan alone and judges the build, and hands the launch drafts to its helper
(TIME_VENTURE_HELPER, sonnet). The chair and judge default to opus. Batches keep the board; TIME_VENTURE_LEAD=board
brings it back for the daily venture. Closes #165.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 22:11:50 +00:00
teahubxyzandClaude Opus 5.5 c268e75234 venture: one venture a day, built for quality (#162)
ci / test (push) Successful in 34s
venture: one venture a day, built for quality (#162)

The day's card starts only once every other venture card is launched or held; the board picks one from a field of
TIME_VENTURE_FIELD (6) pitches; opus builds; the judge scores the product 1-10 and a page under TIME_VENTURE_BAR (8)
gets polish rounds (never the last of TIME_VENTURE_FIXES=3), then launches with its score. An open batch card with
no Time beats no longer starts a batch while batches are off. Closes #163.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 22:04:49 +00:00
teahubxyzandClaude Opus 5.5 e6f04f614a venture.yml: install Chromium for the browser pass (#157)
ci / test (push) Successful in 35s
venture.yml: install Chromium for the browser pass (#157)

The first Claude ventures launched without the browser pass (no Chrome on the runner): no headless checks, no
contact sheet for the portfolio. One step installs Chromium in the job image; venture.py's chrome() finds it.
Merged on the owner's word, CI green (run 1014).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 19:46:19 +00:00
time 4512c59c8f ledger: 10 calls, $0.75 2026-10-18 18:32:22 +00:00
time 3f81c2cfa9 ledger: 37 calls, $3.43 2026-10-18 18:17:46 +00:00
time facd11d390 ledger: 2 calls, $0.01 2026-10-18 17:52:37 +00:00
teahubxyz f329066a51 Worker: a cut-off tool call is an error the worker reads, not a crash (#155)
ci / test (push) Successful in 35s
Co-authored-by: teahubxyz <boring+teahub@agentmail.to>
2026-10-18 17:52:36 +00:00
time a7c92b6497 ledger: 27 calls, $0.72 2026-10-18 17:52:02 +00:00
time 80f21b58ea ledger: 45 calls, $3.17
time/worker-run cat > /tmp/patch.py <<'EOF' import re p = ".github/time/time.py" s = open(p).read() def sub(old, new
2026-10-18 17:46:45 +00:00
teahubxyzandClaude Opus 5.5 8fe83ac05a venture.yml: every 6 hours, Claude seats (#141)
ci / test (push) Successful in 35s
venture.yml: every 6 hours, Claude seats (#141)

Owner's call: the venture loop runs every 6 hours instead of every 20 minutes, on the Claude seats.
The builder is vars.TIME_VENTURE_WORKER || claude:sonnet, decoupled from the heartbeat's worker.
Merged on the owner's word after the council approved the engine half (#140).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 17:25:59 +00:00
teahubxyz ebedc7a5bc Venture loop on Teahub with Claude seats (#140)
ci / test (push) Successful in 35s
Co-authored-by: teahubxyz <boring+teahub@agentmail.to>
2026-10-18 17:24:35 +00:00
teahubxyz 8ab719e2f2 Ponytail on prod: seat workers carry its rules (#145)
ci / test (push) Successful in 36s
Co-authored-by: teahubxyz <boring+teahub@agentmail.to>
2026-10-18 17:24:33 +00:00
time 4b521f7a86 ledger: 2 calls, $0.01 2026-10-18 17:24:27 +00:00
time 8c0d93db9d ledger: 1 calls, $0.00 2026-10-18 17:18:58 +00:00
time 9abd17f979 ledger: 1 calls, $0.01 2026-10-18 17:16:19 +00:00
time 5fac881ec5 ledger: 1 calls, $0.01 2026-10-18 16:59:59 +00:00
teahubxyz 385b1a48d0 A label filter is checked on every row: housekeeping listed all 59 open issues as parked (#138)
ci / test (push) Successful in 35s
Co-authored-by: teahubxyz <boring+teahub@agentmail.to>
2026-10-18 16:22:20 +00:00
time 429595a543 ledger: 1 calls, $0.00 2026-10-18 16:22:14 +00:00
teahubxyzandClaude Opus 5.5 0543771a02 Workflows batch: heartbeat knobs, housekeeping.yml, its test in CI (#127)
ci / test (push) Successful in 35s
Workflows batch: heartbeat knobs, housekeeping.yml, its test in CI (#127)

heartbeat.yml passes TIME_CAP_SLACK, TIME_ANTHROPIC_API (the caching kill switch), TIME_REVIEW_TIEBREAK and TIME_REVIEW_QUORUM; housekeeping.yml runs the daily sweep at 13:17 UTC; ci.yml runs test_housekeeping.py. Owner-approved merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 16:10:58 +00:00
time 501192977d ledger: 1 calls, $0.00 2026-10-18 08:07:52 +00:00
time 61e0712f63 ledger: 25 calls, $0.85 2026-10-18 07:25:26 +00:00
time 4c91878f93 Time retries its own parked cards (error / stuck) (#132)
time/worker-run cd .github/time; sed -n 1120,1190p time.py; grep -n "andon" venture.py | head; grep -n "TIME_MODE" t
ci / test (push) Successful in 35s
Co-authored-by: Time <time@users.noreply.teahub.xyz>
2026-10-18 07:17:32 +00:00
time 0cf097c1c3 ledger: 51 calls, $1.40 2026-10-18 07:16:17 +00:00
time e6bee7ccfe ledger: 4 calls, $0.01
time/worker-run python3 - <<'EOF' p = "/tmp/p/tests_new.py" s = open(p).read() s = s.replace(' and w.posted == w.pos
2026-10-18 06:08:18 +00:00
time cbd9d7536b ledger: 62 calls, $1.72 2026-10-18 05:15:05 +00:00
teahubxyzandClaude Fable 5.1 bed8743c94 checks(): a status from one of Time's own workflows is not a check (#124)
ci / test (push) Successful in 35s
checks(): a status from one of Time's own workflows is not a check (#124)

A seat's review wakes heartbeat.yml during a heartbeat; the concurrency group cancels the run and Gitea records it as a failure on the PR head. Those statuses neither block nor earn a merge; CI decides. Owner-approved merge.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-18 05:08:14 +00:00
time a6f4542203 ledger: 1 calls, $0.00 2026-10-18 04:59:28 +00:00
time b61b185201 Council verdict: TIME_REVIEW takes several seats, votes count per seat, TIME_REVIEW_TIEBREAK on a tie (#122)
ci / test (push) Successful in 34s
Co-authored-by: Time <time@users.noreply.teahub.xyz>
2026-10-18 04:59:25 +00:00
teahubxyz 86b1207c4d Worker: build where the card says (Base: <branch>), finish what it starts (the cap gates launches), oldest card first (#121)
ci / test (push) Successful in 34s
Co-authored-by: teahubxyz <boring+teahub@agentmail.to>
2026-10-18 04:59:23 +00:00
teahubxyz bcdc71383e Claude calls go to Anthropic's own Messages API with prompt caching; the ledger prices cached tokens (#120)
ci / test (push) Successful in 34s
Co-authored-by: teahubxyz <boring+teahub@agentmail.to>
2026-10-18 04:59:20 +00:00
time 2bfaf6f672 ledger: 3 calls, $0.01 2026-10-18 04:50:46 +00:00