
Four Lessons From Three Months Inside an Agentic Harness

Three months of running r2, an agentic AI harness, produced four practical lessons. First, an inbox works better than a task list for agent-driven workflows. The author moved their work queue from Asana into Gmail and built an agent to process threads. Threads sit archived under a processing label while the agent works, and return to the inbox when finished or when the agent needs human input. The agent never permanently archives mail; only the human does. Previously, twenty-four threads sat silently under an error label; now they surface with a one-line reason.
Second, routing between local and cloud models is essential. One model acts as a router, choosing between a fast local worker, a local reasoner, and cloud fallback tiers. Local runs take four to six minutes per task; cloud runs take about thirty-nine seconds. Local is cheap, cloud is reliable. The router records the real reason a task went to cloud rather than faking a local failure to justify the promotion.
Third, self-healing works but is brittle and surfaces more errors before it surfaces fewer. For six weeks the agent’s error rate was zero, then rose to 15 percent, then 34 percent. The rate rose because the system stopped hiding failures, not because it got worse. Before the fix, twenty-one threads sat stranded in error, the oldest for eighteen days, and one hundred twelve recoveries happened by hand-written SQL. After the fix, failures surface immediately, redrive four times with jittered backoff, then dead-letter. Today zero threads sit in error. The system reverts its own bad deploys—65 so far, 42 because unit tests failed—and since late July catches broken code before deploy instead of after. Broken main never ships. But auth failures, memory limits, and a model that narrates instead of working all still need a human.
Fourth, a human quarterback is still needed even in a no-huddle offense. The work stopped being one monolithic prompt and became a graph of contracted nodes: the model produces a narrow JSON intent, an action, a domain, a reason, and a confidence score. Deterministic code performs the write. An independent node re-reads to confirm. Maker and verifier are different nodes; the agent never grades its own homework. That separation lets plays run without a huddle but does not remove the quarterback. Someone still calls the plays that matter: which task goes to cloud, which failure gets a human, which deploy gets reverted. Three months in, that quarterback is still the author, one layer above the code that used to be the whole team.


