Commit Graph
254 Commits
Author SHA1 Message Date
time eeb931a7eb card #243: kept .github/time/time.py, .github/time/test_time.py (generated)
ci / test (pull_request) Successful in 45s
heartbeat / tick (pull_request_review) Successful in 1m1s
2026-10-22 19:09:11 +00:00
time ccfcb44a45 card #243: kept README.md, CHANGELOG.md, .claude/skills/time/SKILL.md, .github/time/time.py, .github/time/test_time.py (generated)
time/worker-run cd .github/time && python3 - <<'E' p='time.py'; s=open(p).read() s=s.replace('''def promote_next() -
2026-10-22 19:08:58 +00:00
teahubxyz f479c5f016 quc v0: the cage, the chair, the safeword, the magic words, the replay (#241)
ci / test (push) Successful in 52s
quc / deploy (push) Failing after 3m34s
sync / sync (push) Successful in 10s
time/worker-run cd .github/time && python3 - <<'E' p='time.py'; s=open(p).read() s=s.replace(''' try: ret
2026-10-22 18:26:41 +00:00
time 582695df5a ledger: 1 calls, $0.19 2026-10-22 13:14:22 +00:00
time a134dee05d ledger: 1 calls, $0.00 2026-10-22 11:07:54 +00:00
time b5c01c24f4 ledger: 7 calls, $0.10 2026-10-22 10:09:21 +00:00
time e725e51f64 Start screen: pitch + repo/task form (#238)
ci / test (push) Successful in 43s
sync / sync (push) Successful in 8s
Co-authored-by: Time <time@users.noreply.teahub.xyz>
2026-10-22 10:08:09 +00:00
time db0eb49b52 ledger: 1 calls, $0.00 2026-10-22 10:07:55 +00:00
time 79c9f1fe36 ledger: 7 calls, $0.10 2026-10-22 09:08:41 +00:00
time 7a805ce5ae Scaffold quc app shell, health check and Cloudflare deploy (#237)
ci / test (push) Successful in 45s
sync / sync (push) Successful in 8s
time/worker-run grep -rniE "quc" --include=*.md --include=*.json . -l | head; grep -rniE "tone|voice" README.md .cla
Co-authored-by: Time <time@users.noreply.teahub.xyz>
2026-10-22 08:40:28 +00:00
time 2f112ef3c5 ledger: 9 calls, $0.18 2026-10-22 08:09:56 +00:00
teahubxyz e81560e9ca inference: bind TTS_MODELS as a worker var, adding Inworld, Gemini, MiniMax and xAI TTS (for the gandora ASMR voice bake-off)
ci / test (push) Successful in 47s
inference / deploy (push) Failing after 1m14s
sync / sync (push) Successful in 9s
time/worker-run grep -rIil "quc\|chair" . --exclude-dir=.git --exclude-dir=node_modules | head; cat .gitignore; sed
2026-10-21 18:35:15 +00:00
time 33af9cfc2f ledger: 1 calls, $0.19 2026-10-21 13:14:21 +00:00
teahubxyzandClaude Fable 5.1 c4d19dcfac speech: pass the style prompt and temperature through (Qwen3 / Orpheus / Chatterbox), allow ElevenLabs turbo and Chatterbox HD
ci / test (push) Successful in 43s
inference / deploy (push) Failing after 1m10s
sync / sync (push) Successful in 8s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 08:20:20 +00:00
teahubxyzandClaude Fable 5.1 1e75806f4f inference: dev.gandora.lol may call the worker
ci / test (push) Successful in 43s
inference / deploy (push) Failing after 1m10s
sync / sync (push) Successful in 7s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 06:17:10 +00:00
time bd431f3092 review: a review past the output limit says so, and is never a silent Object (#202) (#213)
ci / test (push) Successful in 43s
sync / sync (push) Successful in 8s
2026-10-21 03:08:46 +00:00
time f1f9f7ad1a ledger: 1 calls, $0.00 2026-10-21 03:08:05 +00:00
teahubxyzandClaude Fable 5.1 09e5f99b86 inference: POST /v1/speech — Venice TTS (model in TTS_MODELS) for the DJ's spoken breaks; counts as a render
ci / test (push) Successful in 44s
inference / deploy (push) Failing after 1m11s
sync / sync (push) Successful in 7s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:14:25 +00:00
time 59ff3766bd ledger: 1 calls, $0.00 2026-10-21 02:09:56 +00:00
time af52c60e4a housekeeping: list open cards whose work a closed card already did (#210)
ci / test (push) Successful in 45s
sync / sync (push) Successful in 8s
2026-10-21 02:09:45 +00:00
time 6db6a742c2 ledger: 9 calls, $0.13 2026-10-21 02:08:48 +00:00
teahubxyzandClaude Fable 5.1 ba998b6a82 inference: a reference track sets the length — Runware refuses duration alongside inputs.audio
ci / test (push) Successful in 45s
inference / deploy (push) Failing after 1m10s
sync / sync (push) Successful in 7s
time/worker-run cd .github/time; python3 - <<'E' p='test_time.py'; s=open(p).read() s=s.replace('("I cannot do that
ci / test (pull_request) Successful in 45s
heartbeat / tick (pull_request_review) Successful in 10s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:42:33 +00:00
teahubxyzandClaude Fable 5.1 3ad797b37f inference: when Runware fails and Venice renders instead, say why in x-fallback
ci / test (push) Successful in 46s
inference / deploy (push) Failing after 1m10s
sync / sync (push) Successful in 7s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:36:27 +00:00
teahubxyzandClaude Fable 5.1 0c9ce5e966 inference: Runware wants the meter as beats per bar (2/3/4/6), not "3/4"
ci / test (push) Successful in 47s
inference / deploy (push) Failing after 1m11s
sync / sync (push) Successful in 9s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:34:13 +00:00
teahubxyzandClaude Fable 5.1 7dd77d29a8 inference: tracks up to 300 s
sync / sync (push) Canceled after 0s
ci / test (push) Successful in 43s
inference / deploy (push) Failing after 1m10s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:28:41 +00:00
teahubxyzandClaude Fable 5.1 9888e78abb inference /v1/render: duration up to AUDIO_SECONDS (300 on Runware), timeSignature, and a reference audio (base64 data URL) for remixes; render bodies may carry it (8 MB)
ci / test (push) Successful in 42s
inference / deploy (push) Failing after 1m10s
sync / sync (push) Successful in 7s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:28:33 +00:00
teahubxyzandClaude Fable 5.1 45d577db5b inference: quota counters cost one KV write per call and fail open — free-tier KV (1,000 writes/day) ran out and answered 500 for every call
ci / test (push) Successful in 42s
inference / deploy (push) Failing after 1m10s
sync / sync (push) Successful in 6s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:53:23 +00:00
teahubxyzandClaude Fable 5.1 90e5d71a64 inference: tracks up to 120 s
ci / test (push) Successful in 43s
inference / deploy (push) Failing after 1m10s
sync / sync (push) Successful in 6s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:35:26 +00:00
teahubxyzandClaude Fable 5.1 965729b5fb SECRETS.md: every secret the factory uses — what for, where it lives, what consumes it
ci / test (push) Successful in 44s
sync / sync (push) Successful in 7s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:19:42 +00:00
teahubxyzandClaude Fable 5.1 755faf73c4 inference workflow: default the account id and zone; only the Cloudflare token and keys come from secrets
ci / test (push) Successful in 43s
inference / deploy (push) Failing after 3s
sync / sync (push) Successful in 6s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:16:00 +00:00
teahubxyzandClaude Fable 5.1 030773bffb inference workflow: deploy the shared inference worker from Actions (secrets stay in the repo)
ci / test (push) Successful in 43s
inference / deploy (push) Failing after 2s
sync / sync (push) Successful in 6s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:14:21 +00:00
teahubxyzandClaude Fable 5.1 6ecbb04730 inference.py: bind RUNWARE_API_KEY as an optional worker secret
ci / test (push) Successful in 43s
sync / sync (push) Successful in 6s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:08:03 +00:00
teahubxyzandClaude Fable 5.1 f6296115dd inference: POST /v1/render — one call, audio back (Runware ACE-Step when RUNWARE_API_KEY is bound, Venice queue+poll fallback; x-seed/x-cost/x-renderer)
ci / test (push) Successful in 44s
sync / sync (push) Successful in 7s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:07:50 +00:00
teahubxyzandClaude Fable 5.1 8a2543f2cf inference: quota counters in KV, not D1 (the Workers token has KV, not D1)
ci / test (push) Successful in 43s
sync / sync (push) Successful in 6s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 19:08:01 +00:00
teahubxyzandClaude Fable 5.1 5f61220fdc time: a shared inference Worker, so venture pages call Venice without a key in the page
ci / test (push) Successful in 45s
sync / sync (push) Successful in 8s
cloudflare/inference.js: one Worker (time-inference) at inference.<TIME_VENTURE_DOMAIN> holding VENICE_API_KEY as a
secret; venture pages send the same bodies they would send Venice, with an x-app header. Allowlisted routes (chat,
music quote/queue/retrieve/complete, image generate), allowlisted models, size caps, and per-person / per-app daily
quotas in D1 (the same counter pattern as worker.js). inference.py deploys it; idempotent.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 19:03:30 +00:00
time bd0bbbc9ac ledger: 1 calls, $0.01 2026-10-20 17:08:05 +00:00
time 396b08316a ledger: 1 calls, $0.01 2026-10-20 15:08:10 +00:00
time 07b4133f55 ledger: 1 calls, $0.19 2026-10-20 13:14:19 +00:00
teahubxyzandClaude 0112590a41 venture-loop.yml: quote the step name with a colon in it (YAML read it as a key: a jobless failed run)
ci / test (push) Successful in 42s
sync / sync (push) Successful in 6s
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: open-workflows-venture-loop
2026-10-20 05:24:58 +00:00
teahubxyzandClaude 245a77fc81 venture-loop.yml: env at the job, as venture.yml has it (Gitea made a jobless failed run of the workflow-level form)
venture-loop.yml (push) Invalid workflow file
sync / sync (push) Canceled after 0s
ci / test (push) Successful in 43s
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: open-workflows-venture-loop
2026-10-20 05:24:32 +00:00
teahubxyzandClaude 5ead220472 venture-loop.yml: the venture loop as one step per stage, the first real workflow for Havre's /open canvas
venture-loop.yml (push) Invalid workflow file
sync / sync (push) Canceled after 0s
ci / test (push) Successful in 42s
Dispatch it with a card number (or `new`) and it walks that card scout -> research/pitch -> board -> plan -> build ->
check/fix/judge/launch -> measure, each step `venture.py stage <card> <at>`, which does nothing when the card stands
elsewhere. Import the file at havre.yolopreneur.lol/open and it is a chain of eleven Step nodes; export brings it back
identical, with any Venice nodes spliced in as runner steps.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: open-workflows-venture-loop
2026-10-20 05:23:37 +00:00
teahubxyzandClaude 6aad6fedd4 venture: a stage command, one stage of one card, so a workflow can walk the loop step by step
ci / test (push) Successful in 43s
sync / sync (push) Successful in 6s
`python3 .github/time/venture.py stage <card> [<at>]` advances one card once, only when it stands at <at> (a
step that isn't due is not a failure); `stage new [<title>]` opens a card and prints its number. The venture
loop is now also a chain of these in .github/workflows/venture-loop.yml, which Havre's /open imports as nodes.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: open-workflows-venture-loop
2026-10-20 05:22:26 +00:00
teahubxyzandClaude Fable 5.1 822cf891d3 refresh: land only what the build changed, as a patch on the latest gh-pages, instead of copying a stale checkout over it
ci / test (push) Successful in 48s
sync / sync (push) Successful in 7s
A run's source checkout is taken at job start; the gh-pages checkout it commits to is taken minutes later, after
the queue and the build. Copying the whole folder reverted whatever landed in between (it just undid two commits
to Havre). Now the build's own diff is applied to the newest gh-pages, three-way; `from` keeps the whole-folder
landing, which is what it's for.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VAvUH72XsdCitHdh3t7mjr
2026-10-20 03:46:57 +00:00
time 9aaf0ed395 Router: rank the spine's cards too, shown and never queued (#173) (#205)
ci / test (push) Successful in 43s
sync / sync (push) Successful in 6s
2026-10-20 01:08:04 +00:00
time 2fa9968c3d ledger: 1 calls, $0.00 2026-10-20 01:07:54 +00:00
time 6e85af7641 ledger: 1 calls, $0.00 2026-10-19 23:07:58 +00:00
time 4814d45280 Router: record each pick's outcome, so a learning policy has data (#203)
ci / test (push) Successful in 43s
sync / sync (push) Successful in 6s
Co-authored-by: Time (CEO lane) <time@users.noreply.teahub.xyz>
2026-10-19 21:53:46 +00:00
time 59a26c1f3f ledger: 1 calls, $0.00 2026-10-19 21:53:36 +00:00
time a4e052d248 ledger: 1 calls, $0.00 2026-10-19 20:08:03 +00:00
teahubxyzandClaude Opus 5.5 e0c2955d74 Cloud revisions: a reviewed cloud PR that gets new commits is reviewed again (#201)
ci / test (push) Successful in 44s
sync / sync (push) Successful in 5s
Cloud revisions: a reviewed cloud PR that gets new commits is reviewed again (#201)

When the copy moves a branch whose PR is open and already reviewed, sync posts a `dispatched` beat marked `revised` on each card it closes and takes `needs-human` off the PR, so the heartbeat reviews the new head.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 19:00:42 +00:00