How Take AI Bite Fixes What Watching Can't

Earlier this month, one of my releases shipped a fix that only broke the projects that installed it.

The change looked safe: retire an old formatting rule from the configuration every project inherits. The commit took out the rule’s heading and its body and left three paragraphs behind, the ones that only meant something under that heading. Stranded, they read as part of whatever section sat above them, a block of scope notes with nothing left to scope.

That much is an ordinary mistake. What happened next is not. Two lines of the same release told every project to re-sync from the source, so a project that did what the release instructed picked up the orphaned block, and a project that ignored the release stayed clean. Obedience was the vector.

The safeguard built to catch exactly this ran, and passed. Every release, it sweeps for the text that was removed and rereads what sits around the gap. But it only checks the strings its own edits deleted, and this deletion was collateral, buried inside an unrelated change in the same release. It was never in the set the sweep looked at, so the check reported done.

When wrong looks exactly like right

Line up these failures and they share one property. The count that stopped at eight out of nine looked like a project still missing a folder. The safety sweep that skipped the orphaned block looked like a sweep that ran clean. In each case a wrong result was shaped exactly like a right one, so nothing downstream, and no one reading the report, had any way to tell them apart.

That property is the whole problem, because it is the one thing more attention cannot fix. You can read a report carefully a hundred times; if a pass and a failure print the same line, careful reading buys you nothing. The methodology had already named the test for this, several releases earlier: before you trust a check, ask whether a wrong answer would look any different from a right one. Most of the time nobody asks, because the check was written by someone who assumed it worked.

So the fix is never “look closer.” It is to change the structure until a wrong result stops passing for a right one: give a check a number it can actually reach, reword an instruction to say what it always meant, retire a rule in favour of a tool you run when you need it.

The fixes were all the same move

Start with the rule from the opening, the one that shipped half-deleted. It was not repaired. It was retired. The instruction told every author and every agent to convert a particular dash to a comma in anything an outside reader would see, correct as far as it went, and enforced on every pass forever to reach a state a formatting tool now produces against a finished document in one go. Completing the deletion and retiring the rule turned out to be a single edit. A rule you pay for on every write is worth more run once, on demand, when it actually matters.

The count stuck at eight out of nine was simpler still. It was measured against nine standard folders where the specification and the tool that creates them both say eight, so a correct project could never reach the maximum the check reported against. Five projects and the hub itself had read eight-of-nine as ordinary noise; one had quietly added an empty folder to force the number to nine, hiding the very incompleteness the check exists to find. The fix was a single number. Not a closer reading of the report, a denominator the check could actually reach.

The third fix I have already told in full elsewhere, a session that refused to boot until a single phrase was reworded. That post is the place for the incident; what belongs here is the quieter structural move that came after it. The framework renamed that phrase’s vocabulary everywhere the old word still sat, thirteen places across eight files, and changed the reminder that fires on every single turn first, because that was the copy doing the most damage. The reword fixed the one session that had failed; the rename removed the last copies that could have carried the old wording back in.

None of this was new

The v1.26 fixes were the pattern maturing, not discovering itself. Trace the same shape back through the summer. A set of checks guarded how every reasoning entry gets logged, four of them, and not one read the timestamp the entry carried, so a note stamped thirteen hours off, or a decision recorded as authorised forty minutes after the action it authorised, passed clean. A verification that piped a command into another and then tested the wrong end of the pipe, so a rejected push could print “pushed.” A sprint-closure checklist with items nobody could honestly tick, one of them carrying an escape clause that made it true forever of a project that would never trigger it.

The sharpest one is almost a joke at the framework’s expense. The coherence sweep that let the opening rule through was not some old and creaking guard; it was the newest of its kind, added a release earlier for exactly this class of failure. The check built to catch this kind of blind spot had one of its own.

Even the headline number fits the same logic that retired the rule. The instruction file every session loads on every turn came out two fifths shorter, and it stayed even after the theory that motivated the cut fell through, because a length you pay for on every turn is worth reclaiming on its own.

What a methodology in use is for

None of these were failures of attention. Every one passed every check it had, often for months, across careful sessions run by people watching closely. That is the point worth keeping. A methodology you actually run, on real projects, every day, is not valuable because it prevents mistakes. It is valuable because it keeps meeting its own mistakes in the open, where the shape of them can be seen and the structure changed so they stop looking like success.

Take AI Bite treats that as the work, not the interruption. A check that could only ever report “fine” gets a way to report “wrong.” A rule that costs something on every pass gets retired for a tool you reach for when you need it. A phrase that quietly locked a session out gets renamed out of every file that could carry it forward. The framework does not get more careful. It gets built so that carefulness is not what the safety rests on.

That is the difference between a set of good intentions and a system. Intentions ask you to watch harder next time. A system changes the shape of the thing until watching harder is not what stands between you and the mistake.