Writing · Topic
Building the harness
How the kernel is built: schemas as contracts, guards, coordination state, and what breaks when an agent runs unattended.
9 pieces
Architecture · August 24, 2026 · 8 min
Services are data, not code
A bookkeeping service in our system is a JSON manifest, a folder of markdown, and an output schema. No module, no deploy, no engineer. The consequence that matters is not speed — it is that domain expertise stops being something only a programmer can add.
Architecture · August 23, 2026 · 8 min
Output schemas are completion contracts
Most agent frameworks treat a schema as validation applied after the fact. Treat it instead as the definition of done — the run ends the moment a valid result is written — and three unrelated problems disappear at once: unbounded loops, unresumable runs, and work nobody can grade.
Architecture · August 22, 2026 · 9 min
One config for every task is the original sin
"Build a website for this business" and "decide the next step on this overdue invoice" are not the same job, and giving them the same tools, permissions and credentials is how an agent system becomes unsafe. Three shapes, and a build run that can never hold a send token.
Architecture · August 21, 2026 · 8 min
Fulfilment is not one shot
Real service work is not a single prompt. A weekly visibility report is twelve independent measurements and one aggregation; a month-end close is strictly sequential and stops dead without a bank statement. Both need a run that can suspend itself as a row and resume days later.
Architecture · August 20, 2026 · 7 min
Your concurrency guards are all vertical
Row locks stop one job running twice. Nothing in a typical system counts how many times one human hears from you. Three correct schedules, three correct runs, three emails to the same client before lunch — and no bug to find, because nothing is broken.
Product · August 19, 2026 · 8 min
A client gets work, or a question — never your JSON
A finished agent run has exactly three honest fates: deliver, ask, or hold. The fourth — ship whatever came out — is the one that puts a serialised object in front of a paying customer, and it is almost always a single fallback expression away.
Product · August 18, 2026 · 7 min
The work needs something only the client has
Bookkeeping needs the bank statement. A hire needs the role brief. Most agent demos quietly assume the input is already there, and every real engagement stalls on the moment it is not. Refusing well is a product feature, and it has a shape.
Engineering · August 17, 2026 · 7 min
Coordination state belongs in the database
If a run can suspend for three days waiting on a client, every piece of state that resumes it has to survive a deploy, a crash and a second replica. The rule is uncomfortable and simple: if losing it would park a run forever, it is not allowed to live in memory.
Agents · August 16, 2026 · 9 min
Simulating clients who remember
A scripted synthetic client can only prove your transitions exist. The loop that earns a retainer is different: v1 goes out, the client objects to one thing, v2 comes back, and they ask the only question that matters — did they fix the thing I said? That needs memory.
Common questions
- Where should an agent's coordination state live?
- In the database. If a run can suspend for three days waiting on a client, every piece of state that resumes it has to survive a deploy, a crash and a second replica — which rules out memory, however convenient it is.
- Why should an agent's output have a schema?
- Because a schema is a completion contract, not after-the-fact validation. Treat it as the definition of done — the run ends the moment a valid result is written — and several unrelated failure modes disappear at once.
- Why do ordinary concurrency guards fail for client work?
- They are all vertical. A row lock stops one job running twice; nothing in a typical system counts how many times one human hears from you. Three correct schedules and three correct runs still produce three emails to the same client.
- What should an agent do when it cannot finish?
- Ask, or hold. A finished run has three honest fates — deliver, ask, or hold — and the fourth, shipping whatever came out, is the one that puts a serialised object in front of a paying customer.