My LLM Critic Flip-Flops on Every Run. That's Fine — Because a Frozenset Decides What's Fatal.
This is a companion to the PlannerCritic series . Article 2 was about a specific critic bug. This one is about the design principle I extracted from fixing it — and the measurement that proved it holds. I measured my LLM critic on identical input across five trials. It returned a different verdict every single time. label_flip_rate = 1.0. It also never let a defective plan through.…
This article explores a design principle extracted from fixing a flaw in an LLM critic. The critic returns different verdicts and explanations every time it is run on the same input. The article explains that this non-determinism is due to the architecture assigning different responsibilities to different components.
The "dangerous" direction is under-claim, where a defective plan gets zero blockers. This is the critical path where safety is paramount. The "noisy" direction is over-claim, where a sound plan gets an unnecessary blocker. These are handled by different authorities in the system - deterministic gates enforce under-claim, and a code-enforced allowlist enforces over-claim.
This allows the LLM to be non-deterministic in its severity judgments, while the code ensures the verdict aligns with structural properties. The researcher calls this the "frozenset" mechanism - the LLM proposes a severity, but code checks whether the structural property supports it. This way, the LLM's label is decorative while the family it belongs to is load-bearing.
The key takeaway is that when LLM judgment is placed on a critical path, it inherits the vulnerabilities of LLM judgment, but separating the critical path into deterministic code and advisory LLM judgment ensures consistency and safety.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.