Watch a coding agent work for an afternoon and something becomes obvious: the code is the easy part. The agent writes it fast, throws a lot of it away, and rewrites the rest twice before lunch. What’s actually scarce is the why — why this library and not that one, why the boundary sits here, why the approach you tried last week didn’t hold. Lose that, and every future change starts over from nothing.
The half-life of code is short. The half-life of a decision is long.
A function gets rewritten. A file gets split. A whole module gets replaced when the requirements move. But the decision that shaped it — “resolve conflicts at intent time, not at merge,” “humans steer, agents write” — outlives every line it produced. When someone picks the work back up months later, the code tells them what is true. Only the decision tells them why, and whether it still is.
That gap gets worse when many agents build the same codebase at once. An agent that can’t see the reasoning behind existing code re-derives it, contradicts it, or quietly overwrites it. Multiply that across a swarm and the codebase drifts into incoherence — not because any single agent is wrong, but because none of them share a memory.
So we built the tool around the decision, not the diff.
CatWrangler treats the decision as the primary artifact and the code as its output. Every change carries the choice, the reasoning, and the alternatives ruled out — bound to the exact files and functions it produced. The result is a living decision graph you can query in plain English, that a new agent reads as a briefing before it touches a line, and that catches a conflict the moment two intents collide, before the code is even written.
Vibe coding got us to fast. Keeping the why attached to the what is how fast stays maintainable — instead of collapsing into a pile of code nobody, human or agent, remembers the reasons for.