Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
faad1372f9 | ||
|
|
1a6638b0dd |
No files matched your search
@@ -13,16 +13,12 @@ record; nothing here is scaffolding from before 2026-10-14.
|
||||
Time acts as the Gitea user `time` (its own token, TIME_TOKEN) for every write except comments and commit statuses,
|
||||
which stay with the Actions identity (`gitea-actions`); code goes in as git pushes. Seats post as themselves: a
|
||||
review by `haiku` is a Gitea review by the user `haiku` (one Gitea user per model line, TIME_SEAT_<SEAT>).
|
||||
Rhythm: Astra (daily, 13:13 UTC) is the router: its seat judges every candidate card (kind, value, size) and
|
||||
`router.py` ranks them with the owner's weights per kind in teahubxyz/time's `time/router.json` (mode dry: it posts the ranking on
|
||||
the Astra log; live: it queues from the top and the heartbeat promotes in ranked order). The heartbeat (hourly, and on demand) builds `ready` cards with a
|
||||
Rhythm: Astra (daily, 13:13 UTC) queues cards; the heartbeat (hourly, and on demand) builds `ready` cards with a
|
||||
seat, gets each PR reviewed by the council, and merges on approve + green CI, engine code included. Only the workflow
|
||||
directories (`.github/workflows/`) stay a human's merge: the CEO batches them. A card whose PR already exists (Codex, a
|
||||
chat, the CEO) is adopted: labelled `ready`, it is reviewed and landed, never rebuilt. Housekeeping sweeps daily (13:17).
|
||||
Ventures: paused since 2026-10-19 (TIME_VENTURE=off; the launched ones are still measured) until the router starts
|
||||
them (time#170). When on: one a day, built for quality; the day's card starts once every other venture card is launched or held. Opus leads alone: a research round over the trending repos and the
|
||||
studio's track record, one pick, the plan, the build (`claude:opus`) and the judging (a 1-10 score: under 8 earns
|
||||
polish rounds, then it launches with its score); sonnet drafts the launch posts. No fable. Batches (off) keep the board. Each venture lives at <slug>.yolopreneur.lol (gh-pages `ventures/<slug>/`); the
|
||||
Ventures: `venture.yml` every 6 hours (TIME_VENTURE=on). Fable chairs and judges; haiku, sonnet and opus pitch and
|
||||
vote; `claude:sonnet` builds. Each venture lives at <slug>.yolopreneur.lol (gh-pages `ventures/<slug>/`); the
|
||||
portfolio at yolopreneur.lol is gh-pages `ventures/index.html`, made by hand, and reads `ventures.json`.
|
||||
Seat workers (and the venture builder) carry Ponytail's rules (time `.github/time/rules/ponytail.md`); reviewers don't.
|
||||
Tiers: Luna = haiku (Codex: luna), Terra = sonnet (terra), Sol = opus (sol), Astra = fable (astra), the C level. Venice
|
||||
@@ -77,7 +73,5 @@ What to do when you meet one of these. Each row names the procedure; the procedu
|
||||
- Rebuild log: `docs/rebuild.md`.
|
||||
- Skills: `SKILLS.md` (routes, ledger, belts); the vendored folders are in `.agents/skills/`.
|
||||
- Time's engine: `teahubxyz/time` `.github/time/` (`time.py` the clock, `venture.py` the venture loop, `astra.py` the
|
||||
daily planner, `router.py` its ranking, `housekeeping.py` the daily sweep, `sync.py` copies on other forges
|
||||
(`time/sync.json`: one home, one writer per branch; main out fast-forward, `claude/*` branches home as PRs),
|
||||
`seats.json` the seats). Spend pools (expiring credit, refilling windows) are `time/pools.json`. Its SOPs: `.agents/skills/<name>/SKILL.md`
|
||||
daily planner, `housekeeping.py` the daily sweep, `seats.json` the seats). Its SOPs: `.agents/skills/<name>/SKILL.md`
|
||||
in that repo. The planner, the steward and housekeeping all write to the "Astra log" issue there (time#57).
|
||||
@@ -88,8 +88,3 @@ Format: date · decision · why. Add at the bottom. Never edit an old entry; sup
|
||||
- 2026-10-18 · **The venture loop runs on Teahub with the Claude seats, every 6 hours.** Fable chairs (the launch plan, the launch drafts) and judges the build; haiku, sonnet and opus pitch, vote and write plans; `claude:sonnet` builds and `claude:opus` takes the second fix round. The engine had coerced every builder to a Venice seat, which is where the token burn that paused the 20-minute loop came from. Ported to Gitea in time#140 (three council rounds with haiku; the second found that the loop would have written over the yolopreneur.lol portfolio), schedule in time#141. The GitHub-era venture cards were closed: their migrated history is authored by `teahubxyz`, Time trusts only its own beats, and they would have been re-pitched as new ventures. Why: the owner's call, to try the loop on the Claude API with fable leading and the other three voting and executing.
|
||||
- 2026-10-18 · **Daily pacing at $25 for today's first Claude venture run**, on the owner's OK; back to $15 once it is through. `TIME_MONTHLY_USD` stays 100 (the month was at $30.40). The andon (time#136) is closed. Why: the day's $15 was spent before the loop came back, and the owner wanted the run now rather than after midnight.
|
||||
- 2026-10-18 · **Ponytail on prod.** Seat workers, and the venture builder through them, carry Ponytail's rules (DietrichGebert/ponytail, MIT, vendored at time `.github/time/rules/ponytail.md`); reviewers, Astra and the board don't (a coding ruleset distorts answers that aren't a diff). `TIME_PONYTAIL=off` drops it. Why: the owner's call; it had run on hb-5's seats since 2026-10-12 and prod never had it. (time#145)
|
||||
- 2026-10-18 · **One venture a day, built for quality.** The day's card waits until every other venture card is launched or held. The board picks it from a field of six pitches, made in rounds where each round is told what is already pitched. `claude:opus` builds: the code's default, and `TIME_VENTURE_WORKER` on teahubxyz/time. Fable's judge also scores the product 1–10 and names its top three changes. A page under 8 gets up to two polish rounds; the third round stays for fixing whatever a polish broke. After that it launches with its score: quality never holds a launch for a human, only a broken page does. Batches stay off, and an open batch card with no Time beats no longer starts one. The caps are unchanged. October has $61 left in the $100 envelope; if one opus venture a day and the heartbeat outrun that, the loop waits at the cap rather than spending past it. Why: the owner's call ("would rather 1 higher quality"). Today made four ventures: three from migrated batch #26 and the daily card. All four passed on the first sonnet build in about ten steps, so nothing had pushed any of them past "works". (time#162, #163)
|
||||
- 2026-10-18 · **Opus leads the day's venture alone; fable is out of the venture loop.** One research round replaces the pitches and the vote: opus reads the top six trending repos with the start of their READMEs, plus the studio's track record (each venture's status and signups), lists six candidates and picks one. Opus also writes the plan without a synthesis step and judges the build, and hands the launch-post drafts to sonnet. The chair and the judge are opus. That is the code's default, and `TIME_VENTURE_CHAIR` / `TIME_VENTURE_JUDGE` are set to opus so that tonight's run is already fable-free. Batches keep the board; `TIME_VENTURE_LEAD=board` brings it back for the daily venture. Why: the owner's call ("fable eats a lot of credit"). Fable was $2.23 of the day's $23.66, the dearest seat per call, on work opus does as well; the builds were most of the rest. (time#164, #165)
|
||||
- 2026-10-19 · **The venture loop is paused, and the factory picks its own work through the router.** `TIME_VENTURE=off`; the four ventures launched on the 18th are still measured. Astra is now the router (time#68, #72). Its seat judges every candidate card's kind (venture, feature, refinement or optimization), value and size. `router.py` ranks them with the owner's weights per kind in `time/router.json`; all 1 is balanced, the owner's choice. A kind not picked lately climbs (the restless part), and an L is split before it is queued. The router starts in `dry` mode: it posts the ranked table on the Astra log and touches nothing. Going `live` (queue from the top, heartbeat promotes in ranked order) is a one-word edit of that file, made once the rankings look right. The follow-ups are cards the router ranks itself: ventures only when picked (#170), optimization candidates from the ledger and CI (#171), pick outcomes as reward data for a bandit policy (#172), the spine's cards (#173). Why: the owner's call, to have the factory allocate across ventures, features, refinement and optimization rather than run a venture cron beside everything else. The venture register held 33 ventures and 0 signups, so producing more ventures wasn't the bottleneck. (time#168, #169)
|
||||
- 2026-10-19 · **Claude spend is paced to the Anthropic credit.** Time's `time/pools.json` holds one expiring pool: $161.49 as of the 19th, lapsing 2026-11-08. That paces the anthropic route to about $8/day; the $100 monthly cap stays hard and binds first in October. Why: the owner's credit (a $200 grant, $162.22 left on the 18th) expires; a fixed daily cap would either leave it unspent or burn it early. Worker PR #167 was re-cut as #174, with `pools.json` read through the API, since every workflow checks out only `.github/time`. (time#82, #174)
|
||||
- 2026-10-19 · **Repos sync across forges with one home and one writer per branch.** The home pushes its `main` to every copy, fast-forward only; a diverged copy becomes a `needs-human` issue and is never overwritten. A copy's work branches (`claude/*` from cloud sessions) come home as PRs for the council. Config is `time/sync.json`; tokens are secrets named there. Gitea's own mirrors don't fit: a push mirror force-pushes every ref, and a pull mirror makes the home read-only. The first copy is `github.com/teahubxyz/time`, so cloud sessions clone a current engine; it waits on the owner (unarchive it, turn GitHub Actions off on it, set `GITHUB_MIRROR_TOKEN`). The same script syncs Gitea with Gitea, run from the side that can reach both. Why: the owner's $250 cloud-session credit (expires 2026-11-04) covers only sessions that clone from GitHub, and the owner wants several Gitea instances to stay synced on chosen repos. (time#177)
|
||||
Reference in new issue
Block a user