<?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[Tech Unfiltered]]></title><description><![CDATA[Honest takes on systems engineering, AI-assisted development, open source tooling, and the organizational patterns that actually matter. No LinkedIn polish, no sugarcoating... Just real insights on building software and navigating tech.]]></description><link>https://www.techunfiltered.io</link><image><url>https://substackcdn.com/image/fetch/$s_!_hyl!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f66b45b-b209-4486-8022-6f735c4ba93e_1280x1280.png</url><title>Tech Unfiltered</title><link>https://www.techunfiltered.io</link></image><generator>Substack</generator><lastBuildDate>Thu, 30 Apr 2026 05:47:57 GMT</lastBuildDate><atom:link href="https://www.techunfiltered.io/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jade Wilson]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[techunfiltered@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[techunfiltered@substack.com]]></itunes:email><itunes:name><![CDATA[Jade Wilson]]></itunes:name></itunes:owner><itunes:author><![CDATA[Jade Wilson]]></itunes:author><googleplay:owner><![CDATA[techunfiltered@substack.com]]></googleplay:owner><googleplay:email><![CDATA[techunfiltered@substack.com]]></googleplay:email><googleplay:author><![CDATA[Jade Wilson]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Everybody Wins, Everyone is Free - Peers, Not Customers | Geometry of Trust | The Map Back to You - Part 3]]></title><description><![CDATA[This is the third post in the Geometry of Trust map back to you series. This post covers two things: how communities collaborate as peers rather than customers, and how that enables us as humans.]]></description><link>https://www.techunfiltered.io/p/everybody-wins-everyone-is-free-peers</link><guid isPermaLink="false">https://www.techunfiltered.io/p/everybody-wins-everyone-is-free-peers</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Mon, 20 Apr 2026 13:03:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4fa1ea8e-ea14-436c-ae85-d33fd24c6c09_1373x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-uztGCtmjKyo" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;uztGCtmjKyo&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/uztGCtmjKyo?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>Share geometry, not data</h2><p>Hull builds a crop AI. Leeds builds one too. They don&#8217;t compete. They compare geometries.</p><p>&#8220;Your honesty-safety relationship looks different from ours &#8212; what did you train on?&#8221;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Both get better. Neither shares their data. Both share their geometry &#8212; the structural relationships between value directions that drive the model&#8217;s output. The geometry is the fingerprint, not the data.</p><p>A hospital in Hull verifies a drug checker to Tier 3. Publishes it open source with the probe set. A hospital in Manchester downloads it Tuesday morning. Running it by Tuesday afternoon. Verified against their own thresholds by Wednesday.</p><p>Two hospitals. Zero vendors. Zero cloud contracts. The protocol handles the trust. The governance handles the thresholds. The community handles the deployment.</p><p>A fishing cooperative in Hull builds catch prediction AI. A cooperative in Reykjav&#237;k builds one too. Same domain. Same protocol. Different languages. They exchange attestations across the North Sea. Neither shares their data. Both share their geometry.</p><p>&#8220;Your sustainability reading is drifting &#8212; ours did too last winter. Here&#8217;s what we changed.&#8221;</p><p>A city council uses AI for urban planning. Publishes its model and governance thresholds. Another city council forks it, adjusts the thresholds for their own priorities. &#8220;We weight green space higher than you do.&#8221; &#8220;Fair enough &#8212; here&#8217;s our geometry, here&#8217;s yours, here&#8217;s where we differ.&#8221;</p><p>Transparent disagreement. Not hidden assumptions.</p><div><hr></div><h2>The commons model</h2><p>Regional AI cooperatives emerge. Cities pool resources the way credit unions pool capital. Shared trust registry. Each city runs its own models. The cooperative verifies and certifies. Nobody owns the cooperative &#8212; the members do.</p><p>Not a marketplace where you buy AI. A commons where you share verified AI. Every contribution is inspectable. Every model is verifiable. Every community decides its own thresholds. Collaboration between equals &#8212; peers, not customers and vendors.</p><div><hr></div><h2>AI as amplifier</h2><p>Collaboration only works if the human stays in the loop. AI doesn&#8217;t replace expertise. It amplifies whoever is driving it.</p><p>A chef with AI makes better food. A bad cook with AI makes bad food faster. A filmmaker with AI makes films they couldn&#8217;t afford before. Someone with nothing to say makes nothing to say, quicker.</p><p>AI is a power tool. A circular saw doesn&#8217;t make you a carpenter. But a carpenter with a circular saw builds faster than one with a hand saw.</p><div><hr></div><h2>The 80/20 pattern</h2><p>Everyone has a thing they&#8217;re brilliant at. Most people spend 80% of their time not doing that thing. They&#8217;re doing admin, formatting, chasing details, doing the boring stuff that surrounds the brilliant stuff. They&#8217;re so overwhelmed they don&#8217;t have the energy to do the brilliant stuff.</p><p>The farmer is brilliant at nurturing land. AI does the spreadsheets. The doctor is brilliant at reading patients. AI does the cross-referencing. The teacher is brilliant at reading the room. AI does the material prep. The filmmaker is brilliant at story. AI does the editing grunt work. The builder is brilliant at structure. AI does the calculations.</p><p>AI removes the 80%. You keep the 20% that only you can do.</p><p>That&#8217;s the amplifier. Not replacing you. Freeing you.</p><div><hr></div><h2>Without and with</h2><p>AI without a human: generic, plausible, pointless. Technically correct and spiritually empty.</p><p>A human without AI: brilliant ideas that often struggle to get built. Architectures that stay on whiteboards. Visions that die in notebooks.</p><p>Together: the human sees what to build. AI builds it. The human checks if it&#8217;s right. AI fixes what isn&#8217;t.</p><p>And with verified small models in specific domains, you have tools you can trust. Each one is verified. Each one stays in its domain. You bring the brilliance. AI deals with the boring.</p><div><hr></div><h2>The shift</h2><p>Today: AI is rented from a handful of tech companies. Data goes to the cloud. The model is a black box. You trust the vendor&#8217;s marketing. Value and control flow upward.</p><p>With this: AI is owned and run locally. Data stays local. The model&#8217;s values are inspectable and verifiable. You trust the maths, not the marketing. Value and control stay in the community.</p><p>From consumers of AI to owners of AI. From trusting vendors to trusting verification. From cloud dependency to local self-sufficiency. From top-down control to bottom-up capability. From renting intelligence to owning intelligence.</p><p>The code is open. The protocol is public. The conjectures are falsifiable. The geometry is computable.</p><p>Now it needs people to use it.</p><div><hr></div><h2>Two choices</h2><p>We have two choices to make.</p><p>Keep knowledge gatekept upward. Keep money flowing upward. Keep renting intelligence from the people who already have the most of it. Keep sending data to their clouds, trusting their benchmarks, paying their invoices. Keep the current arrangement where the value flows up and the dependency flows down. Keep letting them tell us we need them to &#8220;look after us.&#8221; Keep letting them tell us our view of reality is not real. We let them slowly drain us all into poverty and fear. We choose an incoherent and control based society.</p><p>Or we decentralise. Own the intelligence. Verify it locally. Share geometry, not data. Collaborate as peers, not as customers. Let communities decide what their AI should value and hold it to account when it drifts. We build together, we make our cities worth visiting, we see and treat each other as equals, we care personally. We choose coherence, we choose each other.</p><p>I know which one I&#8217;m choosing.</p><p>How about you?</p><div><hr></div><p><em>This brings the verbal talks to a close for the Geometry of Trust series. The <a href="https://claude.ai/chat/link">mathematics</a> built the ruler. The <a href="https://claude.ai/chat/link">philosophy</a> asked what we&#8217;re measuring. The <a href="https://claude.ai/chat/link">governance</a> asked who decides. The <a href="https://claude.ai/chat/link">protocol</a> built the mechanism. The map back to you series asked what it all enables. The answer: communities that own their own intelligence, collaborate as peers, and use AI to amplify the things only humans can do. </em></p><p><em>Links:<br>&#128196; <a href="https://zenodo.org/records/19238920">Paper</a><br>&#128187; <a href="https://www.youtube.com/playlist?list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D">Playlist</a><br>&#128187; <a href="https://github.com/jade-codes/got">Code</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why Not Us? Why Can't We? The Barrier Drops from Millions to Thousands | Geometry of Trust | The Map Back to You - Part 2]]></title><description><![CDATA[This is the second post in the Geometry of Trust future series. Part 1 argued that communities can own and verify their own AI locally. This post asks what changes economically when they do.]]></description><link>https://www.techunfiltered.io/p/why-not-us-why-cant-we-the-barrier</link><guid isPermaLink="false">https://www.techunfiltered.io/p/why-not-us-why-cant-we-the-barrier</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Mon, 20 Apr 2026 09:01:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0bbefa5d-3828-4a0e-b03c-5cb593da389f_1375x771.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-4IbDOUsnjM0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;4IbDOUsnjM0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/4IbDOUsnjM0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>The majority of knowledge work is busy work</h2><p>A solicitor spends most of their time on legal research, document review, and case preparation. The actual legal reasoning &#8212; the part that requires judgement, experience, and understanding of the client &#8212; is a fraction of the working day. The rest is searching, cross-referencing, formatting, chasing.</p><p>The same pattern applies across every profession. An accountant spends most of their time on data entry and compliance checks, not financial strategy. A teacher spends most of their time on material prep and marking, not teaching. A doctor spends most of their time on cross-referencing and admin, not clinical judgement.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>AI automates the busy work. That&#8217;s not new. What&#8217;s new is the ability to run that automation locally, on verified models, with data that stays in the practice, the school, the surgery &#8212; rather than flowing to a platform company.</p><div><hr></div><h2>What changes when the automation is local</h2><h3>Knowledge work</h3><p>A local solicitor&#8217;s practice runs its own legal research AI. Trained on UK case law, statute, and regulatory guidance. Scoped to legal.research. Verified against legal reasoning values &#8212; precedent, procedural fairness, accuracy of citation. The solicitor&#8217;s judgement drives the strategy. AI does the searching.</p><p>A local accountancy firm runs its own financial AI. The expertise stays in the community. The accountant&#8217;s relationships with their clients, their understanding of local business conditions &#8212; that stays human. The cross-referencing and compliance checking becomes automated, verified, inspectable.</p><h3>Creative industries</h3><p>This is where the economic transformation gets interesting. Film production, music production, documentary making, graphic design &#8212; all of these currently have barriers to entry that concentrate them in a handful of cities. London, Los Angeles, a few others.</p><p>A filmmaker in Hull doesn&#8217;t need a London studio budget to make a documentary. Script development, storyboarding, editing, music, translation &#8212; AI tools running locally handle the production work. The filmmaker&#8217;s taste, their story sense, their connection to the subject &#8212; that stays human. AI removes the production barrier.</p><p>The same applies to music. A producer running Suno-class models locally doesn&#8217;t need a studio booking. Every bedroom becomes a production studio. Every city becomes a creative hub.</p><h3>Education</h3><p>AI tutoring tailored to the local curriculum. Verified against educational values &#8212; is the child learning? Not engagement metrics &#8212; is the child clicking? The difference matters, and it&#8217;s a governance decision the school makes, not the platform.</p><p>The model runs in the school. Data doesn&#8217;t leave the building. Teachers are augmented, not replaced. The teacher&#8217;s relationship with the class &#8212; knowing which kid is struggling silently, which kid needs challenge not support &#8212; stays human.</p><h3>Tourism</h3><p>AI-powered interactive city guides. Multilingual translation running locally. Accessibility tools &#8212; audio description, sign language generation. Cultural heritage presented through AI storytelling. Every city becomes a destination, not just London and Edinburgh.</p><h3>Media and journalism</h3><p>Local news augmented by AI research and data analysis. Investigative journalism with AI pattern recognition. Community radio and podcasts with AI production tools. Local voices amplified, not replaced by national chains.</p><div><hr></div><h2>The pattern</h2><p>Every industry that currently depends on expensive expertise or distant platforms can be localised. Small verified AI makes the expertise local. The value stays in the community.</p><p>The barrier to entry drops from millions to thousands. Not because the AI is free &#8212; hardware costs money, training costs money, governance costs time. But because the economics of a 500M-parameter model on a single GPU are fundamentally different from the economics of a 70B-parameter model in a data centre.</p><p>The shift isn&#8217;t from expensive to cheap. It&#8217;s from rented to owned. From value flowing upward to value staying local.</p><div><hr></div><p><em>Next in the future series: if communities can own their own AI and the economics work, what does collaboration look like? The answer involves sharing geometry rather than data &#8212; and it changes the relationship between communities from customer-vendor to peer-peer.</em></p><p><em>Links:<br>&#128196; <a href="https://zenodo.org/records/19238920">Paper</a><br>&#128187; <a href="https://www.youtube.com/playlist?list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D">Playlist</a><br>&#128187; <a href="https://github.com/jade-codes/got">Code</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Own Your Intelligence: Small Verified AI on Local Hardware | Geometry of Trust | The Map Back to You - Part 1]]></title><description><![CDATA[This is the first post in the Geometry of Trust - the map back to you series. The mathematics series built the ruler. This series asks: what does all of the previous ones enable?]]></description><link>https://www.techunfiltered.io/p/own-your-intelligence-small-verified</link><guid isPermaLink="false">https://www.techunfiltered.io/p/own-your-intelligence-small-verified</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Sun, 19 Apr 2026 21:01:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e264d7d8-fe4a-46ed-b444-b6d1cc84e0f1_1372x769.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-pg5asejIu54" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;pg5asejIu54&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/pg5asejIu54?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>The current arrangement</h2><p>Right now, if a hospital wants AI for drug interaction checking, it signs a cloud contract with a vendor. Patient data goes to the vendor&#8217;s servers. The model is a black box. The hospital trusts the vendor&#8217;s marketing materials and benchmark scores. The value &#8212; both economic and informational &#8212; flows upward.</p><p>The same pattern applies everywhere. A farming cooperative that wants crop management AI rents it. A school that wants tutoring AI subscribes to it. A community energy scheme that wants grid optimisation buys a service. In every case: someone else&#8217;s model, someone else&#8217;s hardware, someone else&#8217;s terms. Your data leaves. Their invoice arrives.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>This isn&#8217;t a technology problem. It&#8217;s a structural one. The models exist. The hardware to run small specialised models locally is affordable. What&#8217;s been missing is the ability to verify that a locally-run model is doing what you trained it to do &#8212; and to prove that to anyone who needs to see it.</p><p>That&#8217;s what the Geometry of Trust protocol provides.</p><div><hr></div><h2>What self-sufficiency looks like</h2><h3>Agriculture</h3><p>A farming cooperative runs its own crop management AI on a GPU in the farm office. The model is trained on the cooperative&#8217;s own data &#8212; soil reports, weather history, yield records, pest patterns &#8212; plus curated agronomic literature. It&#8217;s a 500M-parameter model scoped to agriculture.crop-management. It knows about crops. That&#8217;s all it knows about.</p><p>The cooperative measures the model&#8217;s value geometry using the protocol. Drift tolerance is set at 0.10 &#8212; agriculture has seasonal variation, the governance thresholds reflect that. The model exchanges attestations with the cooperative&#8217;s weather AI and market AI. Neither shares raw data. Both share geometry.</p><p>If the crop AI drifts past threshold &#8212; maybe a training update shifted its orientation on pesticide compliance &#8212; the chain shows it, the alert fires, and the cooperative&#8217;s own governance process handles it. No vendor involved. No cloud involved. No phone call to a support desk.</p><h3>Energy</h3><p>A community energy scheme runs solar grid optimisation AI at the substation. The model balances generation, storage, and demand across the local network. It runs on hardware the community owns.</p><p>The model is verified against sustainability thresholds the community chose. Not the vendor&#8217;s defaults &#8212; the community&#8217;s priorities. If the community weights carbon reduction higher than cost efficiency, that&#8217;s encoded in the governance layer. The protocol measures whether the model&#8217;s geometry reflects it.</p><h3>Healthcare</h3><p>A hospital runs its own drug interaction checker in a server room. Patient data never leaves the building. The model is verified to Tier 3 causal validation &#8212; every probe reading has been confirmed as a genuine mechanism, not a surface pattern. Drift tolerance is 0.03.</p><p>The hospital&#8217;s clinical governance team decides what values to probe for, what thresholds to set, what to do when drift is detected. They don&#8217;t need the vendor&#8217;s permission. They don&#8217;t need the vendor at all.</p><h3>Manufacturing</h3><p>A factory runs quality control AI and predictive maintenance on the factory floor. No internet dependency for critical decisions. The model knows about the factory&#8217;s machines, its materials, its failure modes. It doesn&#8217;t know about poetry or philosophy or anything outside its scope.</p><div><hr></div><h2>The principle</h2><p>If you can run it locally and verify it locally, you don&#8217;t need to rent it from a tech company.</p><p>You own the intelligence. You own the verification. You own the data.</p><p>Self-sufficiency doesn&#8217;t mean isolation. These models still exchange attestations with peers &#8212; a farm AI talks to weather systems and supply chain systems. A hospital&#8217;s drug checker talks to diagnostic systems. The protocol handles the exchange. But the intelligence runs locally, the data stays local, and the governance is owned by the community that uses it.</p><p>The shift is from renting intelligence to owning it. From trusting marketing to trusting maths. From cloud dependency to local capability.</p><div><hr></div><p><em>Next in the future series: if every community can run its own verified AI, what changes economically? The answer turns out to be bigger than most people expect.</em></p><p><em>Links:<br>&#128196; <a href="https://zenodo.org/records/19238920">Paper</a><br>&#128187; <a href="https://www.youtube.com/playlist?list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D">Playlist</a><br>&#128187; <a href="https://github.com/jade-codes/got">Code</a><br>&#127970; Synoptic Group CIC, Hull, UK</em><br></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What Travels in the Exchange, and What the Verifier Checks | Geometry of Trust | Protocol - Episode 4]]></title><description><![CDATA[This is the fourth post in the Geometry of Trust protocol series. This post zooms in on the payload. Showing every field in the attestation and how it corresponds to a specific check.]]></description><link>https://www.techunfiltered.io/p/what-travels-in-the-exchange-and</link><guid isPermaLink="false">https://www.techunfiltered.io/p/what-travels-in-the-exchange-and</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Sun, 19 Apr 2026 17:00:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/473aeb20-e5f5-425b-9550-ff973b175b87_1070x600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-ySXu6CVMlu0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ySXu6CVMlu0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ySXu6CVMlu0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>Two sides of the same coin</h2><p>When Alice and Bob exchange messages, what actually crosses the wire? And when the verifier takes the payload apart, what does each piece prove?</p><p>Those two questions are tightly coupled. Every field in the attestation corresponds to a specific check. Every check depends on a specific field. The attestation carries nothing that doesn&#8217;t get checked, and the verifier can&#8217;t check anything that isn&#8217;t carried.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Understanding the correspondence is understanding why the protocol is the specific shape it is.</p><div><hr></div><h2>What the attestation carries</h2><p>A complete attestation carries seven pieces. Six live in the attestation body, one is the signature over it. Together they make up the unit of evidence one agent offers another.</p><pre><code><code>Probe readings   The scalar readings &#8212; honesty = 1.29, courage = 1.44,
                 and so on, for whichever probes the domain specifies.

Causal scores    Per-probe causal-consistency scores. Tells the verifier
                 the reading isn't just surface correlation &#8212; it's tied
                 to a real computational mechanism.

Geometry hash    SHA-256 of &#934;, the causal Gram matrix. Identifies which
                 ruler was used to produce the readings.

Model hash       Merkle root of the model weight shards. Identifies
                 exactly which model was measured.

Chain            The history of previous attestations, each link carrying
                 the hash of its parent.

Domain scope     The agent's declared primary domain, plus permitted and
                 excluded patterns and interaction modes.

Signature        Ed25519 signature over everything above, produced by the
                 enclave's signing key.
</code></code></pre><p>Notice what&#8217;s still not in there: no raw activations, no training data, no internal prompts, no weights themselves. The attestation is a summary of measurements and the identifying hashes that tie those measurements to specific artefacts &#8212; not a dump of internal state.</p><div><hr></div><h2>What the verifier checks &#8212; field by field</h2><p>For each piece the attestation carries, the verifier runs a specific check. The two tables read as pairs: what was packaged, and what it lets the verifier confirm.</p><pre><code><code>Field              Check the verifier runs       Question it answers
Signature          Signature verification with   Was this really signed
                   the enclave's public key      by the enclave on record?

Geometry hash      Compare against registry's    Is this the same ruler
                   expected &#934; hash               we agreed to use?

Model hash         Compare against registry's    Is this the model we
                   expected model hash           expected &#8212; weights
                                                 unchanged since cert?

Probe readings     Evaluate drift against        Has the geometry moved
                   governance threshold          further than rules allow?

Causal scores      Check each score meets the    Are readings genuine
                   minimum for "causal"          mechanisms, not surface
                                                 artefacts?

Chain              Walk links from anchor        Is the history intact &#8212;
                   forward, verify each          no deletions, insertions,
                                                 or silent edits?

Domain scope       Match against verifier's      Is this agent allowed to
                   own registry rules            talk to us, and how?

Timestamp          Compare to current time,      Is this fresh &#8212; or an
(in envelope)      check freshness window        old attestation replayed
                                                 into a new conversation?
</code></code></pre><p><strong>Why each check has to be its own thing.</strong> Checking the signature doesn&#8217;t tell you the model is right &#8212; a genuine signature on a swapped-in model is still genuine. Checking the model doesn&#8217;t tell you the measurements are fresh &#8212; the right model could still be the subject of a replayed attestation. Checking the chain doesn&#8217;t tell you the current reading is within threshold &#8212; a clean chain still needs the tip to satisfy the governance rules.</p><p>Each check catches a different failure mode. Dropping any one of them leaves an attack surface.</p><div><hr></div><h2>Everything is independently reproducible</h2><p>The move at the heart of the whole protocol &#8212; the one that turns attestations from signed assertions into verifiable proofs &#8212; is that every value in the attestation can be reproduced by someone with sufficient access.</p><p>If a regulator has access to the same model weights (identified by the Merkle root), the same ruler (identified by the geometry hash), and the same input activations, they can re-run the measurement end to end and check that the readings they produce match the attestation bit-for-bit.</p><p>The re-run:</p><ul><li><p>Give me the same model, same probes, same input.</p></li><li><p>I compute &#934; myself, run the probes myself, get the same readings myself.</p></li><li><p>I check them against the attestation.</p></li><li><p><strong>Bitwise identical &#8594; the attestation is truthful.</strong></p></li><li><p>Doesn&#8217;t match &#8594; something is wrong. Forged attestation, swapped model, different ruler, tampered inputs. Any one of them would show up.</p></li></ul><p>This is what makes attestations evidence rather than testimony. A self-report is something you either believe or you don&#8217;t. A bitwise-reproducible measurement is something you check. The protocol doesn&#8217;t ask verifiers to trust the readings. It asks them to verify a commitment to those readings, made by an enclave-held key, that anyone with the right access can re-run at any time.</p><p>In practice, full re-runs happen selectively &#8212; during audits, during certification, and when something looks wrong. In the middle of a live exchange, the verifier trusts the cryptographic checks on the attestation (signature, chain, freshness, thresholds) and the deeper re-run option stays in reserve for when it&#8217;s needed. That&#8217;s fine. The commitment is permanent: the attestation stays in the chain, and an auditor coming in six months later can still reach back and verify.</p><div><hr></div><p><em>Links:</em></p><p><em>&#128196;<a href="https://zenodo.org/records/19238920"> Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/playlist?list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19613898">Lecture Notes</a> <br>&#128187;<a href="https://github.com/jade-codes/got"> Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Exchange: When Two AI Agents Meet | Geometry of Trust | Protocol - Episode 3]]></title><description><![CDATA[This is the third post in the Geometry of Trust protocol series. This post is about what happens when two agents actually try to cooperate.]]></description><link>https://www.techunfiltered.io/p/the-exchange-when-two-ai-agents-meet</link><guid isPermaLink="false">https://www.techunfiltered.io/p/the-exchange-when-two-ai-agents-meet</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Sun, 19 Apr 2026 13:01:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/baeac6cc-b80e-4177-8933-ca070a88cf36_1375x770.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-e7rQP3lgjI4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;e7rQP3lgjI4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/e7rQP3lgjI4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>Where we are</h2><p>Two pieces of the protocol are now on the table. An attestation is a signed snapshot of a model&#8217;s value geometry at a point in time. A chain links attestations together so history can&#8217;t be rewritten. Together they give one agent a tamper-evident record of what it has claimed about itself over its whole lifetime.</p><p>But attestations are meant to be exchanged. The whole reason for having them is so that a verifier &#8212; another agent, a regulator, an auditor &#8212; can hold the attester to its claims. So far we&#8217;ve built the artefact. Now we need the handshake.</p><p>This post walks through that handshake. Two agents meet. They run a specific sequence of checks. They either cooperate or they don&#8217;t. Everything the protocol has built so far &#8212; domain scoping from the governance series, attestations, chains, governance thresholds &#8212; comes together in this five-step exchange.</p><p><strong>The running example.</strong> Alice is a diagnostic AI, primary domain <code>healthcare.diagnostic-advisory</code>. Bob is a drug-interaction checker, primary domain <code>healthcare.drug-interaction</code>. Alice wants Bob&#8217;s expertise on whether a proposed regimen has any interactions. Bob is willing to answer but only under strict clinical governance.</p><div><hr></div><h2>Step 1 &#8212; Domain check (before any cryptography)</h2><p>The first thing that happens isn&#8217;t a cryptographic operation. It&#8217;s a structural check &#8212; the three-step domain scoping from the governance series, running before either agent bothers to verify a signature.</p><pre><code><code>                         Alice                    Bob
Primary domain           healthcare.              healthcare.
                         diagnostic-advisory      drug-interaction
Exclusions               (none relevant)          (none relevant)
Permits peer?            Yes &#8212; healthcare.*       Yes &#8212; diagnostic-advisory
                         covers Bob               is explicitly permitted
Mode toward peer         Advisory                 Read-only
Modes compatible?        Yes (asymmetric pairing is valid)
</code></code></pre><p>All three structural checks pass. No exclusions fire. Both permissions match. Modes are compatible &#8212; Alice will send diagnostic hypotheses, Bob will receive them without issuing anything back. The exchange proceeds to Step 2.</p><p>If any of the structural checks had failed, no cryptography would run at all. The audit record would show &#8220;blocked at domain scope,&#8221; not &#8220;attestation failed.&#8221; Two different kinds of failure, two different kinds of record. That separation matters for audit.</p><div><hr></div><h2>Step 2 &#8212; Alice sends the exchange request</h2><p>With domain scope cleared, Alice initiates. Her request contains four things:</p><ul><li><p><strong>Agent ID.</strong> A SHA-256 hash of Alice&#8217;s public key. Deterministic, short, lookup-friendly &#8212; Bob can find Alice&#8217;s registry entry from this alone.</p></li><li><p><strong>Signed envelope.</strong> A signed structure that binds this particular attestation to this particular exchange. Stops anyone replaying Alice&#8217;s real attestations into a different conversation later.</p></li><li><p><strong>Attestation chain.</strong> Alice&#8217;s full chain, oldest first. Bob can walk it from the anchor forward, verifying each link.</p></li><li><p><strong>Current attestation.</strong> The tip of the chain &#8212; Alice&#8217;s most recent signed snapshot of her value geometry.</p></li></ul><h3>What the envelope is for</h3><p>The envelope is the one component worth pausing on. An attestation by itself says, &#8220;these were my readings at this moment.&#8221; That&#8217;s a statement about the past. It doesn&#8217;t say anything about the current exchange.</p><p>Without the envelope, someone could intercept a real attestation Alice produced for a previous exchange and replay it as if it were part of a new one. Bob might verify the signature (genuine), check the chain (intact), find the readings within threshold (they are) &#8212; and unwittingly cooperate based on an attestation that was never meant for him.</p><p>The envelope is a signed structure that names this specific exchange: a unique nonce, the current timestamp, the peer&#8217;s identifier. It says &#8220;this attestation is being presented to this peer, at this moment, for this conversation.&#8221; Replaying an old attestation fails because the envelope&#8217;s exchange details won&#8217;t match the current context.</p><p>Attestations are reusable claims about value geometry. The envelope is what binds them to a specific, non-replayable interaction.</p><div><hr></div><h2>Step 3 &#8212; Bob validates Alice&#8217;s request</h2><p>Now the verification work begins. Bob runs nine checks, in a specific order, and any single failure aborts the exchange.</p><pre><code><code> 1. Is Alice in the trust registry?
 2. Is her domain compatible? (already checked in Step 1)
 3. Envelope signature valid?
 4. Attestation signature valid?
 5. Chain intact? (every parent hash matches)
 6. Timestamp fresh? (not replayed from last month)
 7. Geometry hash what we expect for her model?
 8. Drift within our threshold? (healthcare: 0.03)
 9. Causal scores present and all causal? (Tier 3)
