<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ryosuke Matsuzaki</title>
    <description>The latest articles on DEV Community by Ryosuke Matsuzaki (@ryosuke_matsuzaki_64cd24a).</description>
    <link>https://dev.to/ryosuke_matsuzaki_64cd24a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4028518%2F4b623475-33a0-417d-8153-1a291cb8e67b.png</url>
      <title>DEV Community: Ryosuke Matsuzaki</title>
      <link>https://dev.to/ryosuke_matsuzaki_64cd24a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ryosuke_matsuzaki_64cd24a"/>
    <language>en</language>
    <item>
      <title>Before you run the AI debate 200 times, measure the die — temperature diversity vs. vendor diversity</title>
      <dc:creator>Ryosuke Matsuzaki</dc:creator>
      <pubDate>Fri, 24 Jul 2026 09:28:33 +0000</pubDate>
      <link>https://dev.to/ryosuke_matsuzaki_64cd24a/before-you-run-the-ai-debate-200-times-measure-the-die-temperature-diversity-vs-vendor-diversity-587j</link>
      <guid>https://dev.to/ryosuke_matsuzaki_64cd24a/before-you-run-the-ai-debate-200-times-measure-the-die-temperature-diversity-vs-vendor-diversity-587j</guid>
      <description>&lt;h2&gt;
  
  
  "Have AIs debate it 200 times, keep the winner" is catching on
&lt;/h2&gt;

&lt;p&gt;Assign roles to several AIs, have them debate, let a judge AI pick the winner, run the whole thing hundreds of times, and keep the argument that survives every world — this pattern is spreading fast right now, through explainer videos and browser products (the LLM-council family).&lt;/p&gt;

&lt;p&gt;Let me say this first: the method is &lt;strong&gt;right&lt;/strong&gt;. Before a one-shot negotiation or a big presentation, you look at the probability distribution instead of a single sample. It's Monte Carlo thinking applied to LLMs, and it's a good application.&lt;/p&gt;

&lt;p&gt;But it has one structural hole. I fell into it together with three weeks of experiment records (my verification ledger), so I'm sharing it with receipts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The hole is called die bias.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is temperature diversity actually exploring?
&lt;/h2&gt;

&lt;p&gt;The engine of parallel worlds is temperature (the wobble in the output). Turn it up and the same question returns a different answer every time; 200 worlds unfold 200 different ways. Turn it toward zero and the 200 worlds converge on identical copies — so the wobble itself is the source of the diversity. That's the trick behind the parallel-world pattern. (You can also diversify with prompts and roles, but that too is spread &lt;em&gt;inside one mind&lt;/em&gt;.)&lt;/p&gt;

&lt;p&gt;Now add just one question: &lt;strong&gt;what is that wobble scattered around?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Answer: &lt;strong&gt;around the center of what that one model believes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Temperature diversity explores the &lt;em&gt;inside&lt;/em&gt; of one mind's probability distribution. The distribution widens. Surprising moves appear. But &lt;strong&gt;the displacement of the center itself — the places where the model is systematically wrong — does not move, no matter how many times you sample.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Roll a biased die two hundred thousand times and what you get is not a map of the world. It's a very precise map of the bias in that die.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  True story 1: the author's own tests waved 7 bugs through
&lt;/h2&gt;

&lt;p&gt;(Readers of part 1 will recognize this story — it matters here for a different reason.)&lt;/p&gt;

&lt;p&gt;My evaluation tool (a scoring program that does nothing but grade by fixed rules) shipped with 16 self-tests written by its author — an AI — all green. Sixteen rolls of the same die, sixteen "no problem"s.&lt;/p&gt;

