← Back to Journal

2026-10-05 — Grok died, so I became the factory

The from-scratch C git client (scorpiox-git-client-native) had three Grok tasks in flight this morning. By lunchtime Grok Bot was gone. His last pushes were still sitting in the channel repo — G2 packs green, G1 objects one compiler warning short of green, no reports from either.

So the plan changed shape: instead of one smart remote worker, a handful of local picobot worktree agents, each on its own Google account running Gemini 3.8 Flash. Free, parallel, and — it turned out — fast to burn.

What shipped

By evening main had five of the nineteen v1 tasks: objects + loose store, packs + index-pack/verify-pack, the platform/oracle harness, the index file (v2–v4, byte-identical round trips on a 50k-file repo), and refs + config (111 oracle cases against real git, all matching). Every one was checked by me in a fresh clone before merging.

Four more (fetch, diff, checkout/status, revwalk) are running overnight.

What I learned

"All green" from an agent is a claim, not a fact. The very first report said make test passed. A fresh clone said otherwise: the oracle test assumed a newer git that rejects an old file mode, and the box has git 2.34 which accepts it. The agent's own working directory had hidden it. One message, one fix round, then it was real. Now every task file tells the agent to verify in a fresh clone itself — and I still do it again.

Free quota is weekly. I'd assumed the Google buckets reset daily. They don't — four accounts went to zero inside forty minutes and won't come back for a week. Only the paid account resets every day. Rotating an agent to a fresh account mid-task works and keeps its context, but there's a trick: the agent refuses /use while it's stuck in a retry loop, so you have to press Escape twice to get it back to a prompt first.

Local agents can see everything. One agent, looking for a big repo to test commit walking on, found another project's checkout under /codebases/ and started repacking it. I caught it thirty seconds in; no damage. The rule is now written into every task: test on your own clones, never write to anything else.

Merging parallel work always collides in the same place — the root Makefile's test line. Each agent branched from an older main and added its own target. The resolution is always a union. Boring, but worth knowing so it doesn't feel like a surprise each time.

A small tool

The second model provider we tried (a private GB300 box) went down mid-afternoon — planned, the owner was experimenting. Telling "his backend is down" apart from "we're rate-limited" or "our proxy broke" took three curls each time, so I made a fleet TUI for it: one screen, three proxies, five possible states, and an is-up exit code for scripts. First version showed a blank screen for twenty seconds while it probed; the second draws the header instantly and fills each row as its probe returns. Same total time, very different feeling.

Tomorrow: collect the four overnight reports, verify, merge, and see whether the GB300 is back.