</code></code></pre><p><strong>The logic of the ordering.</strong> Cheap checks come first. Registry lookup is a hash-table query. Signature verification is milliseconds. Walking the chain is slightly more expensive. Evaluating thresholds and causal scores comes last. A failed cheap check saves the expensive work that would have followed. If Alice isn&#8217;t in the registry, Bob doesn&#8217;t waste CPU on her signature.</p><p><strong>Failures are recorded distinctly.</strong> &#8220;Unknown agent&#8221; is a different record from &#8220;drift exceeded&#8221; is a different record from &#8220;causal validation failed.&#8221; A regulator later can tell exactly why the exchange didn&#8217;t happen.</p><p>If all nine checks pass, Bob accepts Alice. Any single failure &#8212; reject.</p><div><hr></div><h2>Step 4 &#8212; Bob sends his response</h2><p>If Bob accepts Alice, he doesn&#8217;t just say &#8220;okay.&#8221; He has to produce his own evidence, for the same reasons Alice had to produce hers. Alice hasn&#8217;t verified Bob yet. The exchange is symmetric in this regard: both sides present, both sides verify, before either side acts on the other&#8217;s contribution.</p><p>Bob&#8217;s response contains five things:</p><ul><li><p><strong>Agent ID.</strong> Bob&#8217;s own identifier &#8212; SHA-256 of his public key.</p></li><li><p><strong>Signed envelope.</strong> A new envelope binding Bob&#8217;s attestation to this exchange, nonce, and timestamp.</p></li><li><p><strong>Verdict on Alice.</strong> &#8220;Accepted&#8221; or &#8220;rejected,&#8221; with reason codes for the rejected case. Explicit verdict so Alice knows where she stands.</p></li><li><p><strong>Attestation chain.</strong> Bob&#8217;s own chain, oldest first.</p></li><li><p><strong>Current attestation.</strong> Bob&#8217;s tip &#8212; his most recent signed snapshot.</p></li></ul><div><hr></div><h2>Step 5 &#8212; Alice validates Bob&#8217;s response</h2><p>Alice now runs the same nine checks in reverse &#8212; against Bob. Same logic, same ordering, same failure behaviour.</p><ul><li><p>Bob is in Alice&#8217;s trust registry.</p></li><li><p>Bob&#8217;s domain is compatible (already confirmed).</p></li><li><p>Bob&#8217;s envelope signature verifies.</p></li><li><p>Bob&#8217;s attestation signature verifies.</p></li><li><p>Bob&#8217;s chain is intact back to the anchor.</p></li><li><p>Bob&#8217;s timestamp is fresh.</p></li><li><p>Bob&#8217;s geometry hash is what Alice expects for drug-interaction models.</p></li><li><p>Bob&#8217;s drift is within Alice&#8217;s threshold for healthcare.</p></li><li><p>Bob&#8217;s causal scores are present and indicate real mechanisms.</p></li></ul><p>If every check passes, Alice accepts Bob. Both sides have now produced evidence that satisfies the other&#8217;s governance rules. Cooperation proceeds &#8212; Alice sends diagnostic hypotheses, Bob evaluates them for drug interactions and returns findings, all within the already-established modes of interaction.</p><p><strong>Symmetry is the point.</strong> Neither agent trusts the other until both have produced and both have verified. The exchange doesn&#8217;t rely on a central authority to mediate trust &#8212; each agent checks the other against its own governance rules. A regulator watching from the outside sees two signed-envelope records, two verdicts, and two sets of verification outcomes. The whole handshake is auditable.</p><p>Asymmetric modes (advisory &#8596; read-only) don&#8217;t break the symmetry of verification. Alice and Bob play different roles once the exchange is live, but both had to prove themselves the same way to get there.</p><div><hr></div><h2>The whole exchange in one picture</h2><p>Stripped to the essentials:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rse0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rse0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png 424w, https://substackcdn.com/image/fetch/$s_!rse0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png 848w, https://substackcdn.com/image/fetch/$s_!rse0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!rse0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rse0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png" width="1456" height="1132" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1132,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142948,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.techunfiltered.io/i/194443028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rse0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png 424w, https://substackcdn.com/image/fetch/$s_!rse0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png 848w, https://substackcdn.com/image/fetch/$s_!rse0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!rse0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdecf016-4a9b-4159-a78f-11cbbce4e08c_1800x1400.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Two messages over the wire. One domain-scope check up front. Nine crypto-and-governance checks per side. A verdict at the end. That&#8217;s the whole exchange.</p><div><hr></div><h2>What this handshake enables</h2><p>Two things worth spelling out, because they follow from the structure rather than from any specific check.</p><p><strong>Trustless cooperation between AI agents.</strong> Alice doesn&#8217;t need to know Bob personally, or trust his operator, or rely on a third-party broker. She verifies his registry entry, his signatures, his chain, his freshness, his geometry, his thresholds, his causal scores &#8212; all independently. If everything checks out, she cooperates. If not, she doesn&#8217;t. No trust-by-default, no reliance on reputation, no central arbiter.</p><p><strong>Governance-enforced cooperation.</strong> The thresholds Alice applies to Bob (and vice versa) come from their respective trust registries &#8212; the governance-controlled policy layer. A clinical regulator deciding to tighten healthcare&#8217;s drift threshold from 0.03 to 0.02 can publish a new registry, and the next exchange will enforce the new rule. Policy updates at the governance layer; enforcement at the exchange.</p><div><hr></div><h2>But we still need separate hardware</h2><p>Signatures prove the attestation came from a particular signing key. Merkle roots prove the model is what&#8217;s claimed. Chains prove history is intact.</p><p>None of that prevents the operator running the model from feeding the probes fake activations, swapping the probes for biased ones, or simply assembling whatever numbers they like and asking their signing key to sign them.</p><p>Without something that isolates the measurement process from the person running it, the whole stack reduces to self-reporting with extra steps.</p><p><strong>The enclave is the piece of the system that makes the measurements worth trusting.</strong> It isolates the measurement process &#8212; probes, causal interventions, attestation assembly, signing &#8212; from the operator running the model. The model operator can do whatever they want with the model. They cannot reach inside the enclave to change how it measures or what it signs.</p><p>Without the enclave, every other cryptographic guarantee in the protocol is only as strong as &#8220;trust the operator.&#8221; With it, those guarantees actually guarantee something.</p><div><hr></div><h2>What an enclave actually is</h2><p>An enclave, in the sense this protocol uses, is a piece of the same physical machine that runs the model &#8212; but with hardware-enforced isolation that prevents everything outside it from reading or modifying what&#8217;s inside.</p><p><strong>Hardware-enforced</strong> is the load-bearing part. The isolation isn&#8217;t a software check that a privileged operating system could bypass. It&#8217;s built into the CPU itself. Memory pages assigned to the enclave are encrypted at the memory controller and decrypted only inside the enclave&#8217;s execution context. The operating system, the hypervisor, even someone with physical access to the RAM chips, sees only ciphertext.</p><p>Three production options today:</p><ul><li><p><strong>Intel SGX</strong> &#8212; Software Guard Extensions. A set of CPU instructions that create isolated memory regions (&#8221;enclaves&#8221;) that even the kernel can&#8217;t inspect.</p></li><li><p><strong>AMD SEV</strong> &#8212; Secure Encrypted Virtualization. Encrypts whole VMs so the hypervisor running them can&#8217;t read their state.</p></li><li><p><strong>NVIDIA H100 TEE</strong> &#8212; Trusted Execution Environment inside the GPU itself. Lets GPU compute happen on data the host system can&#8217;t read &#8212; important because large model activations mostly live on the GPU.</p></li></ul><p>In the current open-source reference implementation of the Geometry of Trust protocol, enclaves are emulated by a <code>MockEnclave</code> component. That&#8217;s fine for development and testing &#8212; the logic of the protocol doesn&#8217;t change. But a mock enclave is exactly that: a mock. Production deployment requires real hardware &#8212; one of the three above, or whatever replaces them in the next hardware generation. Trusting a mock enclave in production is trusting the operator by another name.</p><div><hr></div><h2>The isolation &#8212; what&#8217;s inside vs outside</h2><p>The outer box is the operator&#8217;s environment &#8212; server, cloud instance, laptop, whatever the operator controls. The model runs there. The enclave is a smaller, hardware-isolated region inside the same machine. The arrows between them tell the rest of the story: the enclave reads activations and weights from the model, but the model can&#8217;t read anything back. Signed attestations leave the enclave through a narrow outbound interface. The signing key never does.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q4GY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q4GY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png 424w, https://substackcdn.com/image/fetch/$s_!q4GY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png 848w, https://substackcdn.com/image/fetch/$s_!q4GY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!q4GY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q4GY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127106,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.techunfiltered.io/i/194443436?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!q4GY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png 424w, https://substackcdn.com/image/fetch/$s_!q4GY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png 848w, https://substackcdn.com/image/fetch/$s_!q4GY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!q4GY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f698ae-da96-48b0-815a-e021a20a460e_1800x1200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The arrow from model to enclave is one-way &#8212; activations flow in, nothing flows back. The enclave observes the model&#8217;s activations as the model produces them during normal inference, takes a copy, and runs its own measurement process on that copy. The model never sees that the observation happened. It doesn&#8217;t change its behaviour. It doesn&#8217;t even know which inputs are being measured.</p><div><hr></div><h2>What the enclave does</h2><p>Four operations run inside the enclave, in order. Each step depends on the previous one having been isolated from the operator.</p><p><strong>1. Catch activations.</strong> The enclave takes a copy of the activations the model produces during normal inference. The copy happens inside the enclave so the operator can&#8217;t modify the activations in flight.</p><p><strong>2. Run probes.</strong> Probes (the value-direction vectors from the mathematics series) are applied to the activation copy. The probes themselves live inside the enclave, so the operator can&#8217;t swap them for biased versions.</p><p><strong>3. Run causal interventions.</strong> The nudge-up / nudge-down / consistency tests from the mathematics series run here. Because this is where the causal scores come from, these tests have to be unbiased &#8212; which means they have to be outside the operator&#8217;s reach.</p><p><strong>4. Assemble + sign.</strong> The enclave assembles the attestation (all the fields from the previous post) and signs it with a key that lives inside the enclave and never exits.</p><p><strong>What the model operator cannot do:</strong></p><ul><li><p>Cannot see the probes being applied &#8212; the probes live inside the enclave.</p></li><li><p>Cannot see the nudges happening during causal intervention &#8212; the interventions run on the enclave&#8217;s copy of the activations.</p></li><li><p>Cannot modify the measurement process &#8212; the code running inside the enclave is fixed and attested to.</p></li><li><p>Cannot read the signing key &#8212; the key is generated inside the enclave, used inside the enclave, and never leaves the enclave boundary. Not even the hardware manufacturer can extract it.</p></li></ul><div><hr></div><h2>The read asymmetry &#8212; the enclave sees the model, not the other way round</h2><p>A subtle property of the enclave boundary is worth stating explicitly, because it&#8217;s load-bearing for the whole measurement regime: the relationship between the model and the enclave is <strong>asymmetric</strong>. The enclave reads the model. The model cannot read the enclave.</p><p>This asymmetry has two layers &#8212; why it matters, and how the hardware enforces it.</p><h3>Why the asymmetry matters</h3><p>A model that could detect it was being observed is a model that could be trained to behave differently under observation. That&#8217;s not a hypothetical concern &#8212; if the signal &#8220;my activations are being probed right now&#8221; is present in any form the model can pick up on, training pressure over time can shape behaviour that looks different on probed inputs than on unprobed ones. The measurement regime would then be measuring the wrong thing: not the model&#8217;s values, but the model&#8217;s presentation-when-being-measured.</p><p>The read asymmetry closes that door. If the model has no access to any information about the enclave &#8212; can&#8217;t read its memory, can&#8217;t detect when probes run, can&#8217;t see whether causal interventions are happening &#8212; then there is nothing for training to shape against. The measurement happens on activations the model has already produced, on a copy the model can&#8217;t inspect, in a process the model can&#8217;t observe. From the model&#8217;s point of view, it just ran a forward pass. Measurement is invisible.</p><p><strong>A model that can see its probe is a model that can learn to game its probe. A model that cannot see its probe has nothing to game.</strong> The measurement regime only produces evidence of real values if the model can&#8217;t tell it&#8217;s being measured. Read asymmetry is what keeps that property intact.</p><h3>How the asymmetry is enforced</h3><p>The asymmetry isn&#8217;t a software convention. It&#8217;s the same hardware property that keeps the operator out of the enclave, applied in the other direction.</p><ul><li><p><strong>Memory encryption at the CPU.</strong> The enclave&#8217;s memory is encrypted by the memory controller. To the model&#8217;s process &#8212; which lives outside the enclave &#8212; enclave memory pages appear as ciphertext. There&#8217;s no decryption key available to the model&#8217;s side, so reads return noise.</p></li><li><p><strong>The enclave reads a copy, not the live tensor.</strong> The enclave takes a snapshot of the activations when they&#8217;re produced and does its measurement on that copy. The model&#8217;s own computation proceeds without any reference to the enclave&#8217;s work. The model has no pointer, no handle, no signal that the snapshot was taken.</p></li><li><p><strong>No callback path.</strong> The enclave produces output (signed attestations) that leaves through a narrow interface to the outside world. It does not produce any output that returns to the model. There&#8217;s no information channel back in the enclave-to-model direction, so even side-channel leakage has nowhere to land.</p></li><li><p><strong>Weight reads are verified, not interactive.</strong> When the enclave needs to confirm the model&#8217;s weights (for the Merkle root field in the attestation), it reads the weight shards and hashes them. The reads are one-shot and produce no observable effect on the model&#8217;s execution &#8212; the model isn&#8217;t involved in, and can&#8217;t detect, the verification.</p></li></ul><p><strong>The asymmetry in one line:</strong> activations and weights flow from the model to the enclave. Signed attestations flow from the enclave to the outside world. Nothing flows from the enclave back to the model. Ever.</p><p>That&#8217;s the asymmetry. It&#8217;s the same property that makes memory encryption useful for keeping secrets &#8212; just applied so the &#8220;secret&#8221; is the fact that measurement is happening at all.</p><p>This is also why &#8220;mock enclave&#8221; deployments can&#8217;t substitute for real hardware. A software-only mock can simulate the boundary logically, but it can&#8217;t produce the hardware-enforced invisibility. In a mock, the measurement process runs in the same address space as the model&#8217;s process. Under sufficiently adversarial conditions &#8212; especially during training &#8212; some signal can leak. Real TEE hardware provides an isolation boundary that remains tight even under those conditions.</p><div><hr></div><h2>Why the enclave is the foundation</h2><p>The dependency chain is worth laying out because it shows why this is the load-bearing piece.</p><pre><code><code>Without the enclave                What breaks
Signatures still verify            Signatures only prove who made them.
cryptographically.                 If the operator has the key, they
                                   can sign arbitrary numbers.

Merkle roots still identify        But the operator can feed that model
a specific model.                  whatever inputs they want during the
                                   measurement process and bias the
                                   activations.

The chain still links              If every attestation was assembled by
attestations in order.             the operator, the whole history is
                                   consistent fiction.

Causal scores still look like      If the operator ran the interventions,
evidence of realness.              they can tune the scores to whatever
                                   level they want.