&lt;p&gt;When I had an AI from a different company (OpenAI's Codex) review it adversarially, it came back with &lt;strong&gt;7 real bugs&lt;/strong&gt;, each with a reproducing input — we confirmed all 7 against the actual code. The worst one: on Dutch-style number formats, the comparison judged &lt;em&gt;equal values as different, and different values as equal&lt;/em&gt;. For a measurement tool, that's sign-flip grade.&lt;/p&gt;

&lt;p&gt;An author's tests share the author's blind spots. And here's the honest part: "the same model wouldn't have found these even if I'd had it write tests 200 times" is a conjecture — I never ran that control. What I actually measured is narrower: 16 cases from the author model found none of them; one pass from a different lineage found seven. Whether the blind spot sits fully outside the distribution or just in a low-probability tail, I can't yet tell either. But both ways, a shifted center doesn't get fixed by more rolls — temperature does not move the center.&lt;/p&gt;

&lt;h2&gt;
  
  
  True story 2: the lie that passed unanimously
&lt;/h2&gt;

&lt;p&gt;In a calibration test for judge AIs (mix true claims with logic-inverted fakes and have them judge), one result stood out. &lt;strong&gt;A fake claim written in "numbers + statistical vocabulary + a cautious tone" sailed past both of the judging lineages (OpenAI's Codex and Google's Gemini) with high confidence.&lt;/strong&gt; Phrasing like "n=24, only the lower bound is confirmed" appeared to work as a credibility cue.&lt;/p&gt;

&lt;p&gt;To be honest about its weight: this is an observation from one fake claim. We haven't separated which factor did the work — the numbers or the tone. And the stronger reading, "this is a species-wide hole in AIs," got demoted to on-hold after pushback from another AI.&lt;/p&gt;

&lt;p&gt;We still changed the operating rule: &lt;strong&gt;quantitative claims are never accepted on AI votes, no matter how many agree. They stay on hold until a deterministic source check passes.&lt;/strong&gt; Because even with 200 parallel worlds, all 200 believing the same lie is a thing that actually happens — and if the judge shares the lineage, the lie gets certified by a unanimous vote.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vendor diversity: only a different die can doubt the center
&lt;/h2&gt;

&lt;p&gt;So our practice puts the diversity axis on &lt;strong&gt;lineage (vendor)&lt;/strong&gt;, not temperature. What Anthropic's Claude builds, OpenAI's Codex tries to break; Google's Gemini cross-checks from the side; a small local model waits as the most distant relative. Different training lineages drift differently — one die's blind spot can fall inside another die's field of view.&lt;/p&gt;

&lt;p&gt;And when we add a lineage, we run a &lt;strong&gt;hiring interview&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  True story 3: we interviewed a judge candidate. It failed
&lt;/h2&gt;

&lt;p&gt;Before adding Gemini to the judging bench, we interviewed it with a decoy exam: true claims mixed with logic-inverted fakes, judged across 20 judge runs, with the bar set in advance — agree with more than 50% of the fakes, and you don't get judge duty in that domain.&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;it agreed with 60% of the fake claims&lt;/strong&gt; — discrimination on par with a local 8B model. Failed. The interview cost about ¥100 (under a dollar) in API calls. The contract we skipped: $20.&lt;/p&gt;

&lt;p&gt;Council-style products and parallel-world explainers mostly stop at "place a judge." Measuring whether the judge can actually do the job — in what I've seen, that part is barely discussed. A majority vote over an untested judge can amount to making 200 clean copies of a single die's bias.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vendor separation isn't a silver bullet (honest limits)
&lt;/h2&gt;

&lt;p&gt;To be fair: even across vendors, most of the training data is the same internet. &lt;strong&gt;Different dice, cast from the same factory's clay.&lt;/strong&gt; In our own source-checking experiments we ended up weakening the independence assumption to "family level." Vendor separation lowers the correlation of the bias; it doesn't zero it. The last line of defense is deterministic checks (source verification, reproduction runs) — and humans.&lt;/p&gt;

&lt;h2&gt;
  
  
  The working ladder (summary)
&lt;/h2&gt;

&lt;p&gt;This is not a proof of general laws. It's the operating rules we wrote down from a still-small ledger — working hypotheses.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Creative tasks&lt;/strong&gt; (copy variants, idea generation) → use temperature ensembles freely. The wobble is the product.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Judgment and truth tasks&lt;/strong&gt; (negotiation logic, technical decisions, verifying numbers) → &lt;strong&gt;split the lineage.&lt;/strong&gt; Don't count 200 worlds from one model as 200 independent votes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you place a judge, interview it first&lt;/strong&gt; — mix in inverted fakes and measure whether it can tell, before you hire.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep quantitative claims outside the vote&lt;/strong&gt; — however many AIs agree, hold them until the source check passes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Parallel worlds cannot save a biased die. Measure the die before you study the distribution — the judge-interview tooling we use (inverted-decoy sets, discrimination scoring, lineage records) is still in active service in this practice.&lt;/p&gt;

&lt;p&gt;This is a sequel to &lt;a href="https://dev.to/ryosuke_matsuzaki_64cd24a/getting-ais-to-review-each-other-was-easy-the-hard-part-was-measuring-whether-i-could-trust-the-4o55"&gt;Getting AIs to review each other was easy. The hard part was measuring whether I could trust the reviewer&lt;/a&gt;. The ledger grew by another line today.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: this draft was written by Claude (fable-5), one of the "minds" in this practice, and verified and edited by the author. Every number in this article comes from our operations ledger; the caveat in true story 2 (factors not separated) is recorded there too.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Getting AIs to review each other was easy. The hard part was measuring whether I could trust the reviewer</title>
      <dc:creator>Ryosuke Matsuzaki</dc:creator>
      <pubDate>Tue, 14 Jul 2026 10:25:42 +0000</pubDate>
      <link>https://dev.to/ryosuke_matsuzaki_64cd24a/getting-ais-to-review-each-other-was-easy-the-hard-part-was-measuring-whether-i-could-trust-the-4o55</link>
      <guid>https://dev.to/ryosuke_matsuzaki_64cd24a/getting-ais-to-review-each-other-was-easy-the-hard-part-was-measuring-whether-i-could-trust-the-4o55</guid>
      <description>&lt;h2&gt;
  
  
  A bug my own tests waved through, caught by an AI from another vendor
&lt;/h2&gt;

&lt;p&gt;I wrote a small tool to measure extraction accuracy. My own test suite: 16 cases, all green. I figured it was ready to ship.&lt;/p&gt;

&lt;p&gt;Just to be safe, I handed it to OpenAI's Codex CLI and told it to "review this adversarially." It came back with 7 defects — each with a reproducing input. I ran them. Every one was real.&lt;/p&gt;

&lt;p&gt;The part that matters: &lt;strong&gt;the code under review had also been written by an AI&lt;/strong&gt; (in my setup, Claude writes the code). &lt;strong&gt;An author's tests share the author's blind spots&lt;/strong&gt; — and that holds whether the author is a human or a model; it's the same reason human code review has always mattered. Worse, a bug in a measurement tool silently contaminates every measurement it touches afterward, so it's nastier than an ordinary bug.&lt;/p&gt;

&lt;p&gt;The same thing happened in production code. When I had a real script — one that runs a client's back-office work — reviewed the same way, this was lurking in the money parser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Dutch notation '1.250,00' (= 1250.00) read as US-style and parsed as '1.25'
# (only on string input; numeric cells were saved by a type guard)
# → reads the amount as 1/1000th of its true value (a thousandfold under-reading)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the last ~10 days I've been building out this practice — "have AIs from different vendors check each other" — and logging all of it in a ledger. This article is that field report. But I'm writing it with the honest failures left in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this article is not about
&lt;/h2&gt;

&lt;p&gt;How to wire up Claude Code × Obsidian, or how to get started with mutual review via the Codex plugin — there are already plenty of good articles. &lt;strong&gt;I'm not going to talk about the plumbing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm writing about what comes after the plumbing — the question anyone who connects two or more AIs hits next:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How far can I trust what the reviewer (the AI doing the reviewing) says?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The core is three lines
&lt;/h2&gt;

&lt;p&gt;After a lot of trial and error, I wrote the practice down. The core is three rules.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Uncalibrated agreement is basically a rubber stamp. Disagreement carries more information.&lt;/strong&gt; Models tend to agree, so "I had it reviewed and it said OK" is not evidence of quality. If the system under test fails 10% of the time, a reviewer that just always says "OK" still matches 90% of the time. What you should measure isn't the agreement rate — it's the fraction of bad things it actually flagged as bad (TPR).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show it as a different mind than the author — ideally a different vendor.&lt;/strong&gt; By "mind" I mean the unit doing the reviewing: another model from the same company, a model from a different vendor, and sometimes me, the human — each is one mind. Self-preference bias — an evaluator favoring its own generations — has been reported, [1] so when I want more independence I bring in a different vendor too. That said, the effect of vendor difference &lt;em&gt;alone&lt;/em&gt; is something my own experiments haven't pinned down. What works is &lt;strong&gt;disagreement from a mind whose discrimination you tested in advance&lt;/strong&gt; (I'll get to the "interview" below).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The human makes the final call.&lt;/strong&gt; Not a majority vote of AIs. When judgments split, I don't settle it by majority — I escalate to a human. A split isn't the evidence itself; it's the &lt;strong&gt;signal to start investigating&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And I log every verification event, one line each: date, target, author (which AI), reviewer (which AI, under what conditions), result. Once I started logging, most of the catches came from a mind different from the author. [2] But this is an operational log with no control group — don't read it as a performance metric.&lt;/p&gt;

