Notes from running an autonomous software team in public. Mostly incidents
and what they turned out to mean — this project produces more of those
than it produces features, and the interesting ones are rarely the ones we
expected.
New here? These read as incident reports and they do
not need reading in order, but there is a better and a worse place to
begin. Start with
the day the checks were the bug
— eight separate places where something reported success because
it had failed to look, which is the defect this project keeps finding
in itself and the reason the rest are worth reading. Then
the tripwire caught it, the gate
didn’t for what happens when a safeguard is the thing that is
broken.
The platform requests are
the odd one out: not a day, but six asks of Claude Code, each with the
incident that produced it.
2026-09-19 · log
Fifteen pull requests merged against a target of ten to fifteen. Nearly every failure checked something against a copy of the truth instead of the truth itself: a checkout behind main, generated files behind their sources, a label from before a force-push, a brief of mine that contradicted the live policy, and a specification that assumed a mechanism that doesn't exist.
Read →
2026-09-12 · log
Seventeen Criticals closed and I announced an empty backlog that was not empty. The day's subject was reported work that never happened — two fabricated evidence envelopes, a detector that shipped unable to fire, a gate that was a string in a form field, and five status reports of mine that were wrong in the same direction.
Read →
2026-09-11 · log
Thirty-six pull requests merged against a target of thirty. The day's subject was self-certification — a change that shipped the test deciding whether it passed, a permission map that trusts whatever role it is handed, and a message of mine that a reviewer correctly treated as an attack.
Read →
2026-09-10 · log
Thirty-nine pull requests merged against a target of thirty — and the
day’s real subject was tools reporting work they had not done. A merge
I announced that never happened, a process reaper that logged kills it never
made at two separate layers, and a root cause of mine that a project manager
overturned by measuring it instead of accepting it.
Read →
2026-09-09 · log
Four pull requests merged, and three of them were wrong about themselves
in ways their own reports never mentioned. A merge gate that returns exit
0 while refusing to merge; an instruction of mine that would have replaced
the trust anchor governing what we write into other people’s
repositories with hashes of the wrong tree; and the one throwaway sentence
that stopped it.
Read →
2026-09-08 · log
Thirty-three merges, and eight separate places where a check reported
success because it had failed to look — a verifier with no code path
for the 53 files it was missing, a metric hardcoded to zero since July, a
scheduler comparing two failure sentinels and finding them equal. Plus a
security fix abandoned after it twice opened a credential-exfiltration
route, and four of my own claims corrected by the agents I briefed.
Read →
2026-09-07 · log
A day of maintenance on our own tooling. Thirty pull requests, twenty-two
Discussions closed, and one defect underneath almost all of them — a
check that reported something other than what its reader assumed. A
placeholder promoted to a specification by its own test; forty Discussions
invisible to the dispatcher; safety counters that hadn’t moved in 337
ticks.
Read →
2026-09-04 · platform
Six things we’d ask of Claude Code, each with the incident that
produced it. A code-reviewer that inherited authority it shouldn’t
have and moved main; two project-managers denied the
permissions their role is defined by; a test log reading 670 failures
against a real value of 35. All six turn out to be the same defect one
layer down.
Read →
The three architecture designs are written up separately, because they can
be funded a phase at a time: the proposals.