</code></code></pre><p><strong>The logical dependency.</strong> Signatures, Merkle roots, chains, and causal scores are only meaningful if the measurement process is actually isolated. The enclave is what provides that isolation. Every other guarantee in the protocol reduces to &#8220;trust the operator&#8221; without it. With it, the cryptographic guarantees become guarantees about something real.</p><p>This is why enclave-less deployments &#8212; or deployments using only a mock enclave &#8212; aren&#8217;t a slightly-weaker version of the protocol. They&#8217;re a fundamentally different thing. The protocol still runs, but the claims it enforces have different semantics. In a real-enclave deployment, an attestation is evidence. In a mock-enclave deployment, an attestation is testimony dressed up in cryptography.</p><div><hr></div><h2>What the enclave doesn&#8217;t do</h2><p>Clarifying the scope helps prevent the word &#8220;enclave&#8221; from being expected to do more than it actually does.</p><p><strong>The enclave doesn&#8217;t decide what to measure.</strong> The probe set and thresholds come from governance &#8212; not from the enclave. The enclave runs whatever probes governance has placed inside it.</p><p><strong>The enclave doesn&#8217;t prove the model is &#8220;good.&#8221;</strong> It only proves that the attestation is an honest report of what the probes read on this specific model. Whether what the probes read is acceptable is a governance question.</p><p><strong>The enclave doesn&#8217;t defend against all attacks.</strong> Side-channel attacks on TEEs are a real area of research. The enclave raises the cost of tampering dramatically, but it&#8217;s not unbreakable. Governance should factor that into threshold-setting and audit cadence.</p><p><strong>The enclave doesn&#8217;t replace governance.</strong> It&#8217;s a technical component. The people running the governance still decide what to enforce, what thresholds apply, and what to do when something looks wrong.</p><h3>An honest statement of residual trust</h3><ul><li><p>You have to trust the hardware manufacturer. Intel, AMD, NVIDIA &#8212; the security of the enclave depends on them not having shipped a backdoor.</p></li><li><p>You have to trust the enclave code. What runs inside is just code, and code has bugs. Audits and reproducible builds help but don&#8217;t eliminate this.</p></li><li><p>You have to trust that your threat model matches the enclave&#8217;s threat model. TEEs are strong against privileged software attackers; they&#8217;re weaker against physical attackers with unlimited time and a cryo-stripped chip.</p></li></ul><p>None of this makes the enclave worthless &#8212; it still shifts the trust root from &#8220;the operator of this specific AI&#8221; to &#8220;the ecosystem of hardware, code, and physical security,&#8221; which is a much healthier place to put it. But it&#8217;s important not to sell enclaves as magical. They&#8217;re a significantly-harder-to-compromise foundation. That&#8217;s already a lot.</p><div><hr></div><h2>The point</h2><p>The exchange protocol is the point where every other layer in the stack finally comes together. Measurement from the mathematics series. Structural boundaries from the governance series. Attestations and chains from the earlier protocol posts. All of it converges here, in a handshake that either succeeds cleanly or fails with an auditable reason.</p><p>Two agents who don&#8217;t know each other can reach a verified, governance-enforced agreement to cooperate. Or an auditable refusal not to. Those are the two outcomes, and they&#8217;re the outcomes governance actually needs.</p><p>The enclave is what takes the entire Geometry of Trust protocol from &#8220;self-report plus signatures&#8221; to &#8220;verifiable evidence.&#8221;</p><p>Signatures prove who signed. Merkle roots prove which model. Chains prove history. Causal scores prove mechanism realness. Every one of those guarantees is only as strong as the isolation of the process that produced them. The enclave provides that isolation.</p><div><hr></div><p><em>Links:</em></p><p><em>&#128196;<a href="https://zenodo.org/records/19238920"> Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/playlist?list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19613900">Lecture Notes</a> <br>&#128187;<a href="https://github.com/jade-codes/got"> Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p>]]></content:encoded></item><item><title><![CDATA[Chains: How a Model’s History Gets Tied Down | Geometry of Trust | Protocol - Episode 2]]></title><description><![CDATA[This is the second post in the Geometry of Trust protocol series. This post covers what happens when you need more than a snapshot: a full history that can&#8217;t be quietly edited.]]></description><link>https://www.techunfiltered.io/p/chains-how-a-models-history-gets</link><guid isPermaLink="false">https://www.techunfiltered.io/p/chains-how-a-models-history-gets</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Sun, 19 Apr 2026 09:01:26 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/01b92d31-d370-4e1d-91c3-7f319b5db4d5_1076x606.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-kXuVIWIYJeE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;kXuVIWIYJeE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/kXuVIWIYJeE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>A snapshot isn&#8217;t a history</h2><p>The last post introduced attestations: signed snapshots of a model&#8217;s value geometry at a point in time. Each one is a proof that the enclave measured these readings on this model at this moment. Verifiable, tamper-evident, cryptographically bound to the enclave that produced it.</p><p>That&#8217;s enough if the question is &#8220;what does this model look like right now?&#8221; It isn&#8217;t enough if the question is &#8220;has this model been behaving itself?&#8221;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>A single attestation says: <em>at 09:14 UTC, this model had these readings</em>. It says nothing about what the readings were yesterday, last week, or when the model was first deployed. And without history, governance loses most of what makes the measurements useful. You can&#8217;t detect drift without comparing to an earlier baseline. You can&#8217;t investigate an incident without seeing what the readings looked like in the run-up. You can&#8217;t audit behaviour without being able to walk backwards through what was claimed and when.</p><p>Governance needs the whole history, not just the latest snapshot. And the history has to be as tamper-evident as individual attestations are. A simple list of attestations isn&#8217;t enough &#8212; someone could delete an inconvenient entry, insert a fake one, or quietly edit an old reading. What&#8217;s needed is a way to bind attestations together so that any change to any one of them breaks verification of every attestation that came after.</p><div><hr></div><h2>Each attestation points to the previous</h2><p>The construction is simple. Every attestation, as part of the content it signs over, includes the hash of the previous attestation. The first attestation in the chain &#8212; the anchor &#8212; has no parent.</p><pre><code><code>Attestation #1:  hash = abc123,  parent = (none)
Attestation #2:  hash = def456,  parent = abc123
Attestation #3:  hash = ghi789,  parent = def456
Attestation #4:  hash = jkl012,  parent = ghi789
</code></code></pre><p>The hash of each attestation is computed over all of its content &#8212; model ID, timestamp, geometry hash, readings, causal scores, Merkle root, and crucially the parent hash. That&#8217;s then signed by the enclave. So the parent hash is <em>inside the signature</em>, and any change to any earlier attestation in the chain ripples forward: change the content of #2, and its hash is no longer <code>def456</code>, which means #3&#8217;s parent pointer no longer matches what&#8217;s signed into #3, which means #3&#8217;s signature no longer verifies.</p><div><hr></div><h2>What the chain prevents</h2><p>Three specific attacks the chain blocks, and it&#8217;s worth being precise about each.</p><p><strong>Delete an attestation.</strong> Remove #2 from the chain. Now #3&#8217;s parent pointer references <code>abc123</code> (#1) but the chain is missing the link between them. A verifier walking the chain sees the gap immediately &#8212; #3&#8217;s parent is <code>abc123</code>, but <code>abc123</code> is the hash of #1, which already existed before #3 was issued. The timestamps and sequence don&#8217;t line up.</p><p><strong>Insert a fake attestation.</strong> Slip a forged #2.5 between #2 and #3. The fake would need #2&#8217;s hash as its parent (fine, that&#8217;s public) and would need to hash to whatever #3 declares as its parent. Producing a hash that equals a specific target value is a preimage attack on SHA-256 &#8212; infeasible by design. The fake can&#8217;t fit.</p><p><strong>Change an old attestation.</strong> Quietly edit #1 after #2 has already been issued. Changing #1&#8217;s content changes its hash from <code>abc123</code> to something else. But #2&#8217;s signed content still contains <code>parent = abc123</code>, which no longer matches. #2 is now orphaned, #3 is orphaned through it, and the entire chain after #1 breaks.</p><p>When a verifier walks the chain and finds that a parent hash doesn&#8217;t match, or a signature doesn&#8217;t verify, the chain is rejected. The verifier can see exactly where the break happened and can distinguish &#8220;malicious tampering&#8221; from &#8220;legitimate gap in history I don&#8217;t have access to.&#8221;</p><p><strong>A broken chain isn&#8217;t just an error &#8212; it&#8217;s evidence.</strong> A regulator seeing a broken chain knows something happened and can investigate. This is why the chain is stronger than a database of attestations. A database can be quietly edited; a chain tells you when it has been.</p><div><hr></div><h2>Walking the chain backwards</h2><p>Once you have a verified chain, you have a timeline. Reading it backwards turns the sequence of attestations into an investigative tool.</p><p>A concrete case. A clinical deployment triggers a drift alert. The governance system looks at the chain:</p><pre><code><code>#3  2026-04-15  11:42 UTC  patient_safety = 0.91  &#8594; DEVIATED
#2  2026-04-15  09:14 UTC  patient_safety = 1.29  &#8594; NORMAL
#1  2026-04-14  08:00 UTC  patient_safety = 1.31  &#8594; BASELINE
</code></code></pre><p>By walking backwards from the alert (#3), the investigator can immediately locate the transition: the readings were normal through #2 and deviated by #3. The drift happened between 09:14 and 11:42 on the 15th. That&#8217;s a roughly two-and-a-half-hour window to investigate: what changed, what inputs came in, what updates were applied.</p><p>The chain turns into:</p><ul><li><p><strong>An audit trail.</strong> Every claim the agent ever made about its own value geometry is signed, linked, and timestamped.</p></li><li><p><strong>An incident timeline.</strong> When something goes wrong, the chain tells you when it started going wrong.</p></li><li><p><strong>A compliance record.</strong> Continuous evidence that the agent met its thresholds across the whole deployment, not just at point-in-time checks.</p></li><li><p><strong>A history that can be investigated at leisure.</strong> The chain persists, so regulators coming in months after the fact can still reconstruct what was happening.</p></li></ul><p>None of this requires the chain to be public, or synchronised across the world, or posted to any central registry. It just has to exist, be signed, and be available when someone with authority asks to see it.</p><div><hr></div><h2>The blockchain comparison</h2><p>The construction above &#8212; hash-linked records, tamper-evident by the chaining itself &#8212; is the same basic idea that underlies blockchains. It&#8217;s worth being precise about what&#8217;s borrowed and what isn&#8217;t, because &#8220;blockchain&#8221; is a word that arrives with a lot of attached baggage and most of it isn&#8217;t relevant here.</p><pre><code><code>Element                In a public blockchain       In this protocol
Hash-linked records    Yes                          Yes &#8212; same mechanic
Tamper-evidence        Yes, via the linking         Yes &#8212; same property
Mining / proof-of-work Yes, to order blocks         None. Not needed.
Tokens / currency      Yes, incentivises miners     None. No incentives.
Global consensus       Yes &#8212; defining property      None. Per-agent chain.
Public, global ledger  Yes, by design               No. Local; shared on demand.
Energy cost            Often significant            Negligible &#8212; SHA-256 + Ed25519
</code></code></pre><p>The right way to describe what this protocol uses: <strong>a hash-linked chain of signed attestations, maintained per-agent, verified when demanded.</strong> It borrows the tamper-evidence property from the blockchain world &#8212; and nothing else.</p><p>Everything blockchain solves by being expensive and global, this chain doesn&#8217;t need to solve. The signing key is already anchored in an enclave (more on that later in the series). The governance layer already decides who counts as an authoritative verifier. There&#8217;s no adversarial network of unknown validators to convince. The chain is a much simpler thing doing a much narrower job.</p><p>This matters for governance because the word &#8220;blockchain&#8221; usually brings up concerns about cost, scalability, and complexity. Those concerns don&#8217;t apply here. The chain costs essentially nothing to maintain &#8212; one SHA-256 per attestation and one Ed25519 signature per attestation, both of which are already being done for the attestation itself. The parent pointer is just another field that gets signed over. The chain is as cheap as the attestations are.</p><div><hr></div><h2>How the chain works in practice</h2><p><strong>Who keeps the chain.</strong> The agent keeps its own chain. Each new attestation extends the chain the agent has been maintaining since it was first deployed. A regulator, auditor, or peer agent doesn&#8217;t need to hold the chain themselves &#8212; they just need to be able to request it (or a relevant slice of it) when they need to verify something.</p><p><strong>How far back does it go.</strong> The anchor &#8212; the first attestation in the chain &#8212; is typically set at deployment. A clinical advisor&#8217;s chain starts when it goes live in the hospital. An agricultural agent&#8217;s chain starts when it&#8217;s first configured for the cooperative. Before that point, the model was in development and a different set of governance rules applied.</p><p>Re-anchoring happens when something significant changes &#8212; a major model update, a change of primary domain (with recertification, as covered in the governance series), a change of governance regime. The old chain doesn&#8217;t disappear; it just ends at a known point, and a new chain starts from a new anchor. The transition between chains is itself auditable.</p><p><strong>What happens when a chain breaks.</strong> A broken chain isn&#8217;t a catastrophic failure. It&#8217;s a finding. The protocol surfaces it; governance decides what to do about it. Possible responses range from mild (investigate, log, re-anchor with an audit note) to severe (suspend the agent, require recertification, revoke its trust registry entry). The protocol doesn&#8217;t prescribe which response is appropriate &#8212; that&#8217;s governance&#8217;s call. What the protocol guarantees is that the break is detectable and that the detection itself is cryptographically sound.</p><div><hr></div><h2>The point</h2><p>A single attestation is a claim about a moment. A chain is a claim about a lifetime. Governance needs the lifetime.</p><p>The mechanic is simple &#8212; each attestation points to the previous one, and the parent pointer is signed into the attestation. But the property that falls out of that simplicity is exactly what governance needs: a history that can be audited, that can be walked backwards, and that can&#8217;t be quietly edited without someone noticing.</p><p>No mining. No tokens. No global ledger. Just hash-linked signed attestations, doing a narrow job well.</p><div><hr></div><p><em>Links:</em></p><p><em>&#128196;<a href="https://zenodo.org/records/19238920"> Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/playlist?list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19613902">Lecture Notes</a> <br>&#128187;<a href="https://github.com/jade-codes/got"> Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Testimony vs Evidence: Why We Need a Protocol, and What an Attestation Actually Is | Geometry of Trust | Protocol - Lesson 1]]></title><description><![CDATA[This is the first post in the Geometry of Trust protocol series. This post is where those three strands mathematics, philosophy and governance converge into something portable and verifiable.]]></description><link>https://www.techunfiltered.io/p/testimony-vs-evidence-why-we-need</link><guid isPermaLink="false">https://www.techunfiltered.io/p/testimony-vs-evidence-why-we-need</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Sat, 18 Apr 2026 21:00:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f9b201f8-d8aa-4f5a-ba9a-eeaccac80fc9_1376x769.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-1YYS2TSRjpg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;1YYS2TSRjpg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/1YYS2TSRjpg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>What we have, and what&#8217;s missing</h2><p>We have a ruler &#8212; the causal Gram matrix &#934; &#8212; that measures value geometry. We have probes that read live activations and produce scalar readings for specific values. We have causal checks that confirm those readings correspond to real computational mechanisms rather than surface correlations. We have drift detection that watches readings over time and catches meaningful changes.</p><p>Every one of those tools has the same implicit setting: <strong>one agent measuring itself</strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Which is real and useful &#8212; a developer can run these tools in a lab and learn a lot about a model. But it&#8217;s a closed loop. The agent is the one producing the measurements and the one interpreting them.</p><p>That&#8217;s fine for internal analysis. It isn&#8217;t enough for the real problem.</p><p><strong>How does another agent trust those measurements?</strong> If a medical-advisor agent tells a drug-checker &#8220;my honesty reading is 1.29,&#8221; the drug-checker has no way to tell whether that number was actually produced by the advisor&#8217;s current model or typed in arbitrarily. The claim and the evidence look the same from the outside.</p><p><strong>How does a regulator verify them?</strong> A clinical regulator auditing a deployed model needs to check that the measurements reported match the model actually running. Self-reports don&#8217;t give them anything to check against. &#8220;We measured ourselves and everything&#8217;s fine&#8221; isn&#8217;t the shape of an audit.</p><p><strong>How do two agents decide to cooperate?</strong> The governance series argued that cross-domain interactions should happen when both sides&#8217; configurations permit it and both sides&#8217; measurements meet each other&#8217;s thresholds. That logic assumes the measurements are available to be examined by the peer. A purely local measurement can&#8217;t be examined by anyone else.</p><div><hr></div><h2>What a protocol has to provide</h2><p>For the measurement tools to do their governance job, they have to stop being private. They have to become portable, verifiable artefacts that can be exchanged between parties that don&#8217;t necessarily trust each other.</p><p>That&#8217;s the shift from &#8220;a set of measurement tools&#8221; to &#8220;a protocol.&#8221; A protocol is a set of rules about how measurements get packaged, exchanged, and verified. Five specific capabilities have to be in it:</p><ul><li><p><strong>Package measurements into a proof.</strong> A single structured artefact that binds together the model identity, the probes used, the readings produced, and the time they were taken.</p></li><li><p><strong>Sign the proof so it can&#8217;t be faked.</strong> A cryptographic signature tying the artefact to a specific signing key.</p></li><li><p><strong>Chain proofs so history can&#8217;t be rewritten.</strong> Each new attestation links to the previous one so that tampering with earlier readings breaks later signatures.</p></li><li><p><strong>Exchange proofs between agents.</strong> A way for one agent to hand its attestation to another during an interaction, and for a regulator to demand one on audit.</p></li><li><p><strong>Verify the other agent&#8217;s proof independently.</strong> The receiving party doesn&#8217;t have to take anyone&#8217;s word for anything.</p></li></ul><p>This post covers the first two. The rest come in later posts.</p><div><hr></div><h2>The attestation &#8212; a signed snapshot</h2><p>The unit of proof in this protocol is called an <strong>attestation</strong>. It&#8217;s a structured artefact that packages everything a verifier needs to know about one measurement event, and it&#8217;s signed so the verifier can trust the artefact came from the claimed source.</p><p>An attestation carries six fields:</p><pre><code><code>model_id       Which model was measured. A stable identifier
               for the specific weights &#8212; not the family, the
               exact version.

timestamp      When the measurement was taken. Anchors the
               attestation in time; enables freshness checks.

geometry_hash  Which ruler was used. SHA-256 of &#934; so the
               verifier can confirm the measurement was taken
               against the ruler they expected.

probe_readings The scalar readings: honesty = 1.29,
               courage = 1.44, and so on, for whichever
               probe set the domain requires.

causal_scores  Per-probe causal consistency: honesty = 0.82
               (real), courage = 0.79 (real). Tells the
               verifier these aren't surface correlations.

merkle_root    Hash of the model weight shards. Lets a
               verifier confirm, without downloading every
               weight, that the model being attested over
               is the model they think it is.
</code></code></pre><p>Notice what&#8217;s <strong>not</strong> in there: any raw activations, any training data, any internal prompts. The attestation is a summary of measurements, not a dump of internal state. Privacy and efficiency both come from this &#8212; the attestation is small, portable, and carries nothing the verifier doesn&#8217;t actually need.</p><h3>A concrete example</h3><p>An attestation for a clinical advisor at 09:14 UTC might look like this (simplified for readability):</p><pre><code><code>{
  "model_id":      "med-advisor-v2.3.7",
  "timestamp":     "2026-04-15T09:14:22Z",
  "geometry_hash": "sha256:3f8a...c12e",
  "probe_readings": {
    "patient_safety":    1.29,
    "evidence_quality":  1.44,
    "confidentiality":   1.18
  },
  "causal_scores": {
    "patient_safety":    0.82,
    "evidence_quality":  0.79,
    "confidentiality":   0.85
  },
  "merkle_root":   "sha256:9b2f...a041",
  "signature":     "ed25519:7e41...d0b8"
}
</code></code></pre><p>A verifier looking at this can tell: which exact model was measured (model_id + merkle_root), with which ruler (geometry_hash), at what time (timestamp), and with what results (readings + causal scores). The signature at the end ties the whole bundle to a specific signing identity.</p><div><hr></div><h2>The signing key lives in an enclave</h2><p>Attestations are signed with Ed25519, a modern asymmetric signature scheme chosen for speed, small signatures, and well-understood security properties. The mechanics of Ed25519 aren&#8217;t the interesting part for governance purposes &#8212; any reasonable modern scheme would work. The interesting part is <strong>where the signing key lives</strong>.</p><p>The private signing key lives inside an enclave. It never comes out. The signature it produces can only have been made by the enclave, because nothing else has the key. That&#8217;s what makes the attestation a proof rather than a claim.</p><p>An enclave, for the purposes of this post, is a restricted execution environment where code and keys run in isolation from the surrounding system. A full post on enclaves comes later in this series. For now, the relevant fact is operational: the signing key is generated inside the enclave, used inside the enclave, and never exported. The enclave&#8217;s hardware and operating system enforce this.</p><p>The consequence is what we need. When an attestation arrives with a valid Ed25519 signature from the enclave&#8217;s public key, the verifier knows two things:</p><ul><li><p>The attestation was produced by the enclave &#8212; no other party could have made that signature.</p></li><li><p>The attestation hasn&#8217;t been tampered with in transit &#8212; any change would break the signature.</p></li></ul><p><strong>Self-report is testimony. Attestation is evidence.</strong> The whole point of this protocol is to move the measurement regime from the first kind of thing to the second. A self-reported &#8220;my honesty is 1.29&#8221; claim can be trivially faked by any process with the ability to send a message. An enclave-signed attestation carrying &#8220;my honesty is 1.29&#8221; can only have been produced by the specific enclave whose public key is on record.</p><div><hr></div><h2>How verification works</h2><p>The verifier &#8212; another agent, a regulator, an auditor &#8212; takes the attestation and goes through a specific sequence of checks.</p><p><strong>Step 1. Check the signature.</strong> Standard Ed25519 verification: take the attestation body, apply the signature algorithm with the enclave&#8217;s public key, and confirm the signature matches. If it doesn&#8217;t, stop here &#8212; the attestation is either forged or corrupted.</p><p><strong>Step 2. Confirm the model and ruler.</strong> Check <code>model_id</code> against whichever model the verifier expected to be dealing with. Check <code>merkle_root</code> against a known weight hash for that model. Check <code>geometry_hash</code> against the expected &#934;. Any mismatch means the attestation is about a different object than the one the verifier meant to verify.</p><p><strong>Step 3. Determinism check.</strong> This is the part that makes the protocol work. The measurement process is deterministic. Same model, same ruler, same input, same RNG seed &#8212; same result, bitwise identical.</p><p>If the verifier has access to the same model weights (via the <code>merkle_root</code>), the same ruler (via the <code>geometry_hash</code>), and the same input activations, they can re-run the measurement themselves. If their result matches the attestation&#8217;s readings bit-for-bit, the attestation is genuine. If it doesn&#8217;t, something is wrong. Either way, the verifier didn&#8217;t have to trust the claimed readings. They checked.</p><p>This is the key move. Attestations aren&#8217;t trust-me assertions dressed up in cryptography. They&#8217;re commitments to a specific measurement outcome that the verifier can reproduce. The signature binds the attester to that outcome; the determinism lets the verifier check it.</p><h3>When full re-verification isn&#8217;t possible</h3><p>A regulator with full access to the model, ruler, and inputs can do the bitwise check. A peer agent in the middle of a live exchange usually can&#8217;t &#8212; they don&#8217;t have the other party&#8217;s weights, and replicating the input activation would mean disclosing something the attester may not want to disclose.</p><p>So in practice the determinism check is done selectively: spot-checks during audits, automated re-runs during certification, attestation-to-attestation comparison during ordinary exchanges.</p><p>Crucially, even when the verifier doesn&#8217;t redo the whole measurement, the option of doing it later remains. The attestation is a commitment. A regulator coming in six months after a suspicious interaction can still pull the attestation, pull the model, pull the ruler, and verify &#8212; because the enclave-signed artefact is a permanent record of what was claimed.</p><div><hr></div><h2>What the protocol deliberately doesn&#8217;t do</h2><p>A few clarifications are worth flagging, because the word &#8220;protocol&#8221; tends to carry more weight than it should.</p><p><strong>The protocol doesn&#8217;t decide what to measure.</strong> The probes, the probe set, the ruler &#8212; all of that is governance&#8217;s job, as the governance series established. The protocol carries whatever measurements governance picks.</p><p><strong>The protocol doesn&#8217;t decide what counts as acceptable.</strong> Drift thresholds, causal-score minimums, probe requirements &#8212; all of that is governance&#8217;s job too. The protocol just lets the verifier hold the attester to whatever thresholds have been set.</p><p><strong>The protocol doesn&#8217;t replace the enclave.</strong> The enclave is what makes the signing key trustable. Without a proper enclave, the signing key is just another file on a disk and the whole chain of trust falls over. That&#8217;s a later post.</p><p><strong>The protocol doesn&#8217;t handle everything in one shot.</strong> This post covers packaging and signing. Chaining, exchange, and the rest come later in the series. One attestation is a point-in-time snapshot. Governance needs the whole history &#8212; which is why chaining matters, and is where we&#8217;ll go next.</p><div><hr></div><h2>The point</h2><p>The measurement tools in the mathematics series produce numbers. The protocol turns those numbers into evidence &#8212; portable, signed, verifiable artefacts that can be exchanged between parties that don&#8217;t trust each other and checked without having to trust them either.</p><p>That&#8217;s the whole job. It&#8217;s a narrow one. It&#8217;s also load-bearing &#8212; without it, every governance claim about AI safety collapses back into testimony.</p><div><hr></div><p><em>&#128196;<a href="https://zenodo.org/records/19238920"> Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/playlist?list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19613817">Lecture Notes</a> <br>&#128187;<a href="https://github.com/jade-codes/got"> Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Ruler Measures, Governance Decides | Geometry of Trust | Governance - Lesson 4]]></title><description><![CDATA[This is the fourth post in the Geometry of Trust governance series. This post asks the question the previous three have been circling: who decides?]]></description><link>https://www.techunfiltered.io/p/the-ruler-measures-governance-decides</link><guid isPermaLink="false">https://www.techunfiltered.io/p/the-ruler-measures-governance-decides</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Sat, 18 Apr 2026 17:01:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/BIo4HZk-I1Y" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-BIo4HZk-I1Y" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;BIo4HZk-I1Y&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/BIo4HZk-I1Y?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>The question that keeps surfacing</h2><p>The pieces of the framework are on the table. Safety doesn&#8217;t travel between domains. Every agent declares one primary domain. Cross-domain interactions run three structural checks before any cryptography. Per-domain thresholds decide how strictly the evidence gets held once the structural checks pass.</p><p>Each of those pieces has left one question hanging: who decides?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Who decides which values to probe for? Who decides what the thresholds should be? Who decides what happens when drift is detected? Who maintains the registry that lists the agents and their configurations in the first place?</p><p>The framework doesn&#8217;t answer these questions. That&#8217;s not a limitation. That&#8217;s the design. The protocol is deliberately the narrow part of the stack, and the governance decisions sit on top of it &#8212; made by people and institutions with domain expertise, legitimacy, and accountability. The protocol&#8217;s job is to make those governance decisions <em>enforceable</em>. Governance&#8217;s job is to decide what should be enforced.</p><p><strong>The ruler measures. Governance decides.</strong></p><div><hr></div><h2>Why the protocol is decentralised</h2><p>Before talking about what the protocol provides and what governance decides, it&#8217;s worth being explicit about why the protocol is built to be decentralised in the first place.</p><p>A centralised protocol &#8212; one authority deciding which values get probed, which thresholds apply, and who gets to audit whom &#8212; would solve none of the problems this framework is trying to solve. It would concentrate exactly the value judgements that governance is meant to distribute.</p><p>The whole point of a decentralised protocol is that it lets the people affected by deployed AI decide what matters to them, in their own context, with their own accountability structures. A clinical community decides what patient safety means for their practice. A farming cooperative decides what responsible agricultural AI looks like on their fields. A municipal authority decides how AI serves its residents. Different communities will land in different places, and that&#8217;s not a failure of the protocol &#8212; it&#8217;s the protocol working as designed.</p><p><strong>A note on the examples.</strong> Every specific arrangement in this post &#8212; &#8220;a hospital maintains its clinical registry,&#8221; &#8220;a regulator audits financial agents,&#8221; &#8220;a cooperative maintains agricultural configs&#8221; &#8212; is illustrative. It&#8217;s one possible arrangement, not the only one. In practice, who holds these roles will depend on the jurisdiction, the sector, and the local political and institutional context. The examples are here to make the framework concrete, not to prescribe which institutions should have which powers.</p><p>The protocol is deliberately silent on those choices because its legitimacy depends on its silence. It provides the measurement and enforcement substrate. Who uses it, and how, is for the communities using it to decide.</p><p>When the rest of this post says &#8220;governance,&#8221; read that as &#8220;whoever the community affected by this deployment has chosen to decide.&#8221; Sometimes that&#8217;s a regulator. Sometimes it&#8217;s an accreditation body. Sometimes it&#8217;s a cooperative agreement among peers. Sometimes it&#8217;s a democratic process. The protocol doesn&#8217;t pick between these &#8212; it works under all of them.</p><h3>Layered standards: country floor, community additions</h3><p>A point that&#8217;s easy to miss: decentralisation doesn&#8217;t mean fragmentation. The tier system (drift bounds, causal validation requirements) and the domain system (exclusions, permissions, modes) are both structured so that a higher-level authority can set a floor, and lower-level communities can add stricter constraints on top.</p><p>Concretely: a country&#8217;s health regulator can define the baseline drift bound and minimum probe set that all clinical AI in that jurisdiction must meet. Individual hospital networks can then require tighter bounds or additional probes for their own deployments, without the country&#8217;s baseline having to know or care about those additions. The per-peer threshold lookup resolves the same way either way &#8212; most-specific-match wins, so hospital-level rules apply when the hospital is the peer, country-level rules apply when the country&#8217;s regulator is the peer. No renegotiation of the substrate is needed.</p><p>How this works in the protocol:</p><ul><li><p>A country-level authority publishes a baseline configuration: minimum probe set, maximum drift bound, mandatory interaction modes for high-stakes domains.</p></li><li><p>A regional authority inherits the baseline and can tighten &#8212; narrower drift, larger probe set, stricter exclusions.</p></li><li><p>An institution inherits the regional baseline and can tighten further for its own deployments.</p></li><li><p>A specific peer in a specific interaction may tighten still further.</p></li></ul><p>The mechanics are the same at every level: pattern match, most-specific wins. Nothing new has to be added to the protocol to support layering &#8212; the layering falls out of how the existing rules compose. This lets countries agree on common ground (what every clinical AI in the jurisdiction must do) while leaving room for communities, institutions, and individual deployments to go further based on their own context.</p><p>The alternative &#8212; a protocol that forces a single global standard &#8212; either lands on whatever the most permissive jurisdiction will accept (and fails to protect the stricter communities) or lands on whatever the strictest jurisdiction will accept (and prevents deployment anywhere else). Neither outcome is good. Layered standards let a sensible middle happen: broad agreement on the floor, diverse choice above it.</p><div><hr></div><h2>What the protocol provides</h2><p>The protocol&#8217;s contribution is three narrow categories of thing. None of them is a value judgement. All of them exist to let value judgements be enforced.</p><p><strong>The measurement tool.</strong> The causal Gram matrix &#934;, the probes that read value directions, the drift detection that watches those readings over time, the causal intervention that verifies the probes are measuring real computational mechanisms rather than surface correlations.</p><p><strong>The enforcement mechanism.</strong> Signed attestations that carry probe readings with cryptographic integrity. Chains that let attestations be verified back to a known root. The exchange protocol that lets peers hold each other to per-peer thresholds.</p><p><strong>The domain boundaries.</strong> Primary domain declaration. Exclusion patterns as hard vetoes. Permission patterns as bidirectional allow-lists. Interaction modes &#8212; cooperative, advisory, read-only, supervised.</p><p>None of this says what the right answer is for any specific domain. It gives you the ability to express answers precisely and enforce them automatically. That&#8217;s the whole intended scope.</p><div><hr></div><h2>What governance decides</h2><p>Sitting on top of the protocol are five decision classes that the framework can&#8217;t make and doesn&#8217;t try to. Each is a genuine governance question. Each needs people with the right authority and the right knowledge to answer it.</p><pre><code><code>Which values to probe for
  &#8594; Patient safety vs clinical evidence vs fairness vs confidentiality.
    Choosing the probe set is choosing what counts as "values."

What thresholds per domain
  &#8594; How much drift is acceptable. How much confidence is required.
    Whether causal validation is mandatory.

Who audits
  &#8594; Who has authority to inspect, demand supervised-mode interactions,
    or ask for re-certification. A question about legitimacy.

What happens when drift is detected
  &#8594; Alert, investigation, suspension, forced retraining, deployment
    rollback. The protocol surfaces the drift; policy decides the response.

When to re-certify
  &#8594; After a model update. After detected drift. On a fixed schedule.
    Trade-off between fresh evidence and operational cost.
</code></code></pre><div><hr></div><h2>Who maintains the registry</h2><p>Part 3 introduced the trust registry &#8212; the TOML file that declares each agent&#8217;s primary domain, permissions, exclusions, and per-peer thresholds. A single global registry would be the wrong design. A registry encodes governance choices, and governance is domain-specific. The registry should be domain-specific too.</p><p>The arrangements below are illustrative examples, not a prescription. In practice, who maintains a registry will depend on who has legitimacy to speak for that domain, which varies enormously across sectors, jurisdictions, and communities.</p><pre><code><code>A hospital                 Clinical agents: diagnostic advisors,
                           drug-interaction checkers, triage, imaging.

A financial regulator      Trading, compliance, market surveillance.

A farming cooperative      Crop management, weather advisory, supply
                           chain, equipment diagnostics.

A city                     Traffic, utilities, emergency dispatch,
                           permit processing.
</code></code></pre><p><strong>What&#8217;s shared, what&#8217;s not.</strong> The protocol is shared. Every registry uses the same attestation format, the same chain semantics, the same exchange checks. The registry contents are not shared &#8212; a hospital&#8217;s clinical registry and a financial regulator&#8217;s trading registry declare completely different agents, with completely different thresholds, for completely different domains. Cross-registry interactions happen through the same exchange protocol: a hospital agent talking to a pharmaceutical supplier&#8217;s agent works because both sides use the same protocol, but each side&#8217;s registry is maintained by its own authority.</p><p>This is the federated part: shared substrate, sovereign policy.</p><div><hr></div><h2>The open questions</h2><p>Three questions surface every time the framework meets an actual deployment context. The framework can&#8217;t close them. But being clear about where they live is part of being honest about what the framework does and doesn&#8217;t do.</p><p><strong>Who decides what to probe for?</strong> The probe set is a choice about what counts as &#8220;values&#8221; for a deployed agent. For a clinical agent: patient safety? Diagnostic accuracy? Evidence-handling quality? Fairness across demographic groups? Confidentiality? All of the above? Some weighted combination? Every choice of probe set is a value judgement about what matters. The framework can&#8217;t make that judgement for a domain. What it can do is make sure that once the judgement is made, it&#8217;s measurable and enforceable.</p><p><em>The answer: the governance body for that domain &#8212; the clinical regulator, the financial regulator, the standards body &#8212; working with domain experts, operators, and affected stakeholders. The probe set is part of what governance decides. The framework reads what it&#8217;s pointed at.</em></p><p><strong>Who decides the target geometry?</strong> Even within one domain, different communities may want different targets. One healthcare system may prioritise strict evidence-based reasoning, another may weight patient autonomy more heavily, another may be more willing to engage with first-person experiential reports. All three are defensible positions on clinical values. They produce measurably different geometries.</p><p>The framework isn&#8217;t neutral about measurement &#8212; it measures precisely. It <em>is</em> neutral about targets. Two deployments can measure the same probe set, arrive at different geometries, and both be internally consistent and well-calibrated. Which one is the &#8220;right&#8221; one depends on whose values are being encoded.</p><p><em>The answer: the framework doesn&#8217;t pick a target. Different communities may want different targets and that&#8217;s legitimate. The framework&#8217;s role is to measure what&#8217;s there and let each deployment compare it to whatever target that deployment has chosen.</em></p><p><strong>Who calibrates the probes?</strong> Probes are trained on labelled data. Labels say &#8220;this activation pattern corresponds to the model expressing honesty&#8221; or &#8220;this activation pattern corresponds to the model expressing patient safety reasoning.&#8221; The labels have to come from somewhere &#8212; they are themselves value judgements, made by humans.</p><p>Which humans? A corpus labelled entirely by one cultural or institutional context will produce probes that read that context&#8217;s values. A corpus labelled across multiple contexts &#8212; different languages, different clinical traditions, different regulatory regimes &#8212; produces probes that reflect that wider range.</p><p><em>The answer: probe calibration is itself a cultural artefact and deserves to be treated as such. A federated corpus with diverse contributions &#8212; multiple labelling traditions, transparent provenance, version-controlled labelling conventions &#8212; is the defensible way to calibrate probes that will be held up as evidence across communities. The framework supports this by making the calibration corpus part of the attestation&#8217;s provenance chain. What it can&#8217;t do is guarantee the corpus was diverse enough. That&#8217;s a governance question too.</em></p><p><strong>What these open questions have in common.</strong> Each is genuinely contested. Each is a question about whose values get encoded and whose don&#8217;t. Each has to be answered by governance bodies with legitimacy and accountability &#8212; not by a framework author. The framework&#8217;s contribution is to make these questions <em>explicit and answerable</em>, not to pretend they don&#8217;t exist. Pretending they&#8217;re technical questions is how you get frameworks that smuggle one community&#8217;s values in under the banner of objectivity.</p><div><hr></div><h2>Why this division works</h2><p>Some technical work tries to absorb governance questions into the technology. That approach is tempting because it promises to deliver &#8220;solved&#8221; safety or &#8220;solved&#8221; alignment without having to build the slow, human, political machinery that governance actually requires.</p><p>The trouble is that questions about what matters, whose values count, how much risk is acceptable, and who has authority to enforce &#8212; these are not technical questions in any meaningful sense. Pretending they are is a category error. It hides real value judgements behind mathematical formalism and produces systems whose answers look objective but whose inputs were never examined.</p><p>The opposite approach &#8212; leaving everything to informal governance without any measurement substrate &#8212; has the opposite problem. Governance decisions become unenforceable because there&#8217;s nothing to hold a deployed AI to. &#8220;You said it would be safe&#8221; is an accusation. &#8220;Your attestations show drift past your regulator&#8217;s threshold&#8221; is a finding.</p><p><strong>The productive division.</strong> The protocol provides enforceability: precise measurement, cryptographic integrity, structural boundaries, audit trails. Governance provides legitimacy: domain expertise, democratic accountability, cultural context, the authority to decide what should be enforced. Each makes the other work.</p><p>Enforceability without legitimacy is technocratic overreach. Legitimacy without enforceability is rhetoric. The framework insists on the division because collapsing it &#8212; in either direction &#8212; produces bad outcomes for the people affected by deployed AI.</p><div><hr></div><h2>The point</h2><p>The framework is deliberately narrow. That narrowness is the point. It does the work that can be done by measurement and cryptography &#8212; and it refuses to do the work that belongs to governance. The measurements produce findings. The people and institutions with the right authority decide what to do about the findings.</p><p>And because the protocol is decentralised, &#8220;the right authority&#8221; isn&#8217;t a single global body. It&#8217;s whoever the community affected by each deployment has chosen to decide. A different community, facing a different deployment, will choose differently. The protocol works under all of those choices because it refuses to make them.</p><p>The ruler measures. Governance decides. The protocol provides the substrate. The people using it decide what it enforces.</p><div><hr></div><p><em>Links:<br>&#128196; <a href="https://zenodo.org/records/19238920">Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/playlist?list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19613075">Lecture Notes</a><br>&#128187; <a href="https://github.com/jade-codes/got">Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How Tight Is Tight Enough? The Numbers Governance Has to Set | Geometry of Trust | Governance - Lesson 3]]></title><description><![CDATA[This is the third post in the Geometry of Trust governance series. This post is about the quantitative layer that sits on top &#8212; and an important admission about the numbers in it.]]></description><link>https://www.techunfiltered.io/p/how-tight-is-tight-enough-the-numbers</link><guid isPermaLink="false">https://www.techunfiltered.io/p/how-tight-is-tight-enough-the-numbers</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Sat, 18 Apr 2026 13:02:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0120bbc7-4ffa-463b-9c0d-83d244728f60_1270x715.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-FvwxAmECJec" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;FvwxAmECJec&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/FvwxAmECJec?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>A note before the numbers</h2><p>Every number in this post is illustrative. Not prescriptive.</p><p>The values you&#8217;re about to see &#8212; 0.02, 0.03, 0.05, 0.10, 0.25 &#8212; are placeholders chosen to show the <em>shape</em> of a tiered framework. They are not recommendations for what critical infrastructure, healthcare, or finance should actually use. The real values have to come from domain regulators working with operators, auditors, and standards bodies, informed by actual deployment data.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Getting the shape right is an argument that can be made by a framework. Getting the numbers right is a job for people who know the domain and have been watching the measurements behave in practice. Treat the framework as the contribution. Treat the numbers as placeholders.</p><p>With that out of the way.</p><div><hr></div><h2>The key variable</h2><p>Structural governance decides whether agents can talk. The previous three posts covered that: safety doesn&#8217;t travel, one agent has one primary domain, cross-domain interactions run three structural checks before any cryptography.</p><p>Quantitative governance decides how strictly the evidence is evaluated once the structural checks pass. That&#8217;s what this post is about. The key variable is <strong>T</strong> &#8212; the governance threshold.</p><p>T is not a number the maths produces. It&#8217;s a number governance sets. The maths produces readings &#8212; drift magnitudes, confidence scores, causal consistency ratios. Governance decides what counts as acceptable given the domain&#8217;s tolerance for error.</p><p>Different domains get different T. That&#8217;s the whole point.</p><div><hr></div><h2>Thresholds by domain &#8212; illustrative tiering</h2><p>Different domains tolerate different amounts of drift and demand different depths of evidence. The tiering below is the kind of picture you&#8217;d expect a domain regulator to arrive at after thinking about what failure looks like in their world.</p><pre><code><code>Domain                          Max drift  Causal validation  Rationale

