<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Anti-Patterns on EXPLAIN ANALYZE</title>
        <link>https://explainanalyze.com/tags/anti-patterns/</link>
        <description>Recent content in Anti-Patterns on EXPLAIN ANALYZE</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Sun, 26 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://explainanalyze.com/tags/anti-patterns/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Corruption Is a Feature, Not a Bug: Why LLMs Corrupt by Design</title>
            <link>https://explainanalyze.com/p/corruption-is-a-feature-not-a-bug-why-llms-corrupt-by-design/</link>
            <pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate>
            <guid>https://explainanalyze.com/p/corruption-is-a-feature-not-a-bug-why-llms-corrupt-by-design/</guid>
            <description>&lt;img src=&#34;https://explainanalyze.com/&#34; alt=&#34;Featured image of post Corruption Is a Feature, Not a Bug: Why LLMs Corrupt by Design&#34; /&gt;&lt;div class=&#34;tldr-box&#34;&gt;&#xA;    &lt;strong&gt;TL;DR&lt;/strong&gt;&#xA;    &lt;div&gt;Frontier LLMs corrupt at least 25% of delegated multi-step document work in lab conditions, with the rate rising with document size and turn count and tool use failing to help. The fix isn&amp;rsquo;t a better model - corruption is a property of the architecture, not a defect to be patched, and the only thing that closes the gap is a best-in-class domain expert at every checkpoint.&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Microsoft Research has a number on it. &lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2604.15597&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Laban, Schnabel, and Neville&amp;rsquo;s &lt;em&gt;LLMs Corrupt Your Documents When You Delegate&lt;/em&gt;&lt;/a&gt; (arxiv 2604.15597, April 2026) ran the DELEGATE-52 benchmark across 52 professional domains - coding, crystallography, music notation, professional writing - against 19 frontier LLMs including Claude 4.6 Opus, GPT 5.4, and Gemini 3.1 Pro. Average corruption: 25% of document content by the end of long workflows. Tool use doesn&amp;rsquo;t fix it. Agentic harnesses don&amp;rsquo;t fix it. Larger documents and longer interactions make it worse, not better. The number doesn&amp;rsquo;t depend on which frontier model you pick.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-25-is-a-floor-not-a-ceiling&#34;&gt;The 25% is a floor, not a ceiling&#xA;&lt;/h2&gt;&lt;p&gt;The benchmark is a controlled lab measurement against curated tasks with known ground truth. Real production has every reality catalogued in &lt;a class=&#34;link&#34; href=&#34;https://explainanalyze.com/p/what-ai-gets-wrong-about-your-database/&#34; &gt;What AI Gets Wrong About Your Database&lt;/a&gt; - undocumented conventions, polysemic columns, four-format date strings, JSON-as-schema, business logic in tribal knowledge, ten-year-old codebases with three &amp;ldquo;current&amp;rdquo; patterns for the same operation. The model in production reads from that impoverished signal, and the rate multiplies. The 25% is what you get on a good day on clean data. Production is not a good day.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-version-doesnt-matter---corruption-is-a-feature&#34;&gt;The version doesn&amp;rsquo;t matter - corruption is a feature&#xA;&lt;/h2&gt;&lt;p&gt;Claude Opus 4.7 is the latest as of writing. DELEGATE-52 measured 4.6, GPT 5.4, Gemini 3.1 Pro. The next generation will measure at the same floor. Not because the labs aren&amp;rsquo;t trying - they are - but because the corruption isn&amp;rsquo;t a defect to patch; it&amp;rsquo;s the property you bought when you bought &amp;ldquo;language model.&amp;rdquo; The same mechanism that makes the model useful (generalizing from a training distribution to plausible novel output) is the one that makes it corrupt your document (generalizing from a training distribution to plausible novel output that doesn&amp;rsquo;t match your specific facts). You can&amp;rsquo;t fix one without losing the other.&lt;/p&gt;&#xA;&lt;p&gt;LLMs are not intelligence. They are a probability machine. That isn&amp;rsquo;t a snub; it&amp;rsquo;s a description, and the engineering implications follow from taking it seriously.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-obvious-fixes-that-dont-work&#34;&gt;The obvious fixes that don&amp;rsquo;t work&#xA;&lt;/h2&gt;&lt;p&gt;The reflex when the rate is 25% is to reach for the things that usually fix software defects. None of them touch the floor:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&amp;ldquo;Use a better model.&amp;rdquo;&lt;/strong&gt; The benchmark already measured the frontier. Same rate.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&amp;ldquo;Add tools, RAG, fine-tuning.&amp;rdquo;&lt;/strong&gt; Tool use doesn&amp;rsquo;t change the rate. RAG narrows the prior, but the same sampling mechanism draws from it. Fine-tuning shifts the distribution; it doesn&amp;rsquo;t add deterministic constraints.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&amp;ldquo;Add agent self-verification.&amp;rdquo;&lt;/strong&gt; The verifier is the same architecture reading the same training distribution as the generator. It will ratify the corruption with the same confidence the generator produced it with.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&amp;ldquo;Add more context.&amp;rdquo;&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://explainanalyze.com/p/what-ai-gets-wrong-about-your-database/&#34; &gt;What AI Gets Wrong About Your Database&lt;/a&gt; already covered this - more context lowers the rate, doesn&amp;rsquo;t drive it to zero. The hallucination floor is structural.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;These aren&amp;rsquo;t bad ideas. They lower the rate from terrible to bad. They don&amp;rsquo;t make delegation safe.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-this-is-structural---the-mechanism&#34;&gt;Why this is structural - the mechanism&#xA;&lt;/h2&gt;&lt;p&gt;The mechanism is worth understanding because it&amp;rsquo;s what tells you why &amp;ldquo;use a better model&amp;rdquo; doesn&amp;rsquo;t move the floor.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Embeddings are statistical co-occurrence, not knowledge.&lt;/strong&gt; A model &amp;ldquo;understands&amp;rdquo; &lt;code&gt;users.deleted_at&lt;/code&gt; as a vector position adjacent to other &lt;code&gt;deleted_at&lt;/code&gt; columns it saw during training. There is no concept of &lt;em&gt;your&lt;/em&gt; soft-delete convention, &lt;em&gt;your&lt;/em&gt; tenant filter, the incident your team had last quarter, or the rule you wrote into the catalog comment two months ago. The vector is a fingerprint of what tokens like that one tend to appear next to in a billion training documents. It is not a fact set with internal consistency the model can check against.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Attention is a soft lookup, not retrieval.&lt;/strong&gt; Each output token is a weighted blend of every other token in context, with the weights being learned similarity scores. The model isn&amp;rsquo;t looking up &amp;ldquo;the right answer for this schema.&amp;rdquo; It&amp;rsquo;s computing a weighted average of what tokens like &lt;em&gt;this&lt;/em&gt; tend to be followed by tokens like &lt;em&gt;that&lt;/em&gt; in its training distribution. Correctness is the special case where the distribution happens to be sharply peaked on the correct token.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Generation is sampling from a probability distribution. Every token is a guess.&lt;/strong&gt; When training data is dense and consistent for the topic, the distribution is sharp - but a sharp distribution is reliable token-relationship probability, not knowledge of the answer. It means tokens in that region of the data point reliably to a particular continuation; the relationships aren&amp;rsquo;t facts, they&amp;rsquo;re co-occurrence statistics with no internal check against reality. When the underlying relationship happens to match the world, the guess looks right. When it doesn&amp;rsquo;t - a popular misconception in the training corpus, an outdated convention, a pattern typical of training data but not of your specific case - the guess is confidently wrong with the same calibration. When training data is sparse, contradictory, or local to your codebase, the distribution flattens, the guess gets noisier, and the calibration of the model&amp;rsquo;s &lt;em&gt;confidence&lt;/em&gt; stays the same. Nothing in the architecture says &amp;ldquo;I don&amp;rsquo;t know.&amp;rdquo; It says &amp;ldquo;this token has the highest probability among my distribution,&amp;rdquo; even when the distribution is barely above random - or sharp on a relationship that doesn&amp;rsquo;t hold for your case.&lt;/p&gt;&#xA;&lt;p&gt;To collapse those three steps into the operation that actually runs: every token is a vector - a position in a high-dimensional space, typically thousands of dimensions (4,096 in some models, 12,288 in others). &amp;ldquo;Similarity&amp;rdquo; between two tokens is the dot product (or cosine distance) of their vectors. Attention computes its weights by taking those similarity scores between the current position and every prior token in context, then softmax-normalizing. The &amp;ldquo;probability&amp;rdquo; of the next token is the dot product of the model&amp;rsquo;s predicted direction against every candidate token&amp;rsquo;s vector in the vocabulary, divided through a softmax to produce a distribution. Every probability you read out of the model is a distance computation between vectors in that high-dimensional space. &amp;ldquo;Understanding&amp;rdquo; is position. &amp;ldquo;Probability&amp;rdquo; is geometric proximity. There&amp;rsquo;s no step in the pipeline where knowledge enters - only matrix multiplications and a normalizing function.&lt;/p&gt;&#xA;&lt;p&gt;DELEGATE-52&amp;rsquo;s 25% is the rate at which the distribution flattened across 52 domains&amp;rsquo; edge cases and the sampling collapsed to plausible-sounding hallucination. The confidence reading stayed identical to when the model was right. This is &lt;a class=&#34;link&#34; href=&#34;https://explainanalyze.com/p/testing-your-database-part-1-why-ai-made-it-mandatory/&#34; &gt;Part 1&amp;rsquo;s &amp;ldquo;confidence is anti-signal&amp;rdquo;&lt;/a&gt; restated at the architecture level: confidence and correctness are produced by different mechanisms, neither tied to the other.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-best-in-class-sme-is-the-load-bearing-safeguard&#34;&gt;Why best-in-class SME is the load-bearing safeguard&#xA;&lt;/h2&gt;&lt;p&gt;Humans don&amp;rsquo;t operate this way. A crystallographer knows the unit cell parameters have to satisfy specific symmetry constraints - not because she&amp;rsquo;s seen a million similar structures, but because the constraints follow from a small set of facts she can verify against. A senior database engineer knows the soft-delete convention because she wrote it. A composer knows the chord progression doesn&amp;rsquo;t resolve because the leading tone wasn&amp;rsquo;t raised. That knowledge is symbolic, propositional, traceable to evidence the human can produce on demand. It isn&amp;rsquo;t a probability distribution.&lt;/p&gt;&#xA;&lt;p&gt;That is the gap an SME closes. Not &amp;ldquo;any reviewer with a checklist&amp;rdquo; - a generalist reviewer can&amp;rsquo;t tell when the model has silently corrupted the symmetry constraints, the soft-delete predicate, or the leading-tone rule. The corruption looks plausible because the model&amp;rsquo;s job is producing plausible output. Catching it requires someone who holds the actual constraints in their head and can check the model&amp;rsquo;s output against them. The cheaper the SME, the more corruption ships.&lt;/p&gt;&#xA;&lt;p&gt;The labor-market reading of this is already visible. &lt;a class=&#34;link&#34; href=&#34;https://www.ibm.com/think/news/entry-level-roles-get-reset-ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;IBM announced in February 2026 it would triple US entry-level hiring&lt;/a&gt; - explicitly because the AI era hollowed out the rote tasks that used to fill junior roles and left the load-bearing work (judgment, customer interaction, oversight of automated systems) needing humans who grow into it. The pipeline argument is unforgiving: cut juniors to capture the AI-productivity dividend, save short-term, and starve the senior layer the next decade of work depends on. The companies treating today&amp;rsquo;s juniors as a long bet on the experts they&amp;rsquo;ll become are reading the architecture honestly. The ones cutting them to bank the LLM savings are paying down the pipeline their competitors are building.&lt;/p&gt;&#xA;&lt;p&gt;The supply side is tightening on both ends. The senior tier is retiring out - the engineers who built the soft-delete conventions, the schema histories, the production-incident memory - and that institutional knowledge isn&amp;rsquo;t transferring into a probability distribution any model can sample from. On the formation side, &lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/research/AI-assistance-coding-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Anthropic&amp;rsquo;s own research shows engineers using AI assistance score measurably lower on comprehension quizzes about the code they shipped&lt;/a&gt; than engineers who wrote it themselves; the skill-formation loop that turns juniors into SMEs over a decade - write, struggle, debug, internalize - gets shortcut by tooling that produces working code without the struggle. Companies that don&amp;rsquo;t actively design against both effects get the worst of three pressures: SMEs retiring, juniors not deepening, and an architecture that has no internal substitute for either.&lt;/p&gt;&#xA;&lt;p&gt;The unintuitive recommendation that follows: don&amp;rsquo;t fire the humans you have. The SME labor market will tighten faster than LLM tooling can replace what SMEs do - supply is shrinking on both ends, the architecture has no substitute, and today&amp;rsquo;s senior engineer is cheap relative to their replacement cost in three to five years. Companies banking the LLM productivity dividend by cutting senior staff are trading short-term margin for a much steeper rehiring bill against a constrained future market. The math will look obvious in retrospect. It doesn&amp;rsquo;t look obvious now because the LLM line item lands on the income statement before the SME-shortage bill arrives.&lt;/p&gt;&#xA;&lt;p&gt;This is why &amp;ldquo;best-in-class&amp;rdquo; is load-bearing in the title. A junior with a checklist runs the same architecture-level pattern-matching the model does - recognizes things that look right, doesn&amp;rsquo;t catch silent semantic drift. A top-of-class SME has the constraint set internalized to the point that the wrong answer feels wrong, even when the surface looks correct. That feeling is the safeguard the architecture cannot provide.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-system&#34;&gt;The system&#xA;&lt;/h2&gt;&lt;p&gt;Don&amp;rsquo;t delegate end-to-end. Decompose work into chunks small enough that an SME can verify each one in minutes. Checkpoint between chunks. Route each checkpoint to the SME whose domain it&amp;rsquo;s in. Treat every chunk as 25%-floor untrusted by default. Don&amp;rsquo;t trust agentic chains to self-verify (the verifier reads from the same training distribution as the generator). Don&amp;rsquo;t trust LLM-judge eval as a release gate (&lt;a class=&#34;link&#34; href=&#34;https://explainanalyze.com/p/testing-your-database-part-2-what-to-test-and-how/&#34; &gt;Part 2 of the testing series&lt;/a&gt; covered why; the architectural reason is in the mechanism above). The system is decomposition + checkpoints + SMEs, not a better model and not a better prompt.&lt;/p&gt;&#xA;&lt;p&gt;The cost is real. SMEs are expensive, the workflow is slower, and the temptation to skip checkpoints when the early ones look fine is constant. The cost of the alternative - silent 25%-floor corruption layered through a long workflow, surfaced six months later when the data has propagated past the recovery window - is much higher and structurally harder to detect. The math is the math the testing series already laid out: catching corruption pre-deployment is a fraction of the cost of finding it after.&lt;/p&gt;&#xA;&lt;h2 id=&#34;when-this-doesnt-apply&#34;&gt;When this doesn&amp;rsquo;t apply&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Drafts you&amp;rsquo;ll discard.&lt;/strong&gt; Brainstorming, throwaway code, content the human will rewrite anyway. The model is generating a starting point, not delegated output.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;The user is the SME.&lt;/strong&gt; A senior database engineer using AI to draft SQL she&amp;rsquo;ll review line-by-line is using the model as autocomplete, not as delegation. The 25% is irrelevant because she&amp;rsquo;s the verification layer.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Low-stakes, recoverable work.&lt;/strong&gt; A typo in a personal email isn&amp;rsquo;t a 25% corruption event you need to system-design around.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bounded, well-trodden problems.&lt;/strong&gt; Generating boilerplate in a popular language with a well-documented framework is the dense-distribution sweet spot. The rate is much lower because the prior is sharp.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Proof-of-concept and rapid-feedback work.&lt;/strong&gt; &amp;ldquo;Does this idea work at all&amp;rdquo; needed in minutes. The 25% floor is the right trade because the output is a directional signal, not production code; the cost of being wrong is &amp;ldquo;we tried, didn&amp;rsquo;t pan out.&amp;rdquo;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The article is about the rest - production work where corruption is invisible, expensive to fix, and the team is treating the model as a co-author instead of a guess machine.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-bigger-picture&#34;&gt;The bigger picture&#xA;&lt;/h2&gt;&lt;p&gt;Calling the model &amp;ldquo;intelligence&amp;rdquo; is the framing that gets engineers in trouble. Intelligence implies a knowing entity that holds facts, checks them against evidence, and tells you when it doesn&amp;rsquo;t know. The architecture has none of those properties. It has a learned distribution and a sampling procedure. The output is a guess every time, and the guess is well-calibrated only where the training data was dense and consistent - which is precisely &lt;em&gt;not&lt;/em&gt; where your specific codebase, your specific schema, or your specific domain conventions live.&lt;/p&gt;&#xA;&lt;p&gt;The 25% floor is what that guarantees, in numbers. Versions don&amp;rsquo;t move it. Tools don&amp;rsquo;t move it. Bigger context doesn&amp;rsquo;t drive it to zero. The only thing that closes the gap between the architecture and the work is a human who actually knows the domain, checking the output against constraints the architecture can&amp;rsquo;t represent.&lt;/p&gt;&#xA;&lt;p&gt;Treat the model as what it is - a probability machine - and the engineering decisions get easier. Decompose. Checkpoint. Put the best SME you have on each domain. Build the testing layer the way &lt;a class=&#34;link&#34; href=&#34;https://explainanalyze.com/p/testing-your-database-part-1-why-ai-made-it-mandatory/&#34; &gt;the testing series&lt;/a&gt; describes. Stop expecting the next model to fix it. The corruption isn&amp;rsquo;t a bug. It&amp;rsquo;s the feature.&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