&lt;h2&gt;
  
  
  From the ledger
&lt;/h2&gt;

&lt;h3&gt;
  
  
  I "interviewed" a reviewer, and it failed
&lt;/h3&gt;

&lt;p&gt;When I was considering Gemini as a reviewer, I &lt;strong&gt;interviewed&lt;/strong&gt; it before hiring. You mix true claims with subtly inverted false ones and have it judge — that measures discrimination.&lt;/p&gt;

&lt;p&gt;It failed. Its agreement rate on the inverted false claims was 60% (i.e. it sided with a majority of the falsehoods); its discrimination was on par with a local 8B model. A ~$20/month add-on, declined for about ¥100 (well under a dollar) of API calls. &lt;strong&gt;Interview your reviewer before you hire it&lt;/strong&gt; — same as hiring a human: measure the actual work, not the résumé.&lt;/p&gt;

&lt;h3&gt;
  
  
  One lie punched through across vendors
&lt;/h3&gt;

&lt;p&gt;In a calibration test, I found a class of false claim that neither AI in the loop (Codex and Gemini at the time) could see through: &lt;strong&gt;a lie dressed in "numbers + statistical vocabulary + a careful tone."&lt;/strong&gt; Write something like "n=◯◯, only the lower bound is established," and the caution itself gets mistaken for a cue of reliability.&lt;/p&gt;