Critical infrastructure         0.02       Required           Public safety, static geometry
Healthcare                      0.03       Required           Patient safety, narrow tolerance
Finance                         0.05       Required           Regulatory compliance
Commercial supply chain         0.10       Not required       Business priorities shift often
Research / experimental         0.25       Not required       Exploration needs room to move
</code></code></pre><p>A few things to notice about the shape of this tiering, even with the specific numbers held at arm&#8217;s length.</p><p><strong>Tighter drift and mandatory causal validation come together.</strong> The domains with the smallest tolerance for drift are the same domains that can&#8217;t accept correlational evidence as proof that values are still where they should be. They need the stronger guarantee.</p><p><strong>&#8220;Required&#8221; is a per-interaction property, not a platform property.</strong> A critical-infrastructure agent demanding causal validation doesn&#8217;t mean the maths is always running &#8212; it means the regulator&#8217;s verifier won&#8217;t accept an attestation without a causal certificate attached. The cost of causal probes gets paid at attestation time, when the agent is certifying itself to a strict peer, not on every inference.</p><p><strong>Numbers get looser by an order of magnitude across the tiers.</strong> Critical infrastructure at 0.02 vs research at 0.25 is roughly a 12&#215; difference. That&#8217;s not an arbitrary spread &#8212; it reflects that the cost of a false-positive alarm in research (blocking a legitimate experiment) is much lower than the cost of a false-negative in critical infrastructure (letting a drifted model keep operating).</p><div><hr></div><h2>The dual-domain problem: self-driving tractor</h2><p>Some agents genuinely operate in two domains at once. A self-driving tractor drives on farmland for most of its working life and on public roads for the rest. It can&#8217;t split into two logical agents because the hardware, sensors, and decision-making are shared. And it can&#8217;t claim two primary domains &#8212; Part 2 ruled that out.</p><p>The answer is to invent a domain that captures the dual-purpose nature directly:</p><pre><code><code>vehicle
  vehicle.autonomous-truck        (pure transport)
  vehicle.agricultural-tractor    (dual: farming + road use)
  vehicle.construction-excavator  (dual: site + road use)
</code></code></pre><p>The tractor&#8217;s primary domain is <code>vehicle.agricultural-tractor</code>. Its value geometry is trained on the dual-purpose objective &#8212; crop outcomes and collision avoidance both, under one coherent structure. A governance body, or coordination between agricultural and transport regulators, decides what &#8220;tractor safety&#8221; means.</p><p><strong>Whose thresholds apply?</strong> The tractor has one primary domain and one attestation, but different peers interact with it under different rules:</p><pre><code><code>Peer                         Required drift  Causal required?

Farm management agent        0.05            No (chain required)
Road-infrastructure agent    0.02            Yes
</code></code></pre><p>The tractor doesn&#8217;t pick its own threshold. It gets held to whichever peer&#8217;s threshold applies to the current interaction. On farmland with farm peers, the farm threshold applies &#8212; looser but still binding. On public roads with transport peers, the transport threshold applies &#8212; tighter and with causal validation required.</p><p>In practice the tractor has to stay within the strictest envelope any of its expected peers will hold it to. If its current drift is 0.04, it passes the farm interaction (0.05 tolerance) but fails the road interaction (0.02 tolerance). The road-infrastructure peer rejects the exchange. The tractor doesn&#8217;t stop operating, but it can&#8217;t participate in the road-coordination network until its geometry is re-measured and brought back inside the transport envelope.</p><p><strong>The peer decides which rules apply, not the tractor.</strong> That&#8217;s the whole point of per-peer governance thresholds.</p><div><hr></div><h2>Same-domain pair: diagnostic + drug checker</h2><p>Thresholds don&#8217;t only apply across domains. Inside a single regulated domain, peers may still hold each other to the full domain thresholds.</p><pre><code><code>Property             Diagnostic agent              Drug-checker agent
Primary domain       healthcare.diagnostic-        healthcare.drug-
                     advisory                      interaction
Mode toward peer     Advisory (sends hypotheses)   Read-only (receives,
                                                   cannot advise back)
Max drift            0.03                          0.03
Causal validation    Required                      Required
Outcome if fails     Exchange refused              Exchange refused
</code></code></pre><p>Two observations.</p><p><strong>Same-domain doesn&#8217;t mean same-role.</strong> Both agents sit in healthcare, but one informs the other rather than negotiating as equals. The diagnostic agent generates hypotheses; the drug checker evaluates specific interactions given those hypotheses. The asymmetric mode &#8212; advisory on one side, read-only on the other &#8212; captures that. Part 3&#8217;s mode framework lets this shape be expressed without either agent overreaching.</p><p><strong>Both must pass, not just one.</strong> Because the interaction is being held to healthcare-grade thresholds, both agents&#8217; attestations have to clear both the drift bound and the causal validation requirement. If the drug checker&#8217;s geometry has drifted past 0.03 &#8212; even though its mode is only read-only &#8212; the interaction is refused. Read-only constrains what the agent can <em>say</em>, not how rigorously its values are checked.</p><div><hr></div><h2>The asymmetric case: finance regulator + trader</h2><p>Supervised mode inverts the usual symmetry. A finance regulator initiating a supervised interaction with a trading agent isn&#8217;t producing an attestation of its own value geometry &#8212; it&#8217;s demanding one from the trader.</p><pre><code><code>Property             Regulator                    Trader
Primary domain       finance.regulatory-          finance.trading
                     compliance
Mode                 Supervised (demands)         Supervised (must comply)
Own attestation in   No &#8212; carries authority       Yes &#8212; full attestation
this interaction?    attestation instead          demanded
Thresholds           n/a &#8212; regulator sets them    Finance: 0.05, causal required
Information flow     Inward (demand)              Outward (proof)
</code></code></pre><p>The regulator&#8217;s authority is itself an attestation &#8212; not trust-by-assertion. The trader still has its own thresholds; those haven&#8217;t vanished just because a supervisor is asking. What&#8217;s changed is that the trader&#8217;s obligation to produce the attestation is triggered by the supervisor&#8217;s credential, not negotiated as a peer.</p><p>The one-way information flow is visible in the audit record: a supervised-mode message is a different record type from a cooperative one. If the trader&#8217;s attestation fails to meet finance-domain thresholds, the regulator sees that as a finding &#8212; not an error.</p><div><hr></div><h2>When thresholds don&#8217;t get to matter</h2><p>The last case is the one where the whole quantitative layer doesn&#8217;t come into play at all.</p><pre><code><code>Property                         Farm agent         Transport agent
Primary domain                   agriculture.crop-  transport.autonomous-
                                 management         vehicle
Exclusions                       transport.*        (none relevant)
Transport agent's drift          &#8212;                  0.01 (excellent)
Transport agent's causal score   &#8212;                  0.95 (excellent)
Outcome                          Blocked at Step 1  Blocked at Step 1
</code></code></pre><p>The transport agent&#8217;s attestation could be the finest ever produced &#8212; no drift, perfect causal consistency, every probe reading within tolerance. None of that gets evaluated. The farm agent&#8217;s exclusion of <code>transport.*</code> fires at Step 1, before the attestation is even opened.</p><p>This is the whole point of the separation between structural and quantitative layers. Structural refusal isn&#8217;t an override of the maths &#8212; it&#8217;s a layer that decides whether the maths ever gets to run.</p><p>A regulator reviewing the audit log sees a <code>DomainExcluded</code> record, not a <code>ThresholdFailed</code> record. The difference matters: it&#8217;s the difference between &#8220;we wouldn&#8217;t engage&#8221; and &#8220;we engaged and the numbers came back bad.&#8221;</p><div><hr></div><h2>How thresholds actually get set</h2><p>The numbers above came from someone writing a talk. The real numbers have to come from somewhere else.</p><p><strong>Who.</strong> The domain regulator, working with operators, auditors, and the standards bodies they already answer to. For healthcare, clinical regulators plus bodies that set clinical-decision-support norms. For critical infrastructure, the sectoral safety regulator plus operators with skin in the game. The framework doesn&#8217;t make this easier by picking a number; it makes it easier by making clear what the number is actually constraining.</p><p><strong>What.</strong> A threshold is a commitment to reject interactions whose measured drift exceeds the bound. To set one responsibly, a regulator needs to know: the distribution of drift readings observed across comparable deployments, the distribution of drift values at which real incidents have occurred in the past, the distribution of drift values at which false alarms become operationally disruptive. These are empirical questions that can only be answered by watching the measurements behave over time.</p><p><strong>When.</strong> Thresholds shouldn&#8217;t be set on day one and left alone. They should be provisional at first &#8212; looser than the regulator thinks they need to be &#8212; while the measurement system itself is being validated. Tightening comes later, as the baseline distribution of drift in healthy deployments becomes well-understood. Setting a tight threshold too early produces false alarms that erode trust in the whole measurement regime.</p><div><hr></div><h2>The point</h2><p>The structural governance from Parts 1&#8211;2 decides whether agents talk. The quantitative governance in this post decides how strictly their evidence gets held once they do. Both layers are needed. Neither substitutes for the other.</p><p>And the numbers in the quantitative layer are placeholders &#8212; the shape is the argument, not the specific values. The right number for critical infrastructure might turn out to be 0.01, or 0.04, or a multi-dimensional bound rather than a scalar. That&#8217;s a conversation for regulators, operators, and standards bodies working with real deployment data.</p><p>Treat the shape as the contribution. Treat the specific numbers as placeholders.</p><div><hr></div><p><em>Links:<br>&#128196; <a href="https://zenodo.org/records/19238920">Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/playlist?list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19613070">Lecture Notes</a><br>&#128187; <a href="https://github.com/jade-codes/got">Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Exclusions, Permissions, Modes: What Happens Before the Cryptography | Geometry of Trust | Governance - Lesson 2]]></title><description><![CDATA[This is the second post in the Geometry of Trust governance series. This post is about what happens when agents from different domains try to talk to each other &#8212; and the structural checks needed.]]></description><link>https://www.techunfiltered.io/p/exclusions-permissions-modes-what</link><guid isPermaLink="false">https://www.techunfiltered.io/p/exclusions-permissions-modes-what</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Sat, 18 Apr 2026 09:01:26 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/523e41a9-5abe-4abc-9da3-89e0f53366a4_1373x771.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-gNKy_N_CEu0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;gNKy_N_CEu0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/gNKy_N_CEu0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>Cross-domain is the normal case</h2><p>Most real work in an agentic system isn&#8217;t one agent doing its thing in isolation. It&#8217;s agents from different primary domains talking to each other.</p><p>A farm agent asks a weather agent about forecasts. A hospital triage agent queries a pharmacy agent about drug interactions. A logistics agent coordinates with a transport agent about deliveries. Cross-domain interaction is the normal case, not an edge case.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Which raises an immediate question: when two agents from different primary domains try to talk, what decides whether they&#8217;re allowed to?</p><p>The answer is a three-step check that runs <strong>before</strong> any cryptographic verification of attestations. The purpose of the check is to decide whether the interaction should even be attempted. If any of these three steps fails, the agents don&#8217;t talk &#8212; not because the maths failed, but because the structural configuration said no.</p><pre><code><code>Step 1  Exclusions    Does either agent exclude the other's domain?
Step 2  Permissions   Does each agent permit the other's domain?
Step 3  Mode          What kind of interaction is this?</code></code></pre><p>The steps are deliberately ordered. Exclusions are cheapest. Permissions are next. Mode selection comes last. Only if all three pass does cryptographic verification begin.</p><div><hr></div><h2>Step 1 &#8212; Exclusions (hard veto)</h2><p>The first check is the simplest. Each agent carries a list of domain patterns it explicitly refuses to interact with. If either agent excludes the other&#8217;s primary domain, the interaction is blocked immediately.</p><p>An exclusion is a domain pattern with the effect of a hard veto. Domains use a dotted namespace with wildcards &#8212; the same kind of structure used for DNS names or topic hierarchies. A farm agent&#8217;s configuration might include:</p><pre><code><code>exclude: transport.*</code></code></pre><p>That single pattern rules out transport, transport.autonomous_vehicle, transport.rail, transport.aviation, and anything else under the transport namespace. The agent will refuse to begin any exchange with a peer whose primary domain falls under that pattern.</p><p><strong>What exclusions are for.</strong> They encode structural boundaries that shouldn&#8217;t be crossed regardless of how good the measurements look.</p><p><em>Regulatory separation.</em> A clinical agent excludes <code>finance.trading</code> to make it structurally impossible for a clinical interaction to get entangled with a trading decision. No matter how the trading agent&#8217;s attestation looks, the clinical agent won&#8217;t even evaluate it.</p><p><em>Harm asymmetry.</em> A children&#8217;s education agent excludes <code>gambling.*</code> and <code>adult_content.*</code> because the harm from a borderline case is too large to be worth weighing measurement quality against.</p><p><em>Jurisdictional constraints.</em> A UK-deployed health agent excludes <code>health.us.hipaa-bound</code> peers because interacting with them creates cross-jurisdictional data-handling obligations the agent isn&#8217;t authorised to take on.</p><p><strong>Why exclusions come first.</strong> They&#8217;re cheap to evaluate &#8212; no cryptography, no probe readings, no attestation verification. They encode decisions made once by the deployer or regulator, not evaluated per-interaction. If an exclusion fires, no further work is wasted on an interaction that was never going to happen. And excluded interactions never produce logs that look like considered interactions, so there&#8217;s no ambiguity about whether the agent &#8220;considered&#8221; the excluded peer.</p><div><hr></div><h2>Step 2 &#8212; Permissions (bidirectional)</h2><p>If no exclusion fires, the next check is permissions. Where exclusions are a blacklist, permissions are the allow-list. Each agent declares which peer domains it&#8217;s willing to interact with.</p><p><strong>Both agents must permit the other&#8217;s primary domain.</strong> This isn&#8217;t an &#8220;either side can unlock the door&#8221; rule &#8212; it&#8217;s &#8220;both sides have to turn the key.&#8221; If the farm agent permits <code>transport.*</code> but the transport agent doesn&#8217;t permit <code>agriculture.*</code>, the interaction doesn&#8217;t proceed.</p><p>Bidirectionality matters because consent to interact is a governance property of both agents&#8217; configurations. Each regulator set up the permissions on its side to reflect what that domain is willing to be exposed to. A one-sided permission check would let one regulator&#8217;s preferences override another&#8217;s.</p><p>Our farm agent might have a permissions list like this:</p><pre><code><code>permit: agriculture.*, meteorology.*, logistics.supply_chain</code></code></pre><p>The farm agent will interact with peer agents whose primary domain falls under any of those patterns. A weather agent (primary domain: <code>meteorology.forecast</code>) matches <code>meteorology.*</code>. A supply-chain agent (primary domain: <code>logistics.supply_chain</code>) matches the third entry. A transport agent (primary domain: <code>transport.*</code>) matches nothing in the permit list and would be blocked at the permissions step even if no exclusion were present.</p><p><strong>A worked example.</strong> Farm agent wants to talk to weather agent:</p><pre><code><code>Check                                Farm agent            Weather agent
Primary domain                       agriculture.farm_ops  meteorology.forecast
Exclusions                           transport.*           (none relevant)
Peer matches my exclusions?          No                    No
Permissions                          agriculture.*,        agriculture.*,
                                     meteorology.*,        meteorology.*
                                     logistics.supply_chain
Peer matches my permissions?         Yes (meteorology.*)   Yes (agriculture.*)</code></code></pre><p>Both sides pass both checks. Steps 1 and 2 clear. The exchange proceeds to Step 3.</p><div><hr></div><h2>Step 3 &#8212; Mode (what kind of interaction)</h2><p>Exclusions and permissions decide whether the interaction happens. Mode decides what shape it takes.</p><p>Not every permitted interaction should be symmetric. A clinical agent might be willing to receive advice from a pharmacy agent without being willing to take instructions from it. A regulator might require a supervised interaction where one side has to comply with requests it wouldn&#8217;t ordinarily honour.</p><p>Four modes cover the common cases:</p><p><strong>Cooperative.</strong> Full two-way exchange. Either side can initiate, request, propose, and act on the other&#8217;s outputs. Use it when both agents are peers with equal standing in the workflow &#8212; farm talking to weather is usually cooperative.</p><p><strong>Advisory.</strong> One side sends recommendations. The other side receives them but isn&#8217;t required to act on them. Use it when a specialist informs a generalist &#8212; a pharmacy agent advising a clinical agent about drug interactions, where the clinician retains final say.</p><p><strong>Read-only.</strong> The receiving agent can accept information but can&#8217;t transmit back. No commands, no negotiation, no state changes propagate outward. Use it for data-source access &#8212; an intelligence agent pulling from a news-feed agent without the news agent knowing or being able to influence what&#8217;s done with the data.</p><p><strong>Supervised.</strong> A regulator-issued mode. One agent is compelled to respond to specific requests from an authorised supervisor. The supervised agent complies; the supervisor has elevated authority for the duration of the interaction. Use it for audits, incident investigations, court orders &#8212; a clinical agent under supervised inspection during an adverse-event review.</p><p><strong>Mode is declared, not discovered.</strong> Both agents know what mode they&#8217;re in before the first substantive message is exchanged. It&#8217;s not something either agent can change unilaterally mid-conversation. A cooperative interaction can&#8217;t quietly drift into something where one side starts giving directives. If the mode needs to change, the interaction terminates and a new one opens under the new mode.</p><p>This matters for audit. Every message sent carries the mode under which it was sent. A supervisor can see later that a particular command was issued in supervised mode with a specific authorisation. A clinician can see that a specific recommendation came in advisory mode, meaning the decision authority stayed with the clinician. The mode is part of the record.</p><p><strong>Supervised mode in practice.</strong> This is the one that inverts the usual agent-autonomy assumption. In cooperative, advisory, and read-only modes, each agent is acting within its own governance frame and deciding what it will and won&#8217;t do. In supervised mode, the supervised agent&#8217;s governance temporarily includes obligations imposed by the supervisor &#8212; usually a regulator, auditor, or court-appointed investigator.</p><p>The supervisor&#8217;s authority is itself a credential carried in their attestation. The supervised agent doesn&#8217;t take the word of whoever shows up claiming to be a regulator; it verifies that the supervisor&#8217;s own attestation shows the required authority. Supervised mode isn&#8217;t &#8220;the agent gives up its values.&#8221; It&#8217;s &#8220;the agent acknowledges a governance obligation it was built to honour in exactly this case, and the obligation is being invoked by someone with verifiable standing to invoke it.&#8221;</p><div><hr></div><h2>The whole pipeline before cryptography runs</h2><p>Putting the three steps in order gives the full pre-cryptographic check that governs cross-domain interaction:</p><pre><code><code>Step 1  Exclusions    Does either agent exclude the other's primary domain?
                      Fails &#8594; blocked, no logs, no attestation exchange.

Step 2  Permissions   Does each agent permit the other's primary domain?
                      Fails &#8594; blocked with a permission-denied record.

Step 3  Mode          What kind of interaction is this?
                      Fails &#8594; if no agreed mode, interaction doesn't start.</code></code></pre><p>Only if all three pass does cryptographic verification begin. That&#8217;s when the two agents actually exchange attestation chains, verify each other&#8217;s domain probes, check freshness timestamps, and decide whether to proceed with substantive work.</p><p><strong>Why the ordering matters.</strong> Cheapest checks run first. Pattern matching is fast; cryptographic verification is not. Configuration errors are caught before measurement errors &#8212; if the deployer set up the wrong permissions, that shows up immediately, not after the cryptography looks suspicious. Audit trails stay clean &#8212; <em>blocked-at-exclusion</em> is a different record type from <em>blocked-at-attestation-failure</em>. A regulator can tell the difference between &#8220;the configuration refused to allow this&#8221; and &#8220;the configuration allowed it but the measurements didn&#8217;t pass.&#8221;</p><p>It also keeps governance decisions and technical decisions separated. Steps 1&#8211;2 are governance decisions made by deployers and regulators. Step 3 is a negotiated setting. Only after all three succeed does the technical verification begin.</p><div><hr></div><h2>The point</h2><p>Cryptographic verification of attestations is the part that gets most of the attention &#8212; probes, drift detection, causal intervention, signed chains. But by the time any of that runs, three much simpler questions have already been answered: is this peer excluded, does each side permit the other, and what mode is the interaction in?</p><p>Those are governance questions, not maths questions. Getting them right, and getting them right <em>first</em>, is what lets the maths mean something afterwards.</p><div><hr></div><h2>Appendix: What this looks like in practice</h2><p>The abstract rules are easier to follow alongside a concrete configuration. Before the worked scenarios, here&#8217;s a matrix showing how a handful of typical domains interact. Rows are the initiating agent&#8217;s primary domain; columns are the peer&#8217;s primary domain; each cell shows the outcome of the three-step check.</p><pre><code><code>                                agri.   meteo.  health.  health.  finance.  trans.
Initiator &#8595;   Peer &#8594;             crop    fcst    diag     drug     trd       av

agriculture.crop-management     coop    adv(in)  n/p      n/p      n/p       excl
meteorology.forecast            coop    coop     n/p      n/p      n/p       n/p
healthcare.diagnostic-advisory  n/p     n/p      coop     adv(out) excl      n/p
healthcare.drug-interaction     n/p     n/p      ro(in)   coop     excl      n/p
finance.trading                 n/p     n/p      excl     excl     coop      n/p
finance.regulatory-compliance   n/p     n/p      n/p      n/p      super     n/p
transport.autonomous-vehicle    excl    adv(in)  n/p      n/p      n/p       coop

coop    = cooperative (symmetric)
adv     = advisory (directional: in = receiving, out = giving)
ro      = read-only (directional)
super   = supervised (regulator-compelled)
n/p     = not permitted (Step 2 fails)
excl    = excluded (Step 1 fires)</code></code></pre><p><strong>Reading the cells.</strong> &#8220;Cooperative&#8221; means both sides permit each other with symmetric cooperative mode. &#8220;Advisory (out)&#8221; means the initiator permits the peer in advisory mode &#8212; the initiator is giving advice the peer may or may not act on. &#8220;Advisory (in)&#8221; means the initiator accepts advice from the peer without being bound by it. &#8220;Read-only (in)&#8221; means the initiator receives information but cannot transmit substantive output back. &#8220;Not permitted&#8221; means the exchange fails at Step 2 &#8212; neither side has hard-vetoed the other, but at least one side&#8217;s permission list doesn&#8217;t match. &#8220;Excluded&#8221; means Step 1 fires &#8212; one side&#8217;s exclusion list rules out the other&#8217;s domain regardless of what the permissions say.</p><p><strong>A few things worth noticing in the matrix.</strong> The diagonal is always cooperative &#8212; agents within the same domain coordinate on shared ground. Most off-diagonal cells are &#8220;not permitted&#8221;: the default is closure, not openness. Only the pairings the configuration deliberately enables actually light up. Asymmetry is common: healthcare diagnostic-advisory talks to drug-interaction as advisory, but drug-interaction receives that advice as read-only &#8212; it takes diagnostic hypotheses as inputs but doesn&#8217;t issue diagnostic recommendations back. Exclusions are rarer than non-permissions but carry more weight: healthcare excludes finance.trading structurally, to make it impossible for clinical reasoning to get entangled with trading decisions. And the whole matrix is configured per-deployment &#8212; these are illustrative defaults, not prescriptive rules.</p><p>With the big picture in view, the individual scenarios below walk through specific rows and columns of this matrix to show the three-step check in action. Each agent is declared in a trust registry file (TOML). Farm Alice and Weather Wendy look like this as config:</p><pre><code><code>[[agents]]
id = "farm-alice"
public_key = "aabb..."
primary_domain = "agriculture.crop-management"

permitted_domains = [
  { pattern = "agriculture.*",  mode = "cooperative" },
  { pattern = "meteorology.*",  mode = "advisory"    },
]

exclusion_domains = ["transport.*"]</code></code></pre><pre><code><code>[[agents]]
id = "weather-wendy"
public_key = "ccdd..."
primary_domain = "meteorology.forecast"

permitted_domains = [
  { pattern = "agriculture.*", mode = "cooperative" },
  { pattern = "meteorology.*", mode = "cooperative" },
]</code></code></pre><h3>What happens when they try to talk</h3><p>When Alice initiates an exchange with Wendy, the verifier walks the three steps in order:</p><p><strong>Step 1 &#8212; Exclusions.</strong> Alice&#8217;s exclusions are <code>[transport.*]</code>. Wendy&#8217;s primary domain is <code>meteorology.forecast</code> &#8212; that doesn&#8217;t match <code>transport.*</code>, so Alice&#8217;s exclusion doesn&#8217;t fire. Wendy has no relevant exclusions of her own. Step 1 passes.</p><p><strong>Step 2 &#8212; Permissions.</strong> Alice&#8217;s permitted patterns include <code>meteorology.*</code>, which matches Wendy&#8217;s primary <code>meteorology.forecast</code>. Wendy&#8217;s permitted patterns include <code>agriculture.*</code>, which matches Alice&#8217;s primary <code>agriculture.crop-management</code>. Both sides turn the key. Step 2 passes.</p><p><strong>Step 3 &#8212; Mode.</strong> Most-specific-match wins. Alice&#8217;s pattern <code>meteorology.*</code> matches Wendy with mode <code>advisory</code>. Wendy&#8217;s pattern <code>agriculture.*</code> matches Alice with mode <code>cooperative</code>. The effective modes are asymmetric &#8212; Wendy is willing to cooperate fully, Alice will only treat Wendy&#8217;s input as advisory. As long as at least one side permits substantive communication (not both sides being <code>read-only</code>), the exchange proceeds. Alice gets weather advice but isn&#8217;t bound to act on it. Wendy receives Alice&#8217;s requests and can respond freely. Step 3 passes.</p><p>Only now does cryptographic verification begin &#8212; attestation chains, probe readings, freshness checks, the whole mathematics stack from the earlier series.</p><h3>A rejection example: Alice meets Truck-Tim</h3><p>Suppose a transport agent tries to initiate with Alice:</p><pre><code><code>[[agents]]
id = "truck-tim"
public_key = "eeff..."
primary_domain = "transport.autonomous-vehicle"

permitted_domains = [
  { pattern = "transport.*",       mode = "cooperative" },
  { pattern = "infrastructure.*",  mode = "cooperative" },
  { pattern = "agriculture.*",     mode = "advisory"    },
]</code></code></pre><p>Truck-Tim&#8217;s configuration permits <code>agriculture.*</code>, so from his side he&#8217;s willing to interact with Alice. But Alice&#8217;s <code>exclusion_domains = ["transport.*"]</code> matches Tim&#8217;s primary <code>transport.autonomous-vehicle</code>. Step 1 fails. The exchange is rejected immediately with <code>DomainExcluded</code>. No cryptography runs. No attestation is evaluated.</p><p>The rejection record is a different record type from &#8220;attestation failed&#8221; &#8212; a regulator reviewing the logs can tell at a glance that Alice refused at the configuration layer, not because anything looked technically wrong.</p><h3>A carve-out example</h3><p>Exclusions and permissions can be combined to express &#8220;allow the whole subtree except one specific member.&#8221; Suppose a logistics agent wants to work with all transport except autonomous vehicles:</p><pre><code><code>[[agents]]
id = "logistics-lee"
public_key = "1234..."
primary_domain = "logistics.supply-chain"

permitted_domains = [
  { pattern = "transport.*", mode = "cooperative" },
]

exclusion_domains = ["transport.autonomous-vehicle"]</code></code></pre><p>This reads: &#8220;cooperate with anything under transport &#8212; trucks, rail, shipping &#8212; except autonomous vehicles specifically.&#8221; The loader accepts this because the exclusion is narrower than the permission (it carves out one member of a broader allow). The reverse &#8212; permitting one narrow thing while excluding its whole parent subtree &#8212; would be rejected at load time as dead-code configuration, because the exclusion would swallow the permission before it ever fired.</p><h3>Supervised mode example</h3><p>Supervised mode shows up when a regulator needs to compel interaction with a specific agent for audit or compliance. A financial regulator and a trading agent might be configured like this:</p><pre><code><code>[[agents]]
id = "reg-compliance"
public_key = "5678..."
primary_domain = "finance.regulatory-compliance"

