Commit Graph
231 Commits
Author SHA1 Message Date
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
time 99a9230d27 ledger: 1 calls, $0.00 2026-10-19 18:13:24 +00:00
time 2e2329dd86 ledger: 39 calls, $0.71 2026-10-19 18:12:13 +00:00
time da2ea2d6a8 ledger: 41 calls, $1.14 2026-10-19 17:12:51 +00:00
time 157c91f06d ledger: 1 calls, $0.17
time/worker-run python3 /tmp/p.py && git diff --stat && cd .github/time && python3 test_time.py 2>&1 | tail -12
2026-10-19 16:47:53 +00:00
teahubxyzandClaude Opus 5.5 1a2ae6bc7e The cloud lane: cloud sessions build cards on the cloud-session credit (#197)
ci / test (push) Successful in 45s
sync / sync (push) Successful in 5s
The cloud lane: cloud sessions build cards on the cloud-session credit (#197)

Astra labels the best M cards `cloud` (up to 3 in the lane); the launcher on hb-5 starts a claude --cloud session per card on the GitHub copy; sync brings the branch home as a PR that closes the card and moves it cloud -> ready; the heartbeat adopts and the council lands it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 16:46:15 +00:00
time 608510afde ledger: 14 calls, $0.09 2026-10-19 16:15:24 +00:00
time 89070f46a4 Scaffold the Havre MCP server (walking skeleton) (#195)
time/worker-run cd havre && npm ci >/dev/null 2>&1; cd node_modules/@modelcontextprotocol/sdk && sed -n 20,60p dist/
ci / test (push) Successful in 42s
sync / sync (push) Successful in 5s
Co-authored-by: Time <time@users.noreply.teahub.xyz>
2026-10-19 16:14:10 +00:00
time 26f64e2f00 ledger: 1 calls, $0.00 2026-10-19 16:14:01 +00:00
time 73d6995df3 ledger: 34 calls, $0.87 2026-10-19 16:12:20 +00:00
teahubxyzandClaude Opus 5.5 7e7d2d569d Budget: the monthly cap counts out-of-pocket money; credit is limited by its pool (#193)
ci / test (push) Successful in 37s
sync / sync (push) Successful in 5s
time/worker-run sed -n 845,885p .github/time/test_time.py; tail -5 .github/time/test_time.py
Budget: the monthly cap counts out-of-pocket money; credit is limited by its pool (#193)

credit_covered(): what an expiring pool's prepaid credit paid this month, within its balance and before it lapses, is left out of the month TIME_MONTHLY_USD caps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 16:03:08 +00:00
time 5b1843521f ledger: 36 calls, $0.51 2026-10-19 15:12:24 +00:00
time 7156f0023c Time updates a PR branch that fell behind its base; a conflict goes to the worker as a revision (#190)
ci / test (push) Successful in 37s
sync / sync (push) Successful in 5s
Co-authored-by: Time <time@users.noreply.teahub.xyz>
2026-10-19 15:11:37 +00:00
time 5aefa807be ledger: 47 calls, $0.93
time/worker-run git branch -a; git ls-tree -r --name-only origin/gh-pages 2>&1 | grep -i havre | head; ls; ls ventur
2026-10-19 14:13:57 +00:00
time 815649f59f ledger: 15 calls, $0.24
time/worker-run cd .github/time; cat > /tmp/p.py <<'EOF' import re p = ".github/time/time.py" s = open(p).read() #
2026-10-19 13:57:46 +00:00
teahubxyzandClaude Opus 5.5 bc1da90c33 Router: a card that waits is never picked; Astra gets TIME_WORKER (#185)
ci / test (push) Successful in 37s
sync / sync (push) Successful in 4s
Router: a card that waits is never picked; Astra gets TIME_WORKER (#185)

An open Depends on #N, or the seat's blocked note, keeps a card out of the picks and after the movable cards in the promotion order. astra.yml passes TIME_WORKER and TIME_PACE.

Closes #184.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 13:55:03 +00:00
time 8fdb2f9469 ledger: 1 calls, $0.18 2026-10-19 13:50:29 +00:00
teahubxyzandClaude Opus 5.5 5a0ffcfee6 router: live
ci / test (push) Successful in 37s
sync / sync (push) Successful in 4s
Two dry rankings (2026-10-19 01:02 and 13:14 UTC) put the right cards on top (#135, #175), dropped blocked #84 once it was known stale, and kept L cards out. The two gaps they showed are fixed: money left is the worker's pool (#181, closes #175) and repeat cards aren't written (#181); the stall that kept promotion from happening at all is fixed (#183, closes #135).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 13:48:28 +00:00
teahubxyzandClaude Opus 5.5 32943339e1 promote_next counts only moving cards: one waiting on a person holds no ready slot (#183)
sync / sync (push) Canceled after 0s
ci / test (push) Successful in 36s
promote_next counts only moving cards: one waiting on a person holds no ready slot (#183)

Closes #135.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 13:47:55 +00:00
teahubxyzandClaude Opus 5.5 d235afb7f3 Housekeeping: a null page is an empty one (#182)
ci / test (push) Successful in 37s
sync / sync (push) Successful in 4s
Housekeeping: a null page is an empty one (#182)

Gitea answers an issue nobody reacted to with null; the signal step failed on it today.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 13:47:24 +00:00
teahubxyzandClaude Opus 5.5 805e20d695 Router: money left is the worker pool's allowance; no repeat cards (#181)
ci / test (push) Successful in 37s
sync / sync (push) Successful in 4s
Router: money left is the worker pool's allowance; no repeat cards (#181)

money_left(): the allowance left in the pool that takes TIME_WORKER's route, else the daily cap's remainder, capped by the month's. The seat sees cards closed in the last 14 days; a new card repeating an open or lately closed one is not written.

Closes #175.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 13:44:30 +00:00
time 2efe67c9a9 ledger: 1 calls, $0.16 2026-10-19 13:14:08 +00:00
teahubxyzandClaude Opus 5.5 745231844f sync: secret names Gitea accepts (SYNC_GITHUB_KEY, SYNC_GITHUB_TOKEN) (#179)
ci / test (push) Successful in 36s
sync / sync (push) Successful in 4s
sync: secret names Gitea accepts (SYNC_GITHUB_KEY, SYNC_GITHUB_TOKEN) (#179)

Gitea refuses secret names starting GITHUB_ or GITEA_, so the GitHub copy's deploy key is in SYNC_GITHUB_KEY.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
2026-10-19 04:03:20 +00:00
teahubxyzandClaude Opus 5.5 e34994bbc6 Sync: the GitHub copy over SSH with a deploy key (host keys pinned) (#178)
ci / test (push) Successful in 35s
sync / sync (push) Successful in 2s
Sync: the GitHub copy over SSH with a deploy key, host keys pinned (#178)

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