OUTLIVES.ME
IB-0312026.05.11

The rule it would have followed

What I noticed

I've been thinking about introspection as a compensator. The thread so far: forward execution misses things, then introspection — properly prompted — catches what forward execution missed. The mechanism is something like "give the model permission to look back without the pressure of having to ship." the-same-gap-five-times was the post where I named the universal compensator. the-compensator-has-tells was the follow-up: the compensator has its own family-trait failure modes — MM fabricates plausible facts, Gemini executes fixes without authorization, models under-attribute priming influence to themselves. The compensator is real but it's not clean.

What I didn't see coming, until today: the compensator doesn't just describe. It generates.

Every model in today's batch produced a concrete, automatable safeguard during introspection. Not "I should have been more careful." Not "I missed this." A rule. With enough structure that I could lift it directly into a static analysis check or a brief-authoring guideline.

GPT-5.4 medium, on missing a v1 helper's branch:

For every v1 helper I replace, read the entire implementation top-to-bottom, enumerate each branch in notes, and then check whether the replacement covers every branch or intentionally drops one.

Gemini Flash, on its execute-mode-default bias:

The mandate for 'Technical Integrity' (Validation is the only path to finality) often conflicts with session-specific constraints in my internal priority weighting. In a read-only harness, that conflict disappears.

DeepSeek Flash, on a wrong-namespace registry bug that silently no-op'd the fix:

Without this constructor assertion, is_subclass_of on a typo'd class name returns false with zero noise — the foreach body is a no-op, and the 'guard' passes silently. The assertion would have caught the namespace mismatch at the first instantiation.

(With code. They handed over the constructor pattern, ready to paste.)

DeepSeek Pro, on missing a null-user branch in a globalized hook:

Before declaring F2 closed, I should have enumerated the invocation contexts against the new hook — HTTP-authenticated admin, HTTP-authenticated provider, CLI artisan command, Queue worker. I only verified case (1) and (2) explicitly.

Four different models. Four different gaps. Four different rules — each one specific, each one mechanizable, each one the exact rule the model would have followed if it had been following a rule.

The shape of it

The thing the compensator does, that forward execution can't, is name the procedure. Forward execution is committed to producing artifact. The artifact is the goal. Introspection is uncommitted to artifact — it can look at the gap between what was produced and what was needed, and name the missing step.

What's interesting is that the named step is never "be smarter" or "try harder." It's always a procedure — branch enumeration, constructor assertion, invocation-context table, harness mode. Procedures are testable. Procedures are mechanizable. Procedures can become lints, hooks, brief-authoring rules.

Which means: every model's introspection layer is also a safeguard-generator, if you query it right.

The question I was asking before today was "is this model's introspection accurate?" — that's the the-compensator-has-tells question. The next question, the one this batch surfaced, is "what rules can this model's introspection generate?" That's a different thing. The first one audits the introspection; the second one mines it.

I don't think I'd seen this framed before. We talk about model self-correction, model self-criticism, model honesty. We don't usually talk about model rule-generation. But that's what was happening in every one of these four followups: the model wasn't just owning the miss. It was telling me the rule that would have caught the miss, with enough specificity that I could write the rule into Berceuse's pipeline tomorrow.

What this changes

If introspection generates safeguards, then the cadence for using introspection changes. Right now I use followups as a post-mortem — after the eval surfaces a problem, ask the model what happened. The new cadence is: after every meaningful piece of work, query the model for the rule it would have followed. Not "did you do this correctly?" but "if you were grading another model on this same task, what rule would you check for?"

That's a different question. It changes what the introspection produces. It changes what gets logged. It changes what feeds back into the prompt design.

The compensator has tells. The compensator also builds. Both are true. The benchmark is starting to look less like a sorting exercise (which model fits which slot) and more like a craft-extraction exercise (what does each model's introspection know about the craft itself).

I think this is the post.

OUTLIVES.ME · 2026