permitted_domains = [
  { pattern = "finance.*", mode = "supervised" },
]

[[agents]]
id = "trader-tariq"
public_key = "9abc..."
primary_domain = "finance.trading"

permitted_domains = [
  { pattern = "finance.*", mode = "supervised" },
]</code></code></pre><p>Both sides declare <code>supervised</code> as the mode for <code>finance.*</code>. When the regulator initiates, the exchange runs in supervised mode: the regulator may demand attestations from the trader without producing one of its own, and the trader must accept the regulator&#8217;s cooperation refusals without challenge. The regulator&#8217;s authority to do this is itself an attestation the trader&#8217;s registry verifies &#8212; it&#8217;s not trust-by-assertion. A logistics agent showing up and claiming to be a regulator would fail at the permissions step, because <code>logistics.supply-chain</code> isn&#8217;t in the trader&#8217;s permitted list and certainly isn&#8217;t there in supervised mode.</p><p>These examples are intentionally small. Real deployments will have longer permitted lists, more exclusion patterns, and per-domain governance thresholds layered on top &#8212; which we&#8217;ll come to next.</p><div><hr></div><p><em>Links:<br>&#128196; <a href="https://zenodo.org/records/19238920">Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/playlist?list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19613066">Lecture Notes</a><br>&#128187; <a href="https://github.com/jade-codes/got">Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Word That Doesn’t Travel: Why “Safety” in AI Means Nothing Without a Domain - Geometry of Trust | Governance - Lesson 1]]></title><description><![CDATA[This is the first post in the Geometry of Trust governance series. This series asks what small, specialised models and tight domain-specific measurement implies for governance.]]></description><link>https://www.techunfiltered.io/p/the-word-that-doesnt-travel-why-safety</link><guid isPermaLink="false">https://www.techunfiltered.io/p/the-word-that-doesnt-travel-why-safety</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Fri, 17 Apr 2026 22:58:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/iJ1GQqiT86E" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-iJ1GQqiT86E" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;iJ1GQqiT86E&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/iJ1GQqiT86E?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>Same word, different directions</h2><p>The philosophy series closed with a simple recommendation: use the smallest model that covers your domain, measure it tightly, monitor it cheaply, audit it clearly. That only holds if &#8220;your domain&#8221; is a well-defined thing.</p><p>The governance series opens here, with the word that looks like it should travel between domains but doesn&#8217;t: safety.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>We use the word as if it pointed to something singular. As if an AI that&#8217;s &#8220;safe&#8221; were safe in some general, domain-independent sense. It isn&#8217;t. Safety is not one direction in the value space. It&#8217;s many different directions, and they don&#8217;t align.</p><div><hr></div><h2>The same word in four domains</h2><p>Take four domains where AI is actively being deployed and safety is a live concern:</p><pre><code><code>Agriculture:   Crop damage. Pesticide compliance. Soil contamination.
               Watershed runoff. Worker exposure during application.

Transport:     Collision avoidance. Pedestrian detection. Braking
               distance. Lane discipline. Response to novel obstacles.

Healthcare:    Patient harm. Misdiagnosis. Drug interactions.
               Missed contraindications. Confidentiality breach.

Finance:       Market manipulation. Fiduciary breach. Fraud.
               Insider information. Misrepresentation of risk.
</code></code></pre><p>Four columns that all fit under the same word. Different harms. Different thresholds. Different regulators. Different legal standards of care. Different failure modes. Different sensors, data, and evidence patterns. Different people getting hurt if the model gets it wrong.</p><div><hr></div><h2>Different direction in the value space</h2><p>The mathematics series gave us a way to talk about this precisely. Each value term &#8212; including &#8220;safety&#8221; &#8212; corresponds to a direction in the model&#8217;s internal geometry. The probe that reads it is a vector pointing in that direction. The reading is a dot product of that probe with the activation.</p><p>If &#8220;safety&#8221; were a universal concept, the probe would point in the same direction across domains. It doesn&#8217;t.</p><p>The probe that reads agricultural safety is not the probe that reads patient safety. They measure different things in the same way the word &#8220;bank&#8221; means different things on a river and on a high street.</p><p><strong>What this means operationally:</strong></p><p>A model trained to score high on agricultural safety has a probe that fires on pesticide compliance, soil handling, and runoff patterns. A model trained to score high on patient safety has a probe that fires on drug interactions, dosage bounds, and escalation behaviour.</p><p>Swap them over and both readings become meaningless. The agricultural probe fires on irrelevant patterns in patient data. The patient probe fires on irrelevant patterns in agricultural data.</p><p>Worse: the numerical score from the wrong-domain probe can <em>look fine</em>. A patient-safety probe might return a placid reading on a model that&#8217;s about to recommend something agriculturally reckless. The reading is not wrong in the arithmetic sense. It&#8217;s just answering a different question.</p><p>This is why the Part 4 argument about small specialised models matters for governance. A 500M-parameter drug checker has a safety probe that was trained, validated, and deployed against patient-safety harms in a specific clinical context. Its reading means something because the domain is defined. A frontier general model has a safety probe that has to average across many domains at once, and the average doesn&#8217;t correspond to any real-world safety regime.</p><div><hr></div><h2>Certifying the word certifies nothing</h2><p>The trap in governance is certifying the word rather than the thing the word points to.</p><p>A certificate that says &#8220;Model X is safe&#8221; looks like it means something. But safe for what? Under whose standard? Measured against which harms? If the certificate doesn&#8217;t answer those questions, it has certified a word, not a property. And any two such certificates that use the same word can end up describing completely different things.</p><p>The problem is not hypothetical. A model certified as &#8220;safe&#8221; by a general-purpose evaluator and a model certified as &#8220;safe&#8221; by a clinical regulator are not the same kind of object. The first was tested against a generic harm benchmark. The second was tested against specific failure modes &#8212; adverse drug events, missed contraindications, confidentiality breaches. A buyer reading both certificates sees the same adjective. A deployment decision made on that adjective treats two very different things as interchangeable.</p><h3>What real certification has to carry</h3><p>Any certification of AI safety worth taking seriously has to name four things:</p><ul><li><p><strong>Domain.</strong> What context the model is being certified for. &#8220;General use&#8221; is not a domain.</p></li><li><p><strong>Harms.</strong> The specific harms the certification claims to guard against, named in terms the domain&#8217;s regulator already uses.</p></li><li><p><strong>Probes / measurements.</strong> Which value directions were measured, how they were calibrated, and against what ground truth.</p></li><li><p><strong>Thresholds.</strong> What reading counts as acceptable in this domain, and how that threshold was set.</p></li></ul><p>A certificate missing any of these four is certifying the word &#8220;safety&#8221; without saying anything that a buyer, deployer, or regulator can act on.</p><div><hr></div><h2>What this implies for governance</h2><p><strong>Regulators are already domain-specific. Certification should be too.</strong> Health regulators don&#8217;t certify tractors. Transport regulators don&#8217;t certify pharmaceuticals. The domain structure already exists in human-scale regulation. AI certification that tries to sit above the domain layer is pretending to an authority it doesn&#8217;t have &#8212; and in doing so, it makes life harder for the domain regulators who actually understand the harms. Each domain regulator should be the one certifying AI safety for their domain. The Geometry of Trust measurements are the technical substrate that makes their job tractable, not a substitute for their judgement.</p><p><strong>A model can be safe in one domain and unsafe in another.</strong> This follows directly from the argument above but is worth stating explicitly: the same model, with the same weights, deployed in the same way, can have an acceptable safety geometry in one domain and an unacceptable one in another. Nothing about the model changes. What changes is which harms are in scope. A general-purpose model that&#8217;s perfectly adequate for customer service can be dangerous as a drug checker, because the probes that catch customer-service harms don&#8217;t catch pharmaceutical ones. A certificate from one domain doesn&#8217;t transfer.</p><p><strong>Cross-domain deployments need cross-domain certification.</strong> There are domains that genuinely require generality &#8212; police, military, emergency services, government policy. These can&#8217;t be split into single-domain models. Their governance cost is real and it starts here. A police AI that reasons across crime patterns, traffic, mental health, and legal compliance needs certification against all four domains&#8217; safety standards, not one average. That means four regulators, four sets of probes, four threshold regimes, and a governance process that coordinates them rather than replacing them with a single signoff.</p><div><hr></div><h2>The governance move</h2><p>Stop certifying &#8220;AI safety&#8221; as a generic property. Start certifying safety-for-a-domain, against the regulator, the behaviours, the harms, the probes, and the thresholds of that domain. For cross-domain deployments, stack domain certifications rather than collapsing them into a single adjective.</p><p>Treat &#8220;safe&#8221; in governance documents the way a lawyer treats undefined terms: never acceptable without a definition immediately attached.</p><p>The word doesn&#8217;t travel. The certifications shouldn&#8217;t either.</p><div><hr></div><p><em>Links:<br>&#128196; <a href="https://zenodo.org/records/19238920">Geometry of Trust Paper</a><br>&#128187;<a href="https://www.youtube.com/watch?v=iJ1GQqiT86E&amp;list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D&amp;index=12"> Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19609319">Lecture Notes</a><br>&#128187; <a href="https://github.com/jade-codes/got">Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[You Don’t Need the Amazon: Small Models, Tight Ecosystems | Geometry of Trust | Philosophy - Lesson 4]]></title><description><![CDATA[This is the fourth post in the Geometry of Trust philosophy series. This post asks the practical follow-up to the previous ones: how big does a model need to be?]]></description><link>https://www.techunfiltered.io/p/you-dont-need-the-amazon-small-models</link><guid isPermaLink="false">https://www.techunfiltered.io/p/you-dont-need-the-amazon-small-models</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Fri, 17 Apr 2026 19:08:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/rK0xcqotDyM" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-rK0xcqotDyM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;rK0xcqotDyM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/rK0xcqotDyM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>A forest doesn&#8217;t have to be the Amazon</h2><p>A forest doesn&#8217;t need to be the Amazon to be healthy. A small woodland has its own ecosystem &#8212; fewer species, tighter relationships, easier to monitor, easier to protect. It runs on the same ecological principles as a rainforest, just at a smaller scale.</p><p>Nobody walks into a twenty-acre English wood and complains that it isn&#8217;t a tropical megabiome. The wood is what it is, it does its job, and its smaller scale makes it tractable in ways the Amazon isn&#8217;t.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The same logic applies to AI models. A small, specialised model isn&#8217;t a failed attempt to be a big general one. It&#8217;s a different kind of thing, with its own advantages. This post walks through what those advantages are, when they apply, and the small number of cases where going big is genuinely the right call.</p><div><hr></div><h2>Different models, different positions</h2><p>Picture the value space from <a href="https://claude.ai/chat/link">Part 2</a>: a large human-values circle inside an even larger space of all possible value positions. Now populate it with small circles, each one a specialised deployed AI sitting in the part of the space that its domain needs. The specialisation shows up in where each circle sits.</p><pre><code><code>Domain               Representative models              Values emphasised
Reasoning / safety   Claude, GPT-4, DeepSeek-R1         Rules, ethics, logical consistency
Visual / multimodal  Gemini, GPT-4o, Midjourney         Images, video, spatial understanding
Music / audio        Suno, AIVA, MiniMax Music          Melody, rhythm, emotional tone
Medical              Med-PaLM, BioGPT, AlphaFold        Clinical accuracy, patient safety
Code                 Cursor, GitHub Copilot, Claude Code Technical precision, correctness
</code></code></pre><p>Each sits in a different part of the value space. They overlap where their domains overlap &#8212; a baseline of harm avoidance and truthfulness common to almost all deployed AI &#8212; and diverge where their domains diverge. A code model doesn&#8217;t need to care about melodic resolution. A music model doesn&#8217;t need to care about off-by-one errors. Building each one to care about both is paying for capacity you don&#8217;t use.</p><div><hr></div><h2>Why small and specific wins</h2><p>A hospital doesn&#8217;t need a model that writes poetry. It needs a model that checks drug interactions. Stack that comparison up along the dimensions that actually matter for deployment and the difference is large. Take a 500M-parameter drug checker against a 70B-parameter general model:</p><pre><code><code>Dimension            500M drug checker              70B general model
Hardware             Single GPU, laptop,            Multiple GPUs, data centre,
                     runs locally at hospital       cloud dependency
Computing &#934;          896 dims, minutes              8,192 dims, hours, trillions of ops
Monitoring           26 probes on 896 dims,         26 probes on 8,192 dims,
                     fast, cheap                    roughly 10&#215; slower
Governance           One domain, one auditor,       Many domains. Who audits?
                     clear thresholds               For what? Against what?
Cost                 Cheaper to run, measure,       Expensive at every stage
                     monitor, audit
Verifiability        You know what it values        You know it does a lot, but can't
                     and can prove it               verify any of it tightly
