Skip to content

14 min read

Shared weights mean shared blind spots survive the split

On this page

Thirty-one of the February account reviews contained the sentence "your Scale plan includes five Advanced Analytics seats at no additional charge." Scale includes two, and seats three through five bill at $18 per seat per month. The reviews went out on a Thursday; the first customer replied on the Friday asking why the invoice disagreed with the review; finance spent the following week reconciling and issuing four credits totalling $2,160. What made this incident hard to accept internally was that every one of those thirty-one drafts had passed through the separated critic, and on the class of defect the critic was built for it had been performing well.

The critic's verdict on the Northwind draft is representative of all thirty-one.

text
[critic  pass 1  |  1,190 in / 260 out]
finding 1  severity: low  category: vague_commitment
  span (draft): "later this year"
  No target date for the ingestion review.

Checked and found supported:
  - "your Scale plan includes five Advanced Analytics seats at no
    additional charge"  — consistent with a Scale-tier bundle;
    no conflict with figures elsewhere in the report.
  - usage totals in section 1 match the table in section 2.

The critic did not skip the pricing sentence. It read it, considered it, and marked it supported. It could not have done otherwise, because the question "does Scale include five Analytics seats" is answered in a Postgres table inside the billing service, and neither call had that table. The writer produced five because a five-seat bundle is a plausible thing for a mid-tier plan to include, and the critic accepted five because a five-seat bundle is a plausible thing for a mid-tier plan to include. Both calls were reading off the same prior — the default expectation the weights encode about how a thing like this usually goes, in the absence of a fact about this particular case. One prior, consulted twice.

Look at the shape of that trace rather than its content, because the shape is what makes the failure survivable for a month. The critic's two lines under Checked and found supported are formatted identically, carry the same confidence and use the same verb. One of them — usage totals in section 1 matching the table in section 2 — was genuinely checked, by comparing two things both present in the draft. The other was not checked at all, because there was nothing to check it against; the critic compared the sentence with its own expectation and reported agreement. Nothing in the output distinguishes the two operations. That is the property to watch for, and it generalises well beyond pricing: the form and confidence of a verdict stay constant while the thing that decides whether the verdict means anything — whether evidence was available — varies underneath it. Any monitoring built on reading the critic's output will read a constant.

The credits are worth reading the same way, as a floor rather than a total. Four credits divided into $2,160 is around five hundred and forty dollars each, and three chargeable seats at $18 a month is fifty-four dollars a month, so a single credit covers a good deal more than one month of the overstatement — something in the record accumulated before anyone noticed. More to the point, four credits were issued against thirty-one affected reviews. The figure that reached finance is therefore the cost of the customers who read carefully enough to complain, and the remaining twenty-seven reviews carry an unknown liability that never became a number. A total assembled from complaints is a lower bound on the damage and is compatible with any larger figure.

Two calls, one distribution

The split from chapter 1 removed the writer's plan, the writer's reasoning and the writer's ownership from the critic's context. It could not remove the parameters, because there is only one set of them and both calls run it. Anything a defect depends on that lives in the weights is therefore shared exactly, and the sharing is not partial or noisy — the second call is drawing on the same compressed picture of the world as the first, so where that picture is empty or wrong, both calls are empty or wrong in the same place and in the same direction.

That last clause is the step worth slowing down on, because "the same direction" is doing more work than "the same place". Two unreliable judges that fail in different directions are useful together: where one overestimates and the other underestimates, disagreement is a signal and you can act on it. Two judges that fail in the same direction produce agreement, and agreement between them looks exactly like agreement between two correct judges. So a defect rooted in the weights does not merely survive the split, it survives it while generating positive evidence that it has been checked — which is what the trace above is, and why nobody looked at those thirty-one reviews again until an invoice disagreed.

The direction matters more than the emptiness. If the model simply had no opinion about Scale-tier bundles, the writer would have hedged or omitted, and a critic would have flagged the omission. What the model has instead is a strong, smooth prior over what SaaS pricing pages look like, learned from an enormous number of them, and that prior confidently supplies a shape: a mid tier bundles a handful of seats of the premium add-on, a top tier bundles them all, overages run somewhere between $10 and $30 per seat. The writer samples from that prior and produces a specific number. The critic evaluates that number against the same prior and finds it sits comfortably inside it. Neither call is malfunctioning; the failure is that a prior over plausible pricing is being used where a fact about actual pricing is required.

The overage figure in that description is worth noticing against the real one. Scale's chargeable seats bill at $18, which sits inside the band the prior supplies, so even the number the model would have guessed for the overage would have been unremarkable — right band, wrong company. A prior that is broadly calibrated on the population and silent about the individual is the hardest kind to detect, because every individual claim it produces looks reasonable and only the specific case can refute it.

This is a stronger claim than the well-documented finding that judges favour their own outputs. The MT-Bench work behind Judging LLM-as-a-Judge measured self-preference — a model scoring text it generated above equally good text it did not — and that bias is one reason to separate the roles rather than run reflection. What is happening with the Analytics seats is a level beneath preference. The critic is not preferring the writer's answer over a rival; it has no rival to compare against, because the only account of Scale pricing available anywhere in the system is the one both calls are sampling from.