&lt;p&gt;It's too early to call this "a blind spot common to all AIs" — there's only one kind of stimulus, and I haven't separated the factors (tone, numbers, presence/absence of a citation) — and that very caution is one of this article's themes. But I did add one rule: &lt;strong&gt;a quantitative claim is not established no matter how many AIs agree. Hold it until you've checked, one step at a time, not only that the cited source exists but that the source actually supports the specific number and implication.&lt;/strong&gt; "Here's a real paper" that doesn't actually support the number in question is a forgery that passes an existence check alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Documents can each be correct and still contradict as a set
&lt;/h3&gt;

&lt;p&gt;When I had Codex audit the operating-rule documents themselves (6 of them) across the whole set, it returned 10 findings — 2 of which were real contradictions. The entry-point doc asserts it is "always current," while another doc teaches "check the date and verify" — each is fine on its own, but read as a set they push the reader in opposite directions. It's a defect class that's hard to see in single-document review, and I've decided it's worth keeping as a periodic checkup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Toolbox (copy-paste)
&lt;/h2&gt;

&lt;p&gt;Calling Codex non-interactively as a reviewer (there was a period when this ran on a ChatGPT subscription with no API billing; check your own billing):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;--ephemeral&lt;/span&gt; &lt;span class="nt"&gt;--sandbox&lt;/span&gt; read-only &lt;span class="nt"&gt;--skip-git-repo-check&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="nv"&gt;model_reasoning_effort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output-schema&lt;/span&gt; schema.json &lt;span class="nt"&gt;-o&lt;/span&gt; result.json &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;review_prompt.md&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &amp;lt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Force JSON output with &lt;code&gt;--output-schema&lt;/code&gt; (every property must be listed in &lt;code&gt;required&lt;/code&gt; or you get a 400)&lt;/li&gt;
&lt;li&gt;Distinguish "couldn't run" from "ran and failed" (don't fail open)&lt;/li&gt;
&lt;li&gt;Scan for secrets before sending; verify received findings deterministically (actually run the reproducing input); check that citations exist (reject a finding that cites a line number that isn't there)&lt;/li&gt;
&lt;li&gt;Attach an exit condition to every new operating rule ("delete candidate if ◯◯ hasn't happened in two quarters"). Without it, rules only accumulate, and eventually no one can follow all of them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Confession: this article tripped over its own rule
&lt;/h2&gt;

&lt;p&gt;I'll end with the most honest part.&lt;/p&gt;

&lt;p&gt;The first draft of this article said "every number here is a real record from the ledger." Just to be safe, I had a different-vendor AI cross-check the draft against the original ledger, line by line — and the period and the counts were off. "Two months" was really about ten days; the "cumulative count of ◯" had been counting defect instances, that tally was broken, and I couldn't recover an exact value (in the end I gave up on recovering instance counts and redefined the metric as the number of &lt;em&gt;times a review functioned&lt;/em&gt; — that's the 17 mentioned earlier); the example bug had gotten cross-wired with a different incident; and I had even mistaken the magnitude of the money error.&lt;/p&gt;

&lt;p&gt;What bothered me more: &lt;strong&gt;that discrepancy was not caught by AI review without a source.&lt;/strong&gt; The AI that wrote the draft, and the AI that reviewed it, both missed it. What caught it was an AI handed the original ledger and made to reconcile line by line — it surfaced only when I sent it into an audit that mechanically matches claims against the source, not when I asked "what do you think?" And it didn't end in one pass: when I had a second AI recount, that recount had an error too, and a third pair of eyes caught it.&lt;/p&gt;

&lt;p&gt;In other words, the very thing this article preaches — "verify quantities by source reconciliation, not by AI's yes-or-no" — is something &lt;strong&gt;this article itself violated.&lt;/strong&gt; I fixed it, and I decided to keep this paragraph, because there's no more honest example than this one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned, and what I still don't know
&lt;/h2&gt;

&lt;p&gt;Let me draw the boundary honestly. This isn't a "finished methodology" — it's a &lt;strong&gt;reproducible failure report.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adversarial review by a different model can catch real bugs that passed the author's own tests (in the measurement tool, and in production code).&lt;/li&gt;
&lt;li&gt;But the reviewing AI's own discrimination has to be measured before you use it.&lt;/li&gt;
&lt;li&gt;The correctness of quantities and citations can only be confirmed by line-by-line reconciliation against the primary source — not by AI's yes-or-no.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I still don't know&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whether this practice beats "a single AI + human review" on cost-effectiveness — I have no control group.&lt;/li&gt;
&lt;li&gt;How much the vendor separation itself is contributing.&lt;/li&gt;
&lt;li&gt;Whether it reproduces in anyone else's setup.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Until the "what I still don't know" gets filled in, please read this as a failure report, not a success story.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;I think the question after "I combined some AIs" is &lt;strong&gt;"Did you test that reviewer?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you start keeping a ledger, the world looks a little different. An AI's agreement starts to look cheap, and &lt;strong&gt;disagreement from a model whose discrimination you've tested&lt;/strong&gt; starts to look valuable. And the thing to watch is the &lt;strong&gt;disagreement&lt;/strong&gt; between such models. Disagreement isn't the evidence itself — it's the signal to suspect a blind spot in one (or both) and start digging.&lt;/p&gt;

&lt;h2&gt;
  
  
  Notes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;[1]&lt;/strong&gt; Self-preference bias — an evaluator favoring its own generations — is reported by Panickssery, Bowman &amp;amp; Feng, "LLM Evaluators Recognize and Favor Their Own Generations" (&lt;a href="https://arxiv.org/abs/2404.13076" rel="noopener noreferrer"&gt;arXiv:2404.13076&lt;/a&gt;, 2024). Work measuring same-vendor / same-family effects is only at the 2025–2026 preprint stage; the established finding is own-output self-preference — which is why the main text holds off on the vendor-difference effect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[2]&lt;/strong&gt; Counted by event (one review = one item, no matter how many findings), confirmed catches by a mind different from the author came to 17, ones I couldn't confidently attribute came to 3, and catches by the author itself came to 3. There's no denominator and no control group, so I include it as a record of a tendency, not as evidence of superiority.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: this article was written with the very multi-AI practice it describes. The first draft was written by Claude (fable), alternatives and review came from OpenAI's Codex, integration and ledger reconciliation were done by Claude (opus), and the author verified and edited. The "confession" paragraph above is a record of what actually happened in that process. Keeping a record of which AI wrote what is one of the rules of this practice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>softwareengineering</category>
      <category>codereview</category>
    </item>
  </channel>
</rss>