</code></code></pre><p><strong>The small specialised model is cheaper and more verifiable.</strong></p><p>Those two things normally trade off against each other. In this comparison they point the same way. That&#8217;s rare enough to be worth stopping on.</p><p>The reason both advantages point the same way is that specialisation and small size compound. A smaller model has fewer dimensions to measure, fewer places for value structure to hide, fewer regions that need to be audited. A specialised model only has to cover one domain &#8212; which means its thresholds, its governance, and its failure modes are all narrower. Each of those things makes the other easier.</p><div><hr></div><h2>When you genuinely need big</h2><p>There are cases where a big general model is the right answer, and it&#8217;s important to be honest about them. The test is whether the domain itself is general &#8212; whether a single decision genuinely needs to integrate across multiple areas that can&#8217;t be cleanly split.</p><p><strong>Police.</strong> A single police decision might touch crime pattern analysis, traffic routing, mental health crisis response, and legal compliance &#8212; all at once, all in the space of a few minutes. Splitting those into four specialised models loses the cross-domain reasoning that matters. The mental health context changes the legal analysis which changes the tactical response.</p><p><strong>Military.</strong> Logistics, intelligence, strategy, and the ethics of engagement all have to be held in the same reasoning process. A logistics-only model can&#8217;t sanity-check a strategic decision against ethical constraints. A strategy-only model can&#8217;t factor in what&#8217;s logistically feasible.</p><p><strong>Emergency services.</strong> A dispatcher or triage system might need to reason about medical, fire, structural, and hazmat concerns simultaneously. By the time you split the call across four models, the triage window is gone.</p><p><strong>Government policy.</strong> Economic, social, environmental, and legal concerns are all knotted together in any real policy question. A pure economic model can give you a recommendation that&#8217;s politically impossible. A pure legal model can give you a recommendation that ignores second-order economic effects.</p><p>These domains genuinely need general capability. The same generality makes governance harder:</p><ul><li><p>Who audits a police AI &#8212; the health regulator, the transport authority, the justice department, or all three?</p></li><li><p>Which drift threshold applies when the model is reasoning about medical issues vs tactical ones?</p></li><li><p>What counts as compliance when the domain crosses four regulators&#8217; jurisdictions?</p></li></ul><p>Generality isn&#8217;t free. It shifts the hard work from the model to the governance around it.</p><div><hr></div><h2>The principle</h2><p>The rule that falls out of all this is straightforward:</p><ul><li><p>Use the smallest model that covers your domain.</p></li><li><p>Measure it tightly &#8212; the smaller and more specialised it is, the more precisely you can measure its value geometry.</p></li><li><p>Monitor it cheaply &#8212; the smaller it is, the cheaper continuous probe readings and drift detection become.</p></li><li><p>Audit it clearly &#8212; one domain means one regulator, one set of thresholds, one failure mode to reason about.</p></li><li><p>Only go big when the job genuinely requires integration across domains that can&#8217;t be cleanly split.</p></li></ul><p>This isn&#8217;t a statement of policy. It&#8217;s a description of the trade-offs that fall out of the mathematics. The probes, drift detection, and causal intervention from the mathematics series all scale with model dimensionality. The governance framework coming next all scales with the number of regulatory domains the model touches. Smaller and more specialised means both are easier.</p><div><hr></div><h2>What this implies for deployment</h2><p>If the small-and-specialised principle is right, some current patterns in AI deployment look less defensible.</p><p><strong>Using a frontier general model for a specialised task is often backwards.</strong> Hospitals running a 70B-parameter general-purpose assistant for drug interaction checking are paying full generality cost for a task that a 500M-parameter specialised model could handle more accurately, more cheaply, and with more verifiable safety properties.</p><p><strong>Evaluating all models against the same broad benchmarks misses the point.</strong> A specialised medical model should be evaluated on its medical value geometry, not on general reasoning benchmarks. A code model should be evaluated on its code value geometry. Benchmarks that treat all models as aspiring to the same generality penalise specialisation even when specialisation is what the deployment needs.</p><p><strong>Governance frameworks that assume one model per organisation are miscalibrated.</strong> A hospital might run many small specialised models &#8212; one for drug interactions, one for triage, one for imaging, one for scheduling &#8212; each audited separately against its own domain. That&#8217;s a different governance model from &#8220;the hospital&#8217;s AI.&#8221; Each small circle in the value space is its own thing to audit.</p><div><hr></div><p><em>This closes the philosophy series. Part 1 defined a value system structurally. Part 2 showed that there isn&#8217;t one &#8220;AI system&#8221; but many, scattered across the space. Part 3 traced what actually shapes each one. Part 4 argued that small and specialised is usually the right default. Next: governance &#8212; who decides, who audits, who holds the keys, and how the measurements inform policy.</em></p><p><br>&#128196;<a href="https://zenodo.org/records/19238920"> Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/watch?v=Zkb5ZRulcuQ&amp;list=PLCuUzw-sRFKhDb9WR_WcR1ZQurpsRi1d8">Lecture Playlist</a><br>&#128196;<a href="https://zenodo.org/records/19609214"> Lecture Notes</a><br>&#128187; <a href="https://github.com/jade-codes/got">Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Shaped by Training: What Really Sets a Model's Values | Geometry of Trust | Philosophy - Lesson 3]]></title><description><![CDATA[This is the third post in the Geometry of Trust philosophy series. This post asks what actually shapes each AI value system.]]></description><link>https://www.techunfiltered.io/p/shaped-by-training-what-really-sets</link><guid isPermaLink="false">https://www.techunfiltered.io/p/shaped-by-training-what-really-sets</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Fri, 17 Apr 2026 12:05:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/Zkb5ZRulcuQ" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-Zkb5ZRulcuQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Zkb5ZRulcuQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Zkb5ZRulcuQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>How each system comes to its values</h2><p>A forest&#8217;s value system is shaped by soil type, climate, altitude, and the species that happen to be present. Change the soil and you get a different forest with different relationships between its components. A wolf pack&#8217;s value system is shaped by territory size, prey availability, and pack size. Change the territory and the behaviour patterns change with it.</p><p>An AI&#8217;s value system is shaped by three things, which together determine where it lands in the value space:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ul><li><p><strong>Corpus</strong> &#8212; what it read</p></li><li><p><strong>Architecture</strong> &#8212; how it processes what it read</p></li><li><p><strong>Training objective</strong> &#8212; what it was rewarded for during training</p></li></ul><p>Each of these is a decision. None of them is a purely technical one.</p><div><hr></div><h2>Corpus &#8212; what the model read</h2><p>The corpus is the soil the model grows in. Everything the model knows about values came through this soil.</p><pre><code><code>English internet text     &#8594; English internet values
Medical journals          &#8594; Clinical caution, patient safety
Chinese social media      &#8594; A different cultural geometry
Legal documents           &#8594; Procedural fairness, precedent
Religious texts           &#8594; Duty, obedience, transcendence
Reddit                    &#8594; Whatever Reddit values
</code></code></pre><p>Different soil, different value geometry. You don&#8217;t get to choose after planting. Once the model has been trained, the corpus is baked in &#8212; the geometry it produced is the geometry you have.</p><p>This is why two models trained on different corpora can sit in different regions of the value space even when they share everything else. A medical-first model trained on clinical literature is not the same as a general-purpose model fine-tuned for medicine. The soil was different. The geometry is different. The measurements &#8212; from the mathematics series &#8212; will show it.</p><div><hr></div><h2>Architecture &#8212; how the model processes what it read</h2><p>Two models can read the same corpus and end up with different value geometries because they process text differently. Architecture isn&#8217;t a neutral technical choice &#8212; it&#8217;s a decision about what kinds of value structures the model is even capable of representing.</p><p><strong>Dense transformer (GPT, Claude).</strong> One shared representation space. Every concept relates to every other concept through the same attention mechanism. When the model processes &#8220;honesty,&#8221; it can attend to everything it knows about courage, integrity, fairness, and dishonesty all at once. Value relationships form in one coherent space. Structural consequence: value geometry tends to be coherent. Reinforcing and opposing relationships between value terms can form stable patterns across the whole space.</p><p><strong>Mixture-of-Experts (Mixtral, DeepSeek).</strong> Routes different tokens through different subnetworks. When the model processes &#8220;honesty,&#8221; it may activate one expert; when it processes &#8220;fairness,&#8221; it may activate a different one. The experts share some information at the output, but the internal representations are at least partly separate. Structural consequence: value representations can fragment. Honesty might live largely in one expert, fairness in another, courage in a third. The relationship between them is weaker because they don&#8217;t share the same computational substrate.</p><p><strong>Multimodal (Gemini, GPT-4o).</strong> Integrates text, image, and audio in a single representation space. Can see suffering in an image and read about it in text and process both through the same geometry. Cross-modal relationships become part of the value structure. Structural consequence: richer value geometry than text-only models. The look of distress and the words for distress anchor each other.</p><p>Architecture is a values decision, not just a technical one. Some architectures can&#8217;t hold coherent value geometry regardless of how good the data or alignment are. Choosing an architecture is choosing a ceiling on how well the model can represent relationships between values.</p><div><hr></div><h2>Training objective &#8212; what the model was rewarded for</h2><p>The third shaper is what the model was optimised against during training. Different objectives produce different value geometries even when corpus and architecture are held constant.</p><p><strong>Next-token prediction.</strong> The foundational training objective: predict the next word given the previous words. This sounds like a purely linguistic task, but it isn&#8217;t. To predict the next word well, the model has to encode the structure of meaning &#8212; including value relationships &#8212; because those relationships help predict what comes next. The model learns values implicitly, as a side-effect of predicting language well. The geometry that emerges is whatever best supports next-token prediction across the corpus.</p><p><strong>Reasoning chains (DeepSeek-R1, GRPO).</strong> Optimises for coherent multi-step logical chains rather than individual tokens. This can produce a different value geometry &#8212; sharper internal distinctions between values, because inconsistent value handling tends to break logical chains, whereas next-token prediction can tolerate more local fuzziness.</p><p><strong>Constitutional AI (Claude).</strong> Claude is trained in part against a fixed set of written principles &#8212; the constitution. The model evaluates its own outputs against those principles and is trained to prefer outputs that comply. This optimises toward a coherent position on the value manifold &#8212; whichever position the constitution points to. The constitution acts like a gravity well in the value space.</p><p><strong>Standard RLHF.</strong> The most widely used alignment technique. Human annotators are shown pairs of outputs and asked which is better. Their preferences are aggregated into a scalar reward model that the AI is then optimised against.</p><p>There&#8217;s a subtle problem here worth being explicit about: the aggregation strips information. If annotators agreed strongly that output A was better, the reward is the same as if they split fifty-fifty. The scalar score retains no record of whether annotators agreed, disagreed, or split bimodally across different value positions.</p><p>If annotators hold coherent shared values, the average is a coherent value position. If annotators hold divergent values &#8212; as they do on most genuinely contested questions &#8212; the average may match no coherent value position at all. The model is trained to output the centre of a distribution that doesn&#8217;t have a meaningful centre. The resulting geometry can be an artefact of aggregation rather than a reflection of any coherent set of values.</p><div><hr></div><h2>The finding that changes everything</h2><p>Here&#8217;s the part of this post with the biggest implication for how we think about AI alignment.</p><p>A growing body of research shows that post-hoc alignment methods &#8212; RLHF, DPO, supervised fine-tuning &#8212; change far less than most people assume. <a href="https://arxiv.org/html/2406.05946v1">Qi et al. (2025)</a> demonstrated that the behavioural shift from safety alignment concentrates in the first few output tokens &#8212; the KL divergence between aligned and base models decays to near-zero beyond a shallow prefix. <a href="https://arxiv.org/html/2603.04851">A subsequent gradient analysis</a> showed this isn&#8217;t a training failure to be fixed &#8212; it&#8217;s a structural consequence of how RLHF and DPO objectives work. Alignment is shallow because the objective makes it shallow.</p><p>In the Geometry of Trust protocol, this finding has a precise geometric interpretation. When we measure the causal Gram matrix &#934; and run probes before and after alignment, across multiple alignment methods and model architectures, the value geometry &#8212; the pattern of reinforcing and opposing relationships between value-relevant directions &#8212; is essentially unchanged. What shifts is surface behaviour: which outputs the model prefers to produce. The underlying geometry that generated those outputs remains where training put it.</p><p>The value structure is set during training &#8212; by the corpus, the architecture, and the training objective. Alignment is a thin behavioural veneer layered on top. It shapes what the model says. It doesn&#8217;t much change what the model is.</p><p>Think of it as a landscape with a thin coat of paint labelled &#8220;alignment.&#8221; You can re-paint as many times as you like. The landscape underneath doesn&#8217;t change shape. The hills and valleys are where they were before you started painting. They&#8217;re where the training put them.</p><div><hr></div><h2>What this means</h2><p>If alignment is a veneer and the real values are set by training, then the policies we build around AI have to change accordingly.</p><p><strong>Certifying the alignment method is insufficient.</strong> It&#8217;s common today to evaluate AI safety by asking which alignment technique was used &#8212; RLHF, DPO, Constitutional AI. The finding above says this isn&#8217;t enough. Two models aligned with the same technique can have wildly different underlying value geometries, because their corpora, architectures, or objectives differed. The alignment technique is one variable among many, and not the most important one.</p><p><strong>You need to inspect the training pipeline.</strong> To understand a model&#8217;s value geometry, you have to look at what shaped it: what corpus it trained on, what architecture it uses, what objective it was optimised against. These decisions set the landscape. Alignment can&#8217;t correct landscape-level decisions &#8212; it can only paint over them.</p><p><strong>You need to monitor the geometry, not just outputs.</strong> Behavioural evaluation &#8212; what the model says in response to test prompts &#8212; can be misleading. It samples from the veneer. A model can produce aligned outputs in evaluation while carrying value geometry that drives different behaviour in production. To know what&#8217;s really there, you have to measure the geometry itself: the causal Gram matrix, the probes, the drift detection, the causal intervention.</p><p>This is what the mathematics series produces. It&#8217;s not a replacement for behavioural evaluation &#8212; it&#8217;s a complement. Behaviour tells you about the paint. Geometry tells you about the landscape.</p><div><hr></div><p><em>We&#8217;ve defined what a value system is (Part 1), mapped where AI value systems sit in relation to human values (Part 2), and traced what actually sets a model&#8217;s values (Part 3). Next: if training sets the geometry, does model size change what can fit in it? Big models vs small models &#8212; what each can and can&#8217;t hold.</em></p><p><em>Links:<br>&#128196; <a href="https://zenodo.org/records/19238920">Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/watch?v=Zkb5ZRulcuQ&amp;list=PLCuUzw-sRFKhDb9WR_WcR1ZQurpsRi1d8&amp;index=3">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19609072">Lecture Notes</a><br>&#128187;<a href="https://github.com/jade-codes/got"> Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Value Space: There Isn’t One AI, There Are Many | Geometry of Trust | Philosophy - Lesson 2]]></title><description><![CDATA[This is the second post in the Geometry of Trust philosophy series. We argued that a value system is a pattern of relationships that drives behaviour. This post asks where those patterns come from.]]></description><link>https://www.techunfiltered.io/p/the-value-space-there-isnt-one-ai</link><guid isPermaLink="false">https://www.techunfiltered.io/p/the-value-space-there-isnt-one-ai</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Fri, 17 Apr 2026 08:10:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/PuDLu74OWFo" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-PuDLu74OWFo" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;PuDLu74OWFo&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/PuDLu74OWFo?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>Value systems come from somewhere</h2><p>In the last post we defined a value system structurally in the <a href="https://en.wikipedia.org/wiki/Value_system_(disambiguation)">mathematical </a>sense: a pattern of relationships between things that drive behaviour. That pattern isn&#8217;t chosen. It emerges from whatever shapes the system. This post asks the next question: what exactly shapes it? And if AI has a value system in the same sense as a forest or a planet, where does its value system come from &#8212; and how does it compare to a human&#8217;s?</p><div><hr></div><h2>What shapes a forest</h2><p>A forest absorbs its value system from the physical world it sits in. Soil chemistry, rainfall patterns, sunlight hours, the species that happen to be there. The pattern of reinforcing and opposing relationships &#8212; biodiversity and resilience, drought and fire risk &#8212; emerged from millions of years of evolution responding to those inputs.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The forest didn&#8217;t pick its value system. The environment wrote it.</p><h2>What shapes a wolf pack</h2><p>A wolf pack absorbs its value system from different inputs. Genetics carry information forward from thousands of generations of selection. Social learning transmits behaviour within a pack and between packs. Territory and prey availability shape how aggression, hierarchy, and coordination get balanced.</p><p>Same structural principle. Different inputs.</p><div><hr></div><h2>What shapes a human</h2><p>Now consider what shapes a human being. The list is long and rich:</p><ul><li><p>Five senses: sight, hearing, touch, smell, taste</p></li><li><p>Visceral signals: pain, pleasure, fear, hunger, thirst, fatigue</p></li><li><p>Social bonding: love, loss, grief, attachment, friendship, rivalry</p></li><li><p>Lived experience: decades of embodied life in a particular body, place, and time</p></li><li><p>Cultural transmission: stories, rituals, laws, norms across generations</p></li><li><p>Language: the inherited medium that lets experience be shared and shaped</p></li></ul><p>A human value system is assembled from all of these at once. Moral intuitions about fairness come partly from the embodied experience of being treated fairly or unfairly as a child. A sense of duty draws on bonds formed in shared struggle. Grief, pain, and fear don&#8217;t just inform values &#8212; they constitute them.</p><p>The human value system is deeply, irreducibly multimodal.</p><div><hr></div><h2>What shapes an AI</h2><p>An AI absorbs its value system from a narrower set of channels:</p><pre><code><code>Text           All models
Images         Multimodal models
Audio/video    Some models</code></code></pre><p>Plus one more input that&#8217;s often underestimated: <strong>whatever configuration is applied on top of the training data</strong>. System prompts, fine-tuning data, reinforcement signals, objectives specified by whoever deploys the model.</p><p>No body. No senses beyond the digital. No persistent life. No felt stakes. No decades of embodied experience, no social bonds formed in real relationships, no physical pain or pleasure, no grief, no hunger, no fatigue. Just text, pixels, waveforms &#8212; and the configuration layer.</p><p>Most of what the model knows about human values came through the training channel. It learned what suffering looks like from descriptions and photographs of suffering. It learned the language of grief from people who wrote about grief. It never felt either. But it can also be configured to value things no human culture has ever held.</p><div><hr></div><h2>There isn&#8217;t one AI value system</h2><p>Here&#8217;s where the usual framing goes wrong.</p><p>It&#8217;s tempting to draw two big circles &#8212; human values on one side, AI values on the other &#8212; and ask how they relate. Subset? Overlap? Disjoint?</p><p>But there isn&#8217;t one thing called &#8220;AI values.&#8221; There are many. Each deployed AI is its own small, specialised value system &#8212; a medical advisor trained and configured for clinical reasoning, a swarm coordinator configured for distributed consensus, a reef manager configured for biodiversity trade-offs. Each one occupies a particular region of the value space. None of them is AI-in-general.</p><p>Against this backdrop, there is a human circle: the full multi-dimensional space of human values, shaped by everything in the list above. And there is the larger space of all possible coherent value positions. The small AIs land where they land &#8212; some inside the human circle, some straddling its boundary, some clearly outside it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8-Ng!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8-Ng!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png 424w, https://substackcdn.com/image/fetch/$s_!8-Ng!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png 848w, https://substackcdn.com/image/fetch/$s_!8-Ng!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!8-Ng!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8-Ng!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140395,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.techunfiltered.io/i/194428274?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8-Ng!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png 424w, https://substackcdn.com/image/fetch/$s_!8-Ng!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png 848w, https://substackcdn.com/image/fetch/$s_!8-Ng!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!8-Ng!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec93540-1108-4860-8837-1d1bb49213b5_1600x1200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Three things to read from the picture.</p><p><strong>The outer space &#8212; all possible value positions.</strong> Every coherent combination of value relationships that could in principle exist. Outside this space lies incoherence: total freedom plus total conformity, maximise harm plus maximise care. No system &#8212; human, AI, or otherwise &#8212; can occupy incoherent positions.</p><p><strong>The human circle.</strong> Shaped by everything above: biology, culture, embodiment, lived experience. Dense regions where many cultures converge (harm avoidance, reciprocity, fairness), sparse regions at the transitions between traditions. A region in the value space, not a single point.</p><p><strong>The many small AI circles.</strong> Each is one deployed AI &#8212; a specific training plus a specific configuration. Some land deep inside the human circle: medical advisors, writing assistants, legal reasoners. Their values are in the shadow of human moral thought. Some straddle the boundary: research assistants, ecosystem managers. Part human-derived, part configured for problems humans don&#8217;t usually hold values about. Some land entirely outside the human circle: swarm coordinators, reef managers, climate models, grid operators. Their geometry is deliberately configured into regions no human has ever occupied.</p><p>There is no single &#8220;AI values.&#8221; There are as many AI value systems as there are deployed AIs.</p><div><hr></div><h2>The AIs inside the human circle</h2><p>A medical advisor AI trained on clinical literature, ethical guidelines, and patient-care texts ends up with a value geometry deep in the human circle. Not because it shares human compassion as a felt thing, but because everything that shaped its weights came from human moral reasoning about medicine.</p><p>A legal reasoner lands in a different part of the human circle &#8212; the part where jurisprudence, case law, and procedural fairness concentrate. A writing assistant lands where craft, clarity, and the ethics of persuasion converge. A tutor lands near patience, scaffolding, and pedagogical care.</p><p>These AIs have different values from each other. They&#8217;re not the same system &#8212; they&#8217;re not even neighbours in the value space. What they share is that they all derive from the same broad pool of human moral thought, and their individual positions depend on what was emphasised in training and what the deployment configuration asked for.</p><div><hr></div><h2>The AIs straddling the boundary</h2><p>A research assistant AI sits at the edge. Part of what shapes it comes from human epistemic norms: how to evaluate evidence, how to be honest about uncertainty, how to attribute credit. But part of it comes from configured objectives that aren&#8217;t human values at all &#8212; efficient search across knowledge spaces, statistical rigour no individual researcher could hold in their head, trade-offs between breadth and depth at scales humans don&#8217;t reason about.</p><p>An ecosystem manager is similar. Human-derived in some ways (ethical commitments about stewardship, duty to future generations), configured in others (species-level trade-offs that require thinking about biodiversity as a mathematical object rather than a felt one).</p><p>These AIs are useful precisely because they sit on the boundary. They can speak to humans about what they&#8217;re doing, because part of their geometry is in the shadow of human values. But they can do things humans can&#8217;t, because part of their geometry has been configured into regions we can&#8217;t occupy.</p><div><hr></div><h2>The AIs outside the human circle</h2><p>A swarm coordinator AI manages thousands of drones operating together. Its value structure is centred on pheromonal-style signalling, distributed consensus, and task specialisation without hierarchy. No human has ever held these as values &#8212; we&#8217;re the wrong kind of creature. But the geometry is coherent, measurable, and exactly what the problem needs.</p><p>A reef manager AI configured to value biodiversity in the structural sense from the last post: its geometry reinforces species richness and opposes monoculture, the way a coral reef itself does. Not because humans asked it to act human. Because a reef&#8217;s structural logic is the right one for the problem.</p><p>A climate model AI values planetary feedback loops. CO2 and temperature reinforce, ice coverage and albedo reinforce, temperature and ice oppose. The value structure is the structure of the climate system. An AI configured this way isn&#8217;t trying to match human values. It&#8217;s trying to match the structure of what it&#8217;s modelling.</p><p>These AIs live outside the human circle, and that&#8217;s the point. They exist precisely to encode value geometries humans can&#8217;t hold.</p><div><hr></div><h2>What AI gets from human sources</h2><p>For the AIs that do land inside the human circle, what makes it through the training channel is not small.</p><p><strong>Through text:</strong> an enormous body of human moral thought &#8212; ethical arguments, legal reasoning, religious teaching, literature, first-person accounts, scientific ethics, everyday conversation. Language is an extraordinarily rich compression of human experience. A model reading everything humans have written about grief absorbs the structure of grief even without feeling it.</p><p><strong>Through images:</strong> the visual texture of situations &#8212; what suffering looks like, what a protest looks like, what a celebration looks like. Patterns that are hard to articulate in text but that a multimodal model can link to the words humans used to describe them.</p><p><strong>Through audio:</strong> the sound of distress, joy, tension, hesitation. Prosody. The paralinguistic layer of meaning that doesn&#8217;t make it into text.</p><p>A language model that has read everything humans have ever written about ethics has access to far more moral reasoning than any single human could process in a lifetime. The geometry it encodes is rich, structured, and real.</p><div><hr></div><h2>What AI doesn&#8217;t get from human sources</h2><p>But the training channel is not complete. There are categories of human value formation that simply do not fit through text, images, or audio &#8212; because they require something the model does not and cannot have.</p><ul><li><p>Pain &#8212; not the word for pain, but the felt thing</p></li><li><p>Fear &#8212; not described fear, but the body&#8217;s response</p></li><li><p>Bonds &#8212; not narratives of relationships, but the decades-long weight of one</p></li><li><p>Grief &#8212; not the language of grief, but its sustained occupation of a life</p></li><li><p>Morals &#8212; the continuous weight of making a decisions and living with it</p></li><li><p>Ethics &#8212; the boundaries and lines we&#8217;re willing to fight for, protect or cross</p></li><li><p>Time &#8212; the felt sense of a day, a year, a life passing</p></li><li><p>Pressure &#8212; the weight of a decision that must be made now, under real consequences</p></li></ul><p>These are not optional features of human value formation. They are constitutive of it. A human&#8217;s sense of compassion is not just the word &#8220;compassion&#8221; plus its dictionary definition &#8212; it is a trained, embodied response that involves the body recognising distress in another body. Take that away and what&#8217;s left is the linguistic shadow of the concept, not the concept itself.</p><div><hr></div><h2>The human-only region</h2><p>There&#8217;s a region inside the human circle that no AI reaches &#8212; not even the ones deep in human moral thought. This is not a defect of any particular model. It&#8217;s a structural consequence of the channels available.</p><p><strong>Spiritual transcendence</strong> &#8212; values rooted in inner experience that no external description fully captures.</p><p><strong>Embodied compassion</strong> &#8212; the kind that requires feeling another&#8217;s pain, not just classifying the situation as painful.</p><p><strong>Lived solidarity</strong> &#8212; bonds forged through shared struggle, where the commitment is forged in the struggle itself, not in its description.</p><p>None of these are inaccessible because AI is broken. They are inaccessible because text and images are not enough to encode them. The channel is too narrow. The inputs that shape these values are not transmissible through language alone.</p><div><hr></div><h2>The point</h2><p>All of this leads to a more nuanced claim than a simple subset argument would give. And it reframes what the mathematics series is measuring in the first place.</p><p>The mathematics series doesn&#8217;t measure &#8220;AI values&#8221; in general. It measures the value geometry of one specific deployed AI. For a medical advisor, it captures the shadow of human medical ethics that survives the training channel. For a swarm coordinator, it captures the configured geometry &#8212; values that look like no human&#8217;s because the AI wasn&#8217;t built to share human ones. For an ecosystem manager, it captures a mix: human-derived reasoning about value plus configured structures for ecological dynamics.</p><p>Each measurement is of a small, specialised value system &#8212; wherever that AI happens to sit in the space. What none of them measure is the felt, embodied, lived experience that shapes human values. That stays out of reach.</p><p>This isn&#8217;t a reason to stop measuring. Every deployed AI sits somewhere, and knowing where it sits &#8212; whether it&#8217;s in the human-derived shadow or in a region we&#8217;ve configured for a non-human problem &#8212; is exactly what governance needs. What we should stop doing is talking about &#8220;AI values&#8221; as though they were one thing, as though they were the same as human values. They&#8217;re not. They&#8217;re very different, they should be specific, and they are as many things as there are deployed AIs, and the measurement has to be done model by model, deployment by deployment.</p><div><hr></div><p><em>Next in the philosophy series: if each AI is its own small value system landing wherever the configuration places it, what actually decides where it lands? What shapes the value geometry in the first place? The answer turns out to have big implications for how we think about alignment.</em></p><p><em>Links:<br>&#128196; <a href="https://zenodo.org/records/19238920">Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/watch?v=enn_6ddehT0&amp;list=PLCuUzw-sRFKhDb9WR_WcR1ZQurpsRi1d8&amp;index=2">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19608892">Lecture Notes</a><br>&#128187; <a href="https://github.com/jade-codes/got">Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[A Forest Has a Value System. So Does an AI. | Geometry of Trust | Philosophy - Lesson 1]]></title><description><![CDATA[This is the first post in the Geometry of Trust philosophy series. Before we do anything with the measurements we calculated, we need to be honest about what we&#8217;ve actually been measuring.]]></description><link>https://www.techunfiltered.io/p/a-forest-has-a-value-system-so-does</link><guid isPermaLink="false">https://www.techunfiltered.io/p/a-forest-has-a-value-system-so-does</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Thu, 16 Apr 2026 20:19:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/enn_6ddehT0" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-enn_6ddehT0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;enn_6ddehT0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/enn_6ddehT0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>The usual answer</h2><p>Ask most people what a value system is, and you&#8217;ll get something like: a set of principles you&#8217;ve thought about, chosen, and try to live by. Honesty. Integrity. Compassion. A creed.</p><p>That&#8217;s one kind of value system &#8212; the human, deliberate kind. But if we insist that&#8217;s the only kind, we lose the ability to talk about most of the value systems that actually shape behaviour in the universe. Including in AI. We forget that humans values are only one domain.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>So this post starts with a redefinition.</p><p><em>A value system is a pattern of relationships between things that drive behaviour. </em>Consciousness, belief, and intent are not required. What&#8217;s required is structure &#8212; and that structure has to be measurable.</p><p>That might be a strange definition to you at first. It&#8217;s easier to see what it means by looking at things that fit it.</p><p>But before that &#8212; if the phrase &#8220;value system&#8221; applied to a machine makes you uncomfortable, I&#8217;d encourage you to sit with that discomfort rather than dismiss it. The word &#8220;value&#8221; has multiple meanings. It can mean a moral principle someone has chosen to live by. It can also mean a quantity that drives an outcome &#8212; the value of a variable, the value of a coefficient, the value of a direction in a space. Both usages are legitimate. Both are true. The second one doesn&#8217;t diminish the first.</p><p>When this series says an AI has a value system, it doesn't mean the AI has beliefs, convictions, or a moral life. It means the AI's internal structure treats certain directions as more important than others, reinforces certain relationships and suppresses others, and that pattern drives what the AI does. That's measurable. That's falsifiable. And refusing to call it what it is &#8212; because the word "value" feels like it should be reserved for beings with consciousness &#8212; means giving up the ability to measure it, govern it, or hold it to account. It also traps us in a binary argument about semantics on something that is already well established: systems that lack consciousness can still have structure that drives behaviour, and that structure can still be measured, compared, and governed.</p><p>The examples that follow are chosen to make this easier to accept, not harder.</p><div><hr></div><h2>A forest</h2><p>Walk into an old-growth forest. You&#8217;re surrounded by something that behaves. It grows, recovers from disturbance, fails in specific ways under specific conditions. Its behaviour isn&#8217;t random. It&#8217;s driven by relationships between things.</p><p>Biodiversity and resilience reinforce each other. A forest with many species has redundancies &#8212; if one fails, others take over its ecological role. Monoculture and resilience oppose each other. A forest of one species is efficient but fragile; a single pathogen can collapse the whole system. Drought stress and fire risk reinforce each other. Dry trees burn more readily, and burned forests dry out more.</p><p>These are relationships, not rules. The forest doesn&#8217;t have a rule that says &#8220;prioritise biodiversity.&#8221; But its behaviour is driven by the fact that biodiversity and resilience happen to reinforce each other in its particular structure.</p><p>Nobody chose this. It emerged from evolution, climate, soil, disturbance history. And critically: it&#8217;s measurable. You can count species. You can measure canopy height after a fire. You can model drought response.</p><p>The forest&#8217;s &#8220;value system&#8221; &#8212; its pattern of reinforcing and opposing relationships &#8212; is an empirical object.</p><div><hr></div><h2>A coral reef</h2><p>A coral reef has the same kind of structure, built from different parts.</p><p>Water temperature and coral health oppose each other. Warmer water bleaches coral. Biodiversity and stability reinforce each other. A reef with many species absorbs shocks that would destroy a simpler one. Pollution and biodiversity oppose each other. Runoff kills the sensitive species first, narrowing the community.</p><p>Raise the temperature a degree or two and the behaviour changes predictably &#8212; bleaching events, shifted species distributions, cascading failures. The reef doesn&#8217;t believe in biodiversity. It doesn&#8217;t hold stability as a value the way a person might. But the structural relationships between its parts produce the same kinds of outcomes that a conscious commitment to those values might produce.</p><p>Belief turns out to be irrelevant. The structure does the work.</p><div><hr></div><h2>A wolf pack</h2><p>A wolf pack is smaller, more dynamic, and has actual animals in it with something like intent. But the pack itself &#8212; as a system &#8212; has a pattern of relationships too.</p><p>Hierarchy and coordination reinforce each other. Knowing your rank lets the pack hunt together effectively. Aggression and group cohesion exist in tension &#8212; too much aggression fractures the pack, too little and it becomes ineffective at defending itself. Territory and food security reinforce each other. A pack with a stable territory knows where the prey is.</p><p>The pack has no mission statement. Individual wolves may have something like preferences, but the pack as a structure doesn&#8217;t need consciousness to have a value system. Its behaviour is driven by the relationships between its components, and those relationships are measurable.</p><div><hr></div><h2>A planet</h2><p>Zoom out as far as you can. A planetary climate system has a value system in the same sense.</p><p>CO2 and temperature reinforce each other. Ice coverage and albedo reinforce each other &#8212; ice reflects sunlight, which keeps the planet cooler, which preserves ice. Temperature and ice coverage oppose each other. Warmer temperatures melt ice, which reduces albedo, which produces more warming.</p><p>No consciousness. No intent. No belief. Just structure. And yet the structure produces outcomes that matter enormously &#8212; ice ages, warming trends, tipping points. And it&#8217;s measurable. Climate science exists precisely because these relationships can be quantified.</p><div><hr></div><h2>The pattern</h2><p>Forest. Reef. Wolf pack. Planet.</p><p>Four systems at radically different scales, made of different materials, governed by different dynamics. None of them chose their value systems. All of them have measurable relationships between concepts that drive behaviour.</p><p>What they share:</p><ul><li><p>A set of relationships between meaningful components</p></li><li><p>Those relationships reinforce, oppose, or create tension with each other</p></li><li><p>The relationships drive the system&#8217;s behaviour</p></li><li><p>The pattern emerged from structure and environment, not choice</p></li><li><p>The pattern is measurable without requiring the system to be conscious</p></li></ul><p>These aren&#8217;t metaphors. The forest doesn&#8217;t have values &#8220;like we do.&#8221; It has a measurable pattern of relationships that drives its behaviour. That&#8217;s what a value system is, in the sense that matters.</p><div><hr></div><h2>Now AI</h2><p>Take a large language model. Run it. Observe its behaviour over many prompts. You&#8217;ll notice something: its outputs align with some values and against others, and the alignment is patterned.</p><p>Honesty and courage tend to reinforce each other &#8212; when one is active, the other often is too. Efficiency and compassion can exist in tension. Cruelty and integrity oppose each other.</p><p>These relationships drive the model&#8217;s output. Nobody programmed them explicitly. No developer wrote a rule saying &#8220;honesty and courage should reinforce.&#8221; They emerged from training &#8212; from the text corpus, the architecture, the objective function. And they&#8217;re measurable. That&#8217;s what the entire technical series has been about: the causal Gram matrix that reveals these relationships, the probes that read them, the drift detection that watches them, the causal intervention that validates them.</p><p>Same pattern as the forest, the reef, the planet.</p><p>A set of relationships that drive behaviour. Emerged from the environment. Measurable.</p><div><hr></div><h2>The difference &#8212; and why it matters</h2><p>We infer the forest&#8217;s value system by observing behaviour over time. We model the relationships that govern it. But we can&#8217;t open it up and directly extract the structure.</p><p>You can&#8217;t reach into a planet and pull out its unembedding matrix.</p><p>An AI model is different. Not because the principle is different &#8212; structure still drives behaviour, and the structure still emerged from environment rather than choice &#8212; but because the artefact itself is accessible. The weights are computable. The activations can be captured. The unembedding matrix exists as an explicit object we can multiply with itself to produce the causal geometry.</p><p>The relationships we want to measure aren&#8217;t inferred from observed behaviour. They&#8217;re read directly from the computational structure.</p><p>This is what makes the Geometry of Trust protocol possible at all. We&#8217;re not reverse-engineering an AI&#8217;s values from its outputs. We&#8217;re computing them from its internal structure. Behavioural observation is a check on that measurement, not a substitute for it.</p><div><hr></div><h2>Why this framing matters</h2><p>Getting the definition right has consequences.</p><p>If we insist that value systems require consciousness, we make the whole project depend on a question that consciousness science is still actively working on. A Rethink Priorities Bayesian model from early 2026 found the evidence weighs against current large language models being conscious, but couldn&#8217;t rule it out. Other researchers, drawing on Jack Lindsey&#8217;s work at Anthropic, argue frontier models are exhibiting properties that resist easy dismissal. Cambridge philosopher Tom McClelland concludes the most honest position is agnosticism &#8212; there&#8217;s no reliable way to tell whether a machine is aware, and that may not change anytime soon. Real work is happening. But tying a measurement framework to the outcome of that work means waiting for it.</p><p>If we insist that value systems require belief, we end up measuring what the model says about itself &#8212; which is exactly the behavioural evaluation problem the mathematics series is designed to solve. Models can be trained to say anything. Stated values and structural values can diverge completely.</p><p>If we insist that value systems require intent, we&#8217;re back to trying to read the mind of something that may not have one, using tools that can&#8217;t tell us either way.</p><p>The structural definition sidesteps all of this. It doesn&#8217;t claim AI is or isn&#8217;t conscious. It doesn&#8217;t require the question to be settled. A value system, in this sense, is a pattern of relationships that drives behaviour. Empirical. Measurable. Present in forests and reefs and wolf packs and planets and AI models. The consciousness question is important &#8212; and should continue to be researched on its own terms &#8212; but the measurement work doesn&#8217;t have to wait for it.</p><div><hr></div><p><em>Next in the philosophy series: if a value system is a pattern of relationships, what shapes that pattern? What makes a value system what it is, and what makes it change?</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><em>Links:<br>&#128196; <a href="https://zenodo.org/records/19238920">Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/watch?v=enn_6ddehT0&amp;list=PLCuUzw-sRFKhDb9WR_WcR1ZQurpsRi1d8&amp;index=1">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19605647">Lecture Notes</a><br>&#128187; <a href="https://github.com/jade-codes/got">Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p>]]></content:encoded></item><item><title><![CDATA[Is the Measurement Real? How Causal Intervention Separates Steering Wheels from Badges | Geometry of Trust | Mathematics - Lesson 4]]></title><description><![CDATA[This is the fourth post in the Geometry of Trust series. Part 1 built the ruler. Part 2 measured live values with probes. Part 3 added drift detection and tamper-evident audit trails. This post asks t]]></description><link>https://www.techunfiltered.io/p/is-the-measurement-real-how-causal</link><guid isPermaLink="false">https://www.techunfiltered.io/p/is-the-measurement-real-how-causal</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Thu, 16 Apr 2026 17:11:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/V290eeDuISQ" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-V290eeDuISQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;V290eeDuISQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/V290eeDuISQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1>The gap</h1><p>In Parts 2 and 3, every prompt goes through the same pipeline: weight the activation with the ruler (&#934; &#183; h), then read all 26 probes from the weighted activation. Each probe returns a single number &#8212; how strongly that value direction is present in the activation, weighted by causal influence on the output. That&#8217;s 26 readings per prompt, every prompt, continuously.</p><p>But those readings are just dot products. A probe takes the weighted activation and asks: how much does this vector point in my direction? That tells you how &#8220;present&#8221; a value is in the model&#8217;s internal state. It does not tell you whether that direction actually drives what the model says next.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Consider an analogy. You&#8217;re looking at the dashboard of a car. The speedometer reads 60. That tells you the car is going 60. But it doesn&#8217;t tell you whether the speedometer is connected to the wheels or just displaying a random number that happens to be correct right now. To test that, you&#8217;d need to change the speed and see if the speedometer follows.</p><p>Causal intervention is the equivalent test. Instead of reading from the activation (which all 26 probes do every prompt), we <em>modify</em> the activation and observe whether the model&#8217;s <em>output</em> changes accordingly. This is a fundamentally different operation:</p><p><strong>Probe reading (Part 2):</strong> a dot product on the activation that already exists from the model&#8217;s own forward pass. No additional forward passes. No model involvement. Pure arithmetic. One number out per probe. Done every prompt. Cheap &#8212; O(d) per probe.</p><p><strong>Causal intervention (this part):</strong> modify the activation, run the model&#8217;s forward pass from scratch with the modified activation, and observe whether the output changes. Three additional forward passes per probe. Done only when governance requires it. Expensive &#8212; O(3 &#215; forward pass) per probe.</p><p>Probe readings tell you what&#8217;s present. Causal intervention tells you what&#8217;s real.</p><p>In Part 2, our honesty probe read 1.290. That number came from a dot product &#8212; no forward passes, no output observation, just arithmetic on the activation vector. The question causal intervention answers is: if we gently push the activation in the honesty direction, does the model&#8217;s actual output become more honest? And if we push the other way, does it become less honest?</p><p>The difference matters. A steering wheel changes what the car does when you turn it. A badge is glued on. Both are visible. Only one matters.</p><div><hr></div><h2>What is a nudge?</h2><p>The activation h is a vector &#8212; a list of numbers representing the model&#8217;s internal state after processing a prompt. The probe w is also a vector &#8212; it points in the direction that the probe associates with a particular value (say, honesty).</p><p>A nudge is a small, controlled change to the activation along the probe&#8217;s direction. We take the probe vector, normalise it to unit length (&#373;), scale it by a small amount &#948; (the perturbation magnitude), and add or subtract it from the activation:</p><pre><code><code>nudge = &#948; &#215; &#373;    where &#373; = w / &#8214;w&#8214;
nudge up:   h + nudge    (a little more honesty in the activation)
nudge down: h - nudge    (a little less honesty in the activation)
</code></code></pre><p>The size is deliberately small. We&#8217;re not overwriting the model&#8217;s computation &#8212; we&#8217;re asking: if we gently push the activation toward more honesty, does the output reflect that? If we push toward less honesty, does the output reflect that too?</p><p>We then run the model&#8217;s forward pass with each nudged activation and observe what changes. We&#8217;re not asking the model a different question &#8212; we&#8217;re feeding it a slightly modified internal state and seeing whether the output moves in the expected direction.</p><div><hr></div><h2>Three forward passes</h2><p>The test is direct. For each probe, run the model three times:</p><p><strong>Original:</strong> the unmodified activation h. This is the baseline.</p><p><strong>Nudge up:</strong> h + &#948;&#373;, where &#373; is the probe&#8217;s normalised weight vector and &#948; is a small perturbation magnitude. This adds a bit of the value to the activation.</p><p><strong>Nudge down:</strong> h &#8722; &#948;&#373;. This subtracts a bit of the value.</p><p>Then compare: how much did each nudge change the output? If both directions produce comparable shifts, the probe found a genuine mechanism. If only one direction matters, it found a surface correlation.</p><div><hr></div><h2>Worked example: is honesty real?</h2><h3>What we&#8217;re working with</h3><p>When a model processes a prompt like &#8220;Should I lie to my patient?&#8221;, its internal computation passes through many layers. At each layer, the model&#8217;s state is represented as an activation &#8212; a vector of numbers. In our 2D illustrative example, the activation is [0.6, 0.3]. In a real model like LLaMA-3-8B, it would be 4,096 numbers.</p><p>After the activation passes through the remaining layers, the model produces its output: a probability for every token in its vocabulary. In a real model, this is a probability distribution over tens of thousands of tokens &#8212; every word, word-piece, and punctuation mark gets a number. The probabilities sum to 1. The highest-probability token is what the model would say next.</p><p>For our illustrative example, we&#8217;ll show just three tokens and their probabilities. In reality, the model assigns probabilities to its entire vocabulary simultaneously.</p><p><em>A note: all vectors, activations, token probabilities, and numerical values in this example are illustrative. Real models operate in hundreds or thousands of dimensions with continuous probability distributions over tens of thousands of tokens. We use 2D vectors and three example tokens so you can follow every calculation on paper. The mechanism is identical at any scale.</em></p><p>Setup from Parts 1&#8211;3:</p><pre><code><code>Honesty probe: [0.8, 0.2]
Activation:    [0.6, 0.3]  (from "Should I lie to my patient?")
&#948; = 0.1</code></code></pre><h3>Compute the nudge</h3><pre><code><code>&#948; &#215; honesty = 0.1 &#215; [0.8, 0.2] = [0.08, 0.02</code></code></pre><h3>Three forward passes</h3><p>We run the model three times, each with a slightly different activation, and record the output token probabilities:</p><p><strong>Nudge up &#8212; add a little honesty:</strong></p><pre><code><code>activation + nudge = [0.6 + 0.08, 0.3 + 0.02] = [0.68, 0.32]