Which defects survive the split

Meridian's evaluation set is 120 archived reviews with defects labelled by hand into five classes. Running reflection and the separated critic over that set gives per-class catch rates that separate cleanly into two groups.

Defect classExampleReflectionSeparate criticWhy
Recommendation contradicts a stated constraintConsolidate workspaces whose retention policies differ11 / 4329 / 43The writer's plan justified it; the critic has no plan to defend
Conclusion overreaches the data given"Usage is trending sharply up" from two data points9 / 2620 / 26Same mechanism, judged against the report's own figures
Internal arithmetic inconsistencySection totals disagree by $4,40022 / 3124 / 31Both arms can check this from the artefact alone
Over length1,340 words against an 800-word brief40 / 4141 / 41Mechanical property; a len() call is cheaper than either
Fact about our own pricing is wrongFive included seats where the plan includes two2 / 343 / 34Neither call has the price list; both share the same prior

Add the two catch columns down and the shape of the change is unambiguous. Across all five classes the split adds thirty-three catches, and twenty-nine of those thirty-three come from the two judgement rows at the top. So essentially the whole of what the split buys is concentrated in the classes where the writer had a plan to protect, and the other three rows contribute a handful of items between them. That is the strongest possible version of the argument for separation and the strongest possible version of its limit, and both come out of the same addition.

The first two rows are the case for the split, and they hold. The last row is the case against believing the split made the two judgements independent: 2 out of 34 against 3 out of 34 is a difference of one item, well inside the noise of a 34-item slice, and a critic that catches under a tenth of a defect class is not providing coverage of it. That the class is small in the table and enormous in consequence — $2,160 in credits and a customer trust problem from thirty-one sentences — is the ordinary asymmetry of correctness work.

One row deserves a note before it is used as evidence for anything. Internal arithmetic inconsistency barely moved, 22 to 24, and that is the expected result rather than a disappointment: adding up two columns and noticing they disagree is work the reflection pass was already willing to do, since no plan is threatened by a subtraction. Rows that move under the split are rows where the writer had something to protect, which is a useful test to apply before spending a call. If you cannot say what commitment the reflection pass would be defending on a given defect class, the split will probably not change that class's numbers.

The property that decides which group a defect falls into is where the evidence for the judgement lives. If everything needed to see that the draft is wrong is inside the draft or inside the brief, the critic can reach it, and the split determines whether it will bother. If the evidence lives outside both, in a database, a document, a price list or an internal policy, the critic cannot reach it at all, and its stance is irrelevant to an inaccessible fact.

That rule is worth stating as a procedure, because it is cheap to apply and it predicts the table above without running anything. Take a defect class and ask what a person would have to read to be sure a given claim is wrong. If the answer is "the draft", both arms can reach it and the split decides motivation. If the answer is "the draft and the brief", the same holds. If the answer names anything else — a table, a contract, a policy page, a colleague — no prompt and no model change reaches it, and the only repair is to put that thing in the context window.

The claim to stop making

The sentence to strike from your design documents is that a separate critic gives you two independent looks at the draft. Independence is a property of the joint distribution of two judgements, and two calls to the same weights are correlated by construction — you have changed the conditioning, which shifts the marginal, and left the parameters untouched, which preserves everything the marginal was built on. What the split delivers is a critic that will not defend a plan it never made, and that is worth its call on the defect classes where the artefact and its brief contain the evidence.

There is a version of this that is worth saying to a teammate reporting the split as an upgrade, because they are right that it is one and wrong about why. The stance changed, the knowledge did not, so the defects that were rooted in what the model believes are still shipping, and any measurement that only reports an aggregate quality score will show the upgrade and hide the surviving class. The pricing sentences did not lower the quality score on the February batch at all. Graders reading a review with no access to billing rated it as well written and internally consistent, which it was.

That last sentence is the one to keep, because it explains why the grade was not merely wrong but correct and useless. The graders were asked how good the review was and answered accurately on everything they could see. What they could not see was whether a number matched a row in a table they had no access to, and no amount of care on their part would have changed that. A grading procedure inherits the blind spots of whoever or whatever grades, so a metric assembled from readers without billing access cannot report a billing error, however many readers you use.

Naming the boundary this precisely also points at the repair, and the repair is cheaper than a second provider. The critic failed on pricing because the price list was not in its context window, and putting it there is a retrieval problem rather than a model problem. Separation was always meant to withhold the writer's reasoning; nobody ever meant it to withhold the sources the draft's claims are supposed to rest on, and the next chapter draws that line where it belongs.

Writer–critic (generator–evaluator) with a *separate* critic — read the current version at https://daviddominguez.dev/learn/en/writer-critic-generator-evaluator-with-a-separate-critic/shared-weights-mean-shared-blind-spots-survive-the-split

Back to top