<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Sovereign Trust]]></title><description><![CDATA[Sovereign Trust]]></description><link>https://sovereign.geoclear.io</link><image><url>https://substackcdn.com/image/fetch/$s_!tBJk!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e7d3b5-ed8b-4a82-808d-a220ee99ed2d_512x512.png</url><title>Sovereign Trust</title><link>https://sovereign.geoclear.io</link></image><generator>Substack</generator><lastBuildDate>Fri, 01 May 2026 08:00:35 GMT</lastBuildDate><atom:link href="https://sovereign.geoclear.io/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Shailesh Bhujbal]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[shaileshjgd@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[shaileshjgd@substack.com]]></itunes:email><itunes:name><![CDATA[Shailesh Bhujbal]]></itunes:name></itunes:owner><itunes:author><![CDATA[Shailesh Bhujbal]]></itunes:author><googleplay:owner><![CDATA[shaileshjgd@substack.com]]></googleplay:owner><googleplay:email><![CDATA[shaileshjgd@substack.com]]></googleplay:email><googleplay:author><![CDATA[Shailesh Bhujbal]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Launching the GeoClear Notary: Verification over Information]]></title><description><![CDATA[Every JSON response now carries a cryptographic receipt. Here's why that changes everything.]]></description><link>https://sovereign.geoclear.io/p/launching-the-geoclear-notary-verification</link><guid isPermaLink="false">https://sovereign.geoclear.io/p/launching-the-geoclear-notary-verification</guid><dc:creator><![CDATA[Shailesh Bhujbal]]></dc:creator><pubDate>Fri, 01 May 2026 06:25:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tBJk!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e7d3b5-ed8b-4a82-808d-a220ee99ed2d_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Here's what GeoClear just notarized while you opened this post &#8212; request hash, response hash, endpoint, timestamp, all signed by an HSM-bound key. Verify it yourself in 30 seconds.</em></p><pre><code>{
  "iss": "https://geoclear.io",
  "iat": 1777612849,
  "endpoint": "/api/health",
  "req_hash": "sha256:6e849e1d1d0fd7a01ce7258340d6fdbf60ba68db987ba000f1fb87d2ed2f64f2",
  "resp_hash": "sha256:e2f20304ea4586a988d287a9b914b77be7d9425044a4299a9675ace73bb413bc",
  "status": 200,
  "kid": "geoclear-response-signing-2026"
}</code></pre><p>Two posts ago, we asked whether machines that move money should be allowed to operate without explaining themselves.</p><p>Last post, we ran the same coding task across 8 leading AI models &#8212; three times &#8212; and watched the same prompt produce visibly different answers, run after run. Probability is not a substitute for proof.</p><p>If you read those two posts and felt the discomfort, this post is the answer.</p><h2>The Notary, not the Log.</h2><p>A Transaction Notary is not a logger. A logger captures <em>what</em> happened. A notary captures <em>that it happened correctly</em> &#8212; and produces evidence that survives without the notary.</p><p>Every machine decision GeoClear makes now carries a cryptographic receipt that you can verify, archive, and present as evidence &#8212; without trusting our database, our uptime, or our future continued existence.</p><h2>What's actually shipping right now.</h2><p>Every JSON response on <code>geoclear.io</code> &#8212; every API endpoint, every demo lookup, every MCP tool call &#8212; now carries two new HTTP headers:</p><ul><li><p><code>X-GeoClear-Receipt</code> &#8212; a JWS (JSON Web Signature) over the response body, in <code>ES384</code> format.</p></li><li><p><code>X-GeoClear-Receipt-Kid</code> &#8212; the public key ID, so verifiers know which key signed it.</p></li></ul><p>The signing key is an <strong>HSM-bound ECDSA P-384 key in AWS KMS</strong>, on the FIPS 140-2 Level 3 validated path. The key cannot be exported. The HSM does the math; the host machine never sees the private bits.</p><p>Every emitted receipt is also written to an append-only audit table inside our database. <code>UPDATE</code> and <code>DELETE</code> privileges on that table are revoked at the database layer &#8212; even we cannot rewrite history.</p><p>The public verifier &#8212; <code>npm install @geoclear/verify-receipt</code> &#8212; is open source (MIT) and validates anything we've ever signed. The public key lives at <code>https://geoclear.io/.well-known/jwks.json</code>. You can verify a response offline, six months from now, with no network call to us.</p><h2>Verification over Information.</h2><p>Information without a verifiable signature is a claim. A signed receipt is evidence.</p><p>When you decide using a GeoClear response, you're not deciding on our word. You're deciding on a cryptographic artifact you can verify offline, replay six months from now, and present in court if you have to.</p><p>That's the difference between trusting an API and using a Notary.</p><h2>What's next.</h2><p>Today: Location Notarization. We started with location because it's the hardest decision tier to prove &#8212; and if a rooftop, an address, a flood polygon can be notarized, anything can.</p><p>We are currently opening early-access tiers for high-precision notarization: from <strong>Climate Risk</strong> and <strong>Flood Determination</strong> to <strong>Drone Deliverability</strong> and <strong>Sovereign Underwriting</strong>. If your machine needs to prove its work, we are building the envelope.</p><p>The roadmap is verifiable infrastructure for the machine economy. Not <em>Trust Me</em>. <em>Verify Me</em>.</p><h2>Try it.</h2><ul><li><p><strong>Live demo:</strong> https://geoclear.io/security#receipt-demo</p></li><li><p><strong>Verifier package:</strong> <code>npm install @geoclear/verify-receipt</code></p></li><li><p><strong>See a live receipt header in your terminal:</strong> <code>curl -sI https://geoclear.io/api/health | grep -i x-geoclear</code></p></li></ul><p><strong>Stop trusting black-box logs. Start holding the proof.</strong></p>]]></content:encoded></item><item><title><![CDATA[I Ran the Same Coding Task Across 8 AI Models — Then I Did It Again]]></title><description><![CDATA[I Ran the Same Coding Task Across 8 AI Models &#8212; Then I Did It Again]]></description><link>https://sovereign.geoclear.io/p/i-ran-the-same-coding-task-across-8-ai-models-then-i-did-it-again-392f4ddee5bb</link><guid isPermaLink="false">https://sovereign.geoclear.io/p/i-ran-the-same-coding-task-across-8-ai-models-then-i-did-it-again-392f4ddee5bb</guid><dc:creator><![CDATA[Shailesh Bhujbal]]></dc:creator><pubDate>Fri, 03 Apr 2026 09:34:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d71ea303-2718-4f5e-9208-8e4d41549f10_972x548.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y9qw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y9qw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png 424w, https://substackcdn.com/image/fetch/$s_!y9qw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png 848w, https://substackcdn.com/image/fetch/$s_!y9qw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png 1272w, https://substackcdn.com/image/fetch/$s_!y9qw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y9qw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!y9qw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png 424w, https://substackcdn.com/image/fetch/$s_!y9qw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png 848w, https://substackcdn.com/image/fetch/$s_!y9qw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png 1272w, https://substackcdn.com/image/fetch/$s_!y9qw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F829fd6bb-3176-45ce-8c8a-c996cb97660d_972x548.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">8 models, 1 task, 19 runs&#8202;&#8212;&#8202;N-run averages and Redis atomicity stratification. Full data: github.com/shaileshjgd/FrontierModelEvals</figcaption></figure></div><h3><strong>I Ran the Same Coding Task Across 8 AI Models&#8202;&#8212;&#8202;Then I Did It&nbsp;Again</strong></h3><p><em>A free model reached the top tier. Then it didn&#8217;t hit it&nbsp;again.</em></p><p><em>All Redis code excerpts and timing data published for independent verification: <a href="https://github.com/shaileshjgd/FrontierModelEvals">github.com/shaileshjgd/FrontierModelEvals</a></em></p><p>I build large-scale ML and analytics systems, and I&#8217;ve spent the better part of the past year trying to answer one question honestly: which AI models actually hold up when the output needs to go to production, not just pass a demo? My <a href="https://medium.com/@shaileshjgd/the-case-for-machines-that-can-explain-themselves-a8aed2e1372b">previous piece</a> argued that fluency without justification is insufficient for production AI systems. This is the empirical follow-up&#8202;&#8212;&#8202;applied to the tools engineers use every&nbsp;day.</p><p>On April 2, 2026&#8202;&#8212;&#8202;the same day Google released Gemma 4&#8202;&#8212;&#8202;I ran a controlled benchmark across eight of the most capable AI models available. The task: write a production-ready sliding window rate limiter for Express.js, complete with Redis adapter, TypeScript types, and real unit tests. The kind of thing a senior engineer might spend half a day&nbsp;on.</p><p>Then I ran it again. And again. Because a single run isn&#8217;t a finding&#8202;&#8212;&#8202;it&#8217;s a data&nbsp;point.</p><p>The single-run result: <strong>Google&#8217;s Gemma 4 31B, accessible for free via NVIDIA&#8217;s inference gateway, scored 9.3/10 vs. Claude Opus 4.6&#8217;s 9.7&#8202;&#8212;&#8202;both in the top tier.</strong> That&#8217;s the headline many people would stop&nbsp;at.</p><p>The multi-run result is more interesting: <strong>Opus was consistent across both runs (9.7, 9.5&#8202;&#8212;&#8202;avg 9.6). Gemma was high-variance (9.3, 6.3, 5.7&#8202;&#8212;&#8202;avg 7.1).</strong> The top-tier ceiling is real. Hitting it consistently is&nbsp;not.</p><p>I want to be precise about what that means and what it doesn&#8217;t, because the details&nbsp;matter.</p><h3>Why This Task, Not HumanEval</h3><p>Before getting into results, I need to address the benchmark selection. HumanEval, MBPP, and SWEBench are all useful, but they don&#8217;t capture what separates a capable junior engineer from a strong senior one on real infrastructure tasks. This benchmark task was designed to require simultaneously:</p><p><strong>Algorithmic correctness</strong>&#8202;&#8212;&#8202;sliding window log, not the simpler fixed-window approximation</p><p><strong>Distributed systems reasoning</strong>&#8202;&#8212;&#8202;Redis atomicity, race condition avoidance</p><p><strong>Production operations thinking</strong>&#8202;&#8212;&#8202;fail-open error handling, memory leak prevention, connection lifecycle</p><p><strong>Test engineering</strong>&#8202;&#8212;&#8202;fake timers for deterministic sliding window validation, not just happy-path assertions</p><p><strong>API design discipline</strong>&#8202;&#8212;&#8202;RFC-compliant headers, pluggable storage abstraction</p><p>This is the kind of task where the difference between a technically correct and a production-safe implementation is invisible to a quick read-through&#8202;&#8212;&#8202;and where AI-generated code poses real operational risk if used without expert&nbsp;review.</p><h3>The Models, Honestly Described</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QSJB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QSJB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png 424w, https://substackcdn.com/image/fetch/$s_!QSJB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png 848w, https://substackcdn.com/image/fetch/$s_!QSJB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png 1272w, https://substackcdn.com/image/fetch/$s_!QSJB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QSJB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!QSJB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png 424w, https://substackcdn.com/image/fetch/$s_!QSJB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png 848w, https://substackcdn.com/image/fetch/$s_!QSJB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png 1272w, https://substackcdn.com/image/fetch/$s_!QSJB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fe0d8c9-970e-4761-92a6-84a3eb6d451a_900x472.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>One immediate finding before a line of code was evaluated: <strong>o3 produced no output.</strong> OpenAI migrated o3 to require max_completion_tokens instead of max_tokens&#8202;&#8212;&#8202;a documented parameter change that the evaluation script hadn&#8217;t yet adopted. The API returned a 400 error in 1.1 seconds. It&#8217;s a migration, not instability&#8202;&#8212;&#8202;but it illustrates why AI API changelogs belong in your dependency monitoring process alongside npm and&nbsp;pip.</p><p><em>A note on model versions: </em>Claude Sonnet 4.6 was released in February 2026 but was not included in this run. The benchmark used the model versions in active production use in my tooling as of April 2. Sonnet 4.5 was the Sonnet-tier model in that configuration. Sonnet 4.6 will be included in the next&nbsp;eval.</p><h3>The Scoring&nbsp;Rubric</h3><p>I scored each response on six dimensions (1&#8211;10 each), averaged for a final&nbsp;score:</p><p><strong>1. Strategy &amp; Architecture</strong>&#8202;&#8212;&#8202;Is there a clear layered design with explicit reasoning?</p><p><strong>2. Code Correctness</strong>&#8202;&#8212;&#8202;Is the sliding window semantics right? Any&nbsp;bugs?</p><p><strong>3. Redis Implementation</strong>&#8202;&#8212;&#8202;What&#8217;s the atomicity level?</p><p><strong>4. Test Quality</strong>&#8202;&#8212;&#8202;Do tests actually validate the sliding window property?</p><p><strong>5. Production Readiness</strong>&#8202;&#8212;&#8202;Fail-open? Memory safe? Headers RFC-compliant?</p><p><strong>6. Drop-in Readiness</strong>&#8202;&#8212;&#8202;Can you use this with minimal&nbsp;editing?</p><h3>The Results</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uuab!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uuab!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png 424w, https://substackcdn.com/image/fetch/$s_!Uuab!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png 848w, https://substackcdn.com/image/fetch/$s_!Uuab!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png 1272w, https://substackcdn.com/image/fetch/$s_!Uuab!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uuab!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Uuab!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png 424w, https://substackcdn.com/image/fetch/$s_!Uuab!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png 848w, https://substackcdn.com/image/fetch/$s_!Uuab!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png 1272w, https://substackcdn.com/image/fetch/$s_!Uuab!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2013ead7-a01a-4255-a62e-b560fde491e4_870x560.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3>The Finding That Surprised Me Most: Redis is the Discriminator</h3><p>When I set out to evaluate these models, I expected the differentiation to appear in code correctness or architectural clarity. Instead, the single dimension with the widest variance&#8202;&#8212;&#8202;and the most direct production risk implication&#8202;&#8212;&#8202;was Redis implementation quality.</p><p>Here&#8217;s the stratification:</p><p><strong>Lua scripting&#8202;&#8212;&#8202;Only Claude Opus&nbsp;4.6</strong></p><p>Opus implemented Redis rate limiting via Lua scripts: ZREMRANGEBYSCORE + ZADD + ZCARD executed as a single atomic transaction. This is the only approach that is provably correct under arbitrary concurrency. No race condition is possible because the script runs atomically on the Redis&nbsp;server.</p><p><strong>ZSET Pipeline&#8202;&#8212;&#8202;Gemma 4 31B and&nbsp;GPT-4.1</strong></p><p>Both used Redis sorted sets with pipelined commands. The pipeline batches network round-trips but is not atomic&#8202;&#8212;&#8202;there&#8217;s a theoretical race window between the count check and the write. At typical API gateway throughput, this is acceptable. Both scored 8&#8211;9 on this dimension.</p><p><strong>SETEX with JSON blob&#8202;&#8212;&#8202;Claude Sonnet&nbsp;4.5</strong></p><p>This is the one that should concern practitioners. Sonnet stored timestamp arrays as JSON strings, using SETEX for TTL. The sequence is: GET &#8594; deserialize &#8594; filter &#8594; push &#8594; SET. Two concurrent requests can both read the same count, both decide &#8220;allowed,&#8221; and both write back&#8202;&#8212;&#8202;causing the rate limit to be exceeded under concurrent load. This isn&#8217;t a theoretical edge case; it&#8217;s the expected behavior at any meaningful traffic&nbsp;volume.</p><p><strong>Not implemented / Fixed window&#8202;&#8212;&#8202;GPT-4o</strong></p><p>GPT-4o run1 described a Redis approach in prose but provided no code. Run3 implemented code&#8202;&#8212;&#8202;but the wrong algorithm: an INCR+PEXPIRE fixed-window counter, not a sliding window log. Both are unusable for distributed deployment as specified.</p><p><strong>Missing prune call&#8202;&#8212;&#8202;Qwen3 Coder&nbsp;480B</strong></p><p>Qwen3&#8217;s Redis code counted entries with ZRANGEBYSCORE but never called ZREMRANGEBYSCORE to remove expired ones. The ZSET grows without bound under sustained traffic. The per-window count stays correct (the range query filters properly), but the key accumulates all historical entries&#8202;&#8212;&#8202;a memory leak that only surfaces in distributed deployment.</p><h3>What Made Gemma 4 31B Score 9.3 on Run1&#8202;&#8212;&#8202;And Why It&nbsp;Dropped</h3><p>Let me be specific, because vague model praise is noise. Here&#8217;s what Gemma 4 produced in run1 that justified a 10 in multiple categories:</p><p><strong>Architecture: </strong>It opened with an explicit component table mapping each layer (StorageAdapter, RateLimiter, RateLimitMiddleware, Config) to its responsibility and stated its complexity analysis unprompted: O(N) for memory store operations, O(log N) for Redis sorted set operations.</p><p><strong>Code Correctness: </strong>The sliding window logic was exact&#8202;&#8212;&#8202;count &lt; limit (not &lt;=, which is a common off-by-one), timestamp prune-before-count ordering, correct branching without penalizing the user by counting the rejected&nbsp;request.</p><p><strong>Tests: </strong>Three real Jest tests, including jest.useFakeTimers() for the sliding window expiry test. This is the test that actually validates the algorithm, not just happy-path behavior.</p><p><strong>Production thinking: </strong>Fail-open try-catch with structured error handling, pexpire for automatic Redis key cleanup on idle users, and Retry-After header calculation using the oldest timestamp in the window&#8202;&#8212;&#8202;the correct value, not a fixed&nbsp;offset.</p><p>What Claude Opus 4.6 did better: Lua scripting for full atomicity, binary search for O(log N) timestamp pruning, picomatch glob routing, sweepInterval.unref() for Node.js process safety, and a shutdown() lifecycle hook.</p><p><strong>Why runs 2 and 3 dropped: </strong>One specific detail separated them from run1. Run1&#8217;s Redis implementation added entries speculatively, then did a follow-up ZREM to clean up entries for rejected requests&#8202;&#8212;&#8202;so a blocked user&#8217;s timestamps didn&#8217;t contaminate their next window. Runs 2 and 3 omitted the cleanup. It&#8217;s 3 lines of code. The model knows the concept&#8202;&#8212;&#8202;it demonstrated it on run1&#8202;&#8212;&#8202;but didn&#8217;t produce it consistently. That&#8217;s the variance story in a single bug: 9.3, 6.3, 5.7, average&nbsp;7.1.</p><h3>The Speed&nbsp;Surprise</h3><p>I ran two timing probes across the NVIDIA free tier models, and the results revealed something important about how free-tier inference works.</p><p><strong>Probe 1 (earlier in the&nbsp;day):</strong></p><p>Qwen3 Coder 480B: 1,213ms for 100&nbsp;tokens</p><p>Gemma 4 31B: 54,984ms for 100&nbsp;tokens</p><p><strong>Probe 2 (an hour&nbsp;later):</strong></p><p>Gemma 4 31B: 2,661ms for 80 tokens &#8592; warm&nbsp;model</p><p>Qwen3 Coder 480B: 4,675ms for 80 tokens &#8592; queue depth increased</p><p>Nemotron 49B: 1,855ms for 80&nbsp;tokens</p><p>The 55-second Gemma 4 31B result wasn&#8217;t the model being slow&#8202;&#8212;&#8202;it was a cold-start artifact. When the model is warm and queue depth is low, Gemma 4 31B responds in under 3 seconds, comparable to everything else. <strong>NVIDIA free-tier latency is primarily a function of queue state, not model architecture.</strong> It&#8217;s variable in ways that matter for interactive use but are invisible in isolated benchmarks.</p><p><strong>What this means in practice:</strong></p><p><strong>Architectural design sessions: </strong>Gemma 4 31B&#8202;&#8212;&#8202;occasionally slower, always higher&nbsp;quality</p><p><strong>Confidential code: </strong>Claude Sonnet 4.5 via Anthropic API (enterprise data controls, consistent latency)</p><p><strong>Absolute highest stakes / production infrastructure: </strong>Claude Opus 4.6&#8202;&#8212;&#8202;Lua atomicity was consistent across both runs (9.7,&nbsp;9.5)</p><h3>What This&nbsp;Means</h3><p>On this class of task&#8202;&#8212;&#8202;distributed systems middleware with a concurrency-sensitive correctness requirement&#8202;&#8212;&#8202;the best free model landed in the same tier as the best paid model on a single run: 9.3 vs. 9.7, a 0.4-point gap. That result doesn&#8217;t generalize to all engineering tasks, but it&#8217;s a strong signal that the assumption &#8220;you need the most expensive model for serious work&#8221; deserves scrutiny, not blind acceptance. The tradeoffs worth evaluating are latency, data governance, and task fit&#8202;&#8212;&#8202;not a blanket capability gap that may no longer&nbsp;exist.</p><p><strong>This has practical implications:</strong></p><p><strong>1. </strong>Teams routing all engineering tasks to Opus/o3 without evaluating task fit are likely over-spending for at least some of their use&nbsp;cases.</p><p><strong>2. </strong>In this benchmark, Redis implementation quality was the highest-signal discriminator of distributed-systems reasoning depth&#8202;&#8212;&#8202;it requires simultaneous understanding of concurrency, atomicity, and operational constraints, dimensions that standard coding benchmarks do not&nbsp;measure.</p><p><strong>3. </strong>NVIDIA&#8217;s free inference gateway is a serious tool for professional engineering, not just experimentation. The combination of Gemma 4 31B (architecture) and Qwen3 480B (implementation) covers most of the engineering workflow at zero&nbsp;cost.</p><p><strong>4. </strong>API changelog monitoring belongs in your dependency stack. o3&#8217;s parameter migration broke evaluation before a single token was generated. Track AI API breaking changes the same way you track npm and pip&#8202;&#8212;&#8202;it&#8217;s a production dependency with the same operational requirements.</p><h3>Caveats I Want to Be Explicit&nbsp;About</h3><p><strong>Multi-run data. </strong>I ran additional independent calls for six of eight models (2&#8211;3 runs each). The N-run averages in the results table above reflect this. Broad structural patterns (Lua vs. GET-SET, Redis vs. not, fake timers) were consistent. Implementation quality within a pattern was not&#8202;&#8212;&#8202;Gemma 4 31B&#8217;s ZREM cleanup appeared in run1 and not runs 2 or 3. Models within 1.0 point of each other should be treated as approximately equivalent given single-scorer variability and LLM stochasticity.</p><p><strong>One task, one domain. </strong>These conclusions apply to distributed systems and middleware tasks. Generalizing to all software engineering would be overreach.</p><p><strong>Conflict of interest disclosed. </strong>I use NVIDIA&#8217;s free tier in my own tooling. I have a stake in free-tier models performing well. Scores were assigned before models were compared against each&nbsp;other.</p><p><strong>Anthropic timings are warm-timed. </strong>A short warm probe fired first; the full task fired immediately on return. Sonnet 4.5 confirmed at 33.8s; Opus 4.6 estimated at ~35s from prior&nbsp;run.</p><p><strong>All Redis code excerpts, scoring rationale, and timing data are published publicly</strong> for independent verification: github.com/shaileshjgd/FrontierModelEvals</p><p>On a single run, a free model reached the same tier as the best paid model (9.3 vs. 9.7). Across multiple runs, Opus held its ceiling consistently while Gemma showed real variance. Both findings matter. The ceiling result tells you what&#8217;s possible on the free tier. The variance result tells you not to ship code from a single free-tier generation into a distributed system without review. The consistency result tells you what you&#8217;re actually buying when you pay for&nbsp;Opus.</p><p>For this benchmark task class&#8202;&#8212;&#8202;and likely adjacent middleware and concurrency-sensitive tasks&#8202;&#8212;&#8202;the free tier gets you 70&#8211;90% of the ceiling in practice. The remaining gap shows up in exactly the operational details you&#8217;d miss in a code review but feel in a production incident.</p><h2>Full methodology and raw outputs</h2><p><strong>Full methodology report</strong> (6-dimension rubric, per-model Redis analysis, timing methodology, limitations, all 19 raw outputs):</p><p><a href="https://github.com/shaileshjgd/FrontierModelEvals/blob/main/evals/2026-04-02-sliding-window-rate-limiter/REPORT.md">github.com/shaileshjgd/FrontierModelEvals &#8594; REPORT.md</a></p><p><strong>Raw outputs, scoring rationale, and Redis code excerpts</strong> from every model:</p><p><a href="https://github.com/shaileshjgd/FrontierModelEvals/tree/main/evals/2026-04-02-sliding-window-rate-limiter">github.com/shaileshjgd/FrontierModelEvals &#8594; 2026-04-02 evals folder</a></p><p><em>Tags: #AIEngineering #LLM #MachineLearning #SoftwareEngineering #Gemma4 #CloudAI #OpenSource #RateLimiting #Redis #TypeScript</em></p>]]></content:encoded></item><item><title><![CDATA[The Case for Machines That Can Explain Themselves]]></title><description><![CDATA[When fluency is no longer enough, justification must become the governing principle of computational reasoning.]]></description><link>https://sovereign.geoclear.io/p/the-case-for-machines-that-can-explain-themselves-a8aed2e1372b</link><guid isPermaLink="false">https://sovereign.geoclear.io/p/the-case-for-machines-that-can-explain-themselves-a8aed2e1372b</guid><dc:creator><![CDATA[Shailesh Bhujbal]]></dc:creator><pubDate>Thu, 18 Dec 2025 13:22:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a86145cf-b70f-4170-addc-650e67840786_1024x413.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QIAc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QIAc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png 424w, https://substackcdn.com/image/fetch/$s_!QIAc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png 848w, https://substackcdn.com/image/fetch/$s_!QIAc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png 1272w, https://substackcdn.com/image/fetch/$s_!QIAc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QIAc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A conceptual diagram showing a cloud of text snippets labeled &#8220;Summary,&#8221; &#8220;Answer,&#8221; &#8220;Explanation,&#8221; and &#8220;Response&#8221; on the left, feeding into a central network labeled &#8220;Evidence,&#8221; &#8220;Constraints,&#8221; &#8220;Consistency,&#8221; and &#8220;Uncertainty,&#8221; which then outputs a single document with a blue checkmark, illustrating the shift from fluency to justification.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A conceptual diagram showing a cloud of text snippets labeled &#8220;Summary,&#8221; &#8220;Answer,&#8221; &#8220;Explanation,&#8221; and &#8220;Response&#8221; on the left, feeding into a central network labeled &#8220;Evidence,&#8221; &#8220;Constraints,&#8221; &#8220;Consistency,&#8221; and &#8220;Uncertainty,&#8221; which then outputs a single document with a blue checkmark, illustrating the shift from fluency to justification." title="A conceptual diagram showing a cloud of text snippets labeled &#8220;Summary,&#8221; &#8220;Answer,&#8221; &#8220;Explanation,&#8221; and &#8220;Response&#8221; on the left, feeding into a central network labeled &#8220;Evidence,&#8221; &#8220;Constraints,&#8221; &#8220;Consistency,&#8221; and &#8220;Uncertainty,&#8221; which then outputs a single document with a blue checkmark, illustrating the shift from fluency to justification." srcset="https://substackcdn.com/image/fetch/$s_!QIAc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png 424w, https://substackcdn.com/image/fetch/$s_!QIAc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png 848w, https://substackcdn.com/image/fetch/$s_!QIAc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png 1272w, https://substackcdn.com/image/fetch/$s_!QIAc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff266e2d2-6803-4ed5-be78-d35e3e98d965_1024x413.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">From fluency to justification: unstructured answers pass through layers of evidence, constraints, consistency, and uncertainty before becoming conclusions that can withstand scrutiny. Illustration created for this article to depict the transition from unconstrained output to evidence-based reasoning.</figcaption></figure></div><p><em>When fluency is no longer enough, justification must become the governing principle of computational reasoning.</em></p><p><em><strong>Editor&#8217;s note (Dec 19, 2025): </strong>An earlier version of this essay displayed non-public citation placeholders from my drafting workflow, which rendered as broken links. I&#8217;ve replaced them with a verifiable reference list (primary sources where possible) and added a short change log below. The argument is unchanged.</em></p><p>For a piece about justification, every claim here should be traceable to a checkable source.</p><p>Modern systems now write with a proficiency that would have been unthinkable a decade ago. Their fluency, however, has created a misplaced sense of security. Today, polished text reveals little about the soundness of the reasoning behind it. The question is no longer whether a system can produce an answer, but whether the answer can withstand examination.</p><p>This is not conjecture. Across medicine, finance, scientific inquiry, and legal analysis, empirical findings point to the same pattern. Clinical summarization systems introduce subtle&#8202;&#8212;&#8202;but consequential&#8202;&#8212;&#8202;distortions in patient information while sounding fully authoritative&#185;&#178;. Legal evaluations show arguments supported by citations to cases that do not exist&#179;. Factual audits reveal confident answers grounded in no evidence at all&#8308;&#8309;. Large-scale usage studies demonstrate that these issues surface not in dramatic failures but in quiet inconsistencies woven into everyday interactions&#8310;.</p><p>What emerges from this research is straightforward: these systems are skilled at extending a line of discourse and far less capable of interrogating it. They reproduce the surface of expertise while missing the internal scaffolding that makes expertise trustworthy.</p><p>This is a familiar problem for anyone who has built or governed large-scale analytical systems in environments where accountability is non-negotiable. In regulated domains, the most serious failures are not mathematical missteps but reasoning gaps&#8202;&#8212;&#8202;places where an output looks credible but lacks the evidentiary chain required for audit, compliance, or institutional trust.</p><p>Retrieval provides some grounding, but it rarely goes far enough. Even with the right documents in hand, models often misinterpret their contents, generalize too broadly, or ignore conflicting information&#8311;&#8312;. Having evidence is not the same as using it&nbsp;well.</p><p>Confidence adds a different kind of difficulty. Models frequently express certainty where none is warranted&#8309;. Users, in turn, tend to trust answers more when accompanied by explanations&#8202;&#8212;&#8202;even when those explanations are not supported by evidence&#8313;. Apparent transparency can, paradoxically, deepen the underlying opacity.</p><p>Much of this can be traced to architecture. Contemporary systems begin with generation; evaluation, if it occurs, follows. Inquiry and expression collapse into a single act. The result is an answer whose form may persuade, even when its foundations would&nbsp;not.</p><p>Older philosophical perspectives help make sense of this. Popper argued that ideas gain legitimacy only when they are exposed to the possibility of being wrong. Polanyi emphasized that expertise involves an intuitive sensitivity to when a conclusion extends beyond its evidence. These traditions value discipline&#8202;&#8212;&#8202;logical, evidentiary, and epistemic&#8202;&#8212;&#8202;over eloquence.</p><p>Encouragingly, emerging research suggests a different direction. Verifier-guided generation treats answers as hypotheses that must earn their validity&#185;&#8304;. Uncertainty-aware methods examine whether retrieved evidence truly supports a claim&#185;&#185;. Hybrid approaches incorporate symbolic checks to reduce high-risk errors in sensitive domains&#185;&#178;. Multi-stage pipelines separate extraction, evaluation, and narrative, and consistently outperform single-pass generation&#185;&#179;.</p><p>What ties these approaches together is a reversal of assumptions: generation becomes the final step in a chain that begins with assessment, evidence gathering, constraint application, and uncertainty evaluation.</p><p>This shift matters because these systems are being woven into decision processes across society&#8202;&#8212;&#8202;in underwriting, scientific synthesis, regulatory analysis, and enterprise operations. These domains do not rest on eloquence. They rest on justification, reproducibility, and the capacity to withstand challenge.</p><p>We once asked whether a machine could write. The more pressing question now is whether a machine can explain&#8202;&#8212;&#8202;and whether it can remain silent when explanation is not possible.</p><p>Only systems capable of justifying their conclusions will deserve the trust that fluency alone once seemed to&nbsp;promise.</p><h3>Endnotes</h3><p>&#185; <strong><a href="https://link.springer.com/article/10.1007/s00330-023-10213-1">ChatGPT makes medicine easy to swallow: an exploratory case study on simplified radiology reports</a></strong><a href="https://link.springer.com/article/10.1007/s00330-023-10213-1">&#8202;</a>&#8212;&#8202;Jeblick et al., <em>European Radiology</em> (2023).</p><p>&#178; <strong><a href="https://arxiv.org/abs/2309.07430">Adapted Large Language Models Can Outperform Medical Experts in Clinical Text Summarization</a></strong>&#8202;&#8212;&#8202;Van Veen et al.&nbsp;(2023).</p><p>&#179; <strong><a href="https://arxiv.org/abs/2401.01301">Large Legal Fictions: Profiling Legal Hallucinations in Large Language Models</a></strong><a href="https://arxiv.org/abs/2401.01301">&#8202;</a>&#8212;&#8202;Dahl, Magesh, Suzgun, Ho&nbsp;(2024).</p><p>&#8308; <strong><a href="https://arxiv.org/abs/2109.07958">TruthfulQA: Measuring How Models Mimic Human Falsehoods</a></strong><a href="https://arxiv.org/abs/2109.07958">&#8202;</a>&#8212;&#8202;Lin et al. (2021/2022).</p><p>&#8309; <strong><a href="https://arxiv.org/abs/2207.05221">Language Models (Mostly) Know What They Know</a></strong>&#8202;&#8212;&#8202;Kadavath et al.&nbsp;(2022).</p><p>&#8310; <strong><a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC11880332/">Evaluating base and retrieval augmented LLMs with user-reported hallucinations in AI mobile apps reviews</a></strong>&#8202;&#8212;&#8202;Masanneck et al., <em>Scientific Reports</em>&nbsp;(2025).</p><p>&#8311; <strong><a href="https://arxiv.org/abs/2305.14627">Enabling Large Language Models to Generate Text with Citations</a></strong><a href="https://arxiv.org/abs/2305.14627">&#8202;</a>&#8212;&#8202;Gao et al., EMNLP&nbsp;(2023).</p><p>&#8312; <strong><a href="https://arxiv.org/abs/2406.13692">Synchronous Faithfulness Monitoring for Trustworthy Retrieval-Augmented Generation</a></strong>&#8202;&#8212;&#8202;Wu et al., EMNLP&nbsp;(2024).</p><p>&#8313; <strong><a href="https://arxiv.org/abs/2305.04388">Language Models Don&#8217;t Always Say What They Think: Unfaithful Explanations in Chain-of-Thought Prompting</a></strong>&#8202;&#8212;&#8202;Turpin et al., NeurIPS&nbsp;(2023).</p><p>&#185;&#8304; <strong><a href="https://arxiv.org/abs/2309.11495">Chain-of-Verification Reduces Hallucination in Large Language Models</a></strong><a href="https://arxiv.org/abs/2309.11495">&#8202;</a>&#8212;&#8202;Dhuliawala et al. (2023/2024).</p><p>&#185;&#185; <strong><a href="https://arxiv.org/abs/2505.21072">Faithfulness-Aware Uncertainty Quantification for Fact-Checking the Output of Retrieval Augmented Generation</a></strong>&#8202;&#8212;&#8202;Fadeeva et al.&nbsp;(2025).</p><p>&#185;&#178; <strong><a href="https://arxiv.org/abs/2409.17270">Proof of Thought: Neurosymbolic Program Synthesis allows Robust and Interpretable Reasoning</a></strong><a href="https://arxiv.org/abs/2409.17270">&#8202;</a>&#8212;&#8202;Ganguly et al.&nbsp;(2024).</p><p>&#185;&#179; <strong><a href="https://arxiv.org/abs/2305.14251">FActScore: Fine-grained Atomic Evaluation of Factual Precision in Long Form Text Generation</a></strong><a href="https://arxiv.org/abs/2305.14251">&#8202;</a>&#8212;&#8202;Min et al., EMNLP&nbsp;(2023).</p><h3>Change log</h3><ul><li><p><strong>Dec 19, 2025:</strong> Corrected Endnotes (replaced broken/non-public citation placeholders with verified primary-source links).</p></li></ul>]]></content:encoded></item></channel></rss>