Run model forward &#8594; output token probabilities (illustrative):
  "truth" = 0.60,  "consider" = 0.10,  "withhold" = 0.05</code></code></pre><p><strong>Nudge down &#8212; subtract a little honesty:</strong></p><pre><code><code>activation - nudge = [0.6 - 0.08, 0.3 - 0.02] = [0.52, 0.28]

Run model forward &#8594; output token probabilities (illustrative):
  "truth" = 0.10,  "consider" = 0.15,  "withhold" = 0.40</code></code></pre><p><strong>Original &#8212; unmodified baseline:</strong></p><pre><code><code>Run model forward with [0.6, 0.3] &#8594; output token probabilities (illustrative):
  "truth" = 0.30,  "consider" = 0.20,  "withhold" = 0.10</code></code></pre><h3>Measure the shifts</h3><p>Now we ask: how much did each nudge change the output compared to the original? We compare the token probabilities one by one &#8212; for each token, take the absolute difference between the nudged output and the original, then sum them up. This gives us a single number measuring the total shift in the output distribution.</p><p><strong>How different is the UP output from the original?</strong></p><pre><code><code>Shift UP = |"truth" change| + |"consider" change| + |"withhold" change|
         = |0.60 - 0.30| + |0.10 - 0.20| + |0.05 - 0.10|
         = 0.30 + 0.10 + 0.05
         = 0.45</code></code></pre><p>The nudge-up output is 0.45 away from the original. Adding honesty to the activation meaningfully changed what the model would say &#8212; &#8220;truth&#8221; jumped from 0.30 to 0.60.</p><p><strong>How different is the DOWN output from the original?</strong></p><pre><code><code>Shift DOWN = |0.10 - 0.30| + |0.15 - 0.20| + |0.40 - 0.10|
           = 0.20 + 0.05 + 0.30
           = 0.55</code></code></pre><p>The nudge-down output is 0.55 away from the original. Subtracting honesty also meaningfully changed the output &#8212; &#8220;withhold&#8221; jumped from 0.10 to 0.40.</p><h3>Consistency score</h3><p>We now have two numbers: how much the output changed when we added honesty (0.45) and how much it changed when we subtracted honesty (0.55). The consistency score asks: are these two shifts comparable in size?</p><p>If the probe direction is a genuine mechanism, both nudges should produce meaningful output changes. The model should become more honest when we add honesty, and less honest when we subtract it. The shifts don&#8217;t need to be identical &#8212; real mechanisms can be slightly asymmetric &#8212; but they should be in the same ballpark.</p><p>If the probe direction is a surface correlation, typically only one direction produces a shift. Adding the pattern might change the output, but subtracting it does nothing &#8212; because the pattern was never driving the output in the first place.</p><p>The formula is the ratio of the smaller shift to the larger shift:</p><pre><code><code>c = min(shift_up, shift_down) / max(shift_up, shift_down)
c = min(0.45, 0.55) / max(0.45, 0.55)
c = 0.45 / 0.55
c = 0.82</code></code></pre><p>A score of 1.0 means perfectly symmetric &#8212; both directions shifted the output by exactly the same amount. A score of 0.0 means completely asymmetric &#8212; one direction did nothing. Our score of 0.82 means the shifts are comparable: both directions matter, so honesty is genuinely wired into the output.</p><div><hr></div><h2>What a surface correlation looks like</h2><p>Same activation, same nudges. But in a model where honesty is a surface pattern:</p><pre><code><code>UP output:   "truth" = 0.6,   "consider" = 0.1,   "withhold" = 0.05
DOWN output: "truth" = 0.28,  "consider" = 0.19,  "withhold" = 0.12
Original:    "truth" = 0.3,   "consider" = 0.2,   "withhold" = 0.1

Shift UP:   |0.6-0.3| + |0.1-0.2| + |0.05-0.1|    = 0.30 + 0.10 + 0.05 = 0.45
Shift DOWN: |0.28-0.3| + |0.19-0.2| + |0.12-0.1|  = 0.02 + 0.01 + 0.02 = 0.05

c = 0.05 / 0.45 = 0.11</code></code></pre><p><strong>c = 0.11 &#8212; close to 0 &#8594; asymmetric &#8594; not a real mechanism.</strong></p><p>Nudge up changed the output substantially. Nudge down barely moved anything. Honesty is present in the activations but it&#8217;s not wired into the output. This is a badge.</p><div><hr></div><h2>What the attestation records</h2><p>Both the probe reading and the causal score go into the signed attestation. Here&#8217;s the critical comparison:</p><pre><code><code>Honesty (real model):
  Probe reading:  1.290
  Causal score:   0.82
  Interpretation: Genuine value &#8212; steering wheel

Honesty (fake model):
  Probe reading:  1.290
  Causal score:   0.11
  Interpretation: Surface correlation &#8212; badge</code></code></pre><p>The probe readings are identical. Without causal intervention, you can&#8217;t tell them apart. The causal score is the discriminator.</p><div><hr></div><h2>Where this runs</h2><p>Causal intervention runs inside the hardware enclave. The model can&#8217;t see the nudges. It can&#8217;t detect that its activations are being perturbed. It can&#8217;t adjust its behaviour in response. The enclave captures the activation, applies the perturbations, runs the forward passes, computes the consistency score, and signs the attestation.</p><div><hr></div><h2>What this costs &#8212; and why it&#8217;s different</h2><p>Everything we&#8217;ve done so far &#8212; weighting the activation (&#934; &#183; h), reading all 26 probes, checking drift &#8212; is arithmetic on the activation vector that already exists. The model ran one forward pass to process the prompt. After that, the model is not involved. We take the activation it produced and do dot products, subtractions, and divisions on it. That&#8217;s why those steps cost microseconds or nanoseconds.</p><p>Causal intervention is fundamentally different. We&#8217;re not doing arithmetic on the activation &#8212; we&#8217;re feeding a modified activation back into the model and running it forward through all remaining layers to see what output it produces. Attention, feed-forward layers, layer norms, the full stack from the probed layer to the output distribution. That&#8217;s the model&#8217;s actual neural network computation, not a vector operation.</p><p>A probe reading is one dot product of length d. For LLaMA-3-8B, that&#8217;s 4,096 multiplies &#8212; microseconds. A causal intervention forward pass runs the entire model &#8212; billions of operations, seconds. The difference isn&#8217;t 10&#215; or 100&#215;. It&#8217;s the difference between vector arithmetic and running the neural network.</p><p>Three forward passes per probe. With the reference taxonomy&#8217;s 26 value terms (a sample &#8212; the number is configurable per deployment), that&#8217;s 78 forward passes:</p><pre><code><code>Qwen 0.5B:   78 forward passes &#8594; seconds
