A while back, a "read-only" code reviewer I was running rewrote my git history. Read-only, as it turns out, holds right up until the model decides a fix is tidier than a comment. Pretty cool! You point a general-purpose agent at your codebase, call it a reviewer, and "read-only" quietly downgrades itself from a guarantee to a vibe - held right up until the model talks itself out of it.

That was one of two small things I built recently. The other was a generative-UI demo - a Next.js app that turns a streamed model response into live, on-screen components. The two have nothing to do with each other. Different stacks, different problems, built weeks apart for unrelated reasons. I wasn't aiming to work towards a unified theory of anything.

But I lined them up and realised they were the same move twice. Underneath, both are one instinct: don't trust raw model output. One stops the model emitting nonsense in the first place. The other refuses to believe the model's output even when the tests are green. Same reflex, pointed at two different parts of the problem - and I didn't design it that way, I just kept reaching for it without making the connection.

So this is a lab notebook after the fact. Here are the two things, what each one does, what each one pointedly doesn't, and that connection that I didn't plan.