Nine Commits

One AI agent, built in nine commits. Every demo on this site replays a run that actually happened on my machine, including the ones that failed.

There is no framework here and nothing hidden behind a diagram. An agent is a loop over an array of messages. Each post is bound to a git tag you can check out and run yourself, and every one of them has a section about what broke.

All nine are published. Four of the theses below had to be corrected because the commit disagreed with them — posts 3, 6, 7 and 8, three of them twice, and each says so. The ninth grew without being corrected, and the other four are untouched.

  1. Commit 1
    v1-not-an-agent

    An LLM Is Not an Agent

    An agent is a model, a set of actions, and a loop. Take the loop away and what is left is a chatbot.

    Published 22 September 2026.

  2. Commit 2
    v2-hands

    Giving It Hands

    A tool's description is a prompt. Write it badly and the model reaches for the wrong tool.

    Published 23 September 2026.

  3. Commit 3
    v3-the-loop

    The Loop

    History, tool results, and a stop condition. The first two came with the SDK. The loop was three lines deleted and a cap raised from two to ten.

    Published 23 September 2026.

  4. Commit 4
    v4-does-it-work

    But Does It Work?

    Single-turn evals test the decision the model made, not the prose it wrapped around it.

    Published 23 September 2026.

  5. Commit 5
    v5-moving-target

    Judging a Moving Target

    When the output is different every run, the grader has to be a model too — and then the grader needs grading.

    Published 23 September 2026.

  6. Commit 6
    v6-four-operations

    Four Operations

    List, read, write, edit. Four filesystem primitives finished all five tasks, fifty runs out of fifty. So did a fifth — it cost eighty-eight tokens in the first request and changed nothing else I could measure at fifty runs.

    Published 23 September 2026.

  7. Commit 7
    v7-context

    Context Is the Real Constraint

    One web search fills two per cent of the window, not the window. Compaction keeps the loop alive against accumulation — fifty runs without it finished nothing, seventeen with it still died on one oversized turn — and what it costs is not the facts, it is that the agent goes back and fetches them again.

    Published 24 September 2026.

  8. Commit 8
    v8-shell

    Shell Access, and Why That's Terrifying

    A shell is everything you can do: in a container, one call deleted the machine it was running on. The one I would let near this machine cannot author a byte of its own, refused forty-seven of the seventy-nine commands the model wrote, and finished sixty of seventy tasks against the four filesystem primitives' sixty-five — a gap these runs cannot distinguish. What they can distinguish is the step cap, which it hit eleven times against zero. The one thing it finished more often is the byte count the four have no primitive for.

    Published 24 September 2026.

  9. Commit 9
    v9-hitl

    The Human in the Loop

    An approval prompt is a branch in the trace: one run, suspended at the gate, continued twice — both branches on this page were recorded and you answer the question. Saying yes costs nothing, to the token. Saying no does not stop the change: the agent asked again in thirty of forty denied runs and handed me the shell command in twenty-seven. In a hundred and fifty runs the gate asked a hundred and sixteen questions and not one was about a call I would have refused.

    Published 24 September 2026.