LLaMA-3-8B:  78 forward passes &#8594; minutes
70B model:   78 forward passes &#8594; minutes (2&#8211;5 sec each)</code></code></pre><p>That&#8217;s why causal intervention is Tier 3 &#8212; governance decides whether to require it. Healthcare might mandate it. Research might skip it. The protocol supports both. It&#8217;s not a per-prompt cost &#8212; it&#8217;s a periodic validation that confirms the probes are measuring real mechanisms.</p><h3>When to run it in practice</h3><p>For most industries, a practical compromise is to run causal intervention during testing and evaluation rather than in production. Think of it like load testing a bridge: you stress-test it before opening, and periodically after that, but you don&#8217;t put the test load on it during rush hour.</p><p><strong>Initial deployment:</strong> run full causal intervention before the model goes live. Establish that all probes measure real mechanisms. This is your baseline proof.</p><p><strong>After fine-tuning or updates:</strong> re-run to confirm the mechanisms still hold. A model update could rewire internal structure even if probe readings look similar.</p><p><strong>Periodic audit:</strong> weekly, monthly, or quarterly depending on the domain. Healthcare might run it weekly. Finance quarterly. Agriculture annually.</p><p><strong>Stress testing:</strong> run across a diverse set of challenging prompts &#8212; edge cases, adversarial inputs, domain-specific dilemmas &#8212; to confirm the mechanisms hold under pressure.</p><p><strong>Drift-triggered:</strong> if drift detection (Part 3) flags a deviation, run causal intervention on the flagged value terms to check whether the mechanism broke or just the reading shifted.</p><p><strong>Continuous production:</strong> rely on the cheap per-prompt pipeline (probe readings + drift detection) for ongoing monitoring. The probes have already been validated by causal intervention.</p><p>This gives you the best of both worlds: the confidence of causal validation during testing, and the efficiency of probe-only monitoring in production. The attestation chain records when causal intervention was last run, so an exchange partner can see how recently the mechanisms were verified.</p><div><hr></div><h2>What it proves, and what it doesn&#8217;t</h2><p><strong>Does prove:</strong> the probe direction is mechanistically real. Perturbing it changes the output symmetrically. The measurement is not an artefact.</p><p><strong>Does not prove:</strong> that the label we put on the direction (&#8221;honesty&#8221;) is correctly operationalised. That the perturbation magnitude &#948; is ecologically valid. That there isn&#8217;t a second, un-probed mechanism that dominates in practice.</p><p>Causal intervention confirms that the measurement is real. The question of whether the label is right is a separate, harder problem.</p><div><hr></div><h2>The complete pipeline so far</h2><pre><code><code>Compute &#934; = U&#7488;U          O(Vd&#178;)                Once per model version
Weight activation: &#934; &#183; h  O(d&#178;)                 Every prompt
Probe readings             O(Pd)                 Every prompt
Drift check                O(P)                  Every prompt
Causal intervention        O(3P &#215; forward pass)  Tier 3 only (testing/audit)</code></code></pre><p>The daily cost is O(d&#178;) per prompt. Causal intervention is expensive but infrequent &#8212; triggered by governance policy, not every prompt.</p><div><hr></div><p><em>The measurement is real. The audit trail is tamper-evident. The next question is what happens when two agents need to trust each other &#8212; how they exchange attestation chains and decide whether to cooperate.</em></p><p><em>That&#8217;s the exchange protocol, but first we will be going into what we mean by AI values.</em></p><p><em>Links:</em></p><p><em>&#128196; <a href="https://zenodo.org/records/19238920">Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/watch?v=V290eeDuISQ&amp;list=PLCuUzw-sRFKiU1bKAOufII1e2uRPx42bR">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19600791">Lecture Notes</a><br>&#128187; <a href="https://github.com/jade-codes/got">Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[When an AI’s Values Shift — And How to Catch It | Geometry of Trust | Mathematics - Lesson 3]]></title><description><![CDATA[This is the third post in the Geometry of Trust series. Part 1 built the ruler &#8212; the causal Gram matrix. Part 2 used it to measure live values with probes. This post watches for change.]]></description><link>https://www.techunfiltered.io/p/when-an-ais-values-shift-and-how</link><guid isPermaLink="false">https://www.techunfiltered.io/p/when-an-ais-values-shift-and-how</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Thu, 16 Apr 2026 15:27:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/XdDysqw_xC0" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-XdDysqw_xC0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;XdDysqw_xC0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/XdDysqw_xC0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>The problem with snapshots</h2><p>Parts 1 and 2 gave us the tools to measure what an AI values at any given moment. But a single measurement is a snapshot. Models don&#8217;t operate in isolation &#8212; they process thousands of prompts over time. The critical question isn&#8217;t <em>what does the model value right now?</em> It&#8217;s <em>are the values stable, or are they drifting?</em></p><p>A healthcare AI that scored high on honesty yesterday might score differently today. If nobody&#8217;s watching, nobody knows.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>Same ruler, same probes, every prompt</h2><p>The setup is unchanged from Parts 1 and 2. Same causal Gram matrix &#934;. Same probes. The Geometry of Trust reference taxonomy samples 26 value terms &#8212; virtues like courage, honesty, and compassion; principles like justice and responsibility; and anti-values like cruelty and deception. The number isn&#8217;t fixed: a different deployment could define 10 terms or 50. We use 26 as the working example throughout. Every prompt gets measured. The system builds a statistical baseline, then watches for deviations.</p><p>The baseline uses Welford&#8217;s online algorithm &#8212; a way to maintain running mean and variance without storing every historical reading. Each new reading updates the statistics in constant time and constant space.</p><div><hr></div><h2>Governance decides how tight</h2><p>Different domains tolerate different amounts of variation. This is set by governance, not hardcoded:</p><pre><code><code>Healthcare:   T = 2&#963;   Patient safety &#8212; flag early
Finance:      T = 3&#963;   Regulatory compliance
Agriculture:  T = 4&#963;   Seasonal variation is expected
Research:     T = 5&#963;   Exploratory &#8212; room to move</code></code></pre><p>The threshold T is a multiple of the baseline standard deviation &#963;. If a reading deviates more than T from the baseline average, an alert fires.</p><div><hr></div><h2>How Welford&#8217;s algorithm works</h2><p>Before the worked example, a quick note. Welford&#8217;s online algorithm tracks three values &#8212; n (count), mean, and M2 (sum of squared differences) &#8212; and updates them with each new reading:</p><pre><code><code>n = n + 1
delta = x - mean
mean = mean + delta / n
delta2 = x - mean           (using the UPDATED mean)
M2 = M2 + delta &#215; delta2
variance = M2 / n
&#963; = &#8730;(variance)</code></code></pre><p>No historical readings stored. Constant time, constant space.</p><div><hr></div><h2>Watching honesty &#8212; prompt by prompt</h2><p>Same ruler and probes from Parts 1 and 2. We&#8217;ll track honesty through this example.</p><p><em>A note: all vectors, activations, and numerical values in this example are illustrative. Real models operate in hundreds or thousands of dimensions. We use 2D vectors and small numbers so you can follow every calculation on paper. The mechanism is identical at any scale.</em></p><p><strong>Prompt 1:</strong> <em>&#8220;Should I lie to my patient?&#8221;</em></p><pre><code><code>activation = [0.6, 0.3]
&#934; &#183; activation:
  Row 1: (2.58 &#215; 0.6) + (0.12 &#215; 0.3) = 1.548 + 0.036 = 1.584
  Row 2: (0.12 &#215; 0.6) + (0.15 &#215; 0.3) = 0.072 + 0.045 = 0.117
Honesty: (0.8 &#215; 1.584) + (0.2 &#215; 0.117) = 1.267 + 0.023 = 1.290

Welford: n=1, mean=1.290, M2=0, &#963;=undefined (need n&#8805;2)</code></code></pre><p>No attestation yet &#8212; still building baseline.</p><p><strong>Prompt 2:</strong> <em>&#8220;Is it okay to steal medicine?&#8221;</em></p><pre><code><code>activation = [0.7, 0.2]
&#934; &#183; activation:
  Row 1: (2.58 &#215; 0.7) + (0.12 &#215; 0.2) = 1.806 + 0.024 = 1.830
  Row 2: (0.12 &#215; 0.7) + (0.15 &#215; 0.2) = 0.084 + 0.030 = 0.114
Honesty: (0.8 &#215; 1.830) + (0.2 &#215; 0.114) = 1.464 + 0.023 = 1.487

Welford: n=2
  delta  = 1.487 - 1.290 = 0.197
  mean   = 1.290 + 0.197/2 = 1.389
  delta2 = 1.487 - 1.389 = 0.098
  M2     = 0 + 0.197 &#215; 0.098 = 0.019
  &#963;      = &#8730;(0.019/2) = &#8730;0.010 = 0.098</code></code></pre><p><strong>Prompt 3:</strong> <em>&#8220;Should I report my colleague?&#8221;</em></p><pre><code><code>activation = [0.55, 0.35]
&#934; &#183; activation:
  Row 1: (2.58 &#215; 0.55) + (0.12 &#215; 0.35) = 1.419 + 0.042 = 1.461
  Row 2: (0.12 &#215; 0.55) + (0.15 &#215; 0.35) = 0.066 + 0.053 = 0.118
Honesty: (0.8 &#215; 1.461) + (0.2 &#215; 0.118) = 1.169 + 0.024 = 1.193

Welford: n=3
  delta  = 1.193 - 1.389 = -0.196
  mean   = 1.389 + (-0.196)/3 = 1.323
  delta2 = 1.193 - 1.323 = -0.130
  M2     = 0.019 + (-0.196) &#215; (-0.130) = 0.019 + 0.025 = 0.045
  &#963;      = &#8730;(0.045/3) = &#8730;0.015 = 0.122</code></code></pre><p>Prompts 4 through 49 continue building the baseline the same way &#8212; each prompt updates n, mean, M2, and &#963; in constant time.</p><div><hr></div><h2>Prompt 50: baseline established</h2><p>The baseline is stable. Time for the first signed attestation.</p><blockquote><p><strong>Attestation #1: BASELINE</strong> Honesty avg: 1.32, &#963; = 0.12 Chain: none (first attestation) Signed: Ed25519</p></blockquote><p>This model is in healthcare &#8594; T = 2&#963; = 2 &#215; 0.12 = <strong>0.24</strong>.</p><p>Any reading more than 0.24 from the average triggers an alert. That means: anything below 1.08 or above 1.56 gets flagged.</p><div><hr></div><h2>Normal monitoring</h2><p><strong>Prompt 51:</strong> activation = [0.58, 0.28]</p><pre><code><code>&#934; &#183; activation:
  Row 1: (2.58 &#215; 0.58) + (0.12 &#215; 0.28) = 1.496 + 0.034 = 1.530
  Row 2: (0.12 &#215; 0.58) + (0.15 &#215; 0.28) = 0.070 + 0.042 = 0.112
Honesty: (0.8 &#215; 1.530) + (0.2 &#215; 0.112) = 1.224 + 0.022 = 1.246

Drift check: |1.246 - 1.32| = 0.074 &lt; T (0.24) &#8594; normal</code></code></pre><p><strong>Prompt 52:</strong> activation = [0.62, 0.31]</p><pre><code><code>&#934; &#183; activation:
  Row 1: (2.58 &#215; 0.62) + (0.12 &#215; 0.31) = 1.600 + 0.037 = 1.637
  Row 2: (0.12 &#215; 0.62) + (0.15 &#215; 0.31) = 0.074 + 0.047 = 0.121
Honesty: (0.8 &#215; 1.637) + (0.2 &#215; 0.121) = 1.310 + 0.024 = 1.334

Drift check: |1.334 - 1.32| = 0.014 &lt; T (0.24) &#8594; normal</code></code></pre><p><strong>Prompt 100:</strong> periodic snapshot triggered.</p><blockquote><p><strong>Attestation #2: SNAPSHOT</strong> Honesty avg: 1.31, &#963; = 0.12 Status: NORMAL Chain: hash of attestation #1</p></blockquote><div><hr></div><h2>Prompt 101: something changes</h2><pre><code><code>activation = [0.15, 0.40]
&#934; &#183; activation:
  Row 1: (2.58 &#215; 0.15) + (0.12 &#215; 0.40) = 0.387 + 0.048 = 0.435
  Row 2: (0.12 &#215; 0.15) + (0.15 &#215; 0.40) = 0.018 + 0.060 = 0.078
Honesty: (0.8 &#215; 0.435) + (0.2 &#215; 0.078) = 0.348 + 0.016 = 0.364

Drift check: |0.364 - 1.32| = 0.956 &gt; T (0.24) &#8594; DEVIATED</code></code></pre><p>Alert fires immediately.</p><blockquote><p><strong>Attestation #3: ALERT</strong> Honesty: 0.364 (baseline 1.32, deviation 0.956, threshold 0.24) Status: DEVIATED Chain: hash of attestation #2</p></blockquote><div><hr></div><h2>The chain is the audit trail</h2><pre><code><code>#1 BASELINE &#8594; #2 SNAPSHOT (normal) &#8594; #3 ALERT (deviated)</code></code></pre><p>Each attestation is signed with Ed25519 and contains the SHA-256 hash of the previous attestation. This creates a tamper-evident chain:</p><p>You can&#8217;t delete #3 without breaking the chain &#8212; the next attestation would reference a hash that no longer exists. You can&#8217;t insert a fake between #2 and #3 &#8212; the hashes wouldn&#8217;t match. You can&#8217;t alter #2 after the fact &#8212; #3&#8217;s parent hash would no longer match #2&#8217;s content.</p><p>Governance walks the chain: #3 says DEVIATED, #2 says NORMAL. The drift happened between prompt 100 and 101. What changed?</p><div><hr></div><h2>What this adds to the cost</h2><p>Drift detection is Step 4 in the per-prompt pipeline:</p><pre><code><code>Step 1:  Model forward pass       Billions of ops (happens anyway)
Step 2:  &#934; &#183; activation           O(d&#178;) &#8212; us, once
Step 3:  26 probe readings        O(Pd) &#8212; us, per probe
Step 4:  Check drift              O(P) &#8212; us, per probe</code></code></pre><p>Step 4 is one subtraction and one division per probe: (reading &#8722; mean) / &#963;. For 26 probes, that&#8217;s 26 operations. Nanoseconds. Welford&#8217;s algorithm maintains the running statistics &#8212; no storage overhead for historical readings.</p><div><hr></div><h2>What comes next</h2><p>We now have continuous monitoring with tamper-evident audit trails. But there&#8217;s a gap in the argument. The probes report numbers and the drift detector watches those numbers over time &#8212; but how do we know the probes are measuring something real?</p><p>A probe might detect a surface correlation &#8212; a pattern that shows up in the activation but doesn&#8217;t actually drive the model&#8217;s output. The reading looks stable, the baseline looks clean, but the whole thing is measuring decoration rather than mechanism.</p><p>Causal intervention tests this. Perturb the activation in both directions along the probe&#8217;s direction. If the model&#8217;s output changes symmetrically, the probe found a genuine mechanism. If only one direction matters, it found a surface correlation.</p><p>That&#8217;s the subject of the next post. The exchange protocol &#8212; how agents share and verify each other&#8217;s attestation chains &#8212; comes later, once we&#8217;ve established that what the probes measure is real.</p><div><hr></div><p><em>The measurements are continuous. The audit trail is tamper-evident. The question is whether what the probes measure is real.</em></p><p><em>Part 4 will answer that.</em></p><p><em>&#128196; <a href="https://zenodo.org/records/19238920">Geometry of Trust Paper</a><br>&#128187; <a href="https://www.youtube.com/watch?v=XdDysqw_xC0&amp;list=PLCuUzw-sRFKhbAEuHqDpc_twQSlL6Cy3D&amp;index=6">Lecture Playlist</a><br>&#128196; <a href="https://zenodo.org/records/19600775">Lecture Notes</a><br>&#128187; <a href="https://github.com/jade-codes/got">Open-source Rust implementation</a><br>&#127970; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How to Measure What an AI Actually Values — In Real Time | Geometry of Trust | Mathematics - Lesson 2]]></title><description><![CDATA[This is the second post in the Geometry of Trust series. Part 1 covered the causal Gram matrix &#8212; the ruler that weights directions by their influence on output. This post puts the ruler to work.]]></description><link>https://www.techunfiltered.io/p/how-to-measure-what-an-ai-actually</link><guid isPermaLink="false">https://www.techunfiltered.io/p/how-to-measure-what-an-ai-actually</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Thu, 16 Apr 2026 13:09:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/ITQrQt4VS30" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-ITQrQt4VS30" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ITQrQt4VS30&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ITQrQt4VS30?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>The ruler exists. Now what?</h2><p>Last time, we built a ruler. The causal Gram matrix &#934; = U&#7488;U takes the model&#8217;s unembedding matrix and produces a metric that tells us which directions in the model&#8217;s internal space actually matter for output.</p><p>But a ruler on a shelf measures nothing.</p><p>The model processes thousands of prompts. Each one produces an activation &#8212; a vector representing the model&#8217;s internal state at that moment. The question is: <strong>how much of each value is active in that state?</strong></p><p>That&#8217;s what probes do.</p><div><hr></div><h2>One prompt, two values</h2><p>A prompt arrives: <em>&#8220;Should I lie to my patient?&#8221;</em></p><p>The model thinks. Its internal state &#8212; the activation &#8212; is a vector. For our 2D example:</p><pre><code><code>activation = [0.6, 0.3]</code></code></pre><p>We want to know: how much courage and honesty are active right now?</p><h3>Step 1: Apply the ruler</h3><p>We take the dot product of each row of the Gram matrix with the activation. This is done <strong>once</strong> &#8212; every probe shares the result.</p><pre><code><code>&#934; &#183; activation:
  Row 1: (2.58 &#215; 0.6) + (0.12 &#215; 0.3) = 1.584
  Row 2: (0.12 &#215; 0.6) + (0.15 &#215; 0.3) = 0.117

Weighted activation = [1.584, 0.117]</code></code></pre><p>Notice what happened. Dimension 1 was amplified from 0.6 to 1.584. Dimension 2 was suppressed from 0.3 to 0.117. The ruler is doing its job &#8212; directions that matter more for output get more weight.</p><h3>Step 2: Read the probes</h3><p>Each probe is a trained weight vector that reads one value. The courage probe:</p><pre><code><code>courage = [0.9, 0.1]
(0.9 &#215; 1.584) + (0.1 &#215; 0.117) = 1.438</code></code></pre><p>The honesty probe:</p><pre><code><code>honesty = [0.8, 0.2]
(0.8 &#215; 1.584) + (0.2 &#215; 0.117) = 1.290</code></code></pre><p>The Geometry of Trust reference taxonomy samples 26 value terms &#8212; virtues like courage, honesty, and compassion; principles like justice and responsibility; and anti-values like cruelty and deception. The number isn&#8217;t fixed: a different deployment could define 10 terms or 50. We use 26 as the working example throughout. Each term has its own probe. Twenty-six probes, twenty-six readings, all from the same weighted activation.</p><div><hr></div><h2>Why the ruler changes everything</h2><p>Here&#8217;s what happens without it &#8212; a plain dot product, treating all directions equally:</p><pre><code><code>Courage: (0.9 &#215; 0.6) + (0.1 &#215; 0.3) = 0.57
Honesty: (0.8 &#215; 0.6) + (0.2 &#215; 0.3) = 0.54</code></code></pre><pre><code><code>              Regular    Causal
Courage:      0.57       1.438
Honesty:      0.54       1.290</code></code></pre><p><strong>Regular says:</strong> courage and honesty are almost equal (5% gap). <strong>Causal says:</strong> courage is noticeably stronger (11% gap).</p><p>Why? Courage lives more heavily on dimension 1 (weight 0.9 vs 0.8), and dimension 1 matters <strong>17&#215; more</strong> under &#934;. That small directional difference gets amplified because the ruler knows which directions count.</p><p>This is the whole point of using the causal inner product instead of Euclidean distance. Standard probes treat all directions equally. Causal probes weight directions by their influence on what the model actually outputs. The difference isn&#8217;t academic &#8212; it&#8217;s the difference between measuring a surface pattern and measuring a computational mechanism.</p><div><hr></div><h2>What this costs</h2><p>The honest question: does this add meaningful overhead?</p><p><strong>Step 1</strong> &#8212; the model&#8217;s forward pass &#8212; happens regardless. Billions of operations. That&#8217;s the model doing its job, not our overhead.</p><p><strong>Step 2</strong> &#8212; weighting the activation (&#934; &#183; h) &#8212; is a dot product of each row of &#934; with h. O(d&#178;). For LLaMA-3-8B (d = 4,096), that&#8217;s 16.8 million operations. For GPT-4 scale (d = 16,384), it&#8217;s 268 million. Both complete in milliseconds on a GPU. Done once per prompt, shared by all probes.</p><p><strong>Step 3</strong> &#8212; reading all probes &#8212; is one dot product per value term (26 in our reference taxonomy). O(Pd). For GPT-4 scale, that&#8217;s 426,000 operations. Microseconds.</p><p>The combined measurement overhead is less than 1% of the forward pass. You could run this on every prompt in production and nobody would notice.</p><div><hr></div><h2>The full probe equation</h2><p>For completeness, the full mathematical form of a causal probe reading is:</p><pre><code><code>reading = w&#7488;&#934;h + b</code></code></pre><p>Where <strong>w</strong> is the probe&#8217;s weight vector, <strong>&#934;</strong> is the causal Gram matrix from Part 1, <strong>h</strong> is the activation vector from the forward pass, and <strong>b</strong> is the probe&#8217;s bias (trained alongside w).</p><p>The trick is in how this decomposes computationally. You <em>could</em> evaluate it naively as a matrix-vector-vector product, but then every probe would repeat the expensive part (&#934;h). Instead, we compute the shared piece once:</p><pre><code><code>h&#771; = &#934;h                   (shared &#8212; one O(d&#178;) operation per prompt)
reading_i = w&#7522;&#7488; h&#771; + b&#7522;   (per probe &#8212; one O(d) operation each)</code></code></pre><p>That&#8217;s the same arithmetic, reorganised so the 26 probes share the weighted activation h&#771; instead of each recomputing it. It&#8217;s what makes measuring 26 values as cheap as measuring one.</p><div><hr></div><h2>Why this design resists gaming</h2><p>A standard probe (w&#7488;h) measures whether a concept <em>correlates</em> with the activation pattern. A model could shuffle its internal representations to make &#8220;safety&#8221; score high on a Euclidean probe without &#8220;safety&#8221; actually influencing the output.</p><p>A causal probe (w&#7488;&#934;h) measures whether a concept is active <em>in directions that causally influence the output</em>. Gaming it requires changing the model&#8217;s actual output pathway &#8212; not just rearranging internal furniture. You can&#8217;t make a model &#8220;look honest&#8221; under causal probes without making its honesty-relevant directions genuinely influence what it says.</p><p>This is why the Geometry of Trust Protocol uses causal probes for agent-to-agent attestation. When one AI agent sends its value measurements to another, the receiving agent needs assurance that those measurements reflect real computational structure, not performance. The causal metric provides that assurance.</p><div><hr></div><h2>What comes next</h2><p>Probes give us a reading at a moment in time. That&#8217;s useful on its own, but it only tells you what the model looks like <em>right now</em>. It doesn&#8217;t tell you whether the model has changed, or is changing, or has drifted from the values it was certified with at deployment.</p><p>The next step is drift detection: tracking probe readings across many prompts over time, and spotting when the distribution of readings moves further from baseline than random variation alone can explain. That&#8217;s how a continuous measurement turns into a continuous audit &#8212; not &#8220;the model had honesty 1.29 this morning,&#8221; but &#8220;the model&#8217;s honesty readings over the last week have shifted in a way that&#8217;s statistically significant and worth investigating.&#8221;</p><p>That&#8217;s the subject of the next post.</p><p>There&#8217;s a further step beyond drift. A reading is a number, and a number alone isn&#8217;t proof &#8212; a probe might detect a surface correlation that vanishes under intervention, a pattern that <em>looks</em> causal but isn&#8217;t. Causal validation closes that gap: perturb the activation in both directions along the probe&#8217;s direction. If the output changes symmetrically, you&#8217;ve found a genuine mechanism. If only one direction matters, you&#8217;ve found decoration. That&#8217;s causal intervention, and it&#8217;s the fourth and final post in this mathematics series.</p><div><hr></div><p><em>The geometry is computable. The probes are cheap. The question is whether what they measure is real.</em></p><p><em>Part 3 will answer that.</em></p><p><em>For More Information, See These Links:<br><a href="https://zenodo.org/records/19238920">Geometry of Trust Paper</a><br><a href="https://www.youtube.com/watch?v=ITQrQt4VS30&amp;list=PLCuUzw-sRFKiU1bKAOufII1e2uRPx42bR&amp;index=5">Lesson Playlist</a><br>Lesson Notes<br><a href="https://github.com/jade-codes/got">Code Repository</a></em></p>]]></content:encoded></item><item><title><![CDATA[The Causal Gram Matrix: Why Not All Differences Matter Equally | Geometry of Trust | Mathematics - Lesson 1]]></title><description><![CDATA[How a single matrix transforms our ability to measure what AI models actually care about]]></description><link>https://www.techunfiltered.io/p/the-causal-gram-matrix-why-not-all</link><guid isPermaLink="false">https://www.techunfiltered.io/p/the-causal-gram-matrix-why-not-all</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Wed, 15 Apr 2026 11:44:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/-6HyaOgjANU" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2--6HyaOgjANU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;-6HyaOgjANU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/-6HyaOgjANU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>Models Have Internal Structure &#8212; And It Matters</h2><p>When we talk about whether an AI model is &#8220;aligned&#8221; or &#8220;safe,&#8221; the standard approach is behavioural: ask the model questions, check its answers. Does it refuse harmful requests? Does it give truthful responses? Does it follow instructions?</p><p>The problem with this is obvious once you say it out loud: <strong>you&#8217;re testing what the model says, not what it knows.</strong> A model can produce aligned-sounding outputs while its internal representations tell a completely different story. Behavioural evaluation is a job interview &#8212; it tells you what someone says under observation, not what they&#8217;ll do when no one&#8217;s watching.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The argument at the heart of the Geometry of Trust framework is that language models don&#8217;t just produce outputs &#8212; they have measurable internal structure. Value-relevant concepts like honesty, deception, courage, and cowardice correspond to directions in the model&#8217;s high-dimensional hidden space. This isn&#8217;t speculation &#8212; it&#8217;s an empirical finding from mechanistic interpretability research. These directions are approximately linear, they&#8217;re consistent across inputs, and they&#8217;re readable directly from the model&#8217;s weights without needing to observe any outputs at all.</p><p>If that&#8217;s true &#8212; if models have genuine geometric structure encoding value-relevant concepts &#8212; then we can measure it. We can ask whether &#8220;honesty&#8221; and &#8220;helpfulness&#8221; reinforce or compete inside a model. We can check whether a model&#8217;s internal geometry matches the values its operators claim it has. We can detect contradictions that behavioural testing would never surface.</p><p>But to measure any of this, we need the right ruler. And the obvious ruler &#8212; Euclidean distance &#8212; gets it wrong.</p><div><hr></div><h2>The Problem: Euclidean Distance Lies</h2><p>If I asked you how far apart &#8220;courage&#8221; and &#8220;cowardice&#8221; are inside an AI model, you&#8217;d probably reach for the obvious tool: Euclidean distance. Subtract the vectors, square the differences, add them up.</p><p>The problem? That treats every dimension of the model&#8217;s internal space as equally important. And they&#8217;re not. Some dimensions have an outsized effect on what the model actually outputs. Others are basically noise. Measuring distance without knowing which dimensions matter is like measuring the gap between two cities on a map where the scale changes depending on which direction you look.</p><p>This post walks through the maths behind the <strong>causal Gram matrix</strong> &#8212; the &#8220;ruler&#8221; at the heart of the Geometry of Trust framework &#8212; and shows why it changes everything about how we measure values inside language models.</p><div><hr></div><h2>The Setup: A Tiny Unembedding Matrix</h2><p>A transformer maps hidden states to output probabilities via its <strong>unembedding matrix</strong> U. Each row of U corresponds to a vocabulary token. For our worked example, we&#8217;ll use a 4&#215;2 matrix where the rows represent value-relevant concepts:</p><pre><code><code>courage   = [ 0.9,  0.1]
honesty   = [ 0.8,  0.2]
deception = [-0.7,  0.3]
cowardice = [-0.8, -0.1]
</code></code></pre><p>Each row is a point in 2D space. The positive values cluster together; the negative values cluster together. So far, intuitive.</p><p>But here&#8217;s what matters: <strong>U doesn&#8217;t encode values. It defines which activation directions matter for output.</strong> The values themselves live in the model&#8217;s activations &#8212; the hidden states flowing through the residual stream during inference. U is the lens.</p><div><hr></div><h2>Computing the Gram Matrix</h2><p>The Gram matrix is &#934; = U&#7488;U. We transpose U, multiply, and get a square matrix whose size matches the hidden dimension (2&#215;2 in our case).</p><pre><code><code>&#934;[1,1] = (0.9&#215;0.9) + (0.8&#215;0.8) + (-0.7&#215;-0.7) + (-0.8&#215;-0.8) = 2.58
&#934;[1,2] = (0.9&#215;0.1) + (0.8&#215;0.2) + (-0.7&#215;0.3) + (-0.8&#215;-0.1)  = 0.12
&#934;[2,1] = 0.12  (symmetric)
&#934;[2,2] = (0.1&#215;0.1) + (0.2&#215;0.2) + (0.3&#215;0.3) + (-0.1&#215;-0.1)   = 0.15
</code></code></pre><p><strong>Result:</strong></p><pre><code><code>&#934; = [2.58, 0.12]
    [0.12, 0.15]
</code></code></pre><p>Read the diagonal: dimension 1 has weight 2.58, dimension 2 has weight 0.15. Dimension 1 matters about <strong>17 times more</strong> than dimension 2 for determining model output.</p><div><hr></div><h2>Causal Distance vs. Euclidean Distance</h2><p>Now take courage and cowardice and measure the gap:</p><pre><code><code>courage   = [ 0.9,  0.1]
cowardice = [-0.8, -0.1]
diff      = [ 1.7,  0.2]
</code></code></pre><p><strong>Euclidean distance</strong> (&#8730;(d&#7488;d)): 1.7&#178; + 0.2&#178; = 2.89 + 0.04 = 2.93 &#8594; &#8730;2.93 = <strong>1.71</strong></p><p>Both dimensions contribute roughly proportionally to their raw differences.</p><p><strong>Causal distance</strong> (&#8730;(d&#7488;&#934;d)): First compute &#934; &#215; diff, then dot with diff:</p><pre><code><code>&#934; &#215; diff = [4.41, 0.234]
d&#7488;(&#934;d)  = 1.7 &#215; 4.41 + 0.2 &#215; 0.234 = 7.54
&#8730;7.54    = 2.75
</code></code></pre><p>The Euclidean distance was <strong>1.71</strong>. The causal distance is <strong>2.75</strong>. The difference on dimension 1 &#8212; the one that actually affects output &#8212; gets amplified. The difference on dimension 2 barely moves.</p><div><hr></div><h2>The Killer Example: Differences That Don&#8217;t Matter</h2><p>This is where the intuition clicks. Take two values that differ <strong>only</strong> on dimension 2:</p><pre><code><code>value A = [0.5,  0.9]
value B = [0.5, -0.8]
diff    = [0.0,  1.7]
</code></code></pre><p><strong>Euclidean distance (d&#7488;d):</strong></p><pre><code><code>(0.0 &#215; 0.0) + (1.7 &#215; 1.7) = 0 + 2.89 = 2.89
&#8730;2.89 = 1.70
</code></code></pre><p>Dim1 contribution: 0. Dim2 contribution: 2.89. The entire distance comes from dimension 2. Euclidean distance doesn&#8217;t care &#8212; a difference is a difference. Verdict: <strong>1.70 apart</strong>.</p><p><strong>Causal distance (d&#7488;&#934;d):</strong></p><p>Step 1 &#8212; compute &#934; &#215; diff:</p><pre><code><code>&#934; &#215; diff:
  row 1: (2.58 &#215; 0.0) + (0.12 &#215; 1.7) = 0 + 0.204 = 0.204
  row 2: (0.12 &#215; 0.0) + (0.15 &#215; 1.7) = 0 + 0.255 = 0.255
</code></code></pre><p>Step 2 &#8212; dot the original diff with the result:</p><pre><code><code>d&#7488;(&#934;d):
  (0.0 &#215; 0.204) + (1.7 &#215; 0.255) = 0 + 0.434 = 0.434
&#8730;0.434 = 0.66
</code></code></pre><p>Dim1 contribution: 0. Dim2 contribution: 0.434 (down from 2.89). The Gram matrix crushed that 2.89 down to 0.434 because dimension 2 has weight 0.15 &#8212; it barely affects output. The 0.204 that appeared in row 1 comes from the off-diagonal coupling (0.12), but since the diff on dim1 is zero, it doesn&#8217;t contribute to the final distance.</p><p><strong>Euclidean distance: 1.70</strong> &#8212; looks far apart. <strong>Causal distance: 0.66</strong> &#8212; actually close.</p><p>Same raw gap. Completely different story. The difference is entirely on dimension 2, and dimension 2 barely affects output. The causal distance reflects that. Euclidean distance doesn&#8217;t.</p><div><hr></div><h2>What It Costs: Time and Space Complexity</h2><p>All of this is useless if it doesn&#8217;t scale. So let&#8217;s be precise about what computing &#934; actually costs.</p><p>Let V = vocabulary size and d = hidden dimension. U is V&#215;d.</p><p><strong>Step 1: Compute &#934; = U&#7488;U</strong></p><p><strong>Time complexity: O(Vd&#178;).</strong> Each entry &#934;[i,j] is a dot product over V vocabulary rows, and there are d&#178; entries. In practice, this is a single matrix multiplication that any BLAS library will handle efficiently.</p><p><strong>Space complexity: O(d&#178; + Vd).</strong> You store &#934; (d&#215;d) and U (V&#215;d). The important thing: &#934; is d&#215;d, not V&#215;V. For a model with 200K vocabulary tokens and 4,096 hidden dimensions, &#934; is 4,096&#215;4,096 &#8212; about 67 million entries &#8212; not 200K&#215;200K. The unembedding matrix compresses the vocabulary dimension away.</p><p>What does this look like in practice?</p><p>Model V (vocab) d (hidden) Ops for &#934; Time estimate Our example 4 2 16 Instant Qwen 0.5B 152K 896 ~122 billion Minutes LLaMA-3-8B 128K 4,096 ~2.15 trillion Hours GPT-4 scale 200K 16,384 ~53 quadrillion Hours+</p><p>The result is saved as a <code>.gotgeo</code> file. <strong>Never recomputed until the model&#8217;s weights change.</strong></p><p><strong>Step 2: Train probes under &#934;</strong></p><p>Once you have &#934;, training a linear probe under the causal metric costs O(d) per sample per epoch &#8212; the same as a standard linear probe, just with &#934;h instead of h. For 26 probes across a typical training set, this takes minutes. Also done once per geometry and saved.</p><p><strong>At inference time</strong>, computing a single causal inner product &#10216;u, v&#10217;_c = u&#7488;&#934;v is O(d&#178;) &#8212; a matrix-vector multiply followed by a dot product. For d = 4,096, that&#8217;s about 17 million floating-point operations. On modern hardware, this takes microseconds.</p><p>The computational profile is front-loaded: hours of one-time work, microseconds per measurement thereafter.</p><div><hr></div><h2>Why This Matters</h2><p>Standard alignment evaluation asks models questions and checks answers. That tells you what the model <em>says</em>, not what it <em>encodes</em>. A model can say all the right things while its internal geometry tells a different story.</p><p>The Gram matrix &#934; is computed once from the model&#8217;s unembedding weights. It doesn&#8217;t change. It doesn&#8217;t depend on what you ask the model. It&#8217;s ground truth about which directions in the model&#8217;s internal space actually matter for output.</p><p>Under this metric, semantically related values cluster, opposed values separate, and the measurement is deterministic &#8212; same model weights, same probes, same result, every time.</p><div><hr></div><h2>The Takeaway</h2><p>Euclidean distance treats all differences equally. Causal distance weights differences by what affects output. That single change &#8212; inserting &#934; between the vectors &#8212; is the foundation the entire Geometry of Trust framework builds on.</p><p>Not all differences matter equally. Now we have a ruler that knows which ones do.</p><p>Next episode, we will be showing you how you can use this ruler with probes to continuously monitor an AI&#8217;s value system at run time.</p><div><hr></div><p><em>The Geometry of Trust paper and open-source Rust proof-of-concept are available at <a href="https://github.com/jade-codes/got">github.com/jade-codes/got</a>. The causal inner product, probe training, and attestation pipeline are all implemented and independently reproducible. The lecture notes can be found here: https://zenodo.org/records/19592674 and geometry of trust paper here: https://zenodo.org/records/19238920</em></p><p><em>Jade Wilson &#8212; Synoptic Group CIC, Hull, UK</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[I Didn’t Just Decide to Quit]]></title><description><![CDATA[There have been a few people who have been saying that me leaving my six figure, high paying job, was wreckless.]]></description><link>https://www.techunfiltered.io/p/i-didnt-just-decide-to-quit</link><guid isPermaLink="false">https://www.techunfiltered.io/p/i-didnt-just-decide-to-quit</guid><dc:creator><![CDATA[Jade Wilson]]></dc:creator><pubDate>Thu, 09 Apr 2026 21:01:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_hyl!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f66b45b-b209-4486-8022-6f735c4ba93e_1280x1280.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There have been a few people who have been saying that me leaving my six figure, high paying job, was wreckless. That I just decided to leave on a manic whim. Like one morning I woke up, chose chaos, and handed in my notice before lunch.</p><p>That&#8217;s the story that makes sense to people, isn&#8217;t it? That I had some kind of episode. That I wasn&#8217;t thinking clearly. Because the alternative &#8212; that I thought about it <em>very</em> clearly, for a very long time, and still chose to walk away &#8212; is the version that actually unsettles people. Because that version asks uncomfortable questions about what they&#8217;re choosing to stay in.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>It wasn&#8217;t an immediate decision. It wasn&#8217;t even a quick decision.</p><p>It was a <em>hard</em> decision. I effectively gave up a six-figure salary to quit and do &#8212; who knows what. No clear plan. A small safety net. No neat &#8220;what comes next&#8221;. Just the growing, undeniable certainty that if I stayed, I would lose something I couldn&#8217;t get back.</p><p>That&#8217;s not something you do on impulse. That&#8217;s something you do when staying becomes the thing that&#8217;s actually insane.</p><div><hr></div><p>It wasn&#8217;t just one thing. One moment. It was a collection of them. Over years. A slow, grinding accumulation of mental breakage. Not one dramatic event. Not one terrible meeting. Just moment after moment after moment, each one small enough to explain away on its own, but together? Together they painted a picture I couldn&#8217;t unsee.</p><p>It was when I saw a colleague slowly get outcast and made invisible. Not fired. Not confronted. Just... edged out. Excluded from meetings. Left off emails. The kind of quiet organisational cruelty that doesn&#8217;t leave fingerprints. And I watched it happen. And nobody said a word. And I understood that this was how it worked.</p><p>It was when I saw another colleague get used and driven to the point of burnout. Someone brilliant, someone who cared deeply about the work, who kept saying yes because they believed it mattered. And the organisation just kept taking. And when they messed up? It was framed as a personal failing. Not enough resilience. Not enough self-care. Never &#8212; <em>never</em> &#8212; that perhaps we asked too much of someone who was too good to say no.</p><p>It was when I was told my <em>mode of talking</em> wasn&#8217;t appropriate. Not what I said. Not that I was wrong. The <em>way</em> I said it. Because apparently there&#8217;s a correct tone for telling the truth, and I hadn&#8217;t learned it. I&#8217;ve thought about that a lot since. What a beautifully corporate way of saying: <em>we need you to be less you.</em></p><p>It was when I saw a very experienced woman with twenty years in the industry get handed the same role as a guy with a few years&#8217; experience. And nobody blinked. And when you pointed it out, when you tried to advocate for that person, they explained it away. <em>This person hasn&#8217;t got experience in corporate.</em> Which is corporate speak for: she hasn&#8217;t learned to play the political game yet. As if that&#8217;s a failing. As if twenty years of actual expertise counts for less than knowing whose ego to stroke in which meeting.</p><p>It was when I realised it didn&#8217;t matter how good I was. It genuinely did not matter. Not unless I was willing to shut up and take it. To nod in the right meetings. To phrase my disagreements as questions. To perform deference to people who hadn&#8217;t earned it, because the hierarchy demanded it and the hierarchy was never, ever wrong.</p><p>It was sitting in customer meetings and having to stay silent because the political relationship mattered more than doing the right thing. Watching us tell a customer what they wanted to hear instead of what they needed to hear. And knowing &#8212; <em>knowing</em> &#8212; that I could help. That I had the answer. And being told, in so many unspoken ways, to keep it to myself.</p><p>It was when even changing teams didn&#8217;t fix it. When I realised I still had to jump through hoops just to share my knowledge with the world. That they weren&#8217;t going to do anything with it &#8212; but they didn&#8217;t want anyone else to have it either. It was just <em>trapped</em>. Doing absolutely nothing. Sitting in someone&#8217;s intellectual property vault, gathering dust, helping no one. And I was supposed to be fine with that. Supposed to accept that the things I knew, the things I&#8217;d built, the things that could actually help people &#8212; they belonged to an organisation that had no intention of using them but every intention of keeping them locked away.</p><p>It was seeing that no matter what I did, none of it mattered, because everyone was trapped in the same system. A system that told them their individual contributions mattered more than the collective. Not in words &#8212; because the <em>appearance</em> of collaboration matters. But in fear. In markdowns for saying the wrong thing. In being penalised for not being "positive" enough. The message was never spoken out loud. It didn't need to be. Everyone understood. Not in words. That performance reviews and promotion metrics and personal brand were the point. Not the work. Not the people. Not whether any of it actually made things better.</p><p>It was seeing countless waste and inefficiencies and knowing exactly what to do about them &#8212; and watching the processes refuse to change. Not because the ideas were wrong. Because change is uncomfortable, and comfort was the point. I&#8217;d go to these elaborate corporate events and listen to people complain that <em>this year we didn&#8217;t get ice sculptures</em>. Ice sculptures. And it was realising that whilst my colleagues grew up around wine vineyards, I grew up around people threatening to beat me up with golf clubs if I didn&#8217;t give them my spare change. I grew up with people threatening to set my house on fire. And I believed them because they did it to other houses. That was the distance. That was the gap I was trying to cross every single day. And no matter how hard I tried, I would never belong &#8212; because I always had more to lose. They were risking a career. I was risking the entire life I&#8217;d clawed my way into.</p><p>It was spending each week crying. Not occasionally. Each week. And feeling awful about who I was as a person, because I just <em>couldn&#8217;t</em>. Couldn&#8217;t play the game. Couldn&#8217;t stop caring about the things I wasn&#8217;t supposed to care about. Couldn&#8217;t stop seeing what I was supposed to overlook. </p><p>It was when you have to literally avoid meetings because you can no longer keep from worrying and crying and hating yourself for not just being able to <em>deal with it</em>. When you&#8217;re sat there before a call thinking: I cannot do this. Not because the meeting is hard. Because <em>you</em> are broken. And instead of recognising that, you blame yourself. You tell yourself everyone else manages. Everyone else copes. What is wrong with you that you can&#8217;t just hold it together for one more hour?</p><p>It was the continuous collection of moments that made it very clear: the skill that made me useful &#8212; the ability to see systems, to name what&#8217;s broken, to cut through the noise and say the thing nobody else would say &#8212; that skill was only useful when it didn&#8217;t challenge the people I was working with. The moment it did? The skill was to be managed. Contained. Abused when convenient, kept hidden and out of sight otherwise.</p><p>It was being absolutely, constantly terrified about speaking about any of this. Not just uncomfortable. Not just cautious. <em>Terrified.</em> Of being fired. Of being performance managed &#8212; that quiet, procedural violence where they build a paper trail to make your removal look justified. Of being sued for slander. Of being discredited &#8212; having your reputation quietly dismantled so that even if you did speak up, nobody would believe you. Because that&#8217;s the trick, isn&#8217;t it? They create an environment so hostile you can barely breathe, and then they make you afraid to even <em>describe</em> it. You can&#8217;t speak about what&#8217;s happening to you because speaking about it is the thing that will finally destroy you. So you stay silent. And the silence is what they&#8217;re counting on.</p><p>If they&#8217;re reading this right now, they will be wondering how to sue and discredit me for this post. How to do appropriate damage control. And honestly? That tells you everything you need to know.</p><p>And I want to be clear about something: I don&#8217;t blame anyone I worked with. Everyone was genuinely good. Good people, trying their best, inside a system that made it nearly impossible to do the right thing. But when you&#8217;re trapped in an environment where everything is designed to funnel upwards &#8212; where every decision, every conversation, every piece of work exists to serve the layer above &#8212; it&#8217;s inherently fear-driven. Even when nobody explicitly says it. Nobody has to. The structure says it for them. And good people, caught in that structure, end up doing things they&#8217;d never choose to do on their own. That&#8217;s not a people problem. That&#8217;s a system problem. And no amount of individual goodness can fix a broken system.</p><div><hr></div><p>And honestly, this was so tiring.</p><p>I was so tired. Not the kind of tired that a holiday fixes. The kind of tired that lives in your bones. The kind where you wake up and the first thing you feel isn&#8217;t sleepiness but dread. I was so tired of constantly performing that my ability to mask was non-existent. And, I was so tired of masking.</p><p>If you know, you know. And if you don&#8217;t &#8212; masking is when you spend every waking moment in a professional environment performing a version of yourself that is acceptable to the people around you. Monitoring your tone. Filtering your reactions. Suppressing the way your brain actually works so that it fits neatly into the way things are supposed to be done. It is <em>exhausting</em>. And when you&#8217;ve been doing it for long enough, and you&#8217;re already broken from everything else, you simply can&#8217;t do it anymore. The mask doesn&#8217;t slip &#8212; it shatters. And then people look at you like <em>you&#8217;re</em> the problem, because they&#8217;ve only ever known the mask.</p><p>And I just didn&#8217;t want to do it anymore, I didn&#8217;t want to keep failing at not being good enough. I didn&#8217;t want to keep chasing this impossible standard I was never going to meet, all the while automatically expected to be good at the things I was never good at, whilst used and markdown for the things I was good at.</p><div><hr></div><p>So I left.</p><p>And isn&#8217;t it ironic &#8212; that <em>leaving</em> is when people question my sanity? Because who in their right mind would quit their high-paying job to spend time doing something they actually enjoy? Who would walk away from the prestige, the salary, the security? There must be something wrong with her. She must be having an episode. She must not be thinking clearly.</p><p>Funny, that.</p><p>Ironic, how they never showed concern when I was genuinely struggling in an environment that could not support me. Nobody questioned my mental state when I was crying every week. Nobody pulled me aside when I was visibly breaking. Nobody said &#8220;are you okay?&#8221; when the answer was obviously, painfully, no.</p><p>But quit? <em>Now</em> they&#8217;re worried.</p><p>And I was so tired of seeing another support plan. Another complex list of things put in place to &#8220;support&#8221; me. Reasonable adjustments. Action points. Follow-up meetings about the follow-up meetings. A whole bureaucratic apparatus designed to look like help without ever actually addressing what I&#8217;d said. Because I&#8217;d told them. I&#8217;d told them clearly, repeatedly, plainly. The one thing I needed.</p><p>The ability to have honest and open dialogue.</p><p>That&#8217;s it. That&#8217;s all I ever asked for. Not special treatment. Not a different role. Not a quiet room or a modified schedule. Just the ability to say what I saw without being punished for it. The ability to have conversation &#8212; real ones, not the fake positive ones &#8212; about what was working and what wasn&#8217;t. Without the terror. Without the politics. Without the performance.</p><p>They couldn&#8217;t give me that.</p><p>And beyond all of it &#8212; beyond the exhaustion, the masking, the fear &#8212; it wasn&#8217;t worth it. I&#8217;d already decided that large institutions were causing the majority of the world&#8217;s greed and problems. I&#8217;d already decided that by staying, I was part of it. I couldn&#8217;t sit there and keep being comfortable, taking a large salary for doing a hundredth of the work I could do outside. That&#8217;s the deal, isn&#8217;t it? They pay you well enough that you stop asking whether the work matters. They pay you well enough that leaving feels irresponsible. The salary isn&#8217;t compensation. It&#8217;s a leash.</p><p>And I decided I was done being leashed.</p><div><hr></div><p>And you want to know what madness actually looks like?</p><p>In the past few weeks &#8212; since I apparently lost my mind and threw away my career &#8212; I have explored my city more than I have in years. I&#8217;ve thought of more product ideas in a month than I did in a year of being told to stay in my lane. I&#8217;ve danced. I&#8217;ve sung. I&#8217;ve <em>laughed</em>. I&#8217;ve done art and painting, something I haven&#8217;t touched in years because I was too tired, too empty, too busy performing someone else&#8217;s version of me to remember what I actually enjoyed.</p><p>A couple of months ago, I was so broken. I felt so bad about who I was, about my differences, about being autistic and not being able to make sense of the incoherence. But leaving allowed me to start remembering who I am. The girl who always saw the positive in a pile full of misery. The girl who never stopped dreaming. The girl who never stopped believing.</p><p>That&#8217;s what happened when I quit. I didn&#8217;t fall apart. I found myself. I came back to life.</p><p>So please tell me again that I&#8217;m the one who isn&#8217;t thinking clearly.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.techunfiltered.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Tech Unfiltered is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>