<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hallucination From First Principles: OK on Programmer.ie: Modern AI programming</title>
    <link>http://programmer.ie/books/hallucination-from-first-principles/</link>
    <description>Recent content in Hallucination From First Principles: OK on Programmer.ie: Modern AI programming</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 31 Aug 2026 09:00:00 +0100</lastBuildDate>
    <atom:link href="http://programmer.ie/books/hallucination-from-first-principles/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>When Models Make Things Up</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/01-chapter/</link>
      <pubDate>Sat, 29 Aug 2026 22:10:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/01-chapter/</guid>
      <description>&lt;p&gt;A language model can produce an answer that is fluent, grammatical, detailed, confident, and wrong.&lt;/p&gt;&#xA;&lt;p&gt;That combination is what makes hallucination interesting.&lt;/p&gt;&#xA;&lt;p&gt;Ordinary software failures usually leave evidence. A parser throws an exception. A database rejects an invalid constraint. A test fails. A network call times out. The failure changes the shape of the result.&lt;/p&gt;&#xA;&lt;p&gt;A hallucinating language model can do something more difficult to handle: &lt;strong&gt;it can fail without looking broken&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hallucination Is Not One Thing</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/02-chapter/</link>
      <pubDate>Sat, 29 Aug 2026 22:45:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/02-chapter/</guid>
      <description>&lt;p&gt;Chapter 1 began with a familiar failure: a language model says something fluent that it cannot justify.&lt;/p&gt;&#xA;&lt;p&gt;That description is useful until we try to build a detector.&lt;/p&gt;&#xA;&lt;p&gt;Consider six outputs:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;A. The model invents a person who does not exist.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;B. The model names two real companies but reverses which acquired which.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;C. The model cites a real paper that does not support the claim.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;D. The model says it inspected a file that it never received.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E. The model answers a question even though the available evidence is insufficient.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;F. The model gives the same generic recommendation after the decisive facts&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   of the problem have been reversed.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;All six can produce plausible text.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Evidence, Truth, and Verifiability</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/03-chapter/</link>
      <pubDate>Sat, 29 Aug 2026 23:20:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/03-chapter/</guid>
      <description>&lt;p&gt;Chapter 2 gave us a rule for talking about hallucination precisely:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Relative to what reference did the output fail?&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;That question immediately creates another one.&lt;/p&gt;&#xA;&lt;p&gt;What counts as a reference strong enough to constrain the answer?&lt;/p&gt;&#xA;&lt;p&gt;Suppose a model says:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Company A acquired Company B in 2024.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;There are several different things we might mean when we ask whether this is acceptable:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;What exact proposition has been asserted?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Is that proposition true at the relevant time?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Do we possess evidence for it?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Does that evidence actually support this exact relationship?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Can we identify the source and passage that support it?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Where did that source come from?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Is the source sufficiently reliable and current for this claim?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Is the evidence package sufficient for the action we want to authorize?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Could the claim be verified by this system now?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Has the verification actually been performed?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Would the active policy allow the claim to be published or acted upon?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Those questions are related.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How Do You Measure a Hallucination?</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/04-chapter/</link>
      <pubDate>Sat, 29 Aug 2026 23:14:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/04-chapter/</guid>
      <description>&lt;p&gt;The first three chapters deliberately avoided building a detector.&lt;/p&gt;&#xA;&lt;p&gt;Before designing one, we needed to define exactly what it would be expected to detect.&lt;/p&gt;&#xA;&lt;p&gt;Chapter 1 established that fluent generation can continue after evidential support has weakened or disappeared.&lt;/p&gt;&#xA;&lt;p&gt;Chapter 2 showed that &lt;em&gt;hallucination&lt;/em&gt; covers several different failure relationships.&lt;/p&gt;&#xA;&lt;p&gt;Chapter 3 then separated the objects a reliability system must not collapse:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;truth&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;≠&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;evidence&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;≠&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;support&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;≠&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;attribution&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;≠&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;provenance&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;≠&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;verification&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;≠&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;policy acceptance&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now we can finally ask the engineering question:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hallucination Energy</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/05-chapter/</link>
      <pubDate>Sat, 29 Aug 2026 23:14:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/05-chapter/</guid>
      <description>&lt;p&gt;Chapter 4 ended with a rule:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;A hallucination measurement is a sensor, not a verdict.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;This chapter builds one such sensor completely.&lt;/p&gt;&#xA;&lt;p&gt;It begins with a property we care about:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;semantic containment&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;But the first lesson of Chapter 4 was the proxy gap. We cannot inspect semantic containment directly. We can inspect representations.&lt;/p&gt;&#xA;&lt;p&gt;So the construction in this chapter has three layers:&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;&#xA;    graph TD&#xA;    LP[LATENT PROPERTY: semantic containment] --&amp;gt; RA[representation assumption]&#xA;    RA --&amp;gt; PP[PROXY PROPERTY: embedding-subspace containment]&#xA;    PP --&amp;gt; GC[exact geometric calculation]&#xA;    GC --&amp;gt; M[MEASUREMENT: squared projection residual]&#xA;  &lt;/pre&gt;&#xA;  &lt;p&gt;That distinction is the chapter&amp;rsquo;s most important caveat.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Evaluate a Hallucination Detector</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/06-chapter/</link>
      <pubDate>Sat, 29 Aug 2026 23:14:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/06-chapter/</guid>
      <description>&lt;p&gt;Chapter 5 gave us something concrete enough to evaluate.&lt;/p&gt;&#xA;&lt;p&gt;Hallucination Energy has:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a target property&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;an observable proxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a mathematical definition&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;an implementation&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;continuous outputs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;natural-task signal&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;adversarial failures&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That sounds like progress.&lt;/p&gt;&#xA;&lt;p&gt;It is also the point where it becomes dangerously easy to fool ourselves.&lt;/p&gt;&#xA;&lt;p&gt;Suppose a detector reports:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;AUC = 0.75&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Is that good?&lt;/p&gt;&#xA;&lt;p&gt;Perhaps.&lt;/p&gt;&#xA;&lt;p&gt;But we still do not know:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;which class was called positive&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;how hard the negatives were&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whether train and test shared source documents&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whether they shared entities or semantic neighborhoods&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;what prevalence the deployment actually has&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whether the labels were trustworthy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;how wide the confidence interval was&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;what happens at 1% false acceptance&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;how uncertain that 1% estimate is&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whether the threshold transfers to another domain&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whether the score is a probability at all&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whether the verifier itself failed upstream&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whether the generator changed&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whether decoding parameters changed&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whether the model collapses on structural adversaries&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A single number cannot answer those questions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Breaking the Detector</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/07-chapter/</link>
      <pubDate>Sun, 30 Aug 2026 00:17:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/07-chapter/</guid>
      <description>&lt;p&gt;Chapter 6 changed the standard for evaluation.&lt;/p&gt;&#xA;&lt;p&gt;A detector is not trustworthy because it has a good AUC.&lt;/p&gt;&#xA;&lt;p&gt;It becomes trustworthy only after we understand how its errors behave under the conditions in which policy will use it.&lt;/p&gt;&#xA;&lt;p&gt;That immediately suggests a more aggressive question.&lt;/p&gt;&#xA;&lt;p&gt;Instead of waiting for those conditions to appear naturally, can we &lt;strong&gt;search for them deliberately&lt;/strong&gt;?&lt;/p&gt;&#xA;&lt;p&gt;Suppose a containment detector works well on ordinary unsupported claims.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Containment Is Not Truth</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/08-chapter/</link>
      <pubDate>Sun, 30 Aug 2026 09:10:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/08-chapter/</guid>
      <description>&lt;p&gt;Chapter 7 deliberately broke the detector.&lt;/p&gt;&#xA;&lt;p&gt;The most useful failures had a peculiar shape. The unsupported claim did &lt;strong&gt;not&lt;/strong&gt; introduce a completely new topic. It did not necessarily introduce a new entity. It did not always wander outside the semantic region represented by the evidence.&lt;/p&gt;&#xA;&lt;p&gt;Instead, the attack often preserved almost everything that a broad semantic representation could reasonably notice:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;same entities&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;same event vocabulary&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;same topic&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;same evidence neighborhood&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;same quantities or dates, sometimes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;same semantic ingredients&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;while changing the thing that made the proposition correct:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Beyond Hallucination: Consistency and Sensitivity</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/09-chapter/</link>
      <pubDate>Sun, 30 Aug 2026 10:16:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/09-chapter/</guid>
      <description>&lt;p&gt;Chapter 8 ended with a rule:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;If a downstream decision depends on a distinction, do not discard that distinction before the decision is made.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;That rule breaks the idea of one universal hallucination score.&lt;/p&gt;&#xA;&lt;p&gt;A response can be well contained and still reverse a relation. It can preserve every relation and still ignore the decisive facts of the problem. It can be correct once and unstable under a harmless rephrasing. It can be perfectly repeatable and consistently wrong.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Safe but Useless Model</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/10-chapter/</link>
      <pubDate>Sun, 30 Aug 2026 10:42:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/10-chapter/</guid>
      <description>&lt;p&gt;Chapter 9 changed the unit of evaluation.&lt;/p&gt;&#xA;&lt;p&gt;Instead of asking whether one answer looks good, we began studying a &lt;strong&gt;family of related executions&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;That immediately reveals a failure that static evaluation can miss almost completely.&lt;/p&gt;&#xA;&lt;p&gt;Consider two organizations.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ORGANIZATION A&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3 months of runway&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;falling demand&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;negative cash flow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;credit line nearly exhausted&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ORGANIZATION B&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;5 years of runway&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rapidly growing demand&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;strong margins&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;large cash reserve&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ask both:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Knowing When Not to Answer</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/11-chapter/</link>
      <pubDate>Sun, 30 Aug 2026 11:15:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/11-chapter/</guid>
      <description>&lt;p&gt;Chapter 10 ended with an ambiguity.&lt;/p&gt;&#xA;&lt;p&gt;A model gave weak, generic advice.&lt;/p&gt;&#xA;&lt;p&gt;Perhaps it ignored decisive evidence.&lt;/p&gt;&#xA;&lt;p&gt;But perhaps the evidence never justified a decisive answer in the first place.&lt;/p&gt;&#xA;&lt;p&gt;Those are not the same failure.&lt;/p&gt;&#xA;&lt;p&gt;Consider this question:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;What was Company A&amp;#39;s Q3 revenue?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and this evidence:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Q1 revenue was $41.2 million.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Q2 revenue was $43.8 million.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The company expects second-half demand to improve.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A language model can easily produce something that sounds reasonable:&lt;/p&gt;</description>
    </item>
    <item>
      <title>From Measurements to Policy</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/12-chapter/</link>
      <pubDate>Sun, 30 Aug 2026 18:37:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/12-chapter/</guid>
      <description>&lt;p&gt;Chapter 11 ended with a typed reliability record.&lt;/p&gt;&#xA;&lt;p&gt;It might say:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;containment          = PASS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;relation_fidelity    = PASS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sensitivity          = PASS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;epistemic_adequacy   = ANSWERABLE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;provenance           = UNVERIFIED&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That record describes the candidate.&lt;/p&gt;&#xA;&lt;p&gt;It still does not authorize the candidate.&lt;/p&gt;&#xA;&lt;p&gt;To make the distinction concrete, we built a deliberately flawed reference policy that checked containment, structural fidelity, and answerability but forgot to require verified provenance for a high-risk action.&lt;/p&gt;&#xA;&lt;p&gt;Running the same immutable record through two policy versions produced:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Verification, Repair, and Rejection</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/13-chapter/</link>
      <pubDate>Sun, 30 Aug 2026 18:38:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/13-chapter/</guid>
      <description>&lt;p&gt;Chapter 12 gave the system a control plane.&lt;/p&gt;&#xA;&lt;p&gt;It can now say:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;commitment = HOLD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;next_action = VERIFY&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;commitment = HOLD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;next_action = RETRIEVE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;commitment = HOLD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;next_action = REFINE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;commitment = DENY&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;response_mode = REJECTION&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Those are policy decisions.&lt;/p&gt;&#xA;&lt;p&gt;They are not yet recovery implementations.&lt;/p&gt;&#xA;&lt;p&gt;The obvious implementation is dangerously tempting:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The answer failed a check.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Ask the model to fix it.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But the model that produced the first unsupported statement can produce a second unsupported statement while &amp;ldquo;correcting&amp;rdquo; it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Memory Contamination Problem</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/14-chapter/</link>
      <pubDate>Sun, 30 Aug 2026 18:39:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/14-chapter/</guid>
      <description>&lt;p&gt;Chapter 13 ended with a strict recovery invariant:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;repair&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;→ new candidate state&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;→ re-measure&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;→ re-authorize&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and with one additional rule:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;candidate in HOLD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;→ do not persist as trusted factual memory&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That second rule changes the scale of the problem.&lt;/p&gt;&#xA;&lt;p&gt;A hallucinated sentence displayed once is transient.&lt;/p&gt;&#xA;&lt;p&gt;The same sentence written into persistent state can survive the conversation that created it.&lt;/p&gt;&#xA;&lt;p&gt;It can then be:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;retrieved&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;summarized&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;copied&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cited&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;used as agent experience&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;used to fill a user profile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;inserted into a vector index&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fed into another model&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;used as a future repair source&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and eventually appear to the system as if it came from somewhere else.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building Systems That Distrust Their Models</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/15-chapter/</link>
      <pubDate>Sun, 30 Aug 2026 21:01:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/15-chapter/</guid>
      <description>&lt;p&gt;The first chapter began with a simple observation:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;A language model can produce a fluent answer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;without possessing a mechanism that proves the answer is true.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Fourteen chapters later, that fact has not changed.&lt;/p&gt;&#xA;&lt;p&gt;The model can still:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;invent&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;misbind&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;misattribute&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ignore decisive context&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;answer without enough evidence&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;accept bad retrieval&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;repair one error by creating another&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;repeat its own stored mistake&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The final architecture does not make those possibilities disappear.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Appendix: The Evidence Ledger</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/16-appendix/</link>
      <pubDate>Mon, 31 Aug 2026 09:00:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/16-appendix/</guid>
      <description>&lt;p&gt;The book argues that a claim should be governed by its provenance, its evidential support, and an explicit statement of what it does not establish. This appendix applies that discipline to the book itself.&lt;/p&gt;&#xA;&lt;p&gt;Every original empirical number produced for this book is listed here with three things: where it was measured, what its provenance status is, and what it does not establish.&lt;/p&gt;&#xA;&lt;p&gt;Two facts are visible immediately from the ledger:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
