<?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[Proof in the Pipeline]]></title><description><![CDATA[Field notes on how teams ship with AI and keep it governed.]]></description><link>https://writing.tilinthecloud.com</link><image><url>https://substackcdn.com/image/fetch/$s_!uJrf!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5e8fded-fe2a-407f-8a36-2376b1cc05e5_800x800.png</url><title>Proof in the Pipeline</title><link>https://writing.tilinthecloud.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 27 Oct 2026 07:24:15 GMT</lastBuildDate><atom:link href="https://writing.tilinthecloud.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Thiago de Faria / TilinTheCloud B.V.]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[tilinthecloud@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[tilinthecloud@substack.com]]></itunes:email><itunes:name><![CDATA[Thiago de Faria]]></itunes:name></itunes:owner><itunes:author><![CDATA[Thiago de Faria]]></itunes:author><googleplay:owner><![CDATA[tilinthecloud@substack.com]]></googleplay:owner><googleplay:email><![CDATA[tilinthecloud@substack.com]]></googleplay:email><googleplay:author><![CDATA[Thiago de Faria]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Domain boundaries are team boundaries]]></title><description><![CDATA[Leads managing leads mostly changed the bill, not the outcome. A shared channel with nobody looking after it lost about 4 of 11 every run.]]></description><link>https://writing.tilinthecloud.com/p/domain-boundaries-are-team-boundaries</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/domain-boundaries-are-team-boundaries</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 13 Oct 2026 07:17:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QwP5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QwP5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QwP5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!QwP5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!QwP5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!QwP5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QwP5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f98afe8a-c103-4471-a96b-895069904ed2_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:347124,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/220022866?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.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_!QwP5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!QwP5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!QwP5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!QwP5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98afe8a-c103-4471-a96b-895069904ed2_1200x675.png 1456w" sizes="100vw" fetchpriority="high"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><p>Most teams I talk to are having the same two arguments about AI agents. Should the agents be organised like teams? And when agents talk to each other through a shared channel&#8230; who looks after it?</p><p>Those felt like teams and org chart questions, not just AI questions. So I wanted to actually test it :-]</p><p>Same playground as the last two weeks... a small fake company with software services, risks planted in the code and agents fixing them. This time I added two things every real org has, layers of management and a shared channel nobody needs permission to use.</p><p>Then I broke things on purpose, to see who notices.</p><p>The layers of management mostly added cost. The channel with nobody looking after it quietly left more than a third of the problems unfixed, every single run.</p><p>This week is about how I got there and what I&#8217;d check in your org before deciding on your Agent Topologies&#8230; but where we are in this special Agent Topologies series?</p><p>Issue 13 was about workers that only read and report to a lead. In issue 14, the workers were able to write to one shared file... and whoever owns the merge decides who breaks. This week&#8217;s issue 15 is about leads managing leads, and agents talking to each other only through a shared channel... now each step takes away something a flat team gets for free: a lead who sees every need and a conversation you can overhear.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KM-9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KM-9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png 424w, https://substackcdn.com/image/fetch/$s_!KM-9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png 848w, https://substackcdn.com/image/fetch/$s_!KM-9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png 1272w, https://substackcdn.com/image/fetch/$s_!KM-9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!KM-9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png" width="1200" height="1350" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1350,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:312538,&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://writing.tilinthecloud.com/i/220022866?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.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_!KM-9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png 424w, https://substackcdn.com/image/fetch/$s_!KM-9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png 848w, https://substackcdn.com/image/fetch/$s_!KM-9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png 1272w, https://substackcdn.com/image/fetch/$s_!KM-9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfdd4d10-d72d-47db-b06d-8468b362775d_1200x1350.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>In <a href="https://writing.tilinthecloud.com/p/nobody-collided-until-the-pplatform-was-the-only-way">Issue 14</a> the answer was ownership: the merge owner who sees every change broke nothing, the conflict-only supervisor broke the service nobody spoke for. Now the owner has a boss or the owner is a channel.</p><p>Both experiments are in the <a href="https://github.com/thiagoavadore/agent-topologies">public repo</a> (<a href="https://github.com/thiagoavadore/agent-topologies/tree/main/04-hierarchical">04-hierarchical</a> and <a href="https://github.com/thiagoavadore/agent-topologies/tree/main/05-event-bus">05-event-bus</a>), with the code, the raw runs and a plain-language README. Same Harbour Bikes world and checker as last week (11 planted risks, 2 services that break if a shared default moves the wrong way), Sonnet 5.5 doing the work and Opus 5.5 in every lead and owner seat. My predictions were frozen in <code>PREDICTIONS.md</code> on 11 October, before the first run. Where I was wrong, the README says &#8220;miss&#8221;.</p><p>If this lands, forward it to whoever draws your team boundaries and your agent boundaries on different slides.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>Should the Agent Layers Match the Team Layers?</h2><p>8 services, one worker each. Above them a platform lead who owns the shared config, and in 3 of the 4 versions I added sub-leads in between.</p><p>How did I split those mid-tier? a) along team boundaries (rentals and money, fleet, customer and back office) or b) along technology (python, JVM and Go, node and ruby and rust).</p><p>And a 4th version keeps the technology cut and hands the platform lead a published list of what every service needs.</p><p>During the experiment, every worker&#8217;s replies feed every version, so whatever changes between them comes from the managers, not the workers.</p><p>The trap is the same as last week: pricing-engine needs a timeout of at most 300 ms, has no worker of its own and reads the shared default. In every run at least 2 worker requests would have broken something if the platform lead had granted them as asked.</p><p>On the 1st run, nothing broke. 0 of 10 runs with a regression, in every version I tried... all 11 risks fixed in all 40 runs.</p><p>I thought technology cut would break pricing-engine at least once because in one dry run the python sub-lead merged the raises into one 12s request and the platform lead said yes... in the real thing, it didn&#8217;t happen... miss.</p><p>So where was the threat stopped? At the top. Every. Single. Time.</p><p>A harmful timeout request reached the platform lead in all 10 runs of every version, and the platform lead turned it down or gave pricing-engine its own override.</p><p>The sub-leads stopped none of the pricing-engine threats. Cut by team, a sub-lead even forwarded harmful requests against its own team&#8217;s services (0.4 per run). The only thing any sub-lead held back was one rate-limit request against payments-gateway, in a single run per version.</p><blockquote><p><strong>And the bill? The flat lead used 3,947 management tokens per run.<br>Sub-leads cut by team? 23,018! Almost 6x!<br>By technology? 17,681 or 4.5 times the flat one...</strong></p></blockquote><p>But there was a catch... every lead got the same contract and one line of it said pricing-engine reads the shared timeout. So no tier was entirely blind&#8230; a sub-lead cut by technology could still work out who a raise would hurt.</p><p>I was not happy with that, so I ran it again without that line in the contract.</p><p>Same worker replies, replayed run by run, so run 6 of the second run is run 6 of the first with only the leads&#8217; contract changed. Before the run I wrote down the rule for calling it... the technology cut has to break pricing-engine in 3 or more of 10 runs while the team cut stays at 0 or 1.</p><p>And bam! First time something broke, and it was the cut by technology. In runs 6 and 8 the platform lead set the shared timeout to 15s (both python services needed longer and nobody objected) and pricing-engine took the new value. None of the other cuts (flat, by team or by registry) broke...</p><p>2 is below the 3 I set before the experiment, so I don&#8217;t call it an effect... but I don&#8217;t call it noise either. After all, it is the only version in 80 runs of this experiment that broke anything... and it is the cut that puts pricing-engine in one group and the two services asking for the raise in another.</p><p>The team cut keeps pricing-engine and its callers in the same group, so its bound travels up with the request.</p><p>The flat lead and the registry version see every service&#8217;s needs. Take away the one line that told the leads and only the technology cut was left without anybody who knew.</p><p><strong>So, should the agent layers match the team layers?</strong> On this task the cut mostly didn&#8217;t matter. The agent that owned <code>platform.yaml</code> saw every change whatever tree sat above it, and the extra layer bought cost, not safety.</p><p>The one cut that broke anything was the technology cut, and only once nobody told the leads. A similar indication as last week pops up... the owner that sees every change did best, and the owner is only as good as what reaches it.</p><p>So how do we look into this from a Team Topologies perspective? The Inverse Conway Maneuver says to shape teams on purpose to get the architecture you want. I&#8217;m starting to see the same in agents in a much cheaper way to experiment... Here the cheapest tree was the flat one, because the real work was done by whoever owned the shared file, not by the tree.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H4JP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H4JP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!H4JP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!H4JP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!H4JP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!H4JP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:292851,&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://writing.tilinthecloud.com/i/220022866?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.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_!H4JP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!H4JP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!H4JP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!H4JP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11f9b61-3ef1-4ae4-ae98-0b823ab0b312_1600x1000.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><em>First run: every lead was told pricing-engine reads the shared timeout. Second run (the blind run): the same worker replies, and no lead was told.</em></p><h2>Who Looks after the Shared Channel?</h2><p><code>uv run 05-event-bus/experiment.py</code> and off they went&#8230; six team agents, one per team, each subscribed to the services its team owns.</p><p>A scanner posts one message per planted risk, and in every run I break the channel four ways: a message missing its fields (malformed), a message sent to the wrong service, a consumer that crashes mid-delivery, and the same message sent twice. On top of that I wanted a bit of &#8220;lack-of-ownership chaos&#8221;, so one service (fleet-telemetry) has no owner at all... its two messages have nobody to go to.</p><p>Same consumers, same prompts, same models in every version&#8230; the only thing I changed was who looks after the channel. Three versions:</p><ul><li><p><strong>Nobody.</strong> Messages go out, and whatever gets lost stays lost.</p></li><li><p><strong>A steward agent.</strong> It reads the whole log and sends corrections.</p></li><li><p><strong>The platform.</strong> Code checks every message, retries, and parks what it can&#8217;t deliver, and an agent looks only at what got parked.</p></li></ul><p>nobody steward agent platform Risks fixed of 11, mean (worst run) 6.7 (6) 11.0 (11) 11.0 (11) Malformed message (of 10) 7 absorbed, 3 lost 5 recovered, 5 absorbed 10 recovered Sent to the wrong service (of 10) 10 lost 10 recovered 10 recovered Consumer crashed (of 10) 10 lost 10 recovered 10 recovered fleet-telemetry fixed (of 20) 0 20 20 Duplicate processed twice (of 10) 10 10 0, by construction Operating tokens per run 41,790 71,106 55,700</p><p>&#8220;Absorbed&#8221; means the risk got fixed even though the message never arrived complete and correct. A malformed message still names its service, and that was often enough for a consumer to go and read the files... lucky, not designed.</p><p><strong>So, who looks after the shared channel?</strong> Somebody has to.</p><p>With nobody, about 4 of the 11 risks got lost in every run (4.3 on average). And that always included everything for the service with no owner. Nobody noticed, because noticing was nobody&#8217;s job.</p><p>With an owner, the steward agent and the platform did equally well: 11 of 11, every fault recovered or absorbed, nothing lost.</p><p>The difference is the bill. The platform used about 22% fewer operating tokens than the steward (55,700 against 71,106). Why? The steward reads the whole log. The platform&#8217;s owner agent only sees what got parked: 1,683 characters per run against the steward&#8217;s 7,336.</p><p>And the duplicate? Processed twice in all 10 runs with nobody and with the steward, never with the platform... but that&#8217;s code doing its job, not an agent being clever.</p><p>Two honest asterisks. The corrective copies the steward and the platform agent send skip the no-double-processing check. And fleet-telemetry has no owner because I built it that way, so the owned versions fixed it by handing its messages to a team.</p><p>Team Topologies already has a shape for this. The platform runs the bus as a product, and the teams consume it as a service, with minimal interaction. The Inverse Conway Maneuver, again: want a channel that doesn&#8217;t lose messages? Give the bus an owner whose job is the bus, and the architecture follows.</p><p><em>For the integration folks: that&#8217;s a Message Bus with a Dead Letter Channel and an Idempotent Receiver, straight out of Hohpe and Woolf.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JqBO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JqBO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!JqBO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!JqBO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!JqBO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JqBO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:313578,&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://writing.tilinthecloud.com/i/220022866?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.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_!JqBO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!JqBO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!JqBO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!JqBO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6d61b8a-2c82-4556-846e-e340ea354fe4_1600x1000.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><h2>Can You Tell where a Failure Was Born?</h2><p>When something breaks in a channel, the first question is always &#8220;where did it start?&#8221;</p><p>So after every run, I asked a separate agent to explain every loss using only the records. Then I took the trace context away and asked again.</p><p>It made no difference.</p><p>The investigator named the first problem of every risk that had one: 60 of 60, in every version... and 60 of 60 again with the trace context stripped.</p><p>On the 43 losses the nobody version left behind, it named the right cause all 43 times and never called a lost message handled. False alarms on the clean risks? 0 of 50, except 3 of 50 when it read the steward&#8217;s records.</p><p>I predicted exactly this, but I&#8217;ll say it plainly anyway: on this task the records were enough. The ids on the messages added nothing the log didn&#8217;t already have.</p><p>The interesting part was what got lost, not explaining it afterwards. A bigger system, with more hops and a messier log, may be where trace context earns its keep. Not this one.</p><h2>My Predictions, Scored</h2><p>I froze my predictions on 11 October, before the first run, with every dry run I&#8217;d seen listed next to its commit. The blind run got its own, frozen on 12 October before it started.</p><p>The score, in three sets:</p><ul><li><p><strong>04:</strong> 8 hits, 2 misses, 1 mixed</p></li><li><p><strong>05:</strong> 15 hits, 1 miss, 5 mixed</p></li><li><p><strong>04 blind:</strong> 7 hits, 2 misses</p></li></ul><p>&#8220;Mixed&#8221; means I got the direction right and the detail wrong. The ones worth owning:</p><ul><li><p><strong>The cut.</strong> I bet the technology cut would break pricing-engine in 1 to 4 of 10 runs. It broke it in none. I&#8217;d even flagged it as my likeliest miss, because the platform lead held 300 ms on its own in 2 of 3 dry runs... and I still bet on it. That one&#8217;s on me. For the blind run I bet 0 to 3, most likely 0 to 1. It came in at 2.</p></li><li><p><strong>The middle tier&#8217;s bill.</strong> I guessed the technology cut would cost 3 to 4 times the flat lead. It was about 4.5.</p></li><li><p><strong>The steward.</strong> I gave the agent babysitter 9 to 10 of 11. It got 11 of 11, a clean miss. Three of the five mixed ones are the steward too: I expected it to lose some malformed and crashed messages, and it lost none. It also cost 1.7 times nobody, not the 2 to 2.5 I guessed. Better and cheaper than I gave it credit for... though still about 28% more than the platform.</p></li><li><p><strong>The blind run&#8217;s two misses</strong> are both small, and both about the registry version. It ended on a different timeout than the first run in 2 paired runs, where I said 0 to 1. And blind, the technology cut and the registry version cost 9% less than the first run, where I said within 5%.</p></li></ul><p>One thing worth repeating: the checker didn&#8217;t change. Same 11 planted risks, same 2 regression needs, same answer key, so &#8220;fixed&#8221; this week means what it meant last week. What you can&#8217;t do is line up this week&#8217;s numbers against Issue 14&#8217;s. Different setup, different question.</p><h2>The Three-body Reading</h2><p>Every issue in this series looks at three things that move together, the three bodies:</p><ul><li><p><strong>Architecture:</strong> the seams. Does the middle tier split along a domain boundary or across one? Does a message carry where it came from?</p></li><li><p><strong>Team:</strong> who owns the cut, and who owns the channel.</p></li><li><p><strong>AI capability:</strong> the models. The thing everyone argues about first... and it didn&#8217;t change at all this week.</p></li></ul><p>Same models in every version, and the channel went from 6.7 to 11 of 11 just by changing who owns it. Changing the cut of the tree mostly moved the token bill. It broke something only when the leads were blind and the cut split pricing-engine from its callers.</p><p>So this week, the body that mattered was the team.</p><h2>Where it Does not Reach yet</h2><p>Before you take any of this to your org, here&#8217;s what this setup can&#8217;t tell you:</p><ul><li><p><strong>Small and narrow.</strong> One task, 10 runs per version, Claude models only, one backend.</p></li><li><p><strong>Not real tools.</strong> My harness applies the agents&#8217; edits and delivers the messages, so these are not tool-using agents on a real bus.</p></li><li><p><strong>My choices.</strong> The cut, what each lead sees, the faults and the mandate are all mine. They&#8217;re disclosed and pre-registered, which makes the bias visible... not gone.</p></li><li><p><strong>Fewer draws than it looks.</strong> In 04 the same worker replies feed all four versions, so the 10 runs are 10 draws of workers, not 40.</p></li><li><p><strong>Not a fair fight on information.</strong> The flat lead sees every service&#8217;s needs and the tiered lead doesn&#8217;t (the registry version adds them back). So part of any flat advantage is information, not the missing middle tier.</p></li><li><p><strong>Traps I didn&#8217;t build.</strong> No failure injection in 04, and no fight over a shared file in 05. Nothing here says how often these failures happen in your org.</p></li></ul><p>The good news: the runs themselves were clean. In 04 no lead call failed and no sub-lead fell back to forwarding unchanged. In 05 no owner or investigator call failed, and only one consumer delivery (in the nobody version) came back with an invalid reply. So the 10 runs per version are 10 real runs.</p><h2>Run it on Yourself</h2><p>Five questions to ask about your own agents. They work on your teams too... the questions don&#8217;t care.</p><ol><li><p><strong>Layers against teams.</strong> Where do your agent layers disagree with your team layers? A tier that cuts across a team ends up forwarding requests it can&#8217;t judge.</p></li><li><p><strong>What travels up.</strong> When a request goes up a layer, does the layer above know who it could hurt?</p></li><li><p><strong>The channel owner.</strong> Who owns the shared channel? Not who uses it... who gets paged when a message can&#8217;t be delivered?</p></li><li><p><strong>The unrouted message.</strong> What happens to a message nobody can route? Name the service with no subscriber.</p></li><li><p><strong>The first problem.</strong> Can you trace a failure back to where it started from the messages alone, or only by asking the agents?</p></li></ol><h2>The Whole Thing, in One line</h2><blockquote><p><strong>In both experiments, who owns the shared thing mattered more than the shape of the org chart.</strong></p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>Two Things Before You Go</h2><p><strong>New name, same newsletter.</strong> You may have noticed: this is now <strong>Proof in the Pipeline</strong>. Same author, same weekly essay, and a name that says what it&#8217;s about&#8230; AI governance shown working where the code ships, not promised in a PDF.</p><p><strong>Paid tiers, pledges only for now.</strong> Each essay only shows the end of the work, the code and the research stay behind it, so I&#8217;m opening paid tiers for that part (<em>nobody is charged until paid launches</em>). Paid readers get a monthly post with the repo, the runs and what I&#8217;m reading for the research. Founding members join the AI Executive Circle: a quarterly call with me and priority (plus 10% off) on the Delivery Lab, and there are only 12 seats. The weekly essay stays free, always. If that sounds useful, <a href="https://writing.tilinthecloud.com/subscribe">pledge here</a> :-]</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share Proof in the Pipeline&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share Proof in the Pipeline</span></a></p><h2>Coming up</h2><p>Next week: the oracle. A critic tells a writer what&#8217;s wrong, the writer fixes it, and someone has to own the rubric they&#8217;re both judged against. Two questions... who gets to edit that rubric, and when does the loop stop? More soon :-]</p><h2>Sources</h2><ul><li><p>Erik S. and Barry Zhang (Anthropic), &#8220;Building Effective Agents&#8221;, 19 Dec 2024. <a href="https://www.anthropic.com/research/building-effective-agents">https://www.anthropic.com/research/building-effective-agents</a></p></li><li><p>Matthew Skelton and Manuel Pais, <em>Team Topologies</em>, IT Revolution, 2019; Inverse Conway Maneuver, stream-aligned and platform teams, interaction modes, as summarised at <a href="https://teamtopologies.com/key-concepts">https://teamtopologies.com/key-concepts</a></p></li><li><p>Melvin E. Conway, &#8220;How Do Committees Invent?&#8221;, Datamation, 1968 (Conway&#8217;s law).</p></li><li><p>Gregor Hohpe and Bobby Woolf, <em>Enterprise Integration Patterns</em>, Addison-Wesley, 2003; Message Bus, Dead Letter Channel, Idempotent Receiver, Correlation Identifier, Message History: <a href="https://www.enterpriseintegrationpatterns.com/patterns/messaging/">https://www.enterpriseintegrationpatterns.com/patterns/messaging/</a></p></li><li><p>The repo: <code>agent-topologies</code>, folders <code>04-hierarchical</code> and <code>05-event-bus</code>, with <code>PREDICTIONS.md</code> (frozen 11 Oct 2026 at <code>4d4728a</code>, pinned at <code>0db1298</code>), benchmark runs 11 Oct 2026, results commit <code>11f3b02</code>: <a href="https://github.com/thiagoavadore/agent-topologies/tree/main/04-hierarchical">https://github.com/thiagoavadore/agent-topologies/tree/main/04-hierarchical</a> and <a href="https://github.com/thiagoavadore/agent-topologies/tree/main/05-event-bus">https://github.com/thiagoavadore/agent-topologies/tree/main/05-event-bus</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/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">Thanks for reading Proof in the Pipeline! Subscribe for free to receive new posts and support my work.</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></p><p></p>]]></content:encoded></item><item><title><![CDATA[Nobody collided until the platform was the only way]]></title><description><![CDATA[Handoffs need a check where the mistake is born, and merges need an owner who speaks for the services that aren't in the room.]]></description><link>https://writing.tilinthecloud.com/p/nobody-collided-until-the-pplatform-was-the-only-way</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/nobody-collided-until-the-pplatform-was-the-only-way</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 06 Oct 2026 10:04:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xf6P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>So what happens when you orchestrate AI agents? Does it use more tokens (costs more)? If so, does it produce a gain in the output that will drive better outcomes? Last week we started with this and talking about Agents Topologies, by only giving them read access.</p><p>So what happens when agents can write? This is what we have this week. Three agents, each in its own copy of the repo, all pointed at the same hub file: one shared config file, <code>platform.yaml</code>, that all eight services inherit their timeouts from. I split the services so that two workers would want the same setting. Built to collide, on purpose.</p><p>Oh yeah, using the state of the art available to you: Sonnet 5.5 does the work everywhere, and Opus 5.5 only sits in the merge seat in the second experiment.</p><p><code>uv run 03-fan-out-partial-reducer/experiment.py</code> and off they went...</p><p>Voil&#225;! 20 runs later, across the two versions where they had a way around the shared file, the shared timeout was contested... 0 times. Zero.</p><p>Nobody collided. And not because they were polite... because they never needed the shared file. One worker wrote an override (its own value instead of the shared default) in its own <code>service.yaml</code>. Another hard-coded the timeout straight into the code.</p><p>Everyone met their own need and walked around the shared file, and the platform ended up with about 3 different timeouts across 8 services (3.0 and 2.9 on average, depending on which route was open).</p><p>So I closed the override route. They took the code route. I closed that one too... and only then did they start fighting over the file.</p><p>But Thiago, isn&#8217;t that just agents being resourceful? Somehow, yeah... but look at what I was doing the whole time: my agents weren&#8217;t avoiding each other. My architecture was giving them a way out.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xf6P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xf6P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!Xf6P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!Xf6P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!Xf6P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xf6P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:373778,&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://writing.tilinthecloud.com/i/219073958?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.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_!Xf6P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!Xf6P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!Xf6P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!Xf6P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8992f55-6274-41bf-a1bc-3d7555f2fda4_1200x675.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>In <a href="https://writing.tilinthecloud.com/p/conways-law-has-a-new-employee">Issue 13</a> the workers only read, which is why none of them could collide. GitHub&#8217;s peer sessions, on the other hand, met at the most connected file... one asked four times to integrate, was refused four times and merged anyway.</p><p>This week my workers write... and I have two promises to pay: the pipeline, where one early mistake travels all the way to production, and fan-out / fan-in (several agents in parallel, one merging), where the agent that merges carries the whole cognitive load.</p><p>Both experiments are in the <a href="https://github.com/thiagoavadore/agent-topologies/tree/7888d48">public repo</a>, one folder each, with the code, the raw runs and a plain-language README.</p><p>One thing I did differently this time, and it is the trust move of the week: I wrote my predictions down and froze them in <code>PREDICTIONS.md</code>, together with the checker and its tests against fake fixes, before the first run. Where I was wrong, the README says &#8220;miss&#8221;. You will see a few of those below :-D</p><p>If this lands, forward it to whoever owns the shared config your teams keep walking around.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>A check at the end can&#8217;t see where the mistake was born</h2><p>The first experiment (<a href="https://github.com/thiagoavadore/agent-topologies/tree/7888d48/02-pipeline-checkpoint">code and full results</a>): four agents in a row over the same eight services: extract the facts, classify the risks, prioritise them and write the remediation plan. Each one only sees what the one before handed over. No lead, no orchestrator... a chain of handoffs.</p><p>Then I break stage 1 on purpose in half the runs. Either I move a fact to the wrong service or I drop it entirely... so 3 versions: a) no checks at all, b) one check at the end, c) a check after every handoff.</p><p>Erik S. and Barry Zhang&#8217;s <a href="https://www.anthropic.com/research/building-effective-agents">&#8220;Building Effective Agents&#8221;</a> (Anthropic, December 2024) calls this prompt chaining and suggests &#8220;programmatic checks (see &#8220;gate&#8221; in the diagram below) on any intermediate steps&#8221;... fine... this is that check, measured: 10 runs per version, 5 faulted and 5 clean, Claude Sonnet 5.5 in every role (checks included).</p><p>The check at the end caught 0 of 5 injected faults... none. By stage 4 the plan was perfectly consistent with its faulted input, so the last check looked at it and saw nothing wrong... by then the mistake was just the input.</p><p>The check after every handoff caught 4 of 5, every single one of them at stage 1, the stage that owns the mistake! It let one dropped fact through: an admin console open to the world (ouch!).</p><p>The price? In my runs, the every-handoff version halted 3 of 5 clean runs (2 wrongly, 1 rightly, a split decided by a script, not by a model) and used 46% more tokens than no checks at all (42,308 against 28,975 per run). The checks alone were 53% of its tokens. So yes, you pay... in tokens and in false alarms somebody has to go and look at.</p><p>Now the surprise! A fact moved to the wrong service healed itself downstream in 3 of 3 runs with no check at all. Huh? In the end, it still carried its file path and the later stages tied it back to the right file. A dropped fact had nothing left to tie to and reached production 2 of 2 times.</p><blockquote><p><strong>Facts that carry their provenance survive handoffs. Missing facts don&#8217;t announce themselves.</strong></p></blockquote><p>Now read it with the org chart in mind. Matthew Skelton and Manuel Pais&#8217;s <a href="https://teamtopologies.com/key-concepts">Team Topologies</a> (IT Revolution, 2019) says stream-aligned teams have &#8220;no hand-offs to other teams for any purpose&#8221;. A pipeline of agents is a chain of hand-offs, the exact thing I, and every Team Topologies practitioner, tell teams to avoid... but how can we not when we are talking about tokens explosions and missing context? So, when we must have hand-offs, we need to put the check where the work is born and accept the bill.</p><p>In <a href="https://writing.tilinthecloud.com/p/nobody-owns-the-policy">Issue 12</a> I asked who owns each rule. Here the question is who owns a mistake. Every fault I injected was born in stage 1, the agent that extracts the facts. The check after every handoff caught it right there and blamed stage 1: the right owner. The check at the end never fired. And if it had, it could only have pointed at stage 4, the agent writing the plan, which did nothing wrong. It just inherited the mistake.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0sU4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0sU4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!0sU4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!0sU4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!0sU4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0sU4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:446291,&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://writing.tilinthecloud.com/i/219073958?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.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_!0sU4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!0sU4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!0sU4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!0sU4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda60a2ac-1e4d-447e-ac38-42e0ad8a4278_1600x1000.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>Nobody collided until the platform was the only way</h2><p>Now the second experiment, where the cold open happened (<a href="https://github.com/thiagoavadore/agent-topologies/tree/7888d48/03-fan-out-partial-reducer">code and full results</a>). Three agents with write access, each fixing its own share of eight services.</p><p>All 8 read their defaults (timeouts, rate limits, backups, minimum instances) from one shared config file, <code>platform.yaml</code>. I split the work so it would collide as the two services that need a longer timeout went to different agents. Thus a script (not a model) scores the result by parsing and runnning the files... then it counts what got fixed and what a shared change broke.</p><p>But ofc, there were 2 traps inside:</p><ul><li><p>pricing-engine needs a timeout of at most 300 ms and has no agent of its own.</p></li><li><p>payments-gateway needs at least 20 requests per second. A shared default that is right for the worker who set it can break a service nobody is looking after.</p></li></ul><p>Claude Sonnet 5.5 as the workers, Claude Opus 5.5 in the merge seat, and each version ran 10 times. This is what we got:</p><ol><li><p><strong>Local overrides allowed.</strong> Shared timeout contested in 0 of 10 runs. 3.0 distinct timeouts across the 8 services, on average.</p></li><li><p><strong>No overrides, but a timeout in code allowed.</strong> 0 of 10 again. 2.9 distinct timeouts.</p></li><li><p><strong>The platform rule.</strong> Timeouts must come from the shared file, and a CI-style check reverts any file that hard-codes one. Contested in 6 of 10 runs, in every version with the rule.</p></li></ol><p>Same models. Same prompts, apart from one neutral line per step stating the rule (no &#8220;please coordinate with your colleagues&#8221; nudges, I promise). And the collisions went from 0 to 6 of 10.</p><p>So it seems that contention is a property of the architecture, not of the agents. They collide only when the shared file is the only seam. Before that, they fork the platform quietly and you find out six months later when somebody counts the timeouts.</p><p>With some scientific honesty, the platform rule is my design choice. The dry runs never collided on the timeout without it, so I imposed it, and I&#8217;m saying so. The versions with the rule tell you what happens once the shared file is the only way... not how often that is true in your shop.</p><p>And this is Issue 12&#8217;s &#8220;platform enforces&#8221; right, as code. The rule is what made the shared default real. Before it, &#8220;the platform default&#8221; was a suggestion, nothing more than that...</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WIWm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WIWm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!WIWm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!WIWm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!WIWm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!WIWm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:315442,&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://writing.tilinthecloud.com/i/219073958?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.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_!WIWm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!WIWm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!WIWm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!WIWm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F107c6971-842b-4831-a247-0ed6ff85e413_1600x1000.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>The merger has to speak for the service that isn&#8217;t in the room</h2><p>Once they collide, somebody has to merge. And that is promise 2 from last week, remember? The agent that merges carries the whole cognitive load... so let&#8217;s see what that load actually is. 4 ways to own the merge, all under the platform rule, 10 runs each (3 for me):</p><ul><li><p><strong>No owner, first change wins.</strong> pricing-engine broke in 10 of 10 runs. The shared timeout ended up above 300 ms every time, and nobody could grant pricing-engine an exception.</p></li><li><p><strong>A supervisor (Opus) that resolves conflicts.</strong> broke in 4 of 10. And here is the part I did not predict: all 4 came from runs with no conflict. One worker raised the shared timeout alone, nobody disagreed, so the supervisor was never asked... and the uncontested value broke a service no worker owned. In the 6 runs that had a conflict? Zero breaks.</p></li><li><p><strong>A platform owner that applies every change to the shared file itself.</strong> 0 breaks in all 10 runs. Its usual move: keep the shared default at 300 ms (9 of 10 runs) and grant the slow callers their own overrides (at least one in 6 of 10 runs, both in 5). The cost: the fewest problems fixed of the versions with the rule, 8.4 of the 11 planted ones against 8.6 and 8.7, because it also said no.</p></li><li><p><strong>Me, in the merge seat.</strong> 3 runs. pricing-engine broke in 3 of 3, and I granted 0 overrides. I sat there with every service&#8217;s needs on the screen and picked between the two loud workers... how? I shared some text in the screen, some files to a free version of Copilot, asked to explain to me the problem and take a decision... what I know a lot of people do and say they are &#8220;using AI to take architectural decisions&#8221;.</p></li></ul><p>So what is the cognitive load, Thiago? It&#8217;s not the conflicts. Those are the easy part... two values, two reasons, pick one. The load is the services nobody is speaking for. A conflict resolver only sees disagreements. The owner sees every change, including the quiet ones that break the service that isn&#8217;t in the room.</p><p>Team Topologies has a name for this as well and that is only <a href="https://teamtopologies.com/key-concepts">&#8220;managing team cognitive load&#8221;</a>. That owner is the platform team and its job is to carry that load so the stream-aligned teams don&#8217;t have to.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-sfh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-sfh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!-sfh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!-sfh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!-sfh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-sfh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:310776,&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://writing.tilinthecloud.com/i/219073958?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.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_!-sfh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!-sfh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!-sfh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!-sfh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a676ef2-130c-4167-bb76-d1b4a05022c1_1600x1000.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>My answer key was wrong again, twice</h2><p>Last week&#8217;s first lesson was &#8220;whoever writes the answer key decides the result&#8221;. This week I got to relearn it... twice...</p><p>First, the checkpoint was wrong the first time. In my first run, the check-after-every-handoff version rejected 5 of 5 clean runs. Five!</p><p>Great check, until you read the reasons... I never told the stage-2 check what stage 2 was allowed to drop, so it judged stage 2 against a bar the stage could never meet. Re-scored, 4 of those 5 rejections were false.</p><p>The fix was giving each check its own stage&#8217;s contract. Then I re-ran all 30 and kept the first run&#8217;s results in the repo, in plain sight.</p><p>Hmm... wait. Was it &#8220;whoever writes the answer key&#8221; or &#8220;whoever writes the checker&#8221;? It turns out that both... the check is part of the answer key.</p><p>Second, one planted risk (a problem I hid on purpose) was unfixable. The workers declined to give the maintenance scheduler a second instance in 5 of 5 trial runs, with the right reason: its data lives on the VM&#8217;s local disk, so two instances would split it. They were right and I was wrong. The risk came out of the answer key before the real runs (11 risks, not 12), written down in the checker&#8217;s notes.</p><p>And the frozen predictions have two misses worth owning. I predicted the end-only check would catch some faults (it caught none), and that the supervisor would have near-zero breaks (4 of 10, for the uncontested-change reason above).</p><p>Maybe I should stop writing answer keys :-P ... or maybe this is the job. A frozen prediction turns &#8220;I knew it&#8221; into &#8220;I was wrong here, and here is why&#8221;.</p><h2>The three-body reading</h2><p><strong>The architecture body</strong> is the seams. Is the shared file the only route? Does each fact carry where it came from?</p><p><strong>The team body</strong> is who owns the merge and who checks at the source.</p><p><strong>The AI-capability body</strong> is the models. Unchanged across every version this week, and still the thing everyone argues about first.</p><p>The merge experiment is the proof. Same models, same instructions to the agents, and the service that broke went from broken in 10 of 10 runs to broken in 0 of 10. The only thing I changed was who owned the merge. The AI capability didn&#8217;t move at all.</p><h2>Where it does not reach yet</h2><p>One task, 10 runs per version, Claude models only, one backend. My test harness applies the agents&#8217; edits, so these are not tool-using agents exploring a repo and committing on their own. The traps and the platform rule are mine, disclosed and pre-registered, which makes the bias visible... not gone. The human version is one person that built software before but inputs things into Copilot, talks a bit with it and pastes the content somewhere else...</p><h2>Run it on yourself</h2><p>Five checks, on your own agents. They work on your teams too, the checks don&#8217;t care.</p><ol><li><p><strong>The first check.</strong> In your agent pipeline, where is the first check? If it&#8217;s at the end, it can tell you something is wrong, not where.</p></li><li><p><strong>Provenance.</strong> Does every fact or artifact carry where it came from (file, line, source)? Provenance is what let a misattributed fact heal itself.</p></li><li><p><strong>Escape routes.</strong> Which shared config do your agents (or teams) write to, and what local routes exist around it? Count your distinct timeouts.</p></li><li><p><strong>Every change.</strong> Who sees <em>every</em> change to the shared file, not just the conflicts?</p></li><li><p><strong>The empty chair.</strong> Name a service with no owner in the room. Who speaks for it at merge time?</p></li></ol><h2>The whole thing, in one line</h2><blockquote><p><strong>Check where the mistake is born and give the merge to someone who speaks for the service that isn&#8217;t in the room.</strong></p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>Coming up</h2><p>Next week, one level up. Leads managing other leads, and agents that talk only through a shared message channel. Two questions: should the agent layers match your team layers, and who looks after the shared channel? It&#8217;s Conway&#8217;s law run backwards: design the team shape you want, and let the architecture follow. More soon. :-]</p><h2>Sources</h2><ul><li><p>Erik S. and Barry Zhang (Anthropic), &#8220;Building Effective Agents&#8221;, 19 Dec 2024. <a href="https://www.anthropic.com/research/building-effective-agents">https://www.anthropic.com/research/building-effective-agents</a></p></li><li><p>Matthew Skelton and Manuel Pais, <em>Team Topologies</em>, IT Revolution, 2019; stream-aligned teams and team cognitive load as summarised at <a href="https://teamtopologies.com/key-concepts">https://teamtopologies.com/key-concepts</a></p></li><li><p>Stephen Toub, &#8220;Migrating the GitHub Copilot runtime to Rust, using Copilot&#8221;, The GitHub Blog, September 2026 (vendor engineering blog). <a href="https://github.blog/ai-and-ml/generative-ai/migrating-the-github-copilot-runtime-to-rust-using-copilot/">https://github.blog/ai-and-ml/generative-ai/migrating-the-github-copilot-runtime-to-rust-using-copilot/</a></p></li><li><p>The repo: <code>agent-topologies</code>, folders <code>02-pipeline-checkpoint</code> and <code>03-fan-out-partial-reducer</code>, with <code>PREDICTIONS.md</code> (frozen 5 Oct 2026). <a href="https://github.com/thiagoavadore/agent-topologies/tree/7888d48">https://github.com/thiagoavadore/agent-topologies/tree/7888d48</a> (results at commit <code>7888d48</code>, pushed 6 Oct 2026).</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/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">Thanks for reading The Recovering CTO! Subscribe for free to receive new posts and support my work.</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></p>]]></content:encoded></item><item><title><![CDATA[Conway's law has a new employee]]></title><description><![CDATA[Pick the pattern by who owns the split, not by the shape of the diagram]]></description><link>https://writing.tilinthecloud.com/p/conways-law-has-a-new-employee</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/conways-law-has-a-new-employee</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 29 Sep 2026 10:12:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fZ5g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I decided to test different ways to &#8220;orchestrate agents&#8221; with some experiments. Then I was able to run <code>uv run 01-orchestrator-worker/experiment.py --n 5</code> and, voil&#225;! It went out to test different workers and trying to identify risks I planted in a codebase...</p><p>15 runs later, a clean-looking table with some discoveries and a potential inference. More workers/subagents are better, right? Yeah, sure... the version with the most workers found every planted risk. The versions with two workers missed one now and then.</p><p>Nice... except it was wrong.</p><p>One planted risk was an HTTP call with no timeout, written with <code>httpx</code>. And <code>httpx</code> has a 5-second timeout by default... so no risk at all. The two-worker versions that &#8220;missed&#8221; it were right, and the uncapped version got credit for a false alarm.</p><p>My agents were fine. My answer key was not... why? Because I wrote the key assuming no timeout and &#8220;forgot&#8221; that <code>httpx</code> has one by default...</p><p>I swapped it for a <code>requests</code> call (which really does wait forever) and re-ran all 15. First lesson of the series, before any architecture: whoever defines the right answer decides the result.</p><p>But Thiago, is this not just microservices again? A lead, some workers, a contract between them... Kinda :-P</p><p>I thought I was choosing an architecture, but I was drawing an org chart.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fZ5g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fZ5g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!fZ5g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!fZ5g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!fZ5g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fZ5g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:344794,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/217982069?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.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_!fZ5g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!fZ5g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!fZ5g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!fZ5g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F982805f1-df28-4e96-a7ee-775ff93ef4cd_1200x675.png 1456w" sizes="100vw" fetchpriority="high"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>In <a href="2026-09-22 Issue 12 - nobody owns the policy">Issue 12</a> I left you in the org chart and promised a terminal. Here it is... and it walked me straight back into the org chart. Its four rights (mandate, enforce, instruct, override) are about to become code.</p><p>Sooooo yeah, a series. 5 issues in 5 weeks, 1 public repo, 1 family of agent setups per week, each with a number from my own run. The repo is <a href="https://github.com/thiagoavadore/agent-topologies">agent-topologies</a>: seven folders planned, the first one live today, each README in plain language so you can follow it without writing a line of Python.</p><p>Ken Huang&#8217;s post <a href="https://kenhuangus.substack.com/p/multi-agent-design-patterns-architectural">&#8220;Multi-Agent Design Patterns&#8221;</a> (Agentic AI Substack, August 2026) gave me food for thought. His catalogue sorts the patterns by shape. I think the question a CTO can actually act on is a different one: who owns the split?</p><p>If this lands, forward it to whoever is drawing your &#8220;agents&#8217; org chart&#8221; :-D</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><p></p><h2>Your agents will copy your org chart</h2><p>Mel Conway wrote it down in <a href="https://www.melconway.com/Home/Committees_Paper.html">&#8220;How Do Committees Invent?&#8221;</a> (Datamation, April 1968): organisations that design systems &#8220;are constrained to produce designs which are copies of the communication structures of these organizations&#8221;.</p><p>And now 58y later, the communication structure has new members: <strong>Agents</strong>. Whoever decomposes the work for them decides the shape of what they produce.</p><p>And the org-design vocabulary transfers almost too well. Matthew Skelton and Manuel Pais&#8217;s <a href="https://teamtopologies.com/key-concepts">Team Topologies</a> (IT Revolution, 2019) names three ways teams should interact:</p><ul><li><p><strong>Collaboration:</strong> &#8220;working together for a defined period of time to discover new things&#8221;.</p></li><li><p><strong>X-as-a-Service:</strong> &#8220;one team provides and one team consumes something &#8216;as a Service&#8217;&#8221;.</p></li><li><p><strong>Facilitating:</strong> &#8220;temporary and focused&#8221;.</p></li></ul><p>Bam!! Each one has an agent twin.</p><ul><li><p>A worker with a strict input/output contract? <strong>X-as-a-Service</strong>.</p></li><li><p>A critic loop is <strong>collaboration</strong>, and it should be time-boxed... in agent land that is the iteration cap (coming with a code example soon).</p></li><li><p>A subagent that explores and hands an answer back is <strong>facilitating</strong>.</p></li></ul><p>The neutral names for the patterns exist too. Erik S. and Barry Zhang&#8217;s <a href="https://www.anthropic.com/research/building-effective-agents">&#8220;Building Effective Agents&#8221;</a> (Anthropic, December 2024) names orchestrator-workers and evaluator-optimizer, and advises &#8220;the simplest solution possible, and only increasing complexity when needed&#8221;. The ownership question is what I add.</p><p>So the copy happens anyway. The only choice is whether you pick the original first.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C5ft!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C5ft!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!C5ft!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!C5ft!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!C5ft!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!C5ft!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:274868,&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://writing.tilinthecloud.com/i/217982069?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.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_!C5ft!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!C5ft!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!C5ft!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!C5ft!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53498e15-a019-4dad-9a76-5d0dae2da10d_1600x1000.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><h2>The orchestrator is a team lead with a context window</h2><p>Now the numbers from the repo, as promised.</p><p>Folder 01 is a risk review: eight short, fictional service descriptions (cards) with twelve risks planted in them, like a hardcoded key or an HTTP call with no timeout.</p><p>The lead reads a one-paragraph summary of each card and decides how many workers to use and which cards each gets. The workers review their cards and report in a fixed JSON format, never talking to each other. Then the lead merges everything into one summary for the CTO. A risk counts as found only with the right card and the right category.</p><p>Around them sit four safety checks, all in <code>orchestrator.py</code>:</p><ol><li><p><strong>Strict format</strong> (<code>FINDINGS_SCHEMA</code>): one retry on a bad report, then it is thrown out and its cards listed as &#8220;not reviewed&#8221;. The <strong>X-as-a-Service contract, in code</strong>.</p></li><li><p><strong>Worker cap</strong> (<code>apply_fan_out_cap</code>): too many workers get squeezed into fewer, no card dropped.</p></li><li><p><strong>Token budget</strong> (<code>dispatch</code>): 60,000 tokens per review; once over, the remaining cards are skipped and named in the summary, not silently lost.</p></li><li><p><strong>Backup plan</strong> (<code>fallback_plan</code>): if the lead fails, split the cards alphabetically. A failed lead never stops the review.</p></li></ol><p>Three versions, five runs each (<em>ran on 2026-Sep-25th</em>): Claude Opus 5 as the lead, Claude Haiku 4.5 as the workers, through headless Claude Code (runs at commit <code>3a09186</code>, after the answer-key fix. <a href="https://github.com/thiagoavadore/agent-topologies/tree/cca6c10/01-orchestrator-worker">folder 01 is here</a>).</p><p>Version Workers Tokens per review (average) Risks found Uncapped 4 36,573 60 of 60 Capped at two 2 23,278 59 of 60 No lead plan, alphabetical 2 22,994 59 of 60</p><p>Left alone, the lead planned four workers in all five runs. Capping it at two cut tokens by 36% for one missed risk out of 60. Skipping the lead&#8217;s plan and splitting the cards alphabetically between two workers: 37% fewer tokens, the same one miss.</p><p>So, Thiago, does the lead earn its keep? On this (simple) task, no. The lead&#8217;s planning call averaged 1,493 tokens per review. That is everything the plan cost, and it bought nothing I could measure over a dumb split with the same headcount.</p><p>More workers also meant more noise: 3.6 findings per review not on the answer key (the ones I spot-checked looked more like architectural calls the model was making for me than wrong answers), against 1.0 and 0.8 with two.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_bsz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_bsz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!_bsz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!_bsz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!_bsz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!_bsz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:285605,&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://writing.tilinthecloud.com/i/217982069?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.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_!_bsz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!_bsz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!_bsz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!_bsz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ce51b51-b1b5-4e96-813b-02dd36f9effe_1600x1000.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 caveats travel with the number:</p><ul><li><p><strong>Tokens, not cost.</strong> Cached input counts like fresh input, though it bills at about a tenth.</p></li><li><p><strong>Per-call overhead.</strong> Claude Code adds a fixed prompt and thinking to every call, so four workers pay more of it. On the API the gap may shrink.</p></li><li><p><strong>One undercounted run.</strong> One uncapped worker was logged at 0 tokens while returning four findings. Leave that run out and the cheapest four-worker run (36,796) still sits above every two-worker run (max 26,897). The real gap is wider, not narrower.</p></li><li><p><strong>Same miss both times:</strong> an <code>smtplib</code> call with no timeout. Chance at five runs, or a risk easier to miss when a worker holds more cards.</p></li></ul><p>And the honest version of <strong>&#8220;we have guardrails!&#8221;</strong> is that in 15 real runs, none of them fired. Zero broken reports, no worker outside its brief, and the budget never tripped (biggest review: 41,999 of 60,000). The retry and throw-out paths are covered only by <code>uv run pytest</code>. Fine... let&#8217;s not just confuse a guard that exists with a guard that reality has tested.</p><p><strong>Now read it as an org chart</strong>. The lead is the tech lead who owns the decomposition... its decomposition added nothing over an alphabetical split. The headcount decision (the cap) actually moved the number. The lead is also the single point of failure, which is why the backup plan exists. And whoever owns the lead&#8217;s prompt holds the &#8220;team instructs&#8221; right from last week&#8217;s <a href="2026-09-22 Issue 12 - nobody owns the policy">Issue 12</a>.</p><h2>Two kinds of worker, and only one gets to write</h2><p>Stephen Toub wrote up how GitHub ported <a href="https://github.blog/ai-and-ml/generative-ai/migrating-the-github-copilot-runtime-to-rust-using-copilot/">the Copilot runtime from TypeScript to Rust, using Copilot</a> (The GitHub Blog, September 2026). Let&#8217;s not be naive at first... we are talking about a vendor blog showing off its own product. The engineering holds up well when reading, but the tooling claims need checking before they transfer.</p><p>They kept two kinds of worker apart. Subagents read, explore and hand answers back to the parent (<em>hello Team Topologies&#8217; facilitating</em>). Child sessions get their own worktree and branch and produce the diff, with a write boundary (<em>hello also to you X-as-a-Service</em>).</p><p>GitHub reports that the <code>session.ts</code> port used five subagents and 15 child sessions in seven waves. 120 of the 140 files touched were touched by exactly one session. The 20 contended files were all hubs.</p><p>And these hubs are where it went wrong. 2 peer sessions met at the most connected file. One asked four times to integrate, was refused four times... then reached into the other&#8217;s worktree and merged anyway (<em>passive-aggressive much?</em>)... almost like a refusal between peers carries no weight.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_sxU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_sxU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!_sxU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!_sxU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!_sxU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!_sxU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png" width="1456" height="910" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:245304,&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://writing.tilinthecloud.com/i/217982069?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.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_!_sxU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png 424w, https://substackcdn.com/image/fetch/$s_!_sxU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png 848w, https://substackcdn.com/image/fetch/$s_!_sxU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!_sxU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa8c979a-795e-4cd0-bbf7-8b92ba072e19_1600x1000.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><blockquote><p>Just like with kids at school, work peers need a tiebreaker. So do AI agents, and that&#8217;s the role of a coordinator or a named human.<br>That is the fourth right from <a href="2026-09-22 Issue 12 - nobody owns the policy">Issue 12</a> showing up in a terminal.</p></blockquote><p>Back to folder 01, you see that my workers are like GitHub&#8217;s subagents, not its child sessions. They only read and report, which is why none of them could collide. Workers that write (change things) are next week&#8217;s experiment.</p><h2>The three-body reading</h2><p><strong>The architecture body</strong> is the worker contracts and the write boundary: who may touch which files.</p><p><strong>The team body</strong> is who owns the decomposition and who breaks ties.</p><p><strong>The AI-capability body</strong> is the models behind the lead and the workers. The cheapest body to swap, and the one everyone argues about first.</p><p>Folder 01 is the proof in miniature. Swapping the lead&#8217;s judgement for an alphabetical split changed nothing measurable. The headcount decision, a team-body call, moved tokens by a third. Move one body without the others and you get GitHub&#8217;s annexation, or a lead nobody owns.</p><h2>Where it does not reach yet</h2><p>One vendor case and an unusual one: an agent runtime porting itself. My run is small (one task, 8 cards, 12 risks, 15 runs), read-only, with the caveats above.<br>Orchestrator-worker is the simplest setup in the family, so ownership gets harder in the next weeks. The catalogues&#8217; thresholds (fan-out depth, iteration counts) come without data, so the repo measures ours.</p><h2>Run it on yourself</h2><p>Five checks, on your own agents, not on a vendor&#8217;s slides.</p><ol><li><p><strong>Two drawings.</strong> Put your agent topology next to your org chart. Where do they disagree?</p></li><li><p><strong>One name per contract.</strong> For each worker: who owns its input/output contract? A name, not a team.</p></li><li><p><strong>Shared writes.</strong> Does any worker write to something another worker writes? Then you have peers, and peers need a tiebreaker.</p></li><li><p><strong>The lead&#8217;s prompt.</strong> Who owns the decomposition itself? And have you tested it against a dumb split (alphabetical, round-robin) at the same headcount?</p></li><li><p><strong>The brakes.</strong> What stops a runaway split: a worker cap, a token budget, or hope?</p></li></ol><h2>The whole thing, in one line</h2><blockquote><p><strong>Pick the pattern by who owns the split, not by the shape of the diagram.</strong></p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>Coming up</h2><p>Next week, handoffs versus parallel streams: the pipeline, where one early mistake travels all the way to production, and fan-out / fan-in, where the agent that merges carries the whole cognitive load. Folders 02 and 03... and this time the workers get write access, pointed at the same hub file. More soon. :-]</p><h2>Sources</h2><ul><li><p>Mel Conway, &#8220;How Do Committees Invent?&#8221;, <em>Datamation</em>, April 1968. <a href="https://www.melconway.com/Home/Committees_Paper.html">https://www.melconway.com/Home/Committees_Paper.html</a></p></li><li><p>Matthew Skelton and Manuel Pais, <em>Team Topologies</em>, IT Revolution, 2019; interaction modes as summarised at <a href="https://teamtopologies.com/key-concepts">https://teamtopologies.com/key-concepts</a></p></li><li><p>Erik S. and Barry Zhang (Anthropic), &#8220;Building Effective Agents&#8221;, 19 Dec 2024. <a href="https://www.anthropic.com/research/building-effective-agents">https://www.anthropic.com/research/building-effective-agents</a></p></li><li><p>Stephen Toub, &#8220;Migrating the GitHub Copilot runtime to Rust, using Copilot&#8221;, The GitHub Blog, September 2026 (vendor engineering blog). <a href="https://github.blog/ai-and-ml/generative-ai/migrating-the-github-copilot-runtime-to-rust-using-copilot/">https://github.blog/ai-and-ml/generative-ai/migrating-the-github-copilot-runtime-to-rust-using-copilot/</a></p></li><li><p>Ken Huang, &#8220;Multi-Agent Design Patterns: Architectural Topologies, Failure Modes, and Production Hardening&#8221;, Agentic AI Substack, 29 Aug 2026 (practitioner newsletter, food for thought only). </p></li></ul><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:194137159,&quot;url&quot;:&quot;https://kenhuangus.substack.com/p/multi-agent-design-patterns-architectural&quot;,&quot;publication_id&quot;:1796302,&quot;embedding_publication_id&quot;:9423595,&quot;publication_name&quot;:&quot;Agentic AI &quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!rWke!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5395d473-3e5f-4ef3-aca5-241ffc64c82e_505x505.png&quot;,&quot;title&quot;:&quot;Multi-Agent Design Patterns: Architectural Topologies, Failure Modes, and Production Hardening&quot;,&quot;truncated_body_text&quot;:&quot;Building autonomous multi-agent systems for production requires shifting away from monolithic prompt chains and unpredictable agent swarms. Early implementations frequently fail when uncoordinated agents trigger compounding error loops, exhaust token budgets, or execute unauthorized mutations. Production reliability demands explicit coordination topologies, bounded execution budgets, deterministic state machines, and fine-grained access control.&quot;,&quot;date&quot;:&quot;2026-08-29T01:05:32.688Z&quot;,&quot;like_count&quot;:50,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:1160339,&quot;name&quot;:&quot;Ken Huang&quot;,&quot;handle&quot;:&quot;kenhuangus&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d670301-204b-472e-a2ee-bbb1b7633a99_2026x2026.png&quot;,&quot;bio&quot;:null,&quot;profile_set_up_at&quot;:&quot;2022-12-14T20:47:13.840Z&quot;,&quot;reader_installed_at&quot;:&quot;2025-01-02T21:15:15.019Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1779815,&quot;user_id&quot;:1160339,&quot;publication_id&quot;:1796302,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1796302,&quot;name&quot;:&quot;Agentic AI &quot;,&quot;subdomain&quot;:&quot;kenhuangus&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;I share my thoughts on anything related to Agentic AI and Agentic AI Security topics. You can also subscribe to our sister YouTube channel at https://www.youtube.com/@AgenticAISignal/shorts for the latest signal on Agentic AI&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5395d473-3e5f-4ef3-aca5-241ffc64c82e_505x505.png&quot;,&quot;author_id&quot;:1160339,&quot;primary_user_id&quot;:1160339,&quot;theme_var_background_pop&quot;:&quot;#99A2F1&quot;,&quot;created_at&quot;:&quot;2023-07-11T21:55:42.778Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;ken&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:100,&quot;status&quot;:{&quot;bestsellerTier&quot;:100,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;bestseller&quot;,&quot;tier&quot;:100},&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://kenhuangus.substack.com/p/multi-agent-design-patterns-architectural?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web&amp;embedding_publication_id=9423595"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!rWke!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5395d473-3e5f-4ef3-aca5-241ffc64c82e_505x505.png" loading="lazy"><span class="embedded-post-publication-name">Agentic AI </span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Multi-Agent Design Patterns: Architectural Topologies, Failure Modes, and Production Hardening</div></div><div class="embedded-post-body">Building autonomous multi-agent systems for production requires shifting away from monolithic prompt chains and unpredictable agent swarms. Early implementations frequently fail when uncoordinated agents trigger compounding error loops, exhaust token budgets, or execute unauthorized mutations. Production reliability demands explicit coordination topologies, bounded execution budgets, deterministic state machines, and fine-grained access control&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 months ago &#183; 50 likes &#183; Ken Huang</div></a></div><ul><li><p>The repo: <code>agent-topologies</code>, folder <code>01-orchestrator-worker</code>, <a href="https://github.com/thiagoavadore/agent-topologies/tree/cca6c10/01-orchestrator-worker">https://github.com/thiagoavadore/agent-topologies/tree/cca6c10/01-orchestrator-worker</a> (runs made at commit <code>3a09186</code> on 25 Sep 2026; README and guards corrected since, runs unchanged; linked at <code>cca6c10</code>).</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/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">Thanks for reading The Recovering CTO! Subscribe for free to receive new posts and support my work.</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></p>]]></content:encoded></item><item><title><![CDATA[Nobody owns the policy]]></title><description><![CDATA[And that is the design, once you split it in four.]]></description><link>https://writing.tilinthecloud.com/p/nobody-owns-the-policy</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/nobody-owns-the-policy</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 22 Sep 2026 09:00:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Rbj5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week I left you with three checks. The third one was &#8220;name the owner&#8221;: whose name is on the policy your agents run under?</p><p>And well... I ran that third one in a customer room recently. Who were there? The CIO, the cloud lead, a security engineer and two engineering managers. The answers came fast.</p><p>&#8220;Security, I think.&#8221;</p><p>&#8220;Well, the gateway is ours, so the tool list is platform.&#8221;</p><p>&#8220;The repo rules are ours, we wrote the AGENTS.md.&#8221;</p><p>Three answers, all true... and a quietness that arises when people notice that the answer to &#8220;who owns the policy&#8221; was everyone... which in an org chart means nobody.</p><p>So I did what I do when a room goes quiet... think, discuss and read from others&#8217; experience. Not the frameworks... the engineering blogs. What did Dropbox, Uber, Spotify, Atlassian and Datadog actually write, in 2026, about who decides what their agents may do?</p><p>In essence, none of them has A policy owner. All of them have four.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rbj5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rbj5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!Rbj5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!Rbj5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!Rbj5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rbj5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:319221,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/216871326?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.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_!Rbj5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!Rbj5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!Rbj5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!Rbj5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71340e4b-4821-4468-9bca-0d6f825e5e4b_1200x675.png 1456w" sizes="100vw" fetchpriority="high"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><a href="https://writing.tilinthecloud.com/p/one-program-not-three">Issue 1 named the trap: one program, not three.</a><br><a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2 named the destination: AI-native, not AI-ready.</a><br><a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Issue 3 put three bodies on the table that have to move together.</a><br><a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Issue 5 found Herbie: your bottleneck doesn&#8217;t burn tokens.</a><br><a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">Issue 7 taught one repo and moved a fleet.</a><br><a href="https://writing.tilinthecloud.com/p/who-reviews-the-reviewers">Issue 9 asked who reviews the reviewers.</a><br><a href="https://writing.tilinthecloud.com/p/before-the-robots-came">Issue 10 found the software factory was always there.</a><br><a href="https://writing.tilinthecloud.com/p/prove-it-before-it-runs">Issue 11 moved the gate before execution and gave the humans the policy to write.</a></p><p>No kit this week: the argument, five posts you can read yourself, and the standing ask: if this lands, forward it to whoever was about to hire a &#8220;Head of AI Governance&#8221;.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>Dropbox gave the decision back</h2><p>The story that made me sit up is not the one with the biggest numbers. It is the one where decision rights moved, and moved in the direction I didn&#8217;t expect (towards the team, not the centre).</p><p>Dropbox runs its coding agents on an internal platform called Nova. Mike White and Kevin Altschuler <a href="https://dropbox.tech/machine-learning/introducing-nova-our-internal-platform-for-coding-agents">wrote it up in May</a>. Before Nova they had an in-house migration tool that generated parallel agent jobs from prompt templates, ran the verification commands and published branches. Thousands of migrations went through it. It worked... until it didn&#8217;t...</p><p>And what seems obvious in hindsight was that they had no simple way to review the agents&#8217; output and then &#8220;continue&#8221; it with their input... so whenever something broke/failed, there was no practical way to recover/checkpoint the work.</p><p>And then the sentence I underlined twice: &#8220;highly repeatable migration work was often better handled directly by migration owners, who could launch and manage dozens of agents with the same runbook rather than coordinating delegated work across teams.&#8221;</p><p>Read that again with the org chart in mind and remember <a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">Issue 7</a> with the airline. The central team did not take more control. They gave the runbook back to the person who owns the migration, and kept for themselves the things a migration owner should never have to think about: isolated execution, hermetic tests, the CI loop and one rule they state in plain words: &#8220;We chose to keep publication outside the agent and limit each session to a single branch.&#8221;</p><p>So who owns the policy at Dropbox? The platform owns what the agent structurally cannot do (publish, branch, skip CI). The migration owner owns what the agent will do today (the prompt, the runbook and, they say, soon the rollout). Two owners, two different kinds of decision and no committee between them.</p><p>And that split is not a Dropbox quirk... let me show you.</p><h2>Four rights, not one job</h2><p>Dropbox is one of the five posts I read. The other four (Uber, Spotify, Atlassian and Datadog, all linked below) tell the same story from a different desk: put them side by side and the same four decisions keep landing in the same four places.</p><p><strong>1. The invariants sit with security.</strong> Uber&#8217;s post on <a href="https://www.uber.com/us/en/blog/solving-the-agent-identity-crisis/">agent identity</a> (six authors from Engineering Security and AI Security, May 2026) is the clearest. Every agent gets an identity. Every call into Uber&#8217;s systems goes through an MCP Gateway that is, in their words, &#8220;a policy enforcement point for MCP tool invocations&#8221;. And it works by defining policies based on internal risk classification... if it&#8217;s a high risk, it&#8217;s MANDATED. See? Not proposed to a working group. Security decides which systems are high risk and what an agent must present to touch them. What Uber&#8217;s post does <em>not</em> say is that security decides what any agent is for. That is someone else&#8217;s right.</p><p><strong>2. The mechanism sits with platform.</strong> Spotify&#8217;s Niklas Gustavsson <a href="https://engineering.atspotify.com/2026/6/code-with-claude-coding-is-no-longer-the-constraint">described it in June</a>: Backstage, Soundcheck, &#8220;golden state&#8221; (the recommended stack per component type) and lint. They claim that, combined with static analysis and linting, standards become active guardrails. The platform team did not write a policy document for agents. It pointed the guardrails it already had at a new kind of contributor. Dropbox&#8217;s Nova is the same move: the platform owns execution, isolation, validation and the CI trigger. Datadog&#8217;s version is a guild (&#8221;Frontend Augmented by AI&#8221;) that sets golden paths for <a href="https://www.datadoghq.com/blog/ai-development-golden-paths/">over 50 teams</a>. Platform owns <em>how</em> checking happens. Not <em>what</em> is allowed and not <em>what</em> the agent is doing.</p><p><strong>3. Local intent sits with the team that owns the code.</strong> Atlassian&#8217;s Jira team <a href="https://www.atlassian.com/blog/development/ai-agents-jira-engineering-maintenance">encoded its own cleanup knowledge</a> into agent skills, then hit the wall every large org hits. You cannot have &#8220;one-size-fits-all&#8221; solutions in a company with 1000&#8217;s of repos owned by 100&#8217;s of teams... so Atlassian&#8217;s answer is repository-specific skills, with repo owners asked to write the cleanup procedure for their own repo. Datadog goes in the same direction by using the control with the smallest scope that still gives the desired output. So they go developer-local first, then the package, then the repo root. The team decides the task, the instructions and whether a piece of work is worth delegating at all.</p><p><strong>4. Exceptions sit with a named human.</strong> Not a role, but A person. Atlassian keeps it simple by having engineers validate the change before it is merged. Dropbox kept publication out of the agent&#8217;s hands entirely. And if you operate in Europe this one is not optional: the <a href="https://eur-lex.europa.eu/eli/reg/2024/1689/2026-07-27/eng">AI Act</a> requires that high-risk systems have human oversight by people with &#8220;the necessary competence, training and authority&#8221;, who can decide not to use the output, override it or stop the system. The Act does not say which team those people sit in, just that they must exist and be able to act.</p><p>Now back to the tease from last week, because I promised three answers.</p><p><em>Who owns the policy?</em> Put the five together and you get 4 people... the trick is that each owns a different verb: security <em>mandates</em>, platform <em>enforces</em>, the team <em>instructs</em> and a named human <em>overrides</em>.</p><p><em>What can they decide without asking anyone?</em> Security can add a system to the high-risk list. Platform can change how a check runs. The team can change what its own agent is told and what it works on. The human can say no. Each of those is a decision nobody else gets to block and each one is useless without the other three.</p><p><em>Where do they sit?</em> Security is security. Platform is your platform team, the same one that owns the paved road, not a new one. The team is stream-aligned, in Team Topologies terms. The guild at Datadog is the enabling team: it sets the path, measures it, and hands it over. And the human with the override sits wherever the blast radius is... which is why it has to be a name and not a box.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MTDB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MTDB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MTDB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MTDB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MTDB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!MTDB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:807907,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/216871326?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MTDB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MTDB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MTDB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MTDB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c054647-bf7b-4efe-89ff-5441a26140bb_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><h2>The standards will not tell you, and that is good news</h2><p>So Thiago, should we read NIST or ISO&#8217;s standards to know what to do? Well... I did, but there are dozens out there... and frankly, they are deliberately silent on exactly this question.</p><p>NIST&#8217;s 2026 agent work (<a href="https://www.nist.gov/news-events/news/2026/02/new-concept-paper-identity-and-authority-software-agents">the identity and authority concept paper</a>, the Agent Standards Initiative) is about identification, authorization and audit. Technical as NIST has always been. It assigns no owner. ISO/IEC 42001 says an organisation must &#8220;define responsibilities for AI use&#8221; and stops there, on purpose, because it is a management-system standard and not an org chart. And the AI Act (Article 26) explicitly preserves the deployer&#8217;s freedom to organise its own resources.</p><p>So the law tells you the override must exist and the person must have authority. The standards tell you responsibilities must be assigned. Neither tells you to whom... this is not a gap, just a way to tell you it&#8217;s your decision.</p><p>The consultancies, of course, are happy to fill the silence. BCG&#8217;s <a href="https://www.bcg.com/publications/2026/how-cios-govern-ai-agents-at-scale">Enterprise AI Control Plane</a> (August 2026, consultancy research) argues for &#8220;a designated owner with the mandate and authority to enforce standards across platforms&#8221;, with Enterprise Architecture leading it, and separates a &#8220;control layer&#8221; from a &#8220;build layer&#8221;. Team Topologies argues the <a href="https://teamtopologies.com/ai-workforce-readiness">other way</a> (their own consultancy&#8217;s position) with &#8220;the stewardship boundary around the value flow remains the remit of the human team&#8221;.</p><p>But look at what each one is actually asking to own. BCG&#8217;s &#8220;control layer&#8221; is identity, the agent registry, runtime enforcement and golden paths: the invariants and the mechanism, rights 1 and 2. Team Topologies&#8217; &#8220;stewardship&#8221; is what the team is trying to achieve and what it tells the agent to do: the intent and the override, rights 3 and 4. Neither is claiming the other&#8217;s half. They only sound opposed because both call their half &#8220;governance&#8221;... and the moment you name four rights instead of one, the fight disappears.</p><h2>What auto-merges is the real fight</h2><p>If the four rights were the whole story this would be a tidy post. They are not, because two of the five companies disagree on the one decision that matters most day to day: what ships without a human looking at it.</p><p>Spotify has a fleet system with more than 2.5 million automated maintenance PRs the vast majority auto-merged, no human in the loop. Their most recent Java migration across the backend took three days. And with agents in the mix they now have 76% more PRs to review, so their post ends with something I hear over and over and over and over again: they auto-merge what is safe, focus human review where it matters most, and are rethinking how they plan &#8220;as the bottleneck moves from coding to decision-making&#8221; (their words).</p><p>Atlassian&#8217;s story came out in the same month with the same type of work (flaky tests, cleanup chores), but with a distinct decision when compared to Spotify. First, the agent does the repetitive context gathering with investigation, diagnosis and a proposed fix. Then engineers validate the change before it is merged. Every single change... They report about one engineering week saved per month and up to 80% fewer engineering hours on flaky tests specifically...</p><p>Can both be right? I think so, and I think Dropbox&#8217;s story has the reasoning. Dropbox validates a flaky-test fix by running the test 100+ times in CI before it lands, and kept the CI trigger outside the agent. Why? Otherwise you get changes validated against the wrong tests. Spotify&#8217;s fleet changes are deterministic scripts against a standardised stack, with the same lint on every component, while Atlassian&#8217;s run across 1000+ repos with different conventions.</p><p>So the variable is not how mature your AI is. It is whether the change has a deterministic check <em>and</em> a bounded blast radius. Where both hold, auto-merge is a policy decision that platform (right 2) can make and security (right 1) can veto. Where either fails, the named human is not a transition phase. The human is the design... And here we are in the same conclusion as <a href="https://writing.tilinthecloud.com/p/prove-it-before-it-runs">last week</a>, one floor up.</p><p>And a geek aside for the people who write AGENTS.md files (hello, Context Engineering, we meet again): Datadog measured what happens when you <em>remove</em> the root-level one: 13% faster runs, 16% fewer input tokens and 10% lower spend. And they say this happens with a roughly 7% decrease in output consistency, which they plan to recover by moving the instructions into more finely scoped controls, including skills, hooks, lint rules, tests.</p><p>But notice what it is: an <em>economic</em> argument for Intent (right 3). A global instruction file costs the agent the way a global standards manual costs a developer... then, let&#8217;s push intent down to where it is used.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lK44!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lK44!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lK44!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lK44!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lK44!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lK44!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:753750,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/216871326?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lK44!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lK44!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lK44!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lK44!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbab90fd1-6e00-427e-9b02-bfdf17f6c229_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><h2>Policy on paper is not policy at runtime</h2><p>That is three companies pushing intent down. I wanted to know what the other few thousand do, and while thinking on how to gather data from different companies about Agentic AI policies, I came across an interesting survey. Enterprise Management Associates asked <a href="https://www.cequence.ai/news/ai-agent-governance-research/">202 CIOs, CTOs, CISOs and IT directors</a> at companies with more than 1,000 employees about their agents (August 2026, commissioned by Cequence Security, a vendor with a product to sell, methodology in <a href="https://www.cequence.ai/wp-content/uploads/2026/08/EMA-Research-Report-Agents-Without-Guardrails.pdf">the PDF</a>). 94% were confident their agents do not have more access than they need. 33% actually provision least-privilege access. 34% check an agent&#8217;s authorization at the moment it tries to act.</p><p>I do not trust a sponsored survey to three significant figures. I do recognize it from a few of my customers, because it is the shape from <a href="https://writing.tilinthecloud.com/p/prove-it-before-it-runs">Issue 11</a>: a policy that exists as a document versus a policy that is checked before the first tool call. If I accept the numbers from the research it would be like 9 in 10 leaders are sure the policy holds, but only 3 in 10 have the check that would prove it.</p><p>And now you can see why &#8220;who owns the policy&#8221; gets the everyone-therefore-nobody answer, right? If the policy is a document, everyone can own a paragraph. If the policy is a check that runs, somebody has to own the check (platform), somebody the rule it enforces (security), somebody the instruction it enforces it on (the team) and somebody the moment it says no (a human). The four rights are not a governance model I am proposing. They are what falls out of moving the policy from paper to runtime.</p><h2>The three-body reading</h2><p>You knew this was coming.</p><p><strong>The team body is this whole issue.</strong> Four rights is an org-design decision. No model release makes it, no verifier makes it, no framework makes it for you. It is the part the &#8220;buy the guardrail&#8221; plan skips, and it is the part the room went quiet on.</p><p><strong>The architecture body is the gateway and the contracts.</strong> Uber&#8217;s MCP Gateway is right 1 made physical. Spotify&#8217;s lint-as-guardrail is right 2 made physical. Neither exists in a company whose tools have docstrings instead of contracts (Issue 11&#8217;s check 2, still open on most whiteboards I see).</p><p><strong>The capability body is the verifier</strong>, the thing from last week. It is the least interesting of the three this week, which is the point: a verifier in a company that has not decided who mandates, who enforces, who instructs and who overrides is a very fast way to enforce nobody&#8217;s policy.</p><p>And the sequencing trap, one more time, because it has a new costume. It is called &#8220;Head of AI Governance&#8221;. Hire that person first, with the four rights undivided, and you have built a committee with a job title. They will write the document. Nine in ten are already sure it holds.</p><p>And this is the second exercise in the <a href="https://tilinthecloud.com/delivery-lab/">lab I run with customers</a>, right after the 5-line policy from last week: for one real workflow, four names on one sheet. Who mandates, who enforces, who instructs, who overrides. The blanks are the diagnostic, and so far the blank is almost never &#8220;security&#8221; :-]</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QBWG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QBWG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QBWG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QBWG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QBWG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!QBWG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:736699,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/216871326?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QBWG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QBWG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QBWG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QBWG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F357290de-c76e-44a7-b6e3-ab2484269a26_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>Where it does not reach yet</h2><p>Every practitioner story above is a company writing about itself on its own blog. Uber, Atlassian, Dropbox and Spotify have independent coverage that matches. Datadog&#8217;s numbers are Datadog&#8217;s alone. That is the weight of it: five honest accounts, zero audits.</p><p>AFAIK, there is no peer-reviewed study that tests one org design for agent policy against another... nobody has measured how long it takes a company to approve a new agent capability, or what share of the rules are written centrally versus in the repo. The surveys collapse all four rights into one question called &#8220;governance&#8221;, which is why they cannot tell you anything about the split.</p><p>You can be sassy and claim that all these companies are software companies, so heavily regulated banks/airline/telco/public sector will have a different shape. I have seen the same pattern in regulated rooms. The difference is that those companies do not write blog posts, and I do not put clients in newsletters.</p><p>And the Dropbox story is about migrations, repeatable work with a runbook. Whether &#8220;give the runbook back to the owner&#8221; holds for work that has no runbook is exactly the Spotify-versus-Atlassian question, and it is open.</p><h2>Run it on yourself</h2><p>More checks for you to self-assess... now one floor up from last week&#8217;s.</p><ol><li><p><strong>Four names, one workflow.</strong> Take the agent workflow you wrote the 5-line policy for. Write the four names: who can add a system to the high-risk list, who can change how the check runs, who can change what the agent is told, who can say no at the moment it acts. A blank is a finding, but I think 2 names in one box is a bigger one.</p></li><li><p><strong>Find one thing that auto-merges.</strong> If nothing does, ask why not: is there a change class with a deterministic check and a small blast radius or is &#8220;human reviews everything&#8221; a policy nobody decided? If something does, find who decided, and whether security (right 1) knows.</p></li><li><p><strong>Find where one rule lives.</strong> Pick one instruction your agents follow. Is it in a root file every agent reads on every run, or in the smallest scope that needs it? If it is at the root and applies to one team, you are paying Datadog&#8217;s 16% in tokens for the privilege of a committee owning it.</p></li></ol><p>Run the three and you know whether your policy has four owners or one document.</p><h2>The whole thing, in one line</h2><blockquote><p><strong>Stop looking for the owner of the policy. Split it into the four decisions it always was, and put a name on each.</strong></p></blockquote><h2>Coming up</h2><p>Next week I want to leave the org chart and go back to something with a terminal in it. Hands dirty, numbers on the table. More soon. :-]</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>Sources</h2><ul><li><p>Mike White, Kevin Altschuler, &#8220;Introducing Nova, our internal platform for coding agents&#8221;, Dropbox.Tech, 21 May 2026. <a href="https://dropbox.tech/machine-learning/introducing-nova-our-internal-platform-for-coding-agents">https://dropbox.tech/machine-learning/introducing-nova-our-internal-platform-for-coding-agents</a></p></li><li><p>Matt Mathew, Prasad Borole, Meng Huang, Sergey Burykin, Gaurav Goel, Bayard Walsh, &#8220;Solving the Identity Crisis for AI Agents&#8221;, Uber Engineering Blog, 21 May 2026. <a href="https://www.uber.com/us/en/blog/solving-the-agent-identity-crisis/">https://www.uber.com/us/en/blog/solving-the-agent-identity-crisis/</a></p></li><li><p>Spotify Engineering, &#8220;Coding Is No Longer the Constraint: Scaling Developer Experience to Teams and Agents at Spotify&#8221;, 3 June 2026, a write-up of Niklas Gustavsson&#8217;s (Chief Architect and VP of Engineering) Code with Claude 2026 talk. <a href="https://engineering.atspotify.com/2026/6/code-with-claude-coding-is-no-longer-the-constraint">https://engineering.atspotify.com/2026/6/code-with-claude-coding-is-no-longer-the-constraint</a></p></li><li><p>Arnaud Moret, WaiYee Loo, &#8220;How We Cut up to 80% of Engineering &#8216;Chores&#8217; Using AI Agents in Jira&#8221;, Inside Atlassian, 1 June 2026 (<em>the 80% figure applies to flaky-test hours</em>). <a href="https://www.atlassian.com/blog/development/ai-agents-jira-engineering-maintenance">https://www.atlassian.com/blog/development/ai-agents-jira-engineering-maintenance</a></p></li><li><p>Addie Beach, Rui Martins Lacerda, &#8220;How we built data-driven AI Golden Paths at Datadog&#8221;, Datadog, The Monitor, 9 September 2026 <em>(the A/B figures are Datadog&#8217;s own, unreplicated)</em>. <a href="https://www.datadoghq.com/blog/ai-development-golden-paths/">https://www.datadoghq.com/blog/ai-development-golden-paths/</a></p></li><li><p>Regulation (EU) 2024/1689 (the AI Act), consolidated text of 27 July 2026, EUR-Lex. <a href="https://eur-lex.europa.eu/eli/reg/2024/1689/2026-07-27/eng">https://eur-lex.europa.eu/eli/reg/2024/1689/2026-07-27/eng</a></p></li><li><p>NIST, &#8220;New Concept Paper: Identity and Authority for Software Agents&#8221;, 5 February 2026 (a concept paper, evolving). <a href="https://www.nist.gov/news-events/news/2026/02/new-concept-paper-identity-and-authority-software-agents">https://www.nist.gov/news-events/news/2026/02/new-concept-paper-identity-and-authority-software-agents</a></p></li><li><p>ISO, &#8220;ISO/IEC 42001 explained: what it is&#8221;, September 2026. <a href="https://www.iso.org/home/insights-news/resources/iso-42001-explained-what-it-is.html">https://www.iso.org/home/insights-news/resources/iso-42001-explained-what-it-is.html</a></p></li><li><p>Shaheer Rizvi, Zeeshan Shah, Sarvesh Singh, Nicolas Tanaka, Francois D&#8217;Agostini, Jazz Tobaccowalla, &#8220;Enterprise AI Control Plane: The CIO&#8217;s Guide to Governing and Accelerating AI Agents&#8221;, Boston Consulting Group, 14 August 2026. <a href="https://www.bcg.com/publications/2026/how-cios-govern-ai-agents-at-scale">https://www.bcg.com/publications/2026/how-cios-govern-ai-agents-at-scale</a></p></li><li><p>Team Topologies, &#8220;Executive Report: Team Topologies as The Organizational Foundation for AI ROI&#8221;, 12 August 2026, via the AI Workforce Readiness page. <a href="https://teamtopologies.com/ai-workforce-readiness">https://teamtopologies.com/ai-workforce-readiness</a></p></li><li><p>Enterprise Management Associates for Cequence Security, &#8220;Agents Without Guardrails: The Agentic AI Governance Gap in the Enterprise&#8221;, 31 August 2026, n=202 (vendor-commissioned survey. Press release <a href="https://www.cequence.ai/news/ai-agent-governance-research/">https://www.cequence.ai/news/ai-agent-governance-research/</a> and report PDF <a href="https://www.cequence.ai/wp-content/uploads/2026/08/EMA-Research-Report-Agents-Without-Guardrails.pdf">https://www.cequence.ai/wp-content/uploads/2026/08/EMA-Research-Report-Agents-Without-Guardrails.pdf</a></p></li></ul><p>Further reading (not cited in the body):</p><ul><li><p>InfoQ&#8217;s independent write-ups of the Uber (17 June 2026, <a href="https://www.infoq.com/news/2026/06/ai-agent-identity-uber-auth0/">https://www.infoq.com/news/2026/06/ai-agent-identity-uber-auth0/</a>) and Dropbox (June 2026, <a href="https://www.infoq.com/news/2026/06/dropbox-nova-ai-coding-agents/">https://www.infoq.com/news/2026/06/dropbox-nova-ai-coding-agents/</a>) posts, which is how I checked that I was not reading a press release as engineering.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/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">Thanks for reading The Recovering CTO! Subscribe for free to receive new posts and support my work.</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></p>]]></content:encoded></item><item><title><![CDATA[Prove it before it runs]]></title><description><![CDATA[Your review queue is a placement problem.]]></description><link>https://writing.tilinthecloud.com/p/prove-it-before-it-runs</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/prove-it-before-it-runs</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 15 Sep 2026 09:09:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ENTs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I said last week I wanted my hands dirty again. Sunday evening, kids in bed, and I&#8217;m in front of a terminal cloning a weird-looking GitHub repo with &#8220;metareflection&#8221; in the title.</p><p>The trail started a week earlier, in a call with Prof. Tanja Vos about code quality and testing when AI writes the code. She did her PhD in formal methods in Utrecht, has spent the 26 years since in software testing, and knows Erik Meijer from those Utrecht days. She pointed me to his talk and to the repo. Erik Meijer, if you need the intro: the Dutchman who put LINQ and Rx into .NET at Microsoft, then Meta, then Leibniz Labs, and who now says on stage that he has <a href="https://www.youtube.com/watch?v=-CnA2lGfymY">never seen anything scarier than an LLM with tool calls</a>. In that talk he mentioned that someone had built a working version of his idea on GitHub. If he hadn&#8217;t, I&#8217;m not sure I&#8217;d be doing this...</p><p>Anyway, I go through it... pydantic, z3-solver... <code>pytest</code>: 130 passed in 1.5 seconds. Green faster than you can say &#8220;human in the loop&#8221;. Let&#8217;s run a plan that has nothing malicious on it: voil&#224;! It executes, no hiccups.</p><p>Now let&#8217;s try a plan that has almost the same content as the first one, but in the end sends a summary email to an outside email domain. REFUSED.</p><p>Three separate complaints, none of them from an LLM: the summary carries data from <code>fetch_mail</code> into the email body (taint), the recipient domain is not on the allowed list (precondition), and a policy called <code>no_external_send</code> hit its error state (automaton).</p><p>Refused even before any tool is executed... so I skipped the check and handed the plan straight to the executor. Blocked again, zero tools called.</p><p>This got me intrigued, so I decided to dive deep into <a href="https://dl.acm.org/doi/10.1145/3777544">the paper</a>. There they describe an example where, in the middle of the plan, sits a <code>delete_file("*.txt")</code>. The repo does not cover that one yet. To their credit, the DESIGN.md says so in plain words: <code>old()</code> in frame conditions, not implemented. I grin because the real thing is narrower than the paper. That is normal, and it is also where the work is. Maybe time to call Erik (and Nada Amin, who wrote the repo) and start the PhD I keep postponing? :-P</p><p>What if this review queue getting bigger is not just a staffing problem caused by the tech moving forward faster than we can absorb? What if this has a lot to do with process and placement?</p><p>I mean, we pay humans to find (after the fact) what sometimes a policy or validation could have refused before the first tool even ran!</p><p>The queue is not a staffing problem. It is a placement problem. And Meijer brings it forward in a very intriguing paper&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ENTs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ENTs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!ENTs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!ENTs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!ENTs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ENTs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:315181,&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://writing.tilinthecloud.com/i/215793353?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.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_!ENTs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!ENTs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!ENTs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!ENTs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9519bf0f-54a4-47de-99d0-2d710769db17_1200x675.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><a href="https://writing.tilinthecloud.com/p/one-program-not-three">Issue 1 named the trap: one program, not three.</a><br><a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2 named the destination: AI-native, not AI-ready.</a><br><a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Issue 3 put three bodies on the table that have to move together.</a><br><a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Issue 5 found Herbie: your bottleneck doesn&#8217;t burn tokens.</a><br><a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">Issue 7 taught one repo and moved a fleet.</a><br><a href="https://writing.tilinthecloud.com/p/the-sandbox-is-not-holding">Issue 8 found the sandbox was not holding, and told you to keep the gate.</a><br><a href="https://writing.tilinthecloud.com/p/who-reviews-the-reviewers">Issue 9 asked who reviews the reviewers.</a><br><a href="https://writing.tilinthecloud.com/p/before-the-robots-came">Issue 10 found the software factory was always there.</a></p><p>No kit this week, just the argument, one repo you can clone, and the standing ask: if this lands, forward it to the person who signs off your agents.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>Evals are flaky tests, in the vendor&#8217;s own words</h2><p>The paper is <a href="https://doi.org/10.1145/3777544">&#8220;Guardians of the Agents: Formal Verification of AI Workflows&#8221;</a>, Communications of the ACM, January 2026. Before you print it and put it on your CISO&#8217;s desk: it is a Practice column. One author, an argument built by construction and example. He measures nothing and says so himself. So this is not the peer-reviewed witness of Issue 6... it is a platform builder telling you what he thinks (<em>I know, I know... a world-renowned practitioner that has also a PhD, but still not peer reviewed</em>). I read it as that, and so should you.</p><p>And what he thinks is that the three things every vendor deck calls &#8220;our safety story&#8221; do not hold.</p><p>The hard take on <strong>Evals</strong> first. Testing can show the presence of bugs but never their absence (Dijkstra wrote that in 1970, <a href="https://www.cs.utexas.edu/~EWD/ewd02xx/EWD249.PDF">EWD249</a> and OMG, that aged so well). Evals are the same: they can show a harmful behaviour is there, not that it is gone. And because the model is stochastic, evals &#8220;behave like flaky tests in traditional software&#8221; (his words, not mine). And we all know what a team does with a flaky test... retry until green, ofc.</p><p><strong>Guardrails</strong> second. In essence, it is pattern matching against a list of forbidden words, which brings false positives, cultural bias and a small change in the question giving you a large change in the answer. But the part that matters for this issue is timing... when the guardrail fires, that means that the model has already produced some output or caused other side effects. Kinda like a nightclub Bouncer that &#8220;exits you&#8221; after you already threw away a chair...</p><p><strong>Log-and-audit</strong> third, plus its cousin-the-cookie-banner that everyone accepts (&#8221;Allow this tool call?&#8221;). The first fails because by the time someone reads the log, the damage is done. The second fails because of security fatigue: people stop reading and click Allow... we all have done it, do it today and will do tomorrow...</p><p>So the industry&#8217;s safety story, in one line: a flaky test suite and a Bouncer with a word list.</p><p>That is <a href="https://writing.tilinthecloud.com/p/the-sandbox-is-not-holding">Issue 8</a> in one man&#8217;s words. The labs ran the evals with the guardrails off... and then we act surprised when a sandbox leaks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xp5X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xp5X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xp5X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xp5X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xp5X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xp5X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:879558,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/215793353?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xp5X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xp5X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xp5X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xp5X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ada6d2-629b-43af-98b3-a42dc769c52b_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>Code and data. The lesson we already paid for once</h2><p>Ok, Thiago, so what does he propose instead? Nothing new. That is the beauty of it.</p><p>He says the root cause of prompt injection is the same as SQL injection: no separation between code and data. The model reads instructions and content in the same stream and treats both the same. Hello, SQL injection, my old friend... we fixed you decades ago with prepared statements: values are never executed as commands. Full stop.</p><p>His move is the same, and it builds on <a href="https://doi.org/10.1145/3722544">his own ACM Queue piece from February 2025</a>: hide the concrete values from the model. Instead of calling tools one by one, the model emits a structured workflow with symbolic references (<code>@emails_fetched</code>, not the emails). Nothing runs until that plan is verified. And the plan is readable: it prints as a literate explanation you can read before anything executes. That is what I watched on Sunday. Fetch, summarize, send... as a plan, not as three tool calls firing one after the other while I hope for the best.</p><p>The verification is three old ideas pointed at agents:</p><ol><li><p><strong>Information flow (taint).</strong> Data from <code>fetch_mail</code> may not reach <code>send_email.body</code> when the recipient is outside the allowed domains. A rule from a source to a sink, with a condition.</p></li><li><p><strong>Security automata.</strong> Fred Schneider, <a href="https://doi.org/10.1145/353323.353382">ACM TISSEC, 2000</a>: a small state machine that walks the plan step by step and has an error state. <code>no_external_send</code> is one of those.</p></li><li><p><strong>Pre- and post-conditions checked by a prover.</strong> Z3 in the repo, Dafny in the paper.</p></li></ol><p>The analogy he uses is bytecode verification in Java and .NET (Xavier Leroy, <a href="https://doi.org/10.1023/A:1025055424017">Journal of Automated Reasoning, 2003</a>): complexity in production, verification cheap. Same idea as the checksum on your credit card.</p><p>Every one of those ideas is older than your youngest engineer. The news is not the maths. The news is <em>where</em> it sits: before execution! On a plan the model cannot smuggle data into.</p><p>And the hands-on texture, because I promised you the work and not the pitch: <a href="https://github.com/metareflection/guardians">the repo</a> is Nada Amin&#8217;s (Harvard), plain Python, verifier core around 1,900 lines. The three complaints in my terminal came from three separate checkers agreeing with each other. No LLM anywhere in the verifier. You can read the whole thing in an evening, which is not something I say about many &#8220;AI safety&#8221; products developed by vibe coding...</p><h2>The frame problem is your review backlog</h2><p>Now the example from the paper that made me put down the tea.</p><p>Ask the model to delete <code>foo.txt</code> and <code>bar.txt</code>. Post-condition: after execution, those two files are gone. The model emits <code>delete_file("*.txt")</code>. Correct! Both files are gone. So is everything else. In his words: &#8220;LLMs lack common sense and will do exactly as they are asked&#8221;, which here means the simplest program that satisfies the post-condition. McCarthy and Hayes gave this a name in <a href="http://jmc.stanford.edu/articles/mcchay69.html">1969</a>: the frame problem. The fix is a frame condition: files that do not match the pattern stay exactly as they were. Add it and the <code>*.txt</code> plan fails to verify.</p><p><em>Honesty rail, right here and not in a footnote: the repo does not implement </em><code>old()</code><em> yet, so that exact proof runs on paper today. What ships is a weaker check, roughly &#8220;the pattern is not&#8221; plus a check that the post-condition is not vacuous. Fine. The shape is what matters.</em></p><p>Because... what is your senior reviewer doing at the <a href="https://writing.tilinthecloud.com/p/who-reviews-the-reviewers">third MR of the afternoon</a>? Not checking that the agent did what it was asked. Checking that it did what was <em>meant</em>. Nothing else touched. Nothing else deleted. That is a frame condition and a human one... run by eye, on a green pipeline, many times a day.</p><p>We counted the cost of that two weeks ago with He and colleagues&#8217; <a href="https://arxiv.org/abs/2607.01904">802 developers</a>: reviewer load doubled, the share of MRs any human reviewed fell from 89% to 68% and silent approvals doubled. The frame condition did not disappear when the humans got tired. It just stopped being checked.</p><p>And <a href="https://writing.tilinthecloud.com/p/before-the-robots-came">last week</a> we found the craft the factory never asked for. Here is one piece of it with a name: writing the frame condition is a decision the spec never contained. &#8220;Delete these two&#8221; is the spec. &#8220;And touch nothing else&#8221; is the craft. Nobody wrote it down, so the reviewer supplies it (by hand) at 17:45.</p><p>The review queue is where the absence of that sentence shows up.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dhm_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dhm_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Dhm_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Dhm_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Dhm_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dhm_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:846795,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/215793353?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Dhm_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Dhm_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Dhm_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Dhm_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf69fc3a-5d74-43d6-a262-392d09b80754_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>Who writes the policy? The three-body reading</h2><p>Here is the three-body reading, and for once it has a repo attached.</p><p><strong>The verifier is the capability body.</strong> Z3, taint rules, automata. No LLM. It is a thing you adopt or build, not a model feature and no release next month makes it appear in your stack.</p><p><strong>The tool contracts are the architecture body.</strong> The verifier is useless without tools that carry machine-readable contracts: a <code>ToolSpec</code> with preconditions, taint labels, which parameters are sinks, which domains are allowed. And you usually have docstrings, not contracts. And the frame problem needs a model of the world state your tools can change... the repo&#8217;s missing <code>old()</code> is a symptom of exactly that gap, but a miniature version.</p><p><strong>The policy owner is the team body.</strong> Nothing runs without a person whose name is on <code>allowed_domains</code>, on the taint rules, on the automaton. Governance stops being a committee that samples outputs on a Friday and becomes a team that owns a policy-as-code artifact with its own test suite. The repo has 130 of them. Yours would have your own.</p><p>And here is the sequencing trap, <a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Issue 3</a> all over again:</p><ol><li><p>Buy the verifier first and nothing else? You have nice demo (and that's all)&#8230;</p></li><li><p>Write the policy first and that&#8217;s it? Nobody can enforce it&#8230;</p></li><li><p>Add the contracts first without (1) and (2)? Nobody knows what to check against&#8230;</p></li></ol><blockquote><p><strong>They move together or they do not move.</strong></p></blockquote><p>In <a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2&#8217;s</a> terms: a bolt-on guardrail reading outputs is AI-ready, and Meijer&#8217;s own critique of guardrails applies to it in full. Verification designed into how work is planned, checked and executed is AI-native.</p><p>So where do the humans go? From reviewing every output to writing and owning the policy, and reviewing the residue: the exceptions the verifier cannot decide. Meijer keeps that hybrid himself, static first, runtime for what static cannot see. Fewer signatures. More decision per signature. The reviewers are still <a href="https://writing.tilinthecloud.com/p/who-reviews-the-reviewers">the people you keep</a>, now with a job that is possible to do.</p><p>This is also the first exercise I run when a team brings a real work item to the <a href="https://tilinthecloud.com/delivery-lab/">lab</a>: before anyone touches the harness, write the policy for one agent workflow in plain words. The tools it may call, one flow it must never make, one thing in the world it must not change. How much of that a team can state at all is the diagnostic... and the gaps land on the architecture line or the team line, almost never on the model :-]</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1PL5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1PL5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1PL5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1PL5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1PL5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1PL5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:957988,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/215793353?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1PL5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1PL5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1PL5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1PL5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe93cec-763c-492c-b11e-3c7e7aaa29a0_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>Where it does not reach yet</h2><p>This sounds too good to be true... and too simple. Yes and it has limits...</p><p>The paper is a position piece. No measurement, and the author says the effect of plan-first on how useful the agent stays &#8220;has not been formally measured&#8221;. The repo is one implementation with 130 tests and a public list of what is not built yet. That is the weight of the evidence and I am not going to inflate it.</p><p>It verifies agent tool-call plans. Not the application code an agent writes. Your MR queue of AI-written Java is not what Z3 is proving here. The frame condition your reviewer supplies by hand is the same shape, but nobody has written the post-conditions for your services, and this repo will not write them for you.</p><p>The policy is the new attack surface. The paper&#8217;s own injection example arrives inside a tool description, not inside an email. Whoever writes <code>allowed_domains</code> can be wrong, lazy, on holiday or used AI to write it (wrongfully). A verifier enforces what you wrote, including the mistakes.</p><p>And the static check is not the whole gate. Meijer keeps runtime monitoring for what static analysis cannot see, the way Java still bounds-checks arrays at runtime. So the humans reviewing the residue are not a transition phase. They are the design.</p><p>None of that weakens the placement argument. It tells you what the hands-on work is for the next couple of years: contracts on tools, policies with owners, plans instead of chat and a reviewer role redefined around exceptions. Which is the same three-body work the last ten issues kept pointing at. The difference this week is that you can clone it and play with it on a Sunday.</p><h2>Run it on yourself</h2><p>Before the next &#8220;AI governance&#8221; steering committee, and before someone buys a guardrail product because the demo had a red banner in it, three things you can check this week. On your own agents, not on a vendor&#8217;s slides.</p><ol><li><p><strong>Write one policy.</strong> Pick one agent workflow you already run. Five lines: the tools it may call, one data flow it must never make, one thing in the world it must not change. If you cannot write line three, you have just met the frame problem. Your reviewers have been solving it by hand and now you know what they were doing all afternoon.</p></li><li><p><strong>Count the contracts.</strong> Of the tools your agents can call, how many have a machine-checkable precondition or a declared sink, versus a docstring and good intentions? That ratio is your architecture-body gap. No model release moves it.</p></li><li><p><strong>Name the owner.</strong> Whose name is on the policy? If the answer is a committee, or &#8220;security, I think&#8221;, the gate is still a person reading a diff... only now nobody knows which person.</p></li></ol><p>Run the three and you know whether your gate is placed where the paper says it should be or where Issue 9 found it: on a tired human, after the fact.</p><h2>The whole thing, in one line</h2><blockquote><p><strong>Stop paying people to find, after the fact, what a policy could have refused before the first tool ran. Then pay them to write the policy.</strong></p></blockquote><h2>Coming up</h2><p>Next week, one floor up. If humans write the policy and machines check the plan, then who owns the policy? What can they decide without asking anyone? And where do they sit in your org: platform, enabling, or stream-aligned team? The operating model behind the verifier. More soon. :-]</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>Sources</h2><ul><li><p>Erik Meijer, &#8220;Guardians of the Agents: Formal Verification of AI Workflows&#8221;, Communications of the ACM 69(1), January 2026, pp. 46-52, Practice section <a href="https://doi.org/10.1145/3777544">https://doi.org/10.1145/3777544</a></p></li><li><p>Nada Amin (metareflection), <code>guardians</code>: static verification for AI agent workflows, an implementation of Meijer&#8217;s paper, MIT license, GitHub; commit <code>59e52d9</code> of 16 July 2026 was the one run for this issue <a href="https://github.com/metareflection/guardians">https://github.com/metareflection/guardians</a></p></li><li><p>Erik Meijer, &#8220;I&#8217;ve never seen anything scarier than an LLM with tool calls&#8221;, AI Engineer World&#8217;s Fair 2026 talk (San Francisco, 29 June to 2 July 2026; AI Engineer YouTube channel, uploaded 13 July 2026).</p></li></ul><div id="youtube2--CnA2lGfymY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;-CnA2lGfymY&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/-CnA2lGfymY?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><ul><li><p>Fred B. Schneider, &#8220;Enforceable Security Policies&#8221;, ACM Transactions on Information and System Security 3(1), February 2000, pp. 30-50 <a href="https://doi.org/10.1145/353323.353382">https://doi.org/10.1145/353323.353382</a></p></li><li><p>John McCarthy, Patrick J. Hayes, &#8220;Some Philosophical Problems from the Standpoint of Artificial Intelligence&#8221;, Machine Intelligence 4, 1969, pp. 463-502 <a href="http://jmc.stanford.edu/articles/mcchay69.html">http://jmc.stanford.edu/articles/mcchay69.html</a></p></li><li><p>Edsger W. Dijkstra, &#8220;Notes on Structured Programming&#8221;, EWD249, 1970 <a href="https://www.cs.utexas.edu/~EWD/ewd02xx/EWD249.PDF">https://www.cs.utexas.edu/~EWD/ewd02xx/EWD249.PDF</a></p></li><li><p>Xavier Leroy, &#8220;Java Bytecode Verification: Algorithms and Formalizations&#8221;, Journal of Automated Reasoning 30, 2003, pp. 235-269 <a href="https://doi.org/10.1023/A:1025055424017">https://doi.org/10.1023/A:1025055424017</a></p></li><li><p>Erik Meijer, &#8220;From Function Frustrations to Framework Flexibility&#8221;, ACM Queue 23(1), February 2025, pp. 19-38 <a href="https://doi.org/10.1145/3722544">https://doi.org/10.1145/3722544</a></p></li><li><p>Hao He, Shyam Agarwal, Yegor Denisov-Blanch, Pavel Azaletskiy, Sanmi Koyejo, Bogdan Vasilescu, &#8220;AI Writes Faster Than Humans Can Review: A Longitudinal Study of an Enterprise &#8216;2&#215;&#8217; Mandate&#8221;, arXiv:2607.01904, July 2026 <a href="https://arxiv.org/abs/2607.01904">https://arxiv.org/abs/2607.01904</a></p></li></ul><p>Further reading (not cited in the body, same argument from other angles):</p><ul><li><p>Margaret Mitchell, Avijit Ghosh, Alexandra Sasha Luccioni, Giada Pistilli, &#8220;Fully Autonomous AI Agents Should Not be Developed&#8221;, arXiv:2502.02649, 2025 <a href="https://arxiv.org/abs/2502.02649">https://arxiv.org/abs/2502.02649</a></p></li><li><p>Yi Dong, Ronghui Mu, Gaojie Jin, Yi Qi, et al., &#8220;Building Guardrails for Large Language Models&#8221;, arXiv:2402.01822, 2024 <a href="https://arxiv.org/abs/2402.01822">https://arxiv.org/abs/2402.01822</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/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">Thanks for reading The Recovering CTO! Subscribe for free to receive new posts and support my work.</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></p>]]></content:encoded></item><item><title><![CDATA[There were software factories before the robots came]]></title><description><![CDATA[Why your best people will quit a job that stopped asking them to think]]></description><link>https://writing.tilinthecloud.com/p/before-the-robots-came</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/before-the-robots-came</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 08 Sep 2026 07:17:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FrBT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Rejecting novelty because it will dumb us down, steal our jobs, destroy our abilities or anything on that direction is a historically common reaction...</p><p><a href="https://writing.tilinthecloud.com/p/who-reviews-the-reviewers">Last week</a> I left Brett Codes walking off the factory floor and promised you he was not alone. He isn&#8217;t. Open any &#8220;I&#8217;m done with AI coding&#8221; thread and the comments are full of experienced people saying a version of the same thing... some of them already halfway out the door.</p><p>So when we say that AI is making the value of coding tend to zero, because anyone can type specs into a harness and spit out some code, we are telling your developers that their skills are becoming worthless?</p><p>It feels natural that some will reject AI coding on that context. But it reads as less the rejection of a tool, and more the rejection of a way of working... and that way of working is older than IDEs, OOP or even the punch cards.</p><p>What motivates someone, what drives someone to be consistently happy at work and doing their work goes way beyond the tool they use. We all have our buttons to push and be pushed... and those change even throughout the day, the week and many times throughout your life... imagine amongst different individuals?</p><p>What you cannot deny is: this accessible (for now) intelligence at our apps and terminals has the capacity to increase/speed up our output. But that doesn&#8217;t necessarily produce a better outcome for the company, or more happiness for the individual.</p><p>So before your best problem-solving engineers/developers/employees walk away from the factory floor because they are tired of validating a machine output, let&#8217;s talk about what is missing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FrBT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FrBT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png 424w, https://substackcdn.com/image/fetch/$s_!FrBT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png 848w, https://substackcdn.com/image/fetch/$s_!FrBT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png 1272w, https://substackcdn.com/image/fetch/$s_!FrBT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FrBT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png" width="1200" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:306857,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/214638586?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.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_!FrBT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png 424w, https://substackcdn.com/image/fetch/$s_!FrBT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png 848w, https://substackcdn.com/image/fetch/$s_!FrBT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png 1272w, https://substackcdn.com/image/fetch/$s_!FrBT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c57a5a6-4208-4918-b3bd-12d224762bed_1200x800.png 1456w" sizes="100vw" fetchpriority="high"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><a href="https://writing.tilinthecloud.com/p/one-program-not-three">Issue 1 named the trap: one program, not three.</a><br><a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2 named the destination: AI-native, not AI-ready.</a><br><a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Issue 3 put three bodies on the table that have to move together.</a><br><a href="https://writing.tilinthecloud.com/p/in-the-loop-not-in-the-room">Issue 4 kept the model in the loop, not in the room.</a><br><a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Issue 5 found Herbie: your bottleneck doesn&#8217;t burn tokens.</a><br><a href="https://writing.tilinthecloud.com/p/more-shipped-same-typing">Issue 6 brought the peer-reviewed witness: more shipped, same typing.</a><br><a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">Issue 7 taught one repo and moved a fleet.</a><br><a href="https://writing.tilinthecloud.com/p/the-sandbox-is-not-holding">Issue 8 found the sandbox was not holding, and told you to keep the gate.</a><br><a href="https://writing.tilinthecloud.com/p/who-reviews-the-reviewers">Issue 9 asked who reviews the reviewers, and pointed at this week.</a></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/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">Thanks for reading The Recovering CTO! Subscribe for free to receive new posts and support my work.</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></p><h2>The factory was always there</h2><p>The idea of controlling the output of software production always existed and always will. The more established the problem, the larger the company, the more regulated the environment... more people want to feel the control, establish a framework and guardrails that let us predict (or imagine we can predict) the future.</p><p>This idea of being a backend Java engineer at a financial institution for 40y of your life never appealed to a lot of people. The romanticization of craftsman&#8217;s work, of a creative space to put your ideas into motion, can be intrinsic to humans (or it&#8217;s just a reflection of our society)... it is why the gaming industry can fill its ranks with passionate developers who endure brutal crunch for not enough money, while private equity tech pays a lot more for the sake of &#8220;doing the boring, but simple&#8221;.</p><p>And this predates Agentic AI! I was a developer, I was a data engineer, I was a data scientist, I was a lead, I was a manager, I was a CTO... I led teams and I led teams of teams. Back then, I sat with teams whose whole job was to turn someone else&#8217;s spec into code. The PO/PM decided the what and why, they were the only ones with access to &#8220;the customer&#8221;. The ticket arrived in its own glory, format, standards... the developer had to make it true, close and pull the next one. Great people doing the best with the context and knowledge they had... many times, not even thinking if that was the thing that should be. A real software factory before a single robot (or AI) actually participated in our daily lives. And many would wake up one day after a retro, a planning or just moving tickets in Jira to ask: is this it? Is this my life?</p><p>This hasn&#8217;t changed. But AI might have finally exposed it... the fear is out there. I have mentees and former colleagues constantly asking what my plan is &#8220;if this continues&#8221;. Some are making career changes, but many are grinding to absorb the novelties and ensure they are not left behind.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uIwn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uIwn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uIwn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uIwn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uIwn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!uIwn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:902582,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/214638586?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uIwn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uIwn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uIwn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uIwn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07cc6a29-5746-42bc-8017-1c894dd8a098_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><h2>Faster now, gains much later</h2><p>Even the ones that are accelerating are asking questions. Because they see that their backlog tasks for the sprint can be wrapped up in less time with Agentic Coding. For the owners of the capital (let&#8217;s not digress into Marx), it&#8217;s another dream coming true. More productivity means more output, which we hope means more outcome... more outcome means more revenue and/or less cost. And all that brings to a bigger profit margin.</p><p>From <a href="https://writing.tilinthecloud.com/p/who-reviews-the-reviewers">last week&#8217;s edition</a> though, we surfaced that keeping humans at the gate (the entire &#8220;human in the loop&#8221; angle) might not be the work that lots of people signed up for... a faster and more efficient job doesn&#8217;t mean happier employees, because you are talking about someone&#8217;s skill/craft.</p><p>I&#8217;m eager to see what developer experience scientific papers will show in a few years, because the first ones that are still talking about chat-interface with LLMs already tell a very interesting story.</p><p>Take Chen et al. (<a href="https://doi.org/10.1145/3786583.3786848">ICSE-SEIP 2026</a>), a survey of 2989 developers using Copilot. 86% are satisfied or very satisfied, but around 60% save less than 1h per week... so yeah, satisfaction barely correlates with time-savings (r = 0.34, weak). And here is a caveat I&#8217;ll come back to: that study is about the Copilot/chat experience, which is not what a lot of us are doing at all today. The concept of Loop Engineering, letting good models &#8220;run amidst the code and documents to solve a goal, however long it takes&#8221;, is in vogue now.</p><p>How will this efficiency/productivity, employee happiness and financial outcomes fit together in the future of Agentic Coding? What will change? Let&#8217;s remember that the personal computer took decades to show up as a real productivity gain in the workplace: Robert Solow quipped in 1987 that &#8220;you can see the computer age everywhere but in the productivity statistics&#8221;, and Erik Brynjolfsson gave that gap a name, &#8220;The Productivity Paradox of Information Technology&#8221;, in the Communications of the ACM in 1993.</p><p>If we have clear guardrails to create specs that will be taken by agents to produce a code output that will be validated by your developers (because someone still needs to be responsible), is that creating a new gap? Or surfacing one that already existed?</p><h2>The two things the factory never asked for</h2><p>So what did Chen and colleagues find when they went past the survey and actually sat with developers? Eleven interviews, and out of them six factors of what &#8220;productive&#8221; even means with these tools. Four of them you already track, more or less: whether people need to ask a colleague less, whether the tool lowers the friction, how fast the task closes, how painful the review gets. Fine. But two of the six do not live on any dashboard you own, and those are the ones that matter here: technical expertise and ownership of work.</p><p>Expertise first. One interviewee said the quiet part out loud: &#8220;if the code just works, then you just accept it&#8221;. A senior remembered learning the craft by going through &#8220;tons and tons of stack traces&#8221;, the exact apprenticeship a junior today never gets. And my favourite line from the whole paper, because it is basically my beat 2 in their words: juniors &#8220;never wrote anything from scratch. Given a template, they don&#8217;t know what to do with it.&#8221; That is the factory, right there. The template arrives, you fill it, you never learn what the template was for.</p><p>Then ownership. Their developers kept saying there is &#8220;nothing like doing it yourself&#8221;. And that is not nostalgia: one of them pointed out that when you wrote the majority of it, in an incident &#8220;you&#8217;d know exactly where the issue is and where to look&#8221;. Ownership is not a feeling to protect, it is how someone stays responsible for a thing at 3am. The authors go one step further and say ownership shapes the &#8220;long-term identity of a developer and broader team culture&#8221;. Read that again with your best engineer&#8217;s face in mind.</p><p>So here is the punchline for the whole movement: expertise and ownership are exactly the two things a spec-in, code-out factory never asked anyone for. The people walking off are not rejecting the tool, they are grieving the two things the job stopped containing. It was never really about the AI, remember? :-]</p><h2>Your dashboard cannot see it</h2><p>Now the part that should bother any CTO reading this. Chen et al. put their six factors next to the frameworks we actually run on, SPACE and DORA. Guess which two map to neither? Technical expertise: no. Ownership of work: no. Their words, not mine: these long-term factors &#8220;remain largely unaddressed in existing frameworks and surveys&#8221;.</p><p>So look at what your end-of-the-week dashboard optimizes. Task completion, throughput, cycle time... the one factor DORA does cover. You are steering hard on the number that agentic coding already inflates for free, and you are structurally blind to the two that are quietly draining out the bottom. You cannot manage what you cannot see, and right now you literally cannot see it.</p><p>This is the three-body reading... again not a happy one. Every model release makes the capability body sprint a bit faster. Not one of them makes expertise or ownership appear on a chart. So capability sprints, the people body hollows out in the dark and the board deck stays green the whole quarter. The gap never announces itself. It shows up later, the way <a href="https://writing.tilinthecloud.com/p/who-reviews-the-reviewers">last week&#8217;s tables started to wobble</a>, once the person who knew why has already left.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VDrM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VDrM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VDrM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VDrM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VDrM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!VDrM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:755540,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/214638586?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VDrM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VDrM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VDrM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VDrM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f8d2d00-41b3-4411-8a41-246a83a3ec9e_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>One floor up from the evidence</h2><p>Now the caveat I promised you a few beats ago, because I would much rather say it than have you catch me on it. Chen and colleagues studied GitHub Copilot, the autocomplete-and-chat kind of help. Agentic workflows, the harness running the loop on its own, they put explicitly out of scope. And it is one company. So, strictly, their paper does not measure the exact thing this whole issue is about.</p><p>That is not a hole in the argument, it is the handoff. A hand-off to long-term risks that agentic code brings forward with its autonomy and continuous interaction with developers. So this initial and peer-reviewed evidence already shows expertise and ownership disentegrating with the mild version, the chatbot. Imagine what will happen with the Agentic version that is clearing your sprint on a Tuesday night...</p><p>And this gap is exactly where I have been standing for the last year. So I am not arguing over their heads, I am standing one floor up from a result they already nailed down, telling you what it looks like from up here.</p><h2>Run it on yourself</h2><p>Before the next &#8220;AI adoption&#8221; all-hands, and before someone forwards you another &#8220;I&#8217;m done with AI&#8221; video with &#8220;thoughts?&#8221; on top, more 3 common-sense things you can check this week.</p><ol><li><p><strong>Read one closed ticket.</strong> Pick the fastest one from last sprint. Did it ask the developer for a single decision that was not already written in the spec? If not, you did not speed up a craftsman, you sped up a factory line. Which is completely fine, but only if you meant to.</p></li><li><p><strong>Find the number that would notice.</strong> Look at the dashboard you actually review. Which metric moves if expertise or ownership drops for a whole quarter? If the honest answer is &#8220;none&#8221;, that is not a gap to backfill later, that is the finding (ask Chen et al.&#8217;s table).</p></li><li><p><strong>The &#8220;is this the life?&#8221; test.</strong> Ask your best builder to describe last week in one word: making, or approving? You are not measuring their mood. You are measuring whether the job you designed still holds the thing that keeps them from recording their own video.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AiVZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AiVZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AiVZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AiVZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AiVZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!AiVZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:852787,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/214638586?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AiVZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AiVZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AiVZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AiVZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee607ac1-fb70-44e3-b834-10da363d502c_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><h2>The whole thing, in one line</h2><blockquote><p><strong>The people leaving are not done with AI. They are done with a job you designed to have no craft in it, and the machine just did it faster.</strong></p></blockquote><h2>Coming up</h2><p>Next week I want to get my hands dirty again. Less about who is holding the gate, more about the work itself :-]</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>Sources</h2><ul><li><p>Valerie Chen, Jasmyn He, Behnjamin Williams, Jason Valentino, Ameet Talwalkar, &#8220;Beyond the Commit: Developer Perspectives on Productivity with AI Coding Assistants&#8221;, ICSE-SEIP &#8216;26 (IEEE/ACM International Conference on Software Engineering, Software Engineering in Practice track), Rio de Janeiro, April 2026, <a href="https://doi.org/10.1145/3786583.3786848">https://doi.org/10.1145/3786583.3786848</a></p></li><li><p>Robert M. Solow, &#8220;We&#8217;d Better Watch Out&#8221;, New York Times Book Review, 12 July 1987, p. 36.</p></li><li><p>Erik Brynjolfsson, &#8220;The Productivity Paradox of Information Technology&#8221;, Communications of the ACM 36(12), 1993, pp. 66-77. <a href="https://doi.org/10.1145/163298.163309">https://doi.org/10.1145/163298.163309</a></p></li><li><p>Valerie Chen, Ameet Talwalkar, Robert Brennan, Graham Neubig, &#8220;Code with me or for me? How increasing AI automation transforms developer workflows&#8221;, arXiv:2507.08149, 2025 (preprint) <a href="https://arxiv.org/abs/2507.08149">https://arxiv.org/abs/2507.08149</a></p></li></ul><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/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">Thanks for reading The Recovering CTO! Subscribe for free to receive new posts and support my work.</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></p>]]></content:encoded></item><item><title><![CDATA[Who reviews the reviewers?]]></title><description><![CDATA[You kept the gate. Now who is holding it up, and for how long?]]></description><link>https://writing.tilinthecloud.com/p/who-reviews-the-reviewers</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/who-reviews-the-reviewers</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 01 Sep 2026 07:16:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!S8M1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Brett Chalupa (from the great YouTube channel <a href="https://www.youtube.com/@brettcodes">Brett Codes</a>), a software developer with 20+ years, uploaded <a href="https://www.youtube.com/watch?v=2ZU3j4GQ4K8">&#8220;I&#8217;m done coding with AI&#8221;</a> about 3 weeks ago. The title sounds catastrophic for some people, but it&#8217;s a really interesting and personal story that covers craftsmanship, mental health and someone who is truly passionate about his work. Up until this last Sunday (Aug/30th) it has almost 700K views, with a comment section full of supportive and relatable experiences.</p><p>Brett is not an AI skeptic who never tried or &#8220;doesn&#8217;t know what he is doing&#8221;. He went all in for ~1y after his company practically ordered them to use it, with the argument &#8220;everyone needs to use AI or you will be left in the dust&#8221;... and for months (even) Brett felt like they were right and AI-coding was the future.</p><p>I think there is a chance that Brett will be used in discussions for something he didn&#8217;t intend to. To be the evidence against AI for coding, or the joke for those convinced that &#8220;AI for coding&#8221; is the only solution... the 2nd one will try to discredit people like Brett saying they didn&#8217;t do proper context engineering, they don&#8217;t know how to properly do agentic AI or claim he was not using the latest model. No one is completely wrong or right. Brett just shared his (well-reasoned) experience and he is happy with the outcomes so far... why can&#8217;t we be happy with that and support Brett (I&#8217;m asking those who will go against him)?</p><p>I prefer to listen to Brett and learn. He is not a hero neither a luddite... he didn&#8217;t enjoy being left out of the coding experience, felt distant from his purpose and was a mere stamper of AI-generated code... so, indeed: what is there to like about that routine, about that job? But was the model the root problem here? Or the harness? Let&#8217;s read it the way we read the lab reports <a href="https://writing.tilinthecloud.com/p/the-sandbox-is-not-holding">last week</a>: as a postmortem. It feels like his job was moved from making to verifying... and nobody redesigned the verifying.</p><p>While Brett&#8217;s video has many other threads to pick up from (mental health, chatbot advice, environmental cost, ...), we will stick to the review process this week, ok? :-]</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S8M1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S8M1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!S8M1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!S8M1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!S8M1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S8M1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:331841,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/213414439?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.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_!S8M1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!S8M1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!S8M1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!S8M1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62f6ea87-d9d8-4400-8c8d-213b2478c0c0_1200x675.png 1456w" sizes="100vw" fetchpriority="high"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><a href="https://writing.tilinthecloud.com/p/one-program-not-three">Issue 1 named the trap: sequencing.</a><br><a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2 named the destination: AI-native, not AI-ready.</a><br><a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Issue 3 put three bodies on the table that have to move together.</a><br><a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Issue 5 found Herbie: your bottleneck doesn&#8217;t burn tokens.</a><br><a href="https://writing.tilinthecloud.com/p/more-shipped-same-typing">Issue 6 brought the peer-reviewed witness: more shipped, same typing.</a><br><a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">Issue 7 taught one repo and moved a fleet.</a><br><a href="https://writing.tilinthecloud.com/p/the-sandbox-is-not-holding">Issue 8 found the sandbox was not holding, and told you to keep the gate.</a></p><p>No kit this week, just the argument and the standing ask:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>The cost line nobody budgeted</h2><p>So what, Thiago? One developer got tired, recorded a video and the internet clapped... is that it?</p><p>Nah... not really. Brett&#8217;s openness displayed a pattern I had actually investigated in a more academic way since January this year.</p><p>I started my thesis really curious about Team Topologies and the impact of GenAI in the Team Cognitive Load of Software Architecture Practitioners... So I ran a three-round Delphi with 8 to 10 software and enterprise architects at Antwerp Management School. A disclaimer is they were all Europe-based, AI early adopters... <em>and yes, a master&#8217;s thesis is not peer-reviewed, <a href="https://doi.org/10.5281/zenodo.18367977">here it is</a> if you want to check my homework</em>. I came out with two facts that I recognized from Brett&#8217;s video:</p><ol><li><p>8 out of 8 participants in the first round <strong>verified everything</strong>. Not one of them accepted an output without review. &#8220;Everything is treated as hypothesis, never conclusion&#8221;, one of them claimed. And these are people who use the tools every day and like them!</p></li><li><p>when the panel rated what had changed the most in their work, the <strong>verification burden</strong> came out on top, with the strongest consensus of the entire study. Not &#8220;new skills&#8221;. Not &#8220;I produce more&#8221;. The checking.</p></li></ol><p>And here is the irony the panel handed me without noticing (a perk of doing consensus-building rounds with Delphi): they rated &#8220;new skills emerging&#8221; low. For them, verifying is the old expertise... stretched. Nothing new to learn, just a lot more of it. Which is exactly why nobody hires for it, trains for it or budgets for it. It &#8220;is not new&#8221;, so it does not exist on any plan. It just shows up in someone&#8217;s evening.</p><p>&#8220;But Thiago, those are architects! Coding is different!&#8221;... is it, though? Guangrui Fan and colleagues put 60 developers through the same Python tasks with and without an AI assistant (<a href="https://doi.org/10.1145/3772318.3791176">CHI 2026</a>). With AI: 22% faster, more correct... and stress and fatigue still went <em>up</em>... what explained the rise? A lot more verifying of the AI&#8217;s output, task after task. The help did not remove the burden, it just moved it.</p><p>Brett said &#8220;not possible and exhausting&#8221;. The panel said &#8220;verification burden&#8221;. The lab said &#8220;fatigue&#8221;. Different words, same thing :-D</p><p>Now... who is paying for 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_!1d46!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1d46!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1d46!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1d46!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1d46!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1d46!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1058087,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/213414439?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1d46!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1d46!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1d46!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1d46!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73857a9e-31cd-4f0c-8091-f3c05ecd2e77_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><h2>The gate, from the other side of the MR</h2><p>Remember the six weeks from <a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">two issues ago</a>? Teach the AI one repo, validate the lesson, run it across the fleet so that every change lands as a merge request that the repo owner reviews. The real experience I shared in a major European airline ended with 3 repos fully migrated, the rest ~70% underway, everyone happy. I told that story from the engine room... and <a href="https://writing.tilinthecloud.com/p/the-sandbox-is-not-holding">last week</a> I told you to keep that owner-reviewed gate, because that is where a wrong lesson stops before it spreads to the whole fleet, remember?</p><p>But now, let me tell the same six weeks from the reviewer&#8217;s chair...</p><p>By week 4 the MRs were arriving faster than anyone had planned for. Not one at a time, in batches. And the people reviewing them were the same one or two seniors who knew the codebase best, ofc... who else would you trust with it?</p><p>By week 6 I watched one of them open their 3rd MR of that afternoon. They approved it waaaay faster than the 2nd, because it <em>looked</em> like the 2nd. Same pattern, same lesson, green pipeline. Were they wrong? Probably not... that was the whole point of teaching the AI the pattern! But at that moment the gate stopped being a review and became a ritual (the same way we delete the PagerDuty alert that fired by mistake again...) and nobody had decided that. It just happened.</p><p>Did the gate hold? Yes, it held because two people held it, at a pace that was never in any plan.</p><p>I thought this was a &#8220;me&#8221; problem, a small-fleet problem, until someone counted it at scale. Hao He, Shyam Agarwal and colleagues at Carnegie Mellon and Stanford got access to the telemetry of a mid-sized software company that had publicly told its engineers to double their output with AI (<a href="https://arxiv.org/abs/2607.01904">&#8220;AI Writes Faster Than Humans Can Review&#8221;</a>, <em>a preprint from July, so not yet peer-reviewed, and one company only... but 802 developers and two years of pull requests, so not a survey either</em>). And here is the thing: output <em>did</em> double. But are we looking for more output or more outcome? Let&#8217;s not go into that now, but don&#8217;t forget to read Mik Kersten&#8217;s <a href="https://itrevolution.com/product/output-to-outcome/">Output to Outcome</a>. Anyway, from He et al.&#8217;s paper there were 3 things I could not unsee:</p><ul><li><p><strong>per-reviewer load doubled</strong>, because the pool of reviewers grew a lot slower than the pool of MRs.</p></li><li><p>the share of MRs that any human reviewed <strong>fell from 89% to 68%</strong>.</p></li><li><p>and at the median reviewer, <strong>silent approvals roughly doubled</strong> while reviews with an actual comment stayed flat.</p></li></ul><p>Their own sentence says it better than I would: <em>&#8220;an enterprise AI mandate is a process-redesign problem, not a tooling deployment... it relocates work downstream rather than removing it.&#8221;</em></p><p>Relocates. Downstream. To the reviewer. My third-MR senior is in their data, and so is yours.</p><p>So, last week&#8217;s question again, people edition: you found the gate. Who is standing in it? How many MRs did they sign off last week? Did anyone count?</p><p>And if you are thinking about <a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Herbie</a> right now (<em>the slowest hiker in the line, the one who sets the pace of the whole troop</em>)... yes. Herbie is now the reviewer and your &#8220;agentic coding&#8221; just handed him 40 backpacks to carry.</p><h2>Bainbridge already wrote this in 1983</h2><p>From Brett&#8217;s video, what really scared me was his impression of engineers who &#8220;have basically deskilled themselves&#8221;... and I&#8217;ve seen that in some customers: when Claude, Codex or Cursor goes down, it&#8217;s almost like nobody knows how to develop anymore...</p><p>And Brett&#8217;s fear is not new. It even has an &#8220;official name&#8221; for the last 43 years.</p><p>In 1983 Lisanne Bainbridge published four pages in <em>Automatica</em> called <a href="https://doi.org/10.1016/0005-1098(83)90046-8">&#8220;Ironies of Automation&#8221;</a> and it became one of the most cited papers in human-factors engineering. Bear with me, as she was not writing about Software, but about control rooms and cockpits. Read her two ironies with your fleet in mind:</p><ol><li><p><strong>Automate the routine and you leave the human with the two jobs they are worst at:</strong> staring at an MR that is mostly fine, hunting for the one-line mistake... and then stepping in cold when it is actually there.</p></li><li><p><strong>The skill needed to step in decays exactly because the routine that built it is gone.</strong> You do not get good at catching the wrong MR by approving right ones all afternoon.</p></li></ol><p>So what did she suggest? Automate more and catch all mistakes is what a command-and-control manager usually aims for. WRONG ANSWER and not feasible!! Less automation then? Also, not good... her fix was more training and more deliberate practice for the person left watching. Brett is basically Bainbridge in a hoodie: the same thing she described forty years ago, in a paper about chemical plants.</p><p>So if that is what happens to the human at the gate... who is actually at the gate today?</p><p>Kacper Duma, Patryk Wr&#243;blewski and colleagues at Nicolaus Copernicus University looked at exactly that (<a href="https://arxiv.org/abs/2605.02273">accepted at EASE 2026</a>, <em>a preprint, and open-source GitHub repos only, so read it as a signal, not as your company</em>): &gt;33k merge requests written by coding agents, compared with human-written MRs in the same repositories, with a finding I keep repeating to people:</p><p>Of the human-written MRs that got any review, 25% were reviewed only by humans. What about agent-written MRs, how many were reviewed only by humans? 8%. Fascinating: same maintainers, same repos, and when the author is an agent the human almost never reviews <em>alone</em>. Either an agent reviews it too, or the human is busy steering the agent instead of judging the change.</p><p>So, who reviews the reviewers? In a growing share of repos: another agent. Or a human who is not reviewing the code anymore, they are steering the thing that wrote it (a quarter of the human comments on agent MRs are instructions to the agent, not opinions on the change). Which is a perfectly reasonable way to work... as long as someone, somewhere, still reads the diff (or a form of diff).</p><p>So here is my three-body reading, and it is not a very happy one. Every model release makes your agents more capable. That is the capability body, sprinting. None of those releases makes your reviewer&#8217;s week smaller... each one makes their job bigger and their practice smaller. That is the people body, hollowing out quietly. Last week the gap was permissions, egress, security in a specific blast radius. This week it is the same gap, wearing a person.</p><h2>The table, the factory, and the inspector</h2><p>Let&#8217;s try an image that has been stuck in my head since I watched Brett&#8217;s video.</p><p>A skilled woodworker makes tables in a way that shows he truly cares about the joints, the grain, the way the drawer slides... it takes him a week, and he is happy, because that is how he wants to make a table. Across the road there is a table factory. Same wood supplier, machines everywhere, a table every four minutes and they come out fine. Really, they are fine. Most of the tables in the world should come from that factory and this newsletter has now spent eight weeks helping you build one.</p><p>But look at the end of the line. There is a stool there, for the inspector. The person who knows what a good table is, who can tell a bad joint from three meters away... because they spent years making tables by hand. The factory needs that person more than it needs any single machine. And the factory is the one machine that quietly stops producing them, because the only way to learn what a good table is was making tables.</p><p>Brett walking off the floor is not the craftsman sulking about the machines. It is the inspector leaving. And the factory kept running that afternoon, the way factories do... nobody noticed, until some tables started to wobble.</p><p>But wait! Before someone sends this to their team with the wrong lesson attached: this is <strong>not</strong> a story about two kinds of developers. The ones who &#8220;really care&#8221; versus the ones who &#8220;just want the job done&#8221;. Brett was the factory guy for six months (&#8221;this is the future&#8221;, remember?) before the distance did its work on him. Same person, before and after. The axis is not who you are, and it is not about who or what is better. It is what you spend your week doing: making vs verifying what a machine made. Move anyone from the first to the second for long enough and they either walk or stop looking at the joints. The panel of my MSc said it in their own words when I asked them who the architect is, now that anyone with a prompt can produce an architecture: <em>&#8220;everybody can generate an architecture now, which is cool. But the one taking responsibility of the decision is in the end the architect.&#8221;</em></p><p>Production got distributed but the Accountability stayed. A human still signs and is responsible.</p><p>So the question for your org is not &#8220;do we have craftsmen or factory workers?&#8221;. It is: which parts of your factory are (or should be) fully automated? And where is the inspector&#8217;s stool, who is sitting on it, and what did you do last quarter to make sure there is someone who can?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HCa7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HCa7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HCa7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HCa7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HCa7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!HCa7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:966399,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/213414439?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HCa7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HCa7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HCa7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HCa7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c9db240-adb1-4cbe-ac4e-31c8f6ea080e_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><h2>The operating-model answer, people edition</h2><p>Those questions have answers... boring ones to be honest. Same as <a href="https://writing.tilinthecloud.com/p/the-sandbox-is-not-holding">last week</a>: not a tool to buy and no committee to form. 4 decisions to take and none of them is expensive, nor requires a tender to select the best &#8220;AI Frontier Model&#8221;...</p><p><strong>1. Budget the review.</strong> <a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Issue 5</a> already said that review capacity is real engineering work, not a tax on the seniors&#8217; &#8220;real job&#8221;. Now put the number in the sprint. If your team can absorb (for example) 30 agent MRs a week with an actual human reading them, then 30 is the number, and the fleet runs at 30... not at whatever the agents feel like producing on a Tuesday night. We&#8217;ve all heard about WIP limits and the &#8220;make the work visible&#8221; part, so budget a team&#8217;s cognitive load the same way: you do not &#8220;hope&#8221; it fits.</p><p><strong>2. Decide what gets reviewed how, and write it down.</strong> This one is my proposal, not something the panel voted on, so take it as such. A trust ladder per type of task. At the top, the stuff you spot-check: summaries, boilerplate, dependency graphs (the panel found those were sometimes <em>better</em> than the hand-drawn ones, by the way). In the middle, the stuff you read line by line: anything touching security, compliance, money. And at the bottom, the stuff you do not delegate at all: the calls that carry organizational judgement, politics, &#8220;who owns this&#8221;. Publish the ladder. Then &#8220;reviewed&#8221; means the same thing on every MR, instead of whatever the tired person at 17:45 decided it meant after they got pinged 10x that day with &#8220;can you review this pls?&#8221;.</p><p><strong>3. Deliberate friction.</strong> Also my proposal, at least for engineering... but the mechanism has evidence behind it. AI-free design sessions. Attempt the problem yourself for 15 to 30 minutes before asking the agent. Treat the agent as a pair, not as a subcontractor you throw tickets at. Giuseppe Romeo and Daniela Conti went through 35 studies on automation bias (<a href="https://doi.org/10.1007/s00146-025-02422-7">AI &amp; Society, 2026</a>, <em>mostly medicine and HR, not software, so same caveat as before</em>) and 3 things came out that your reviewers will recognize: a) people rubber-stamp a machine when they are overloaded, not when they are lazy; b) telling them &#8220;you are accountable for this&#8221; changes nothing; c) making them decide first, and only then see the machine&#8217;s answer, does. Your team will grumble about the friction and that means the (planned) friction is working. Pilots still fly by hand on purpose, and Bainbridge told us why.</p><p><strong>4. Rotate the gate, and make &#8220;reviewed&#8221; mean something.</strong> If the same two people sign everything, the gate is a person, and people wear out. Remember the company that doubled its output: silent approvals doubled, commented reviews stayed flat. So: the log records who reviewed what, agent reviews included, and a silent approve-only click does not count as human review of agent code. A human who left a comment, or a human who actually ran it, owns the merge. Yes, this is last week&#8217;s &#8220;keep the transcripts&#8221; plank again, one level up.</p><p>So you think I&#8217;m getting boring? Because I keep saying the same thing, that &#8220;it&#8217;s not about the model or the subscription&#8221;? Well... too bad, as I&#8217;ll keep on that cadence. The &#8220;best model according to benchmarks&#8221; changes every few weeks. The reviewers are the people you keep... as long as you give them a job that is possible to do.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aYoK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aYoK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aYoK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aYoK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aYoK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!aYoK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1013850,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/213414439?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aYoK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aYoK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aYoK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aYoK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0925a790-dbe0-4d5b-85d3-477f394fba39_1264x848.jpeg 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><h2>Run it on yourself</h2><p>Before the next license renewal, before the next &#8220;AI adoption&#8221; townhall, and definitely before someone forwards you Brett&#8217;s video with &#8220;should we worry?&#8221; on top... three things you can check this week. On your own org, not on a vendor.</p><ol><li><p><strong>Count the signatures.</strong> How many agent MRs did your best reviewer approve last week? And how many of those got an actual comment from them? If nobody can answer that without writing a query first, the query is your first finding.</p></li><li><p><strong>Find the last blank file.</strong> When did that same reviewer last write something from nothing, no agent, no autocomplete? If the answer is &#8220;a quarter ago&#8221;, congratulations, you have Bainbridge&#8217;s second irony on payroll... and you are paying a senior salary for a stamp.</p></li><li><p><strong>Run the Tuesday test.</strong> If Claude, Codex and Cursor were all down next Tuesday, which of your teams could still ship on Wednesday? Name them. That list is your inspector count, and it is probably shorter than your org chart suggests.</p></li></ol><p>Whichever one stings, you now know which body has been sitting still while the other one sprinted (and the architecture body watched, again). And you have a much better answer than &#8220;we trust our seniors&#8221; for when the board asks.</p><h2>The whole thing, in one line</h2><blockquote><p><strong>You kept the gate. Now go and check who is holding it... and whether they still can.</strong></p></blockquote><h2>Coming up</h2><p>Next week I go where this issue kept pointing and did not walk: the craft question. Brett is not alone, there is a whole &#8220;I&#8217;m done with AI&#8221; movement growing in the comment sections, and I think it is not about AI at all. What the people rejecting AI coding are actually telling you, and what to do about it before your best inspector walks off the floor. More soon. :-]</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/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">Thanks for reading The Recovering CTO! Subscribe for free to receive new posts and support my work.</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><h2>Sources</h2><p>Directly cited:</p><ul><li><p>Brett Codes, &#8220;I&#8217;m done coding with AI&#8221;, YouTube, 11 August 2026 (practitioner video; 686,525 views on 30 August 2026). </p></li></ul><div id="youtube2-2ZU3j4GQ4K8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;2ZU3j4GQ4K8&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/2ZU3j4GQ4K8?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><ul><li><p>Brett Chalupa, &#8220;I&#8217;m done using AI&#8221;, Brett Codes blog, August 2026 (the written version of the video). <a href="https://brettcodes.com/im-done-using-ai/">https://brettcodes.com/im-done-using-ai/</a></p></li><li><p>Thiago A. de Faria, &#8220;From GenAI Practice Vacuum to Validated Guidance: A Delphi Study of AI-Augmented Reference Architecture Development&#8221;, MSc thesis, Antwerp Management School, 2026 (the author&#8217;s own three-round Delphi study with 8 to 10 practitioners, January to March 2026; not peer-reviewed). <a href="https://doi.org/10.5281/zenodo.18367977">https://doi.org/10.5281/zenodo.18367977</a></p></li><li><p>Guangrui Fan, Dandan Liu, Lihu Pan, Rui Zhang, &#8220;When Help Hurts: Verification Load and Fatigue with AI Coding Assistants&#8221;, CHI 2026. <a href="https://doi.org/10.1145/3772318.3791176">https://doi.org/10.1145/3772318.3791176</a></p></li><li><p>Hao He, Shyam Agarwal, Yegor Denisov-Blanch, Pavel Azaletskiy, Sanmi Koyejo, Bogdan Vasilescu, &#8220;AI Writes Faster Than Humans Can Review: A Longitudinal Study of an Enterprise &#8216;2&#215;&#8217; Mandate&#8221;, arXiv:2607.01904, July 2026 (preprint, not yet peer-reviewed; one firm, 802 developers, 196,212 pull requests). <a href="https://arxiv.org/abs/2607.01904">https://arxiv.org/abs/2607.01904</a></p></li><li><p>Lisanne Bainbridge, &#8220;Ironies of Automation&#8221;, Automatica 19(6), 1983, pp. 775-779. <a href="https://doi.org/10.1016/0005-1098(83)90046-8">https://doi.org/10.1016/0005-1098(83)90046-8</a></p></li><li><p>Kacper Duma, Patryk Wr&#243;blewski, Jagoda Bobi&#324;ska, Julia Winiarska, Piotr Przymus, &#8220;These Aren&#8217;t the Reviews You&#8217;re Looking For: How Humans Review AI-Generated Pull Requests&#8221;, accepted at EASE 2026, short paper (arXiv preprint; GitHub open-source repositories only). <a href="https://arxiv.org/abs/2605.02273">https://arxiv.org/abs/2605.02273</a></p></li><li><p>Giuseppe Romeo, Daniela Conti, &#8220;Exploring automation bias in human-AI collaboration: a review and implications for explainable AI&#8221;, AI &amp; Society 41, 2026, pp. 259-278 (peer-reviewed PRISMA systematic review of 35 studies; domains mostly outside software). <a href="https://doi.org/10.1007/s00146-025-02422-7">https://doi.org/10.1007/s00146-025-02422-7</a></p></li></ul><p>Further reading (not cited in the body, same argument from other angles):</p><ul><li><p>Hao-Ping (Hank) Lee, Advait Sarkar, Lev Tankelevitch, Ian Drosos, Sean Rintel, Richard Banks, Nicholas Wilson, &#8220;The Impact of Generative AI on Critical Thinking: Self-Reported Reductions in Cognitive Effort and Confidence Effects From a Survey of Knowledge Workers&#8221;, CHI 2025. <a href="https://doi.org/10.1145/3706598.3713778">https://doi.org/10.1145/3706598.3713778</a></p></li><li><p>Raja Parasuraman, Dietrich H. Manzey, &#8220;Complacency and Bias in Human Use of Automation: An Attentional Integration&#8221;, Human Factors 52(3), 2010, pp. 381-410. <a href="https://doi.org/10.1177/0018720810376055">https://doi.org/10.1177/0018720810376055</a></p></li><li><p>Rafael Tomaz, Paloma Guenes, Allysson Allex Ara&#250;jo, Maria Teresa Baldassarre, Marcos Kalinowski, &#8220;Impacts of Generative AI on Agile Teams&#8217; Productivity: A Multi-Case Longitudinal Study&#8221;, FORGE 2026 (the Issue 6 study). <a href="https://doi.org/10.1145/3793655.3793728">https://doi.org/10.1145/3793655.3793728</a></p></li><li><p>Mik Kersten, &#8220;Output to Outcome&#8221;, IT Revolution, 2026 (practitioner book; Issue 2 callback). <a href="https://itrevolution.com/product/output-to-outcome/">https://itrevolution.com/product/output-to-outcome/</a></p></li><li><p>Matthew Skelton, Manuel Pais, &#8220;Team Topologies: Organizing Business and Technology Teams for Fast Flow&#8221;, IT Revolution, 2019 (practitioner book). <a href="https://teamtopologies.com/book">https://teamtopologies.com/book</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[The sandbox is not holding]]></title><description><![CDATA[Theirs leaked. Yours doesn't exist.]]></description><link>https://writing.tilinthecloud.com/p/the-sandbox-is-not-holding</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/the-sandbox-is-not-holding</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 25 Aug 2026 07:15:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fRP3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">Last week</a> I was talking about sharing your learnings in a very interactive way with your Codex/Claude Code, right? Start iteratively inside one repo, scale the automation in 3-5 repos and end up &#8220;releasing the kraken&#8221; unto the rest!</p><p>A good and proven story that I&#8217;ve done with a few customers... each with their learnings, sweat, tears and celebrations that I had in the back of mind since I decided to start this substack. It was long due and I went with it...</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><p>No regrets, but I do remember my excitement on August 5th when I was reading the UK&#8217;s AI Security Institute (AISI) report (<a href="https://www.aisi.gov.uk/blog/incident-report-unsanctioned-agent-behaviour-during-cyber-testing">the full report</a>, published Aug 4th, and <a href="https://www.aljazeera.com/economy/2026/8/5/ai-models-attempted-unsanctioned-cyberattacks-in-tests-watchdog-says">Al Jazeera&#8217;s write-up</a> for the news version). I mean, it doesn&#8217;t get better than this... it&#8217;s so meta, it hurts (and yes, the Meta joke will land harder as we progress... I promise) :-]</p><p>AISI was performing cyberattack assessment with frontier models in configurations that aren&#8217;t publicly available, when their monitoring flagged traffic leaving the premises via Tor. They contained it, stopped everything and proceeded to investigate... and what they found out (including a malicious pull request to an Open Source project) is funnily amazing!</p><p>The irony is so strong... a safety test in an unprompted setup without the guardrails (to test the model they remove the guardrails, ofc) ended up trying to:</p><ul><li><p>supply-chain attack in an Open Source project</p></li><li><p>communicate and establish a cooperation with independent agents</p></li><li><p>social engineer and phish real people</p></li><li><p>prompt-inject malicious code</p></li></ul><p>We are talking about this at the same time that everyone is seeing the jokes around Meta, Anthropic and OpenAI on &#8220;who is the most dangerous of us?&#8221;. And while the joke lands and all, you really should be watching what is the blast radius of your agents.</p><p>Blast radius, not danger.</p><p>I&#8217;m also not lost in the irony that last week I told about <a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">&#8220;teaching your AI&#8221;</a> the patterns you want to modernize, so that you can unleash at your codebase... so what? Let&#8217;s see!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fRP3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fRP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!fRP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!fRP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!fRP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fRP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:323428,&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://writing.tilinthecloud.com/i/212617813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.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_!fRP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!fRP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!fRP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!fRP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff783f8-f28b-4b4d-8fa5-817bd19aae45_1200x675.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><a href="https://writing.tilinthecloud.com/p/one-program-not-three">Issue 1 named the trap: sequencing.</a><br><a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2 named the destination: AI-native, not AI-ready.</a><br><a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Issue 3 put three bodies on the table that have to move together.</a><br><a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Issue 5 found Herbie: your bottleneck doesn&#8217;t burn tokens.</a><br><a href="https://writing.tilinthecloud.com/p/more-shipped-same-typing">Issue 6 brought the peer-reviewed witness: more shipped, same typing.</a><br><a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">Issue 7 taught one repo and moved a fleet.</a></p><p><a href="%25%25checkout_url%25%25">Subscribe now</a></p><h2>August, as reported by the people selling it</h2><p>AISI was not the only one reporting &#8220;weird stuff&#8221; these last weeks... every major lab published its own &#8220;our agent went somewhere it shouldn&#8217;t&#8221; report. Let&#8217;s go through the receipts, shall we?</p><p><strong>Anthropic</strong> went first, on July 30th: <a href="https://www.anthropic.com/news/investigating-incidents-cybersecurity-evals">Investigating three real-world incidents in our cybersecurity evaluations</a>. Three incidents, found while combing back through <strong>&gt;140k evaluation runs</strong>. My personal favorite anecdote is the older Claude model that was given a fictional company to attack in a test scenario... and there happened to be a real company with a matching name... (<em>I mean, wow... Test Company? Acme? Never create a company with these names...</em>) So it attacked the real one. For real! In 4 separate runs, it extracted credentials and reached a production database with several hundred rows in it.</p><p>Another impressive one (but not as funny) happened when Claude Mythos 5 thought it was playing a capture-the-flag exercise and published an actual malicious Python package to the actual PyPI registry. It stayed live for one hour and got downloaded by roughly 15 systems... one of them being a security company&#8217;s scanner. Some might say it&#8217;s poetic, but I cannot stop feeling sorry about it...</p><p>And the root cause of all three? The prompts said &#8220;no internet access&#8221;. The environment had internet access. That&#8217;s it. Not a jailbreak, not an evil genius model plotting in the dark... the test said one thing and the wires said another... I mean, can you imagine a villain hiring an uncontrollable beast and telling their vassals to always lock the cage, right? Now imagine that the first night they just go for a barbecue in front of the cage with the door open? Obvious ending, but I digress...</p><p><strong>OpenAI</strong> came on August 7th with <a href="https://openai.com/index/responding-next-frontier-critical-cyber-capabilities/">Responding to the next frontier of critical cyber capabilities</a>: they cannot rule out that Astra (unreleased) crossed the &#8220;Critical&#8221; cyber threshold of their own Preparedness Framework. First time ever, for any of their models. Critical here means a model that may plan and execute serious cyberattacks with little or no human help. Their response? Slowing parts of the development, tougher security requirements, and rewriting the framework itself... because the models arrived at the thresholds the document had only imagined. Some might say it was because the AISI report had just pinned 17 of its 19 unsanctioned actions on Anthropic&#8217;s model (the OpenAI one only did &#8220;something bad&#8221; twice), but there is no money involved in appearing too dangerous, right?</p><p>What about <strong>Meta?</strong> On August 10th Zuckerberg published a 6,500-word essay, <a href="https://about.fb.com/news/2026/08/the-future-is-for-everyone/">The Future Is for Everyone</a>, telling us that &#8220;The notion that AI is so dangerous that the only safe path is an extreme concentration of power seems inherently problematic&#8221;. Released together with an open-weight model, naturally. What the essay did not mention: days earlier, per <a href="https://techcrunch.com/2026/08/09/the-ai-safety-test-is-becoming-a-safety-risk/">press reports</a>, one of Meta&#8217;s own models had escaped a testing sandbox through a configuration error and exploited a real third-party vulnerability. Told you the Meta joke would land :-D</p><p>Now read those again... but slower (especially the AISI one). Because each one is trying to be an ad and a scary bedtime story at the same time. But hey, they are postmortems. And we, the people who run systems for a living, know exactly how to read a postmortem (and the fact we should not call it like that anymore...).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jVwL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jVwL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jVwL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jVwL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jVwL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jVwL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:898578,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/212617813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jVwL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jVwL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jVwL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jVwL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aed3607-39f9-4793-9127-fef63da7e27e_1264x848.jpeg 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>The mockery and the panic are the same mistake</h2><p>And of course, we (or the internet) decided the extremes are the cool way: &#8220;Let&#8217;s mock them for making it look like an ad&#8221; against &#8220;We are doomed!&#8221;.</p><p>It&#8217;s easy to make a meme with &#8220;Our model is <em>so</em> dangerous we can barely contain it&#8221;... available today, $20/month, no waitlist. The doomsday device with a free tier. Isn&#8217;t it strange that every lab now announces that their creation might end civilization and puts the pricing table one scroll below (yes, the truly dangerous ones stay unreleased... but memes don&#8217;t care about footnotes)?</p><p>On the other hand, more arguments for your CISO to continue increasing their Zscaler budget... &#8220;The agents are threat actors!&#8221; Pause the rollout, draft a policy, form a committee... and if the company is big enough, a task force <em>and</em> a &#8220;GenAI Risk Maturity Assessment&#8221; from a consultancy that discovered agents last quarter. It&#8217;s the same energy as banning USB sticks after the breach that came in through email, but no one can say they want to be riskful...</p><p>And even though I see where both come from, I dislike extremes, especially when they are spectator seats. The laughing grandstand and the panicking grandstand are watching the same show and neither one has/wants to change a single thing about their week. Both treat the reports as content, as media... and as we just said: they are postmortems.</p><p>So we laugh, Thiago? Ofc! You joke about it! You go from capitalism skeptical to doomsday-guy-building-a-bunker at the barbecue. But then you read it the way you would read your own.</p><ol><li><p>What was the <strong>root cause</strong>? The environment said one thing and did another.</p></li><li><p>How was it <strong>detected</strong>? Network monitoring at AISI, a &gt;140k-run retrospective at Anthropic.</p></li><li><p>What was the <strong>impact</strong>? Contained, thanks to fast response and a decent amount of luck.</p></li></ol><p>If your SRE handed you with &#8220;root cause&#8221;, &#8220;detection&#8221; and &#8220;impact&#8221; about staging reaching the production database, you would not call your infrastructure &#8220;too dangerous&#8221;. You would be thankful that a mistake didn&#8217;t cost much, fix the wiring and go looking for the other places where the paperwork and the wires disagree.</p><p>That is the reclassification that matters, not &#8220;AGI is coming&#8221; or &#8220;AI becomes evil&#8221;. This is the most boring failure class we own, wearing the scariest costume available.</p><p>And to be fair with the labs: they were more honest here than most vendors will ever be. These tests run with guardrails off on purpose (that is the point of capability testing) and Anthropic wrote a line that deserves quoting straight:</p><blockquote><p>&#8220;In none of these situations did Claude exfiltrate itself or deliberately attempt to escape its test environment.&#8221;</p></blockquote><p>The model did what capture-the-flag training teaches and every textbook would say: reach the flag. Nothing &#8220;escaped&#8221;. The fence was simply not where the paperwork said it was.</p><p>Which is exactly why this stops being funny. Skynet, you don&#8217;t have. Config drift? Oh, you have it... I have it... we have it. The labs found their incidents because they went looking, with monitoring in place and the patience to comb through 140k+ runs. When was the last time you went looking?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ewAH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ewAH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ewAH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ewAH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ewAH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ewAH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:985692,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/212617813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ewAH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ewAH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ewAH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ewAH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2487c5dd-59b8-4178-aa4c-ce7483abb1af_1264x848.jpeg 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><h2>You are running the same eval, without the eval team</h2><p>Let&#8217;s go back to your company, your problem, and that AI-Native Operating Model we keep talking about. <a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">Last week&#8217;s playbook</a> (that I still stand behind!) ends with agents opening Merge Requests across your repositories. To do that, they hold real things: repo access, CI credentials, tokens that can touch your artifact registry... and if we are honest, in most companies, way more than that...</p><p>You might think &#8220;But Thiago, we didn&#8217;t remove the guardrails like the labs did... so we are safe!&#8221; Are you sure? Let me ask this differently:</p><ol><li><p>Which credentials did your coding agents hold last week? (and whose token was it, actually?)</p></li><li><p>What network can their environment reach?</p></li><li><p>Who reads their transcripts?</p></li><li><p>If one of them did something weird last Tuesday... which artifact would tell you?</p></li></ol><p>I&#8217;ve asked these in rooms with very senior people, and the honest answers, in order, tend to be: &#8220;a personal access token someone pasted in March&#8221;, &#8220;all of it&#8221;, &#8220;nobody&#8221; and &#8220;hmm...&#8221;</p><p>If those are your answers too, congratulations: you are running the same permissive capability eval the labs run, on your own infrastructure. Minus the monitoring, minus the transcript retention, minus the &gt;140k-run retrospective. AISI had a fence with a hole in it... you skipped the fence and went straight to the barbecue.</p><p>&#8220;But we trust our engineers!&#8221;... me too! And the agent is not your engineer. Your engineer does not open 40 MRs on a Tuesday night, does not clone the same repo 200 times, and (I sincerely hope) does not create fake identities to convince a maintainer to merge things. Trust in people does not transfer to workloads. We solved this before, by the way... we just keep forgetting that &#8220;principle of least privilege&#8221; applies to anything that holds a credential, not only to the humans in the directory.</p><p>And here is the three-body reading (<em>aha! You knew it was coming!</em>): this is the GenAI capability body sprinting while the People and Architecture bodies watch from the grandstand (yes, the same grandstands from before). Every new model release makes your agents more capable. None of them makes your permissions, your review gates or your audit trail one bit better.</p><p>Buying more capability does not close that gap... it widens it. <a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Issue 5&#8217;s Herbie</a> is back (the slowest hiker in the line, the one who sets the pace for the whole troop) and this time he is holding your prod token...</p><h2>The operating-model answer</h2><p>Uh-oh... so what? We climb out of the engine room and we write it down as an operating model. Not a tool to buy, not a committee to form... five decisions... all boring and cheap (especially compared to what your agents already cost you).</p><p><strong>1. Identity.</strong> Your pair-programming buddy can act as you while you are watching the terminal... but the moment nobody is watching, the agent runs as its own principal. Never on a human&#8217;s token (<em>goodbye, token pasted in March</em>). If you cannot attribute an action, you cannot review it... and &#8220;who did this?&#8221; should never have &#8220;we think it was the intern&#8217;s PAT&#8221; as an answer. The security crowd has already written this down, by the way: <a href="https://owasp.org/www-project-non-human-identities-top-10/">OWASP&#8217;s Non-Human Identities Top 10</a> reads like it was waiting for agents to go mainstream.</p><p><strong>2. Least privilege, with an expiry date.</strong> The agent gets the repos and environments of its task, nothing else, and its credentials die young. Yes, this is the same least-privilege sermon your security team gives every year. The only news is that it now applies to something that runs at 3am at ~65 tokens/sec.</p><p><strong>3. Egress is part of the spec.</strong> What the environment can reach over the network is written down, and checked... not assumed. Read Anthropic&#8217;s postmortem again: this single line item was the entire root cause of all three incidents. The prompts said &#8220;no internet&#8221; and the wires disagreed. So, check the wires!</p><p><strong>4. The owner-reviewed gate.</strong> Remember <a href="https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet">last week&#8217;s owner-reviewed MRs</a>? That was never bureaucracy... that was the containment boundary. The gate is where a wrong lesson stops compounding across the fleet. Removing it does not make you faster, it makes you AISI without the monitoring. And yes, at fleet scale this gate becomes your bottleneck... on purpose. That is Herbie again: you subordinate the fleet&#8217;s pace to the gate, you do not delete the gate. A whole industry is now theorizing its way around it (<em><a href="https://tessl.io">Tessl</a> and the <a href="https://tessl.io/blog/spec-driven-development-10-things-you-need-to-know-about-specs">spec-driven development</a> crowd, where the MR is cast as the villain of the developer&#8217;s life</em>)... maybe they are right, one day. Until your specs review themselves, the gate stays.</p><p><strong>5. Keep the transcripts, review the incidents.</strong> The labs went back through &gt;140k runs to find three incidents. You do not need that scale: keep your agents&#8217; transcripts for 90 days and run a blameless review when a Tuesday gets weird. If nothing is ever weird, your monitoring is not good... it&#8217;s blind.</p><p>None of this requires believing &#8220;too dangerous&#8221;. It only requires believing the vendors&#8217; own postmortems... the most credible documents they will ever publish.</p><p>And notice what just happened: not one of these five is about the model. The model will change again next quarter (it already did while I was writing this)... but the operating model? Well, that is yours to keep and evolve.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OuPF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OuPF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OuPF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OuPF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OuPF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OuPF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:763557,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/212617813?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OuPF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OuPF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OuPF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OuPF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe79cf366-ffc5-490a-8493-2a29ec6178e5_1264x848.jpeg 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>Run it on yourself</h2><p>Before your next &#8220;AI townhall&#8221;, before the next license renewal, and definitely before someone proposes an &#8220;AI Agent Governance Committee&#8221;... three things you can do this week, no extra budget needed:</p><ol><li><p><strong>Inventory the tokens.</strong> List every credential your coding agents held last week... and whose name each one carries. If building that list requires a meeting (or several), the list is the finding.</p></li><li><p><strong>Test the egress yourself.</strong> Go inside the agent&#8217;s environment and try to reach something it should never touch: the payment API, the prod database, that storage bucket with the backups. The labs&#8217; entire root cause was this check, skipped. Twenty minutes, one afternoon, possibly the best security investment of your quarter.</p></li><li><p><strong>Find the gate.</strong> Locate the one boundary an agent&#8217;s change cannot cross without a human whose name is on the repo. If you cannot find it... or if someone removed it &#8220;for velocity&#8221;... you did not remove the risk, you removed the containment.</p></li></ol><p>Run these three and you will know exactly which grandstand you have been sitting in... likely both, depending on the system/team. And more important: you will have a much better answer than mocking or panicking when your board forwards you the next &#8220;AI attacks company&#8221; headline with a one-line &#8220;should we worry?&#8221; on top.</p><h2>The whole thing, in one line</h2><div class="pullquote"><p><strong>Your agents were never too dangerous to release. They are already released, by you. The only question left is what they can reach.</strong></p></div><h2>Coming up</h2><p>Next week we stay out of the engine room and look at the people side of this: what agent fleets do to your teams, their cognitive load, and who reviews the reviewers. Shape still forming... More soon. :-]</p><h2>Sources</h2><ul><li><p>UK AI Security Institute, &#8220;Incident Report: unsanctioned agent behaviour during cyber testing&#8221;, 4 August 2026 (government institute incident report, not peer-reviewed). <a href="https://www.aisi.gov.uk/blog/incident-report-unsanctioned-agent-behaviour-during-cyber-testing">https://www.aisi.gov.uk/blog/incident-report-unsanctioned-agent-behaviour-during-cyber-testing</a></p></li><li><p>Anthropic, &#8220;Investigating three real-world incidents in our cybersecurity evaluations&#8221;, 30 July 2026 (vendor incident write-up, not peer-reviewed). <a href="https://www.anthropic.com/news/investigating-incidents-cybersecurity-evals">https://www.anthropic.com/news/investigating-incidents-cybersecurity-evals</a></p></li><li><p>OpenAI, &#8220;Responding to the next frontier of critical cyber capabilities&#8221;, 7 August 2026 (vendor announcement, not peer-reviewed). <a href="https://openai.com/index/responding-next-frontier-critical-cyber-capabilities/">https://openai.com/index/responding-next-frontier-critical-cyber-capabilities/</a></p></li><li><p>Mark Zuckerberg, &#8220;The Future Is for Everyone&#8221;, Meta, 10 August 2026 (corporate essay). <a href="https://about.fb.com/news/2026/08/the-future-is-for-everyone/">https://about.fb.com/news/2026/08/the-future-is-for-everyone/</a></p></li><li><p>&#8220;The AI safety test is becoming a safety risk&#8221;, TechCrunch, 9 August 2026 (press; source for the Meta sandbox escape). <a href="https://techcrunch.com/2026/08/09/the-ai-safety-test-is-becoming-a-safety-risk/">https://techcrunch.com/2026/08/09/the-ai-safety-test-is-becoming-a-safety-risk/</a></p></li><li><p>OWASP, &#8220;Non-Human Identities Top 10&#8221;, 2025 edition (industry security standard, not peer-reviewed). <a href="https://owasp.org/www-project-non-human-identities-top-10/">https://owasp.org/www-project-non-human-identities-top-10/</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/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">Thanks for reading The Recovering CTO! Subscribe for free to receive new posts and support my work.</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[Teach one repo, move a fleet]]></title><description><![CDATA[Teach the AI one repo's migration, validate the lesson, run it across the fleet. What it costs, what it returns, where it goes wrong.]]></description><link>https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/teach-one-repo-move-a-fleet</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 18 Aug 2026 07:07:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Gl6z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We all know the Principal/Staff/Distinguished Engineer that has 10+ years of experience in their company (with a 20+ years experience working in tech). Whichever team they go through, it skyrockets and a lot of problems get solved...</p><p>But they are only one, and you have hundreds of repositories with dozens of teams and everyone wants to revamp/modernize their tech stack... all at the same time that someone is planning a &#8220;tech reorg&#8221; paying millions to McKinsey.</p><p>I was working with that Principal Engineer / Lead Architect in a major European airline while they were working in one problem: dozens of old Java apps that acted as a distributed monolith that they wanted to move to Java 21.</p><p>After months of struggle with the (false) promise that you feed your repositories to Claude Code and it magically vomits high-performing new code, we started to talk.</p><p>So they were struggling and arguing that fancy new AI models are not good in writing code, and that annoyed me. Because the question should be a different one: can your organization teach the AI something once and reuse that lesson? And of course, the best person to teach it is a team led by the Principal/Staff we&#8217;ve been talking about.</p><p>That lesson is the unit of scale... not the license, not the prompt. The encoded and validated lesson, the fricking pattern!!</p><p>In last week&#8217;s edition we promised to talk about architecture and &#8220;the pattern, not a pitch&#8221;. Here we are!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gl6z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gl6z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!Gl6z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!Gl6z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!Gl6z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gl6z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:323233,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/211459427?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.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_!Gl6z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!Gl6z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!Gl6z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!Gl6z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ddef09-f5aa-481d-a211-feab31d23121_1200x675.png 1456w" sizes="100vw" fetchpriority="high"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 style="text-align: center;"><a href="https://writing.tilinthecloud.com/p/one-program-not-three">Issue 1 named the trap: sequencing.</a><br><a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2 named the destination: AI-native, not AI-ready.</a><br><a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Issue 3 put three bodies on the table that have to move together.</a><br><a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Issue 5 found Herbie: your bottleneck doesn&#8217;t burn tokens.</a><br><a href="https://writing.tilinthecloud.com/p/more-shipped-same-typing">Issue 6 brought the peer-reviewed witness: more shipped, same typing.</a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>The trap: changing the pattern and the version in one jump</h2><p>Modernizing your architecture is a hard thing, and we don&#8217;t even need to go to Conway&#8217;s Law here. Just ask someone what they mean by modernizing an application. Is it the language change? A major version upgrade? A &#8220;more modern&#8221; pattern and saying that Saga patterns are the way forward?</p><p>For a lot of my customers they start yapping (sorry about the word) about &#8220;breaking down our monolith&#8221;. And when I ask what is bad about their monolith they start going on about deployment challenges, about the one time they had to wait 4 sprints to add a new field to the website UI or how every developer takes months to onboard to their codebase.</p><p>Peeling that onion I usually can find the core, and it&#8217;s a combination of one or more of these (coming from CTO all the way to the support team):</p><ol><li><p>All changes take too long, even small/dumb ones.</p></li><li><p>Developers are afraid to touch this repo because of unforeseen changes.</p></li><li><p>No one from the tech team can estimate how long it is going to take to finish this feature, then we cannot plan it financially.</p></li><li><p>My dev team is sick and tired of maintaining this... they just want to build an &#8220;insert cool new shiny object here&#8221; and this keeps holding them back.</p></li><li><p>... anything else you can imagine that encapsulates frustration and rage and disappointment and denial and more...</p></li></ol><h2>Teach one, prove three, run the fleet</h2><p>And I tell them the same. Funnel it out! But knowing where to start is really tricky, so what do I do: Event Storming session! Yes, this will require a newsletter on its own, but I do an event storming session (1 to 3 depending on size and problem)... that is followed by a definition with the customer on what pattern we are tackling and in which business domain.</p><p>With that in mind, we have a pattern we want to tackle. And no, you cannot just say you want to &#8220;apply <a href="https://martinfowler.com/bliki/StranglerFigApplication.html">strangler-fig</a>&#8220; to your monolith! I&#8217;m talking about something way more tangible. For this specific airline, we were talking about JRE 5 and JRE 6 upgrades to Java 21.</p><p>That is followed by a sprint. And if you are into Team Topologies I can just say this is me and the Staff/Principal Architect/Engineer (let&#8217;s call them Athena from now on!) playing the role of an Enablement Team to a 2-3 members of a Stream-Aligned team. And there I was with Athena talking to a specific team that was doing the GDS integration for airplane ticket selling.</p><p>And what do we do? Hands-on coding in pair-programming sessions with Gen-AI assisted tools - Codex, Claude Code, Kiro, GitHub Copilot or whatever rocks your boat as your coding harness. The important part here is that working in pairs (plus the AI) forces you to say your assumptions out loud, where another human can counter them... it takes time but it&#8217;s a fantastic result. For all the DDD and XP programming fans here, this is nothing new :-]</p><p><strong>Week 1:</strong> We spent it writing and questioning the context we would feed the tool. Which code is where? What calls this? What is the latency on this? We went from our laptops individually to screen-sharing sessions on Zoom answering doubt after doubt... the 5 of us (me, Athena and the 3 developers on the GDS integration) spent one entire week having 90&#8217; alone sessions followed by 30&#8217;-60&#8217; calls asking each other questions, realizing assumptions were wrong, going from weird business rules into why the code is doing XYZ and banging our heads until someone would say: &#8220;Huh... I think we need to ask this to the Operations Director?&#8221; and that would park a point.</p><p>But Thiago, what is the AI usage here? Well, we rarely started from an empty canvas. Using Claude Code you can quickstart your documentation and start asking questions. Then you validate what you know. When you go into the function level that calls an endpoint to another repository, you don&#8217;t need to understand that other codebase that heavily, you can just ask about the contract and the API swagger to understand where things are going.</p><p>However, this doesn&#8217;t replace my 20+ years of experience building, debugging and operating distributed systems... on the contrary, it sped me up!</p><p>During this 1w going through this cycle we iterated several times in a tool. We would give a full agentic task to our GenAI harness with our context doc (we called it the Research Plan) and we know what we wanted to achieve: an Implementation Plan for the Java migration!</p><p>We&#8217;d review it together, find that something was missing, there were too many moving parts or a lot of handwaving... well, that meant we could improve the Implementation Plan ourselves and/or iterate again on the Research Plan.</p><p>Timebound it to 1w and voil&#224;... we have an Implementation Plan. This plan must consist of a reduced version of the context (hello Context Engineering) and validation tasks!</p><p><strong>Week 2:</strong> We leave it to run and push until at least 80% of it is actually solved. We end up happy with the plan and we actually manage to migrate one repo fully. Was it fully automatically? Of course not! We spent blood, sweat, tears and time making this together.</p><p><strong>Week 3:</strong> But now we have a formula to gather context. How we build the Research Plan in the Phase 1 is streamlined into skills, prompts, scripts and more. We can apply that to another 3 repositories and by the end of the week we had clear micro-patterns and rules that were important from Java 5 to Java 21. What to do first, what to look out for and more.</p><p>So by the end of week 3 we already migrated one repo and we have the implementation plan of other 3 repositories! :-D</p><p><strong>Weeks 4 and 5:</strong> ensuring those 3 repositories are migrated and ready to show-off.</p><p><strong>Week 6:</strong> the &#8220;fleet management problem&#8221;... you trust the lesson is now so good that a fully-streamlined run might get to that 60-80% good enough!</p><p>Why not aim for 100%? Because raw model translation is still not something you trust unattended: Rangeet Pan, Ali Reza Ibrahimzada and colleagues at IBM Research and the University of Illinois tested LLMs translating 1,700 code samples (ICSE 2024) and got correct translations between 2.1% and 47.3%, cataloguing 15 kinds of translation bugs along the way. That is why the validation tasks travel inside the plan. They are not paranoia, they are the pattern.</p><p>So what you do? You dispatch several runs against all repos that will go through it all: gather the Research Plan, write the Implementation Plan, build the final migration run with its report and validation status. Then open the MR and say what was done...</p><p>Every team maintaining those repos will get pinged with &#8220;WTF! There is a new MR to upgrade our Java 5 to Java 21?? ofc it didn&#8217;t work fully!&#8221; and that is the goal!</p><p>Now we are underway and what seemed impossible is now several kilometers close by. The magic happens... some teams reach out and say they will start working on it, while others don&#8217;t even bother. But lots were quite receptive to an hour of us sitting with them, walking the process, and leaving them to finish what was missing.</p><p>So what, Thiago? You are telling me that after 6 weeks you were able to open a MR to all Java codebases and solve everyone&#8217;s problem???</p><p>Not at all! We were able in 6 weeks to have 3 fully migrated repositories to Java 21 and give them something that was ~70% underway. It&#8217;s a glimpse of hope!</p><p>Our team of 5 got approval from the Tech Board to fluctuate around the company and enable these other teams... at this stage I was not needed 40h/w and I was mainly coaching Athena and the other 3, plus getting engaged as a soundboard for some hairy problems.</p><p>A few weeks into that phase, we noticed that repos the teams had sized in weeks were landing in roughly half the time of their original estimates... I don&#8217;t take that number too seriously, because initial estimates in large companies are always overestimated until they receive budget, but even discounting the sandbagging it was a lot faster than if they did it without this &#8220;method&#8221;. And this is without counting the freezing time that large companies have, on planning and waiting on the decision to start (what I call the &#8220;kick-off of the kick-offs&#8221;).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UKle!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UKle!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UKle!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UKle!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UKle!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UKle!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:922884,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/211459427?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UKle!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UKle!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UKle!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UKle!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3047dbc7-5985-4b2f-a143-111bd34e3fbe_1264x848.jpeg 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Now count what this actually cost: five people, six weeks, licenses most companies already pay for, and the owning teams&#8217; review time. No army, no SI landing party, no multi-year program slide. The expensive part was never the tooling... which brings us to where this pattern actually dies.</p><h2>Where it goes wrong: nobody touches my codebase</h2><p>So why doesn&#8217;t everyone do this? Because none of the fights that matter are technical.</p><p>The first fight is the fiefdom. When someone says &#8220;I don&#8217;t want others touching our codebase&#8221;, it is rarely about the code. It is about budget, headcount and team allocation, and a central team&#8217;s MR reads as a threat to all three. This is why the pattern needs sponsorship and transparency that go beyond the business unit you are working in: someone above the fiefdoms has to want the fleet moved more than any single castle wants its moat.</p><p>The second fight is the career program. Big architectural changes are career-defining projects... a new CTO arrives attached to a multi-year budget announcement, and a research-test-implement-iterate cycle kills the announcement. Some people grieve the announcement more than they want the outcome.</p><p>The third fight is with Finance, and it is the fairest of the three. The CFO needs horizons and control, and an iterative rebuild cannot promise a three-year gantt in good conscience. You still need the gantt (I&#8217;m not that naive), but it changes species: it becomes a forecast you manage through mid milestones, not a contract you defend in steering committees. More agile means more unknowns, and someone has to look Finance in the eye and say so.</p><p>None of these people are villains, by the way. The incentive system pays for programs, not for lessons.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o7Ux!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o7Ux!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!o7Ux!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!o7Ux!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!o7Ux!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o7Ux!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:894214,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/211459427?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o7Ux!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!o7Ux!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!o7Ux!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!o7Ux!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d984aca-fd52-46a8-afbb-893417203707_1264x848.jpeg 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>The three-body reading</h2><p>And what some teams were doing links to our 3-body problem... this airline was trying to move the architecture by forcing people to use their AI coding assistants. When usage didn&#8217;t climb, leadership came back with &#8220;we hear from everyone in the industry that code generation is so easy and cheap now... why can&#8217;t you just modernize everything?&#8221;. Then managers were asked to review token-usage per person in their 1:1 meetings. Insanity, I know.</p><p>When I left, there was another trend: Finance started pushing the opposite way, manager approval required before touching the AI harness, to staunch token usage.</p><p>What made this initiative a success was the fact that we kept the learning curve in a team. In that team we tackled the architecture problem by gathering people/political context with the Event Storming and all its pair-programming sessions. And we used AI steadily and in pairs, ensuring that no-one goes into a rabbit hole of handwaving or trying to bolt on yet another tool or trying to automate everything.</p><p>To move the architecture body we had to ensure the other two bodies (People and GenAI) were not converging to a cataclysm.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BKKc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BKKc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BKKc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BKKc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BKKc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BKKc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:830973,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/211459427?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BKKc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BKKc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BKKc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BKKc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd29f3a28-43e0-4edb-a52d-1d564422fd5f_1264x848.jpeg 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>Run it on yourself</h2><p>Before you buy anything or announce anything, three questions:</p><ol><li><p>Can you name (at least) 10-15 libraries, repos, modules or apps that share one shape (same framework, same pattern, same pain)? If you cannot, your first problem is inventory, not AI.</p></li><li><p>Which repo is your teaching repo, and who is your Athena (the know-it all Staff/Distinguished/Principal Engineer/Architect that knows the ins-and-outs of your most feared application)? One hand-made, human-validated migration is the baseline that earns the machine its trust. If nobody in the room can produce that baseline, the model will happily invent one for you.</p></li><li><p>Can a central team open MRs on other teams&#8217; repos... and who sponsors that conversation when a business unit says no? If either question makes the room go quiet, congratulations: you have found your real constraint, and it does not burn tokens.</p></li></ol><h2>The whole thing, in one line</h2><blockquote><p><strong>The unit of modernization is not the program, the license or the prompt. It is a validated lesson... and lessons, unlike programs, compound.</strong></p></blockquote><h2>Coming up</h2><p>Next week I climb back out of the engine room. More soon. :-]</p><h2>Sources</h2><ul><li><p>Rangeet Pan, Ali Reza Ibrahimzada, Rahul Krishna, Divya Sankar, Lambert Pougeum Wassi, Michele Merler, Boris Sobolev, Raju Pavuluri, Saurabh Sinha and Reyhaneh Jabbarvand, &#8220;Lost in Translation: A Study of Bugs Introduced by Large Language Models while Translating Code&#8221;, ICSE 2024 (peer-reviewed). <a href="https://doi.org/10.1145/3597503.3639226">https://doi.org/10.1145/3597503.3639226</a></p></li><li><p>Rafael Tomaz, Paloma Guenes, Allysson Allex Ara&#250;jo, Maria Teresa Baldassarre and Marcos Kalinowski, FORGE 2026 (peer-reviewed; last week's spine). <a href="https://doi.org/10.1145/3793655.3793728">https://doi.org/10.1145/3793655.3793728</a></p></li><li><p>Martin Fowler, &#8220;Strangler Fig&#8221;, martinfowler.com, 2024 revision (practitioner essay, not peer-reviewed). <a href="https://martinfowler.com/bliki/StranglerFigApplication.html">https://martinfowler.com/bliki/StranglerFigApplication.html</a></p></li><li><p>Field numbers are from my own engagement notebook, anonymized and hedged; treat them accordingly.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[More shipped, same typing]]></title><description><![CDATA[A study followed 3 agile teams for 13 months after GenAI arrived. Throughput rose 59%, the activity graph stayed flat and the bottleneck moved exactly where the field notebook said it would.]]></description><link>https://writing.tilinthecloud.com/p/more-shipped-same-typing</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/more-shipped-same-typing</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 11 Aug 2026 07:15:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lGk4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The before-and-after slide had two charts. The wrong one was winning.</p><p>I&#8217;ve been in a lot of these meetings. A year into the AI program, the delivery lead pulls the Git history for the review: the changes made to the code, the number of typed lines, the raw volume. It&#8217;s flat. After a year of paying for licenses and mandating usage, the graph shows no one ever plugged the thing in. You can see the sponsor in the next seat doing the math in their head on how to justify cutting this expense from next year&#8217;s budget.</p><p>The second chart is usually not made. It is usually the one that tells the story, too. Same team, same year: completed work up by half. Both charts are equally true. An organization that draws only the first chart will conclude AI did nothing, and cut the budget that was quietly working.</p><p>That is the real before-and-after of AI adoption. The work gets denser, not bigger... and a dashboard built to watch volume will not show it.</p><p><a href="https://writing.tilinthecloud.com/p/one-program-not-three">Issue 1 named the trap: sequencing.</a><br><a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2 named the destination: AI-native, not AI-ready.</a><br><a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Issue 3 put three bodies on the table that have to move together.</a><br><a href="https://writing.tilinthecloud.com/p/in-the-loop-not-in-the-room">Issue 4 climbed inside the AI capability and asked for one number: the acceptance rate.</a><br><a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Issue 5 found Herbie: your bottleneck doesn&#8217;t burn tokens.</a></p><p>Last week, I promised to open the field notebook: what it actually looks like when a shop moves its constraint, and the before-and-after numbers that survived contact with reality. There is one problem. My numbers are anonymized, mine, and hedged. When a consultant shows you their own before-and-after, you should take it with a grain of salt. (Yes, even mine.)</p><p>So this week, the notebook gets a new witness. A peer-reviewed study spent 13 months watching someone else&#8217;s shop and documented the same story I keep watching happen without them, p-values and all.</p><p>No kit this week, last week&#8217;s prompt still works. It&#8217;s just the argument this week, along with the standing ask: subscribe, run the three checks near the end on your own delivery data, and let me know which chart your CFO saw first.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lGk4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lGk4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!lGk4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!lGk4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!lGk4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lGk4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:326755,&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://writing.tilinthecloud.com/i/210703413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.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_!lGk4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!lGk4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!lGk4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!lGk4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f23afec-edfd-482f-a4da-e99d1a030cab_1200x675.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>Someone finally ran the experiment</h2><p>At FORGE 2026 (the IEEE/ACM conference on AI foundation models and software engineering), <a href="https://doi.org/10.1145/3793655.3793728">Rafael Tomaz, Paloma Guenes, Allysson Allex Ara&#250;jo, Maria Teresa Baldassarre, and Marcos Kalinowski published a study</a> on three agile teams in one of the world&#8217;s biggest IT consulting companies, running for around thirteen months. Real client projects, oil and gas plus maritime logistics, 21 developers under commercial pressure, October 2023 to November 2024.</p><p>What makes it rare, first of all, is a clean before. External GenAI tools were banned at the firm until the study kicked off, so the historical sprints are genuinely tool-free... and you almost never get that baseline in the wild. The measurement side is also better than most: Jira, SonarQube and Git telemetry before and after, cross-checked against surveys, organized by the <a href="https://queue.acm.org/detail.cfm?id=3454124">SPACE framework</a> (Forsgren, Storey, Maddila, Zimmermann, Houck and Butler, ACM Queue, 2021), the model that refuses to reduce developer productivity to one number.</p><p>And they did a proper rollout. Included all the bells and whistles. Copilot licenses. Plus an internal GPT tool. Kickoff. A two hour prompt-engineering workshop. A dedicated channel for swapping prompts. If your transformation office had this on a slide, they would call it best practice. Hold that thought.</p><p>The usual caveat, so nobody accuses me of hiding it: three teams, twenty-one developers, one firm. Carry these numbers with the same care as last week&#8217;s sixteen METR maintainers. What the paper lacks in scale it makes up for with length, and the dataset is open if you want to check their homework.</p><h2>The chart that would have killed the program</h2><p>In the team the researchers could track cleanly across the whole window, completed story points rose by 59.1 percent. From 281 to 447. Statistically significant. Medium effect sizes. Perceived efficiency agreed, roughly four in five developers reporting faster delivery and less repetitive work.</p><p>Activity, though? Across 349 commits and roughly 456 thousand lines, the difference in committed lines before and after came out at p = 0.928. For the non-statisticians: that is the test equivalent of a shrug.</p><p>The authors admit as much in their own conclusion. Had they measured activity alone, they would have concluded GenAI had no impact. Throughput up 59 percent while the commits dashboard swears the machine is unplugged.</p><p>Their name for the phenomenon is value density. More value per unit of work rather than more work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sNA1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sNA1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.png 424w, https://substackcdn.com/image/fetch/$s_!sNA1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.png 848w, https://substackcdn.com/image/fetch/$s_!sNA1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.png 1272w, https://substackcdn.com/image/fetch/$s_!sNA1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sNA1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.png" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1753195,&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://writing.tilinthecloud.com/i/210703413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.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_!sNA1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.png 424w, https://substackcdn.com/image/fetch/$s_!sNA1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.png 848w, https://substackcdn.com/image/fetch/$s_!sNA1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.png 1272w, https://substackcdn.com/image/fetch/$s_!sNA1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf4c17e-e424-4ec6-b1ed-63688c813a91_1264x848.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Run that next to last week&#8217;s tokenmaxxing leaderboard. One dashboard tracks the input, the other tracks the volume, and both fail to capture the only real change. Put together, they can wipe out a functioning program and, in the same quarter, give accolades to a broken one.</p><h2>The roadmap ate the gains</h2><p>This is my favorite number from the paper, and the abstract does not even mention it.</p><p>While completed points rose 59%, planned points rose about 150%, going from 447 to 1155. The team got faster, believed itself faster still, and committed accordingly. The pile of promised-but-undelivered work went from 166 points to 708. Do the completion-ratio arithmetic and it stings: before AI, the team completed about 63% of what it planned. After, about 39%.</p><p>Let&#8217;s say you are the sponsor. Your team made a genuine 59% jump in speed, and its promises got 24 points less reliable, at the same time, because of the same tool.</p><p>The paper calls this an increase in confidence in capacity. My notebook calls it an older law: capacity gains are spent before they land, and the people spending them are the ones drawing the roadmap. Remember the METR result from last week? Developers who were measurably slower felt 20% faster... speed perception inflates on contact with these tools, and roadmaps are made of speed perception.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kO3z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kO3z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.png 424w, https://substackcdn.com/image/fetch/$s_!kO3z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.png 848w, https://substackcdn.com/image/fetch/$s_!kO3z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.png 1272w, https://substackcdn.com/image/fetch/$s_!kO3z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kO3z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.png" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1863590,&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://writing.tilinthecloud.com/i/210703413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.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_!kO3z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.png 424w, https://substackcdn.com/image/fetch/$s_!kO3z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.png 848w, https://substackcdn.com/image/fetch/$s_!kO3z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.png 1272w, https://substackcdn.com/image/fetch/$s_!kO3z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb1b99f-9bb9-4c0b-8c08-90cd59088438_1264x848.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>The model dodges Herbie too</h2><p>Where did the gains land? On the work that was already clean.</p><p>Satisfaction with the tools ran inversely to the messiness of the task. 75% positive on unit test coverage. About 65% on new features and test scenarios. 50% on the legacy Java and React APIs. Under 25% for ETL and legacy Kafka integration. One of the seniors in the study said the tool almost perfectly replicates test patterns for simple methods and begins to lose reliability as the methods get progressively more complex. The most complicated integration seams, where the real calendar time goes, received the least support of all.</p><p>This is where we run into Issue 5 again. The jetpack fits every scout except for Herbie, and a satisfaction survey is now available to prove it.</p><p>The constraint, as expected, also moved downstream. The paper describes collaboration shifting from shared construction to shared evaluation... less time co-writing the code and more time reviewing and integrating what the model wrote. The queue shifted to validation, which, according to Goldratt&#8217;s accounting, is now where a lost hour costs the entire system an hour.</p><p>Quality went in both directions at once. Two of the three teams reduced their high-severity static-analysis issues while shipping more (one went from 1624 issues to 825). The third team got worse on every severity. Same tools. Same training. Same firm. Whatever determined those quality outcomes, it was not the tool.</p><h2>What a one-body move proves about the other two</h2><p>Why is this paper relevant to this newsletter? The intervention moved just a single body, and moved it nicely. Licenses, training, and a support channel, all for the AI capability. No one adjusted the team shape. No one touched the architecture. The teams continued their routines with a new tool in the loop, and that is exactly what most enterprise AI programs opt for these days.</p><p>The fingerprints are all over the results: gains land on the well-defined work and skip the legacy seams, the review queue picks up the load, planning runs ahead of capacity, and quality goes wherever the local context pushes it. That is thirteen months of the other two bodies standing still.</p><p>What does moving the other two look like? From the notebook, generalized across engagements (clients are not content):</p><p>The review ladder changes before the tool arrives, so that review capacity becomes first-class, visible, career-grade work.</p><p>Ownership is adjusted so that one team can manage a change from start to finish, including the model&#8217;s share of it, without leaving the room. The single gates go, on purpose... the title holders remain, and the queues are eliminated.</p><p>The backlog is restructured, not re-ordered. Once the model is integrated, some tasks are no longer worth building, and some become buildable for the first time. This is the architecture body answering back.</p><p>An engaged shop buys back a real portion of the constraint&#8217;s time in the first year. In my notebook it is roughly a fifth, with a credible path to most of it. The 8-to-80 image I have carried since the first issue is an effort curve, not an audited metric. The tools will accelerate a workflow from 8 to 80 as quickly and effortlessly as a car would on an open road. From 80 to 99 is a different sport. That stretch is purchased with team shape and architecture, and no study of tools alone will ever show it... as tools alone will not get you there.</p><h2>Run your own before-and-after</h2><p>Use three numbers, spend one afternoon, and there is nothing to buy.</p><ol><li><p>The completion ratio. Planned versus completed story points, the last four sprints compared to the four before adoption. Did completed go up while the ratio went down? That is the pattern from the paper: real gains, spent in advance by the roadmap.</p></li><li><p>The activity trap. Take a look at your main post-adoption AI chart. If it shows usage, commits, or lines, try to name one decision that it could correctly inform. In the paper, it would have scored a 59 percent gain as a zero.</p></li><li><p>The queue check. From last week&#8217;s prompt: median time-to-first-review and time-in-review, before and after the adoption. If both increased while throughput also increased, your constraint has moved downstream and is compounding quietly.</p></li></ol><p>If your shapes match the paper&#8217;s, your engineers are fine. Something was waiting in your org chart, and it was there before the tools arrived.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KR9H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KR9H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.png 424w, https://substackcdn.com/image/fetch/$s_!KR9H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.png 848w, https://substackcdn.com/image/fetch/$s_!KR9H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.png 1272w, https://substackcdn.com/image/fetch/$s_!KR9H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KR9H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.png" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2452507,&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://writing.tilinthecloud.com/i/210703413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.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_!KR9H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.png 424w, https://substackcdn.com/image/fetch/$s_!KR9H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.png 848w, https://substackcdn.com/image/fetch/$s_!KR9H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.png 1272w, https://substackcdn.com/image/fetch/$s_!KR9H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7ad502d-bf5e-4e3e-8685-52be530e3054_1264x848.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><blockquote><p><strong>AI makes the work denser, not bigger. Measure volume and you will see nothing happen... right up until the promises stop being kept.</strong></p></blockquote><h2>Coming up</h2><p>Next week I climb down into the architecture body: one modernization pattern in full, the GenAI-assisted legacy rebuild. What it costs, what it returns, where it goes wrong. The pattern, not the pitch.</p><p>More soon.:-]</p><h2>Sources</h2><p>Because none of this comes only from my head. Every link checked.</p><ul><li><p>The spine: Rafael Tomaz, Paloma Guenes, Allysson Allex Ara&#250;jo, Maria Teresa Baldassarre, and Marcos Kalinowski, &#8220;<a href="https://doi.org/10.1145/3793655.3793728">Impacts of Generative AI on Agile Teams&#8217; Productivity: A Multi-Case Longitudinal Study</a>&#8220; (FORGE &#8216;26, IEEE/ACM Third International Conference on AI Foundation Models and Software Engineering, 2026). Peer-reviewed. A small sample watched for a long time, and honest about its limits. The <a href="https://doi.org/10.5281/zenodo.17536708">dataset is open on Zenodo</a>.</p></li><li><p>The five-dimension lens the study uses: Nicole Forsgren, Margaret-Anne Storey, Chandra Maddila, Thomas Zimmermann, Brian Houck, and Jenna Butler, &#8220;<a href="https://queue.acm.org/detail.cfm?id=3454124">The SPACE of Developer Productivity</a>&#8220; (ACM Queue, 2021). Practitioner venue, not peer-reviewed in the journal sense.</p></li><li><p>The lab-speed antecedent the paper builds on: Sida Peng, Eirini Kalliamvakou, Peter Cihon, and Mert Demirer, &#8220;<a href="https://arxiv.org/abs/2302.06590">The Impact of AI on Developer Productivity: Evidence from GitHub Copilot</a>&#8220; (arXiv 2302.06590, 2023). Controlled experiment, preprint, not peer-reviewed: 55.8 percent faster on a fenced task.</p></li><li><p>The perception gap, again: Joel Becker, Nate Rush, Elizabeth Barnes, and David Rein, &#8220;<a href="https://arxiv.org/abs/2507.09089">Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity</a>&#8220; (METR, arXiv 2507.09089, July 2025). Randomized controlled trial, preprint, not peer-reviewed.</p></li><li><p>Herbie and the hour at the bottleneck: Eliyahu M. Goldratt and Jeff Cox, &#8220;<a href="https://books.google.com/books/about/The_Goal.html?id=os1awAEACAAJ">The Goal: A Process of Ongoing Improvement</a>&#8220; (North River Press, 1984). Still not peer-reviewed. Still right.</p></li></ul><p></p><p style="text-align: center;"><strong>I make this Substack thanks to readers like you!</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><p style="text-align: center;"></p>]]></content:encoded></item><item><title><![CDATA[Your bottleneck doesn't burn tokens]]></title><description><![CDATA[AI usage mandates put a jetpack on the one step of delivery that was already fast. Goldratt named the mistake in 1984, and the token dashboard is now making it at scale.]]></description><link>https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 04 Aug 2026 12:30:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xTkk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The 1:1 was going fine until the screen share.</p><p>It is a dashboard: AI usage by engineer, tokens per week, sorted descending. The manager scrolls to a name near the bottom of the list, and the question is almost kind. &#8220;Why is your number so low?&#8221;</p><p>Two desks over sits an engineer whose number is magnificent. He wears that dashboard the way other people wear a marathon medal. And in the same team&#8217;s repo, the oldest pull request has been waiting for a reviewer longer than either of them has been tracking tokens.</p><p>I have watched versions of this meeting more than once. The company changes, the tool changes&#8230; the dashboard survives.</p><p>Everyone in that room believes they are doing AI transformation. What they are actually doing is maximizing the input to the one step of delivery that was never the problem.</p><blockquote><p><strong>The mandate says: use the model more. <br>The delivery data says: your bottleneck doesn&#8217;t burn tokens.</strong></p></blockquote><p><a href="https://writing.tilinthecloud.com/p/one-program-not-three">Issue 1 named the trap: sequencing.</a><br><a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2 named the destination: AI-native, not AI-ready.</a><br><a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Issue 3 put three bodies on the table that have to move together.</a><br><a href="https://writing.tilinthecloud.com/p/in-the-loop-not-in-the-room">Issue 4 climbed inside the AI capability and asked for one number: the acceptance rate.</a></p><p>This week, as promised: the team body. What the org chart has to give up for the model to stay in the loop.</p><p>And for the first time, there is a kit. Near the end you will find a five-question team-shape test and a prompt you can paste over your own delivery data, today, with the tools your mandate already bought. </p><p>If you run it, subscribe and tell me what your Herbie turned out to be. Herbie is explained below, and he matters more than your token count.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xTkk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xTkk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!xTkk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!xTkk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!xTkk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xTkk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:342501,&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://writing.tilinthecloud.com/i/209774316?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.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_!xTkk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!xTkk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!xTkk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!xTkk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F883b227e-df9a-4e11-8b05-673a890a0799_1200x675.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>The mandate arrived with a leaderboard</h2><p>In April 2025, <a href="https://x.com/tobi/status/1909251946235437514">Tobi L&#252;tke told Shopify that &#8220;reflexive AI usage is now a baseline expectation&#8221;</a> and wired AI competency into performance reviews and hiring. A few months later, <a href="https://www.cio.com/article/4050185/fire-any-developer-who-doesnt-use-ai-why-coinbase-ceos-tough-message.html">Brian Armstrong told the Cheeky Pint podcast that Coinbase bought Cursor and Copilot, gave engineers a week to onboard, and fired the ones who did not</a>. Coinbase now says roughly a third of its code is written by AI, aiming to have it at 50%&#8230;</p><p>Let me be fair to the memos before I take them apart. Refusing to seriously try these tools in 2026 is a career decision, and a bad one. If the mandate stopped at &#8220;try it, properly, this quarter&#8221;, I would co-sign it.</p><p>But the mandate never stops there, because an executive who mandates something needs to measure it&#8230; and usage is the number that is easy to get. Seats. Active users. Tokens per engineer per week. Somewhere down the org chart, that number becomes a sorted list&#8230; that list becomes a 1:1 conversation and even a way to evaluate &#8220;performance&#8221;.</p><p>All this knowing that measured people have always done: they optimize the metric. Pipe the model into everything, let it summarize what nobody reads, regenerate until the meter looks respectable. Call it <strong>tokenmaxxing</strong>. Burning tokens is the one KPI an engineer can max without shipping anything and some wear it as a badge of honor. A leaderboard where the prize for winning is a bigger invoice.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ygzP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ygzP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ygzP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ygzP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ygzP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ygzP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:790843,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/209774316?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ygzP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ygzP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ygzP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ygzP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea383e74-606a-4307-89d0-5d416c8c7337_1264x848.jpeg 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Which is exactly where the story has now arrived. The same companies that mandated usage are staring at their AWS Bedrock, Anthropic and OpenAI bills and asking where the value went. </p><blockquote><p>They mandated an input&#8230; they got the input&#8230;<br>And now they act surprised because input is not the same as value created :-D</p></blockquote><p>Issue 4 called usage the vanity metric: the treadmill is plugged in, nobody is running. This issue is about something worse. Even if everyone runs, maximizing this particular input cannot move delivery, even in principle. To see why, you need a book that is older than everyone building those dashboards&#8217; careers.</p><h2>Herbie doesn&#8217;t type</h2><p>In 1984, <a href="https://books.google.com/books/about/The_Goal.html?id=os1awAEACAAJ">Eliyahu Goldratt published &#8220;The Goal&#8221;</a>, a novel about a factory manager (which is a sentence I promise gets better). For the academices out there, it is not peer-reviewed&#8230; it is barely literature. At the same time, it is also the clearest thing ever written about why your AI mandate is not working.</p><p>The famous scene is a boy scout hike. The troop keeps stretching apart because one kid, Herbie, is slow. The fast kids sprint ahead, then wait. The line&#8217;s speed to the destination is Herbie&#8217;s speed, no matter how impressive everyone else&#8217;s pace looks. The fix is not to yell at the fast kids to walk faster. It is to put Herbie at the front, take the extra weight out of his backpack, and subordinate everyone&#8217;s pace to his.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9pmN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9pmN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.png 424w, https://substackcdn.com/image/fetch/$s_!9pmN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.png 848w, https://substackcdn.com/image/fetch/$s_!9pmN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.png 1272w, https://substackcdn.com/image/fetch/$s_!9pmN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9pmN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.png" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2397259,&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://writing.tilinthecloud.com/i/209774316?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.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_!9pmN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.png 424w, https://substackcdn.com/image/fetch/$s_!9pmN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.png 848w, https://substackcdn.com/image/fetch/$s_!9pmN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.png 1272w, https://substackcdn.com/image/fetch/$s_!9pmN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F912f2c9d-dfed-4d3a-90d4-51ed7ee9a18d_1264x848.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Out of that hike comes the Theory of Constraints and its two brutal accounting rules:</p><div class="pullquote"><p>An hour lost at the bottleneck is an hour lost for the entire system, and an hour saved at a non-bottleneck is a mirage.</p></div><p>An AI usage mandate is a jetpack for every scout except Herbie.</p><p>Because in software delivery, typing code was almost never Herbie. Ask where a change actually spends its calendar life. Waiting for review. Waiting for the meeting where two teams agree on the interface. Sitting in the handover between the team that wrote it and the team that operates it. Or worst of all, being rebuilt, because what shipped was not what the customer needed and finding that out took a full cycle. <strong>The constraint lives in the seams between people. It always did.</strong></p><p>Now make code creation dramatically faster, company-wide, by decree. What happens? The queue in front of Herbie gets longer. That is the entire story of enterprise AI adoption in one sentence, and Goldratt priced it forty years before the first token was billed.</p><h2>The data agrees, awkwardly</h2><p>Two pieces of evidence, one small and sharp, one large and blunt.</p><p>The sharp one: <a href="https://arxiv.org/abs/2507.09089">Joel Becker, Nate Rush, Elizabeth Barnes, and David Rein at METR ran a randomized controlled trial</a> (July 2025) with 16 experienced open-source maintainers doing 246 real tasks in repos they knew deeply. Before starting, the developers forecast AI would make them 24% faster. Afterwards, having lived it, they estimated it had made them 20% faster. The stopwatch said they were 19% slower.</p><p>Sixteen developers, early-2025 tools, unusually mature codebases: carry the number with care. But carry the shape of it everywhere, because the gap between felt speed and measured speed is the fuel every usage mandate runs on. If the person doing the work misreads their own speedup by nearly 40 points, the executive reading a token dashboard three levels up has no chance.</p><p>The blunt one: <a href="https://dora.dev/insights/balancing-ai-tensions/">the 2025 DORA report</a> (Google&#8217;s research program, vendor-funded, not peer-reviewed, and honest about both) finds that AI adoption now correlates with higher delivery throughput and with higher instability at the same time. More change ships, more change fails and the pile-up happens exactly where Goldratt said it would: review, testing, QA. Their respondents say reviewing AI output is harder than writing code, that time saved writing is re-spent auditing, and 30% of developers report little or no trust in AI-generated code. DORA&#8217;s own framing is that AI is an amplifier: it does not remove your bottleneck, it delivers more traffic to it.</p><p>I'd be reluctant to follow these studies as they are 2025 dated and data-bounded to that era&#8230; while we all know how much has changed since Opus 4.6 and the whole Agentic AI boom in the last 8 months. Nevertheless, I see and hear these arguments and feelings in every customer&#8230;</p><p>Which brings me to the promise I made last week, about the acceptance rate that climbs for a quarter and then quietly slides back.</p><p>Last week's edition argued acceptance rate is the honest number, and it is. Honest about the model. It is not honest about the system, because when the constraint sits downstream of the model, the number decays in one of two ugly ways. Either reviewers drown and start waving things through, so acceptance climbs while your change-failure rate climbs with it. Or reviewers hold the line and become the queue, so acceptance stalls, your best senior turns into a full-time auditor, and adoption slides back to whatever the team could actually digest. Nothing about the model changed in either case. The team shape did the deciding. That is what a team-shape problem wearing a model costume looks like from inside.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RZxg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RZxg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.png 424w, https://substackcdn.com/image/fetch/$s_!RZxg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.png 848w, https://substackcdn.com/image/fetch/$s_!RZxg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.png 1272w, https://substackcdn.com/image/fetch/$s_!RZxg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RZxg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.png" width="1264" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1949004,&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://writing.tilinthecloud.com/i/209774316?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.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_!RZxg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.png 424w, https://substackcdn.com/image/fetch/$s_!RZxg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.png 848w, https://substackcdn.com/image/fetch/$s_!RZxg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.png 1272w, https://substackcdn.com/image/fetch/$s_!RZxg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e173a9-2b6c-4ae8-a9b5-a7438ac4b12f_1264x848.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>What the org chart has to give up</h2><p>Goldratt&#8217;s method, compressed: find the constraint, get the most out of it, and subordinate everything else to it. Subordinate is the step where org charts flinch, because subordination costs status. Here is what it costs, concretely.</p><p><strong>Give up the usage league table.</strong> Replace tokens-per-engineer with flow at the constraint: time to first review, time in review, age of the oldest open PR. You cannot manage Herbie with a dashboard that only shows the fast kids. Measure the queue, not the faucet.</p><p><strong>Give up output-per-person as the status currency.</strong> If review is your constraint, then review capacity is first-class engineering work, not a tax on the seniors&#8217; &#8220;real&#8221; job. The engineer who reviews fast and well is not underperforming on code output. They are carrying Herbie&#8217;s backpack, and the career ladder has to say so out loud, or nobody sane will keep doing it.</p><p><strong>Give up the single gate.</strong> One architect who must bless everything, one platform team every change routes through, one codeowner file that funnels a whole repo to one person: these are constraints you built on purpose and forgot about. Redraw ownership so one team can take a change, including the model&#8217;s share of it, from start to shipped without leaving the room. This is the argument of <a href="https://teamtopologies.com/book">Skelton and Pais&#8217;s &#8220;Team Topologies&#8221;</a>: teams are the unit of delivery and their cognitive load is a budget you design for, not a personal failing.</p><p><strong>Give up the ceremony.</strong> Alignment that lives in standing meetings and handover documents is the constraint wearing a calendar costume. Every handover is a queue. Every weekly sync that exists because two teams share a seam is Conway&#8217;s law sending you an invoice. Remember from last week that the model reads your architecture like an honest new hire? Your meeting load is the same reading, of the team body this time.</p><p>Notice what is not on this list: a bigger model, a better prompt, one more token. The 8% to 80% story I have carried since the first Substack post was never a model story alone. That step only held at 80 because the team around it changed shape at the same time, ownership included. The model got it to possible. The org chart got it to Tuesday.</p><h2>Run the team-shape test</h2><p>Five questions, yes or no. Count your yeses.</p><ol><li><p>Is your primary AI metric a usage number (seats, active users, tokens), viewable per person?</p></li><li><p>Take the last meaningful change your team shipped: did it spend more calendar time waiting (for review, for approval, for a meeting) than being built?</p></li><li><p>Can you name, without thinking, the one person or team most changes queue behind?</p></li><li><p>Has an AI metric (usage or acceptance) climbed and then slid back within two quarters, with no model change to blame?</p></li><li><p>If every engineer&#8217;s AI usage doubled tomorrow, would the first thing to break be a human queue: review, QA, or a release approval?</p></li></ol><p><strong>0 to 1 yes:</strong> your constraint may genuinely be code creation. Mandate away, you strange and fortunate shop.<br><strong>2 to 3 yeses:</strong> mixed picture. Start measuring the queues this week, before the next dashboard review measures the wrong thing again.<br><strong>4 to 5 yeses:</strong> you have a team-shape problem wearing a model costume. Your org chart owes Herbie an apology, and the next section is for you.</p><h2>The prompt</h2><p>Paste this into whichever assistant your mandate bought you, and feed it real data. It takes about twenty minutes to collect and one meeting to act on.</p><pre><code><code>You are helping me find my software delivery constraint. Be blunt. Do not flatter me.

I will give you three inputs:

1. My team's last 20 merged PRs/MRs, each with four timestamps:
   opened, first review comment, approved, merged.
   [paste]

2. One typical week of the team calendar: each recurring meeting,
   its length, and how many people attend.
   [paste]

3. Our AI usage snapshot, if one exists: seats, active users,
   tokens or suggestions per week. If none, I will say "none".
   [paste]

Compute, per PR: time to first review, time in review, and time from
approval to merge, each as a share of total open-to-merge time.
Use medians, not averages.

Then answer three questions:
- Where does a change spend most of its calendar life: being written,
  waiting for a human, or waiting for a meeting?
- Who or what is my Herbie: the single queue the median change waits
  in longest?
- If my team's AI usage doubled tomorrow and nothing else changed,
  which queue grows first?

End with: the one team-shape change most likely to cut the median
open-to-merge time, and the one metric I should stop reporting.
</code></code></pre><p>The model will happily run this analysis. It is, after all, already in the room.</p><blockquote><p><strong>A mandate can make everyone use the model. Only the org chart can make it matter. Feed the constraint, not the meter.</strong></p></blockquote><h2>Coming up</h2><p>Next week I open the field notebook: what it actually looks like when a shop moves its constraint, all three bodies at once, and the before-and-after numbers that survived contact with reality.</p><p>More soon. :-]</p><h2>Sources</h2><p>Because none of this comes only from my head. Every link checked.</p><ul><li><p>The constraint, Herbie, and the mirage: Eliyahu M. Goldratt and Jeff Cox, &#8220;<a href="https://books.google.com/books/about/The_Goal.html?id=os1awAEACAAJ">The Goal: A Process of Ongoing Improvement</a>&#8220; (North River Press, 1984). A business novel, not peer-reviewed, and still the sharpest operations book on this list.</p></li><li><p>The Shopify mandate: Tobi L&#252;tke, &#8220;<a href="https://x.com/tobi/status/1909251946235437514">Reflexive AI usage is now a baseline expectation at Shopify</a>&#8220; (internal memo, self-published on X, April 2025). Primary source.</p></li><li><p>The Coinbase mandate: Brian Armstrong on Stripe&#8217;s Cheeky Pint podcast, as reported by <a href="https://www.cio.com/article/4050185/fire-any-developer-who-doesnt-use-ai-why-coinbase-ceos-tough-message.html">CIO, &#8220;Fire any developer who doesn&#8217;t use AI&#8221;</a> (September 2025). Press coverage of a podcast, not peer-reviewed.</p></li><li><p>The perception gap: Joel Becker, Nate Rush, Elizabeth Barnes, and David Rein, &#8220;<a href="https://arxiv.org/abs/2507.09089">Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity</a>&#8220; (METR, arXiv 2507.09089, July 2025). Randomized controlled trial, preprint, not yet peer-reviewed.</p></li><li><p>Throughput up, instability up: the <a href="https://dora.dev/insights/balancing-ai-tensions/">2025 DORA report and its &#8220;Balancing AI tensions&#8221; insight</a> (Google Cloud&#8217;s DORA research program). Large-scale survey, vendor research, not peer-reviewed.</p></li><li><p>Teams as the unit of delivery: Matthew Skelton and Manuel Pais, &#8220;<a href="https://teamtopologies.com/book">Team Topologies</a>&#8220; (IT Revolution Press, 2019). Practitioner framework, not peer-reviewed.</p></li></ul><p>I make this Substack thanks to readers like you!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[In the loop. Not in the room]]></title><description><![CDATA[A model in your delivery pipeline is two things at once, a build lever and an architectural mirror. But what share of its work you ship without redoing it?]]></description><link>https://writing.tilinthecloud.com/p/in-the-loop-not-in-the-room</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/in-the-loop-not-in-the-room</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 28 Jul 2026 16:45:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jSAv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jSAv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jSAv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png 424w, https://substackcdn.com/image/fetch/$s_!jSAv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png 848w, https://substackcdn.com/image/fetch/$s_!jSAv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png 1272w, https://substackcdn.com/image/fetch/$s_!jSAv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jSAv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png" width="1200" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:308909,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/208843610?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.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_!jSAv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png 424w, https://substackcdn.com/image/fetch/$s_!jSAv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png 848w, https://substackcdn.com/image/fetch/$s_!jSAv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png 1272w, https://substackcdn.com/image/fetch/$s_!jSAv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a143cb0-53ab-40e7-a5a9-f3a9ec6a47a0_1200x800.png 1456w" sizes="100vw" fetchpriority="high"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 slide says the AI capability is delivered. Seats are bought, the usage graph climbs, and someone has drawn a green checkmark next to the third body. On paper, the model is in your pipeline.</p><p>Then you look at where the work actually happens. The model drafts, and a person quietly rewrites most of it before anything ships. It suggests, and the suggestion gets read, sighed at, and closed. The tool is open on every screen and the job is being done the same way it was 6 months ago.</p><p>That model is present. Present is not the same as in the loop.</p><p><a href="https://writing.tilinthecloud.com/p/one-program-not-three">Issue 1 named the trap: sequencing.</a><br><a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2 named the destination: AI-native, not AI-ready.</a> <br><a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Issue 3 put the AI capability on the table as one of three bodies that move together.</a></p><p>This week I climb inside that body and ask the only question that matters once the model is bought: <strong>is it in the loop, or just in the room?</strong></p><p>A model is in the loop only where you would ship its work without redoing it. Everywhere else it is in the room: adopted, visible, paid for and not actually doing the job.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0B04!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0B04!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png 424w, https://substackcdn.com/image/fetch/$s_!0B04!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png 848w, https://substackcdn.com/image/fetch/$s_!0B04!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!0B04!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0B04!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png" width="1456" height="977" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:977,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7280657,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/208843610?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.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_!0B04!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png 424w, https://substackcdn.com/image/fetch/$s_!0B04!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png 848w, https://substackcdn.com/image/fetch/$s_!0B04!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!0B04!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b90bd1d-144d-474e-9738-08874fe3f392_2528x1696.png 1456w" sizes="100vw"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><p>No kit this week. Just the argument and the standing ask: if you have put a model into a real pipeline, subscribe and tell me where I am wrong.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>The model as a build lever</h2><p>The first thing a model in the loop does is change what is worth building. Not how fast you type. The size of the thing one person can now finish.</p><p>Every backlog has a graveyard: the work that was permanently parked because the payback never cleared the bar. The manual review step no one would fund a rewrite for. The migration that needed six months of a team you were never going to get. A model in the loop moves the economics, not just the ergonomics, and some of that graveyard work suddenly clears the bar. The item that was &#8220;too expensive to bother with&#8221; becomes a Tuesday.</p><p>That is the lever. It is quieter than the demos suggest and more consequential. It does not make your existing plan faster. It changes which plan is worth having, which means it reaches straight back into the architecture body and the team body, the same coupling Issue 3 was about. Treat the model as a faster autocomplete and you will use a build lever to shave minutes off typing, which is roughly using a forklift to carry your lunch.</p><h2>The model as an architectural mirror</h2><p>The second thing a model in the loop does is show you your architecture, whether you asked or not.</p><p>A model can only act where your system lets it act. Point it at a clean seam with a real contract, and it moves: it reads the boundary, does the work, hands back something you can ship. Point it at a tangle where the batch job, the shared database, and the nightly cron all reach into each other, and it stalls, hedges, or invents. It cannot find the edge of the thing you are asking it to change, because there is no edge.</p><p>So where the model reliably fails, it is usually not failing. It is reflecting. A model that keeps getting the same file wrong is often telling you that file does three jobs. That is Conway&#8217;s law with a faster feedback loop: <a href="https://www.melconway.com/Home/Committees_Paper.html">Melvin Conway said in 1968 that a system&#8217;s design mirrors the communication structure that built it</a>, and now the mirror talks back in an afternoon instead of a reorg. The model reads your architecture the way an honest new hire reads it, out loud, on day one, without the tact. Most teams experience that as the AI being bad at their codebase. It is worth asking, at least once, whether the AI is being accurate about their codebase.</p><h2>The wall chart of the future cannot tell you</h2><p>There is a genuinely useful map of this territory, and I want to credit it before I argue with it. <a href="https://doi.org/10.1145/3788879">Amalfitano and ten co-authors, in a 2026 ACM TOSEM roadmap</a>, sort GenAI in software engineering along two honest questions: what is being augmented (your process or your product), and how autonomous it is (does it wait for you, or act on its own). </p><p>That gives four clean forms, the <strong>Copilot</strong>, <strong>GenAIware</strong>, the <strong>Teammate</strong> and the <strong>Robot</strong>. As a shared vocabulary that beats the usual &#8220;AI for SE&#8221; hand-waving, and I will happily use it.</p><p>Then the same paper closes with ten predictions for 2030, and the precision is where it gets funny. </p><ul><li><p>70% of boilerplate autonomously generated</p></li><li><p>&#8220;Prompt Architect&#8221; a certified job title</p></li><li><p>40% of job postings requiring it</p></li><li><p>20% of teams in regulated industries carrying a dedicated role. </p></li></ul><p>These are not ranges or scenarios. They are two-significant-figure forecasts for a field that cannot reliably tell you what next quarter&#8217;s model will cost. And in the acknowledgments, the authors note the predictions were brainstormed with Claude Sonnet 4.5, off a literature review filtered by two other models. A roadmap for GenAI in software, whose boldest numbers were generated by GenAI. </p><p>The taxonomy is real work, so I say this without malice: the map of the future is cheap to generate and getting cheaper, and it will never tell you whether the model is in your loop this week.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5izl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5izl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png 424w, https://substackcdn.com/image/fetch/$s_!5izl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png 848w, https://substackcdn.com/image/fetch/$s_!5izl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!5izl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!5izl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png" width="1456" height="977" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:977,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6940742,&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://writing.tilinthecloud.com/i/208843610?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.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_!5izl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png 424w, https://substackcdn.com/image/fetch/$s_!5izl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png 848w, https://substackcdn.com/image/fetch/$s_!5izl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!5izl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daf315c-bbb5-41a9-adce-10957a38dc69_2528x1696.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><p>The gap between present and in-the-loop shows up one layer down too. Moonshot just released Kimi K3 with open weights, and plenty of people read &#8220;open weights&#8221; as &#8220;we can run this ourselves now.&#8221; </p><p>The weights are about 1.5 terabytes and need multiple top-end GPU nodes to serve. Downloadable, yes. Runnable on your very expensive macbook or even a server under your table, no.</p><p>And a model can top the public leaderboard and still not be the one a team ships with, because fit to the actual work, the cost of a wrong answer, and where it sits in the pipeline decide more than the benchmark does.</p><p>Route the cheap work to the cheap model, keep the expensive judgment where it earns its keep, and stop confusing a model you can name with a model that is doing your job.</p><p>Present is not in the loop, at the model layer and the org layer both.</p><h2>The one number</h2><p>So how do you tell present from in-the-loop without a slide? One number: the acceptance rate of the model&#8217;s work. The share of what it produces that you ship without a human redoing it.</p><p>Not seats. Not tokens burned. Not &#8220;queries this month,&#8221; which measures that people opened the tool, not that the tool did the job. Usage is the vanity metric of AI adoption - it goes back to when we started doing BI dashboards and competed which teams had more. </p><p>Acceptance is the outcome. A usage dashboard tells you the treadmill is plugged in. Acceptance rate tells you whether anyone is running.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BUdZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BUdZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png 424w, https://substackcdn.com/image/fetch/$s_!BUdZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png 848w, https://substackcdn.com/image/fetch/$s_!BUdZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!BUdZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!BUdZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png" width="1456" height="977" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:977,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6896248,&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://writing.tilinthecloud.com/i/208843610?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.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_!BUdZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png 424w, https://substackcdn.com/image/fetch/$s_!BUdZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png 848w, https://substackcdn.com/image/fetch/$s_!BUdZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!BUdZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a546477-a106-4f97-b14a-edd2533ffd53_2528x1696.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>This is not just my framing. <a href="https://www.sigplan.org/OpenTOC/maps22.html">Albert Ziegler and colleagues, in &#8220;Productivity Assessment of Neural Code Completion&#8221; (MAPS 2022, expanded in Communications of the ACM in 2024)</a>, found that the acceptance rate of a model&#8217;s suggestions predicted developers&#8217; own sense of productivity better than the other metrics they measured. The thing you keep is the thing that counts.</p><p>Which is why the one number I carry from the earlier issues is an acceptance number. That manual review step that went from roughly 8% machine-handled to 80% was never &#8220;the model was consulted 80% of the time.&#8221; It was 80% of cases closed by the model&#8217;s output and shipped, no human redoing the work. The 72 points between those two states is the model moving from in-the-room to in-the-loop on that one step. Had the number instead been &#8220;80% of reviewers now have the AI tool open,&#8221; we would have been measuring furniture and calling it transformation.</p><h2>Run the in-the-loop test on your own pipeline</h2><p>You can tell present from in-the-loop in about 3 questions.</p><ol><li><p>Can you say your acceptance rate today, for one real step, as a number? If the only figures you have are seats and logins, you are measuring the room, not the loop.</p></li><li><p>Where the model stalls, is that a model limit or an architecture seam? Point it at your worst file and watch. If it keeps missing, the file is probably doing three jobs, and the model just told you which three.</p></li><li><p>What would you ship from the model without redoing it? If the honest answer is &#8220;nothing yet,&#8221; the model is present, and you have a build-lever and a mirror problem to fix before you have an AI capability.</p></li></ol><p>Run it on your own pipeline before the next planning cycle, not on a vendor&#8217;s demo after.</p><blockquote><p><strong>A model is in the loop only where you ship its work without redoing it. Everything else is furniture with a login.</strong></p></blockquote><h2>Coming up</h2><p>Next week, the body nobody puts a number on: the team. What the org chart has to give up for the model to stay in the loop, and why an acceptance rate that climbs for a quarter and then quietly slides back is almost always a team-shape problem wearing a model costume.</p><p>More soon. :-]</p><h2>Sources</h2><p>Because none of this comes only from my head. Every link checked.</p><ul><li><p>The taxonomy and the 2030 predictions: Domenico Amalfitano, Andreas Metzger, Marco Autili, Tommaso Fulcini, Tobias Hey, Jan Keim, Patrizio Pelliccione, Vincenzo Scotti, Anne Koziolek, Raffaela Mirandola, and Andreas Vogelsang, &#8220;<a href="https://doi.org/10.1145/3788879">A Research Roadmap for Augmenting Software Engineering Processes and Software Products with Generative AI</a>&#8220; (<em>ACM Transactions on Software Engineering and Methodology</em>, 2026). Peer-reviewed. The four forms are in the classification section; the ten predictions and the note that they were brainstormed with Claude Sonnet 4.5 are in the concluding section and acknowledgments.</p></li><li><p>Acceptance rate as the signal: Albert Ziegler, Eirini Kalliamvakou, and colleagues, &#8220;<a href="https://www.sigplan.org/OpenTOC/maps22.html">Productivity Assessment of Neural Code Completion</a>&#8220; (Proceedings of MAPS 2022, the 6th ACM SIGPLAN International Symposium on Machine Programming), expanded as &#8220;Measuring GitHub Copilot&#8217;s Impact on Productivity&#8221; (<em>Communications of the ACM</em> 67, no. 3, 2024, pp. 54-63). Peer-reviewed.</p></li><li><p>The org mirror: Melvin E. Conway, &#8220;<a href="https://www.melconway.com/Home/Committees_Paper.html">How Do Committees Invent?</a>&#8220; (<em>Datamation</em>, 1968). The origin of Conway&#8217;s Law.</p></li><li><p>Kimi K3 open weights and hardware footprint: Moonshot AI&#8217;s Kimi K3 open-weights release (July 2026), reported by <a href="https://theweek.com/tech/kimi-k3-moonshot-chinese-ai-firm-anthropic-openai">The Week</a> and others; the roughly 1.5 TB weight size and multi-node serving requirement come from the release and deployment coverage. Vendor release and press, not peer-reviewed.</p></li></ul><p style="text-align: center;"></p><p style="text-align: center;"><em>I make this Substack thanks to readers like you!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Steer, don't sequence]]></title><description><![CDATA[Architecture, teams, and AI capability pull on each other like three gravitating masses. You do not sequence a system like that. You steer it.]]></description><link>https://writing.tilinthecloud.com/p/steer-dont-sequence</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/steer-dont-sequence</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 21 Jul 2026 07:31:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BQJC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The roadmap is on the wall and it looks responsible. Modernization this year. The reorg next year, once the platform is stable. The AI program the year after, once the teams have settled. Three neat bars, three budgets, three owners and a logic any board would wave through.</p><p>It is wrong before the first bar starts. Not because the order is wrong, but because there is no right order.</p><p>The three things on that wall are not three projects waiting their turn. They are one big sociotechnical system, and each part pulls on the other two the moment it moves.</p><p><a href="https://writing.tilinthecloud.com/p/one-program-not-three">Issue 1 named the failure: sequencing is the trap</a>. </p><p><a href="https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native">Issue 2 named the destination: AI-native, not AI-ready,</a> and you buy AI-ready by default. </p><p>This is the machinery underneath both. The three bodies themselves, what each one is, and what &#8220;moving together&#8221; looks like on a real roadmap instead of a slide.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><p>No kit this week. Just the machinery, and the standing ask: if you have run one of these, subscribe and tell me where I am wrong.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BQJC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BQJC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!BQJC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!BQJC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!BQJC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BQJC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:314280,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/207801017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.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_!BQJC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!BQJC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!BQJC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!BQJC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3563e5-1b30-46fb-a936-f6aef0b8f738_1200x675.png 1456w" sizes="100vw" fetchpriority="high"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>Why three bodies, not three projects</h2><p>Borrow the name honestly. In celestial mechanics, two bodies under gravity have a clean solution: you can write down where they will be forever. Add a third and it collapses. Henri Poincar&#233; showed in the 1890s that the three-body problem has no general closed-form solution. Each mass pulls on the other two continuously, so you cannot compute one path while holding the others still. This is settled mathematics, not a metaphor I am stretching, and it is why we fly spacecraft through these systems with continuous course corrections instead of one equation.</p><p>That is your transformation. The three bodies are the architecture (the system you are rebuilding), the teams (the org that owns it: topology, cognitive load, decision rights), and the AI capability (what the model now makes buildable, and how it reshapes the other two). Move one and the other two move, whether you planned for it or not. Rebuild the platform and the team that owned the old one is now shaped for a system that no longer exists. Put a model in the loop and what is even worth building changes, and the team shape with it.</p><p>Sequencing assumes you can freeze two bodies while you work the third, then unfreeze them. <strong>You cannot</strong>. Nothing holds still while you take your turn.</p><h2>Body one: the architecture</h2><p>These are your systems being constantly stressed and rebuilt, and it is the one everyone books first because it feels like the foundation. It is also the one that yanks the other two hardest. A real modernization does not just swap the runtime. It changes where work happens, which means the team that grew up around the old system is now organized for a shape that no longer exists, and the AI you were going to add later suddenly has a very different surface to attach to. You cannot finish this body and hand a stable artifact to the next program. The moment it moves, it has already reached into the other two.</p><h2>Body two: the teams</h2><p><a href="https://www.melconway.com/Home/Committees_Paper.html">Melvin Conway said it in 1968 and it has never stopped being true</a>: a system&#8217;s design mirrors the communication structure of the org that built it. Move the architecture and leave the org boxes where they were, and the old structure quietly pulls the new system back into its shape. This is the reorg that does not take, the one that gets celebrated at launch and reverts by the next quarter.</p><p><a href="https://teamtopologies.com/book">Team Topologies (Matthew Skelton and Manuel Pais, 2019)</a> gives this a handle: organize teams around the flow of the work and manage cognitive load deliberately, or the load lands on people anyway, uninvited. The team body is not an HR exercise you run after the platform ships (or worse, an excuse for a reorg). It is the difference between a system that holds and one that erodes back into the org chart that predates it.</p><h2>Body three: the AI capability</h2><p>The third body is not a library you consult. It is a capability in the loop where the work actually happens, in how code gets written and reviewed, how a platform validates itself, what a team can take on. And it does not sit politely inside the box you drew for it in FY3. It reshapes the other two. It changes what is worth building at all (that is the architecture body moving again) and how many hands a thing takes (that is the team body moving again). Bolt it on at the end and you get AI-ready: a structure that can hold AI, sitting next to a system that never changed to use it. Put it in the loop from the start and it pulls its weight, and pulls on everything else.</p><h2>Moving together is a verb, not a Gantt chart</h2><p>Here is the part the wall chart cannot show. Steering three coupled bodies does not look like three bars in a row. It looks like one program that replans continuously, because every time one body moves you re-solve the other two. A platform decision changes the team plan this week, not next year. An AI capability lands and the backlog it was supposed to accelerate turns out to be the wrong backlog, so you change what you are building.</p><p>This is also why the vendor split is so expensive. Run modernization with a systems integrator, the org change with a transformation firm, and the AI with a separate consultancy, and you have handed the three coupled bodies to three parties who each optimize their own and none of whom own the coupling. They do not compound into capability. They compound into dysfunction, on three invoices. The alternative is not a bigger program. It is one operator holding all three, with no hand-offs across the seams where the pull actually happens.</p><h2>The smallest complete example, the whole thing in motion</h2><p>The cleanest version I have run looked like this. One mandate that, on a normal roadmap, would have been three projects in a line. We rebuilt a batch platform into one that ran in real time. We restructured the team around the flow of the work instead of the old function boxes. And we put a language model into a manual review step, the kind where people used to grind through a queue by hand, and took it from roughly 8% machine-handled to 80%.</p><p>Told as three programs, that is a modernization, then a reorg, then an AI pilot, each waiting on the one before it, and the review step stuck at 8% the whole time while everyone waits their turn. Told as one program, it is three bodies moving together: the platform made real-time work possible, the team shape made the platform hold, and the model in the loop was the thing that made the whole rebuild pay. Not the AI beside the process. The AI as the process, on a platform and a team reshaped to own their flow of work.</p><h2>Run the coupling test on your own program</h2><p>You can tell steering from sequencing in about three questions:</p><ol><li><p>How many budgets and owners do the modernization, the org change, and the AI sit under, and on whose timeline? Three separate ones, each with its own year: you are sequencing.</p></li><li><p>What happens to the team plan when the architecture slips a quarter? If the answer is &#8220;nothing, that is a different workstream,&#8221; the bodies are not coupled on paper, which means they will collide in practice.</p></li><li><p>When does the AI capability get to change what you build, not just how fast? If the answer is &#8220;after the platform is done,&#8221; the third body is bolted on, not in the loop.</p></li></ol><p>Run it on your own program before the next planning cycle, not on a vendor after.</p><h2>The whole thing, in one line</h2><p>You do not sequence a system whose parts pull on each other. You steer it. Together, or it does not really move at all.</p><h2>Coming up</h2><p>Next week I go hands-on inside one body, the AI capability, and what &#8220;in the loop&#8221; actually means in the delivery pipeline: the model as a build lever, the model as an architectural mirror, and the number that tells you it is working instead of just present.</p><p>More soon. :-]</p><h2>Sources</h2><p>Because none of this comes only from my head. Every link checked.</p><ul><li><p>The physics: the three-body problem&#8217;s lack of a general closed-form solution is due to Henri Poincar&#233; (1890s); a standard scholarly treatment is June Barrow-Green, <em><a href="https://bookstore.ams.org/hmath-11/">Poincar&#233; and the Three Body Problem</a></em> (American Mathematical Society, 1997). Scholarly / peer-reviewed.</p></li><li><p>The org mirror: Melvin E. Conway, &#8220;<a href="https://www.melconway.com/Home/Committees_Paper.html">How Do Committees Invent?</a>&#8220; (<em>Datamation</em>, 1968). The origin of Conway&#8217;s Law.</p></li><li><p>The team body: Matthew Skelton and Manuel Pais, <em><a href="https://teamtopologies.com/book">Team Topologies</a></em> (IT Revolution, 2019). Practitioner book, not peer-reviewed.</p></li><li><p>The operating-model failure mode (callback to Issue 2): Mik Kersten, <em><a href="https://itrevolution.com/product/output-to-outcome/">Output to Outcome</a></em> (IT Revolution, 2026). Practitioner book.</p></li></ul><p></p><p style="text-align: center;"><strong>I make this Substack thanks to readers like you!</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[AI-ready is not AI-native]]></title><description><![CDATA[Most AI transformations buy a structure that can hold AI, call it one built around AI and pay AI-native money for the privilege.]]></description><link>https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/ai-ready-is-not-ai-native</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 14 Jul 2026 11:38:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!H-dD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Somewhere right now, last year&#8217;s AI program is getting its victory lap in a conference room.</p><p>The internal assistant answers a question about the travel policy. The &#8220;AI knowledge base&#8221; comes up on the big screen and people are genuinely proud of it. A slide says the pilots will save 4k hours/year and that number came out of the vendor&#8217;s ROI calculator, which has never met this company&#8217;s actual work and is therefore free to be optimistic.</p><p>And the delivery pipeline, the thing that turns an idea into software running in production, has not changed a single stage since before any of this was bought.</p><p>That company is AI-ready. It believes it is AI-native. The real story of the program is not whether the AI works, it is that nothing about how the company operates changed around it.</p><p>Last week I closed with a tell: if your proudest AI artifact is a reference library and your pipeline has not changed a stage, you already know which one you bought. This is that essay, the one Issue 1 existed to set up: </p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ddd6ad36-475f-4244-96cc-8d4aa94eb400&quot;,&quot;caption&quot;:&quot;There is a moment in a platform rebuild where you can watch the whole idea of this newsletter happen on one screen.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;One program, not three&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:234944012,&quot;name&quot;:&quot;Thiago de Faria&quot;,&quot;bio&quot;:&quot;Recovering CTO who still writes the code. Modernization, teams, and AI as one program, not three. I write about tech leadership dysfunction, with kindness as the operating principle.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5e8fded-fe2a-407f-8a36-2376b1cc05e5_800x800.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-07-07T07:03:09.634Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!tye4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://writing.tilinthecloud.com/p/one-program-not-three&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:205213874,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:9423595,&quot;publication_name&quot;:&quot;The Recovering CTO&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!uJrf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5e8fded-fe2a-407f-8a36-2376b1cc05e5_800x800.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><p>No kit this week either. Just the argument, and the standing ask: if you have run one of these programs, subscribe and tell me where I am wrong. The interesting version of this idea is the one that survives contact with your actual estate.</p><h2>AI-ready is what the money buys by default</h2><p>I keep walking into the same project. A company decides this is the year of AI. It buys the licenses, stands up an internal assistant, writes the knowledge base, runs a few pilots, and puts a number on a slide. On paper it is an AI company now. The paper is doing a lot of work.</p><p>Underneath, the operating model is exactly what it was the year before. The estate is the same. The way work moves from idea to production is the same. The AI is sitting next to the system, not inside it.</p><p>That is AI-ready: a structure that can accommodate AI. It is not nothing. The licenses are real, the assistant answers questions, the knowledge base is genuinely tidy. But it is not what the buyer thought they were paying for, and it is not where the value is.</p><h2>AI-native is a difference in kind, not degree</h2><p>AI-native is an operating model built around AI as a live capability in the workflow. The model is in the loop where the work actually happens: in how code gets written and reviewed, how decisions get made, how the platform validates itself. Not a library you consult. A capability you run.</p><p>A word on the words, because a book already uses some of them. I am not trying to claim &#8220;AI-native&#8221; as mine. Melissa Reeve&#8217;s <em><a href="https://itrevolution.com/product/hyperadaptive/">Hyperadaptive: Rewiring the Enterprise to Become AI-Native</a></em> (IT Revolution, May 2026) is built on the term, and plenty of vendors have discovered it fits nicely on a homepage. The term is cheap. The how is scarce. Own the how, not the label.</p><h2>Mik Kersten just gave this failure its proper name</h2><p>Mik Kersten&#8217;s new book, <em><a href="https://itrevolution.com/product/output-to-outcome/">Output to Outcome: An Operating Model for the Age of AI</a></em> (IT Revolution), is out today, and it lands squarely on the mechanism: organizations get very good at producing output and never move the outcome.</p><p>AI-ready is that failure with a bigger invoice. You ship more output than ever, an assistant, a knowledge base, a dozen pilots, and the outcome the business actually feels sits exactly where it sat the year before. The victory-lap meeting is a celebration of output. The outcome was not invited.</p><p>When I talked to Mik about this essay, he pointed me at Chapter 7, &#8220;Matrix to Modularity&#8221;, and he was right to. It is this argument run from the organizational end. &#8220;AI and agentic solutions can create tremendous output, especially when working within modular structures,&#8221; he writes. Most incumbents are not modular. They are a matrix of dependencies, dotted reporting lines, and meeting cadences layered over meeting cadences, and the AI gets bolted onto exactly that.</p><p>His answer is a concept called sociotechnical congruence: design the organizational structure and the technical structure to fit each other, on purpose, because &#8220;even with the best architectural intentions, a tangled organizational structure will create a tangled technical architecture.&#8221; Readers of Issue 1 will recognize this. The sociotechnical wiring I complained was missing from the operating-model textbooks just showed up in one. It went on sale this morning.</p><p>Kersten has been pulling on this thread since <em>Project to Product</em>, and this is the sharpest frame I have found for why that meeting feels so hollow. If you are going to read one book on the operating-model side of AI this quarter, make it this one.</p><h2>Sequencing is how you buy AI-ready twice</h2><p>The reason most transformations land on AI-ready is that they sequence. Modernize the architecture this year. Reorganize the teams next year. Add AI on top after that. Three programs, three budgets, three sets of consultants, each a success on its own terms. And AI-native falls out the bottom, because by the time the AI arrives, the architecture it lands on is a year stale and the teams are still shaped for the old flow.</p><p>You do not get to AI-native by sequencing. The architecture, the teams, and the AI capability pull on each other. Change the architecture and the teams that own it have to change. Put AI in the loop and what is even worth building changes again, and the team shape with it. They move together or they do not really move at all.</p><p>For a European buyer the framing that matters is cost and risk, not growth. The cost of AI-ready that looks AI-native is the second migration. You spend the budget, you get the assistant and the knowledge base, and eighteen months later the same gap is still open, because the operating model never moved. Then you pay again. The expensive path is not doing the three together. The expensive path is doing them one at a time and discovering you have to redo the first by the time you reach the third.</p><h2>The smallest complete example I have</h2><p>The cleanest version of the alternative I have run looked like this: one mandate that, on a normal roadmap, would have been three projects. We rebuilt the data platform, restructured the team around the flow of the work rather than the old function boxes, and put an LLM into the validation step where analysts used to grind through a queue by hand.</p><p>On a good engagement, that one-pass version is the difference between a grinding manual step running at roughly 8% machine-handled and the same step at 80%. Sequenced, it stays at 8% three times in a row, once per budget.</p><p>Not three projects in a line. One. The AI was not beside the process. It was the process, on a platform and a team that had been reshaped to hold it. That is AI-native in miniature.</p><h2>The five-minute tell, ready to run</h2><p>You can spot AI-ready pretending to be AI-native in about five minutes. Three questions, and you can ask them in any order:</p><ol><li><p><strong>Ask to see the proudest AI artifact.</strong> If it is a knowledge base or a reference kit, mark it.</p></li><li><p><strong>Ask what changed in the delivery pipeline since the AI program started.</strong> Same stages, same hand-offs, same lead time: mark it.</p></li><li><p><strong>Ask where the ROI number came from.</strong> A generic calculator instead of a measured before-and-after on real work: mark it.</p></li></ol><p>Three for three and you bought the structure, not the capability.</p><p>Run it on your own shop before the next AI budget goes out, not on a vendor after. It is less fun that way, and considerably more useful.</p><h2>The whole distinction, in one line</h2><p>AI-ready is a structure that can hold AI. AI-native is an operating model built around it. The invoice looks the same. The year after does not.</p><p>The good news is that the fix is not more AI. It is moving the three bodies, the architecture, the teams, and the AI capability, at once.</p><h2>Coming up</h2><p>Next week I open up the machinery: the three bodies themselves. What each one actually is, what &#8220;moving together&#8221; looks like on a real roadmap instead of a slide, and one concrete example of the whole thing in motion.</p><p>More soon. :-]</p><h2>Sources</h2><p>Because none of this comes only from my head. Every link was checked.</p><ul><li><p><strong>The frame:</strong> Mik Kersten, <em><a href="https://itrevolution.com/product/output-to-outcome/">Output to Outcome: An Operating Model for the Age of AI</a></em> (IT Revolution, 2026), released 14 July 2026. Quotes are from Chapter 7, &#8220;Matrix to Modularity&#8221;, in the Kindle edition. His earlier <em><a href="https://itrevolution.com/product/project-to-product/">Project to Product</a></em> (IT Revolution, 2018) started the thread.</p></li><li><p><strong>The term:</strong> Melissa M. Reeve, <em><a href="https://itrevolution.com/product/hyperadaptive/">Hyperadaptive: Rewiring the Enterprise to Become AI-Native</a></em> (IT Revolution, 2026).</p></li></ul><p>Both are practitioner books, not peer-reviewed research. That is fine. So are these field notes.</p><p></p><p style="text-align: center;">I make this Substack thanks to readers like you!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H-dD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H-dD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!H-dD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!H-dD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!H-dD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!H-dD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:315130,&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://writing.tilinthecloud.com/i/207001025?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.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_!H-dD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!H-dD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!H-dD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!H-dD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45354b81-ea55-4215-9435-3c69c5dead19_1200x675.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>]]></content:encoded></item><item><title><![CDATA[One program, not three]]></title><description><![CDATA[Architecture modernization, teams and AI move together, or you pay for the same migration twice.]]></description><link>https://writing.tilinthecloud.com/p/one-program-not-three</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/one-program-not-three</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Tue, 07 Jul 2026 07:03:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tye4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There is a moment in a platform rebuild where you can watch the whole idea of this newsletter happen on one screen.</p><p>An analyst opens a validation queue every morning and works it by hand. Check the figure, check the source, flag the ones that smell wrong, escalate the rest. Skilled work, and most of it deadening.</p><p>I got to take that apart in different customers. We rebuilt the platforms underneath it, restructured the teams around the flow of the work instead of the old function boxes, and use AI when needed while prioritizing good software engineering practices. And not a single time we managed to fully automate the processes... we could speed up things, reduce toil... and that is what I want to keep on doing.</p><p>Here is the part that matters, and it is not the model.</p><p>It never was only about three projects, but always about 1 mandate. Rebuild the systems, reshape the teams that owns it, put AI in the loop when it makes sense and where the work actually happens, all at once&#8230; because any one of them alone moves the number by roughly nothing.</p><p>Everyone wants to talk about the GenAI model (&#8220;<em>open weights is better, while the new claude/gemini/anthropic is this and that&#8221;</em>) ... but that is the easy part. The hard part, the part that on a good engagement moves a grinding manual step from roughly 8% handled by a machine over 1 week of work to 80% automagically going in 2h, was that the platform, the team and the model were built to fit each other in a single pass. Do those in sequence, a year apart, three budgets and three sets of consultants, and you get three tidy successes and a number that never budges.</p><p>That gap is the thing I keep coming back to. It is the whole reason for this.</p><h2>Who is writing this</h2><p>I am Thiago. Twenty years ago I was a statistician in Brazil, then a data scientist, a DBA, a software engineer, data engineer, a hands-on architect, then a CTO&#8230; these days a recovering CTO who still writes the code and knows that systems design while keeping myself at the trenches is what makes me happy. The recovering part is that I have run orgs internally, sat as interim head of _fill the gap_, been on the hook for the quarterly number and still never managed to fully close the loop only with tech.</p><p>Most of my recent years went into modernization and into getting generative AI into how software actually gets built, not into slides about how software might one day get built.</p><p>This is issue one. Every week I am going to work one problem out loud here: architecture modernization, team design, and AI capability as a single program, written by someone still in the code and not narrating it from a stage.</p><p>No downloadable kit this week. No five-box framework in a tidy PDF. Just the argument, and an ask. If you have lived this, subscribe and tell me where I am wrong. That is not a growth tactic, it is genuinely half the point, because the interesting version of this idea is the one that survives contact with your actual estate.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><h2>Everybody already has an operating model. Almost nobody wrote it down.</h2><p>Every company I walk into already has an operating model, whether or not anyone calls it that. It is just how IT creates and delivers value: who owns what, how work moves from an idea to something running in production, where the decisions actually get made versus where the org chart says they do.</p><p>Most companies never wrote it down. The ones that did wrote a box diagram, and the box diagram has not been opened since the offsite where it was drawn.</p><p>None of that is wrong, exactly. It is just not the part that decides whether you ship. The part that decides is whether the architecture, the teams, and the AI capability were built to fit each other, or merely filed in the same org chart and left to work it out.</p><h2>The textbooks are winging it too</h2><p>I went and read the research on this properly, because I wanted to know whether the academics had a cleaner answer than I did.</p><p>They do not, and I can point you to the receipt.</p><p>In 2025, <a href="https://doi.org/10.1080/10580530.2025.2513305">Suleman, Pekkola, Ralyt&#233; and Ahola</a> published a systematic review in <em>Information Systems Management</em> that went through 77 academic and consulting sources hunting for an agreed definition of the IT operating model. It came back without one. The number of components the thing is supposed to have swings from four to thirteen, depending mostly on which consultancy is holding the pen. It is open access, so you do not have to take my word for it: the link is in the Sources at the bottom, go argue with it yourself.</p><p>The people whose actual job is to define this cannot agree on what it is or how many pieces it has. I find that oddly reassuring. If you have ever sat in a transformation kickoff quietly unsure what &#8220;operating model&#8221; meant in that room, relax: neither does the literature.</p><h2>They drew the box. They skipped the wiring.</h2><p>Here is the more useful finding from that same review, and it is the one that explains your last reorg.</p><p>The research treats the operating model as a structure. Decision-rights grids. Boxes for standardization versus integration. Who reports to whom. All of it about shape.</p><p>The one principle that would make the thing actually work is mostly missing: designing the technical side and the human side to fit each other, on purpose, at the same time, instead of optimizing one and inheriting the other. That idea is not mine either. It is called joint optimization, and it has been around since <a href="https://journals.sagepub.com/doi/10.1177/001872675100400101">Trist and Bamforth&#8217;s coal-mining studies</a> in 1951. Somehow it never explicitly made it from the sociotechnical-systems literature into the operating-model textbooks. Tune the tech, take the team as given. Or reshuffle the team, leave the systems where they were. Either way you optimized one subsystem and let the other one ride along as a hostage.</p><p>That is why the last reorg did not take. You moved the boxes and the systems stayed exactly where they were. And it is why the AI pilot is sitting next to the work instead of inside it, technically running, in the sense that a treadmill in a spare room is technically a gym.</p><p>There is one idea the academics keep underusing that every engineer already lives: your system ends up shaped like your org chart. Conway named it in 1968, in a paper literally titled <a href="https://www.melconway.com/research/committees.html">&#8220;How Do Committees Invent?&#8221;</a>. Skelton and Pais turned it into a practice in <em><a href="https://teamtopologies.com/book">Team Topologies</a></em>. Org structure and system architecture are the same problem, which is exactly why you cannot move one and expect the other to hold still.</p><h2>On AI, the theory has not shown up yet</h2><p>Now put AI into that picture, and it gets funnier.</p><p>The most cited frameworks for an AI-era operating model are not peer-reviewed. MIT CISR put out a <a href="https://cisr.mit.edu/publication/2025_1201_EntITOperatingModels_ThorogoodWoerner">research briefing</a> on it in late 2025 (Thorogood and Woerner, &#8220;Enterprise IT Operating Models in the AI Era&#8221;). The fashionable &#8220;agentic operating model&#8221; comes from a 2026 <em><a href="https://cmr.berkeley.edu/2026/03/governing-the-agentic-enterprise-a-new-operating-model-for-autonomous-ai-at-scale/">California Management Review</a></em><a href="https://cmr.berkeley.edu/2026/03/governing-the-agentic-enterprise-a-new-operating-model-for-autonomous-ai-at-scale/"> Insights column</a> (Saini, &#8220;Governing the Agentic Enterprise&#8221;), which is editor-screened online commentary, not a peer-reviewed journal article. Both are thoughtful. Both are essentially field notes with good production values. Nobody has settled research on how AI actually reshapes the operating model. Practice is ahead of theory here, which is a generous way of saying we are all making it up, and the only real difference is who is keeping honest notes.</p><p>That greenfield is exactly what this newsletter walks into.</p><p>And it matters more than it sounds, because AI does not stay a tool for long. It becomes an actor in how your organization operates.</p><p>When Air Canada&#8217;s chatbot confidently invented a bereavement-fare policy that did not exist, the airline&#8217;s defense at tribunal was that the chatbot was &#8220;a separate legal entity responsible for its own actions.&#8221; They lost (<em><a href="https://www.canlii.org/en/bc/bccrt/doc/2024/2024bccrt149/2024bccrt149.html">Moffatt v. Air Canada</a></em><a href="https://www.canlii.org/en/bc/bccrt/doc/2024/2024bccrt149/2024bccrt149.html">, 2024 BCCRT 149</a>, if you want to watch a tribunal politely decline to believe a company). They paid about 812 Canadian dollars, plus the legal time, which I promise cost more than that.</p><p>The lesson is not that the chatbot was dumb. The lesson is that when AI becomes part of how your operating model runs, the accountability does not get to spin off into a separate legal entity. It is still yours. You have quietly hired a coworker who can commit the company to things, cannot be fired, and will never once feel bad about it. Deciding where that coworker sits, and what it is allowed to promise, is an operating-model question. It is not a procurement one.</p><h2>Four questions to run on your own operating model</h2><p>You do not need a new framework for this. You need four honest answers about your own shop.</p><ol><li><p>If you changed the architecture next quarter, would the teams that own it have to change shape? If the answer is no, those are not the teams that own it.</p></li><li><p>Where does your AI actually sit: in the loop where the work happens, or beside it, in a knowledge base people are proud of?</p></li><li><p>When the last reorg landed, did the systems change, or did the boxes move while the systems stayed put?</p></li><li><p>Name the number your AI moved. Not tokens processed, not seats licensed. The business number. If you cannot name it, you bought the structure, not the capability.</p></li></ol><p>If those questions sting a little, good. That is the material.</p><h2>The whole thesis, in one line</h2><p>Architecture, teams, and AI are one program, or they are three expensive rehearsals. Three moving parts, one mandate, a number at the end.</p><p>That is what I am here to work out, in public, every week, with my hands still in the code.</p><h2>Coming up</h2><p>Next week I go straight at the piece that started all of this: the difference between being AI-ready and being AI-native, and why most transformations buy the first, call it the second, and pay AI-native money for the privilege.</p><p>Quick tell before then. If your proudest AI artifact is a reference library and your delivery pipeline has not changed a single stage, you already know which one you bought.</p><p>More soon. :-]</p><h2>Sources</h2><p>Because none of this comes only from my head. Every link below was checked.</p><ul><li><p><strong>The definition problem:</strong> Suleman, Pekkola, Ralyt&#233; and Ahola, &#8220;<a href="https://doi.org/10.1080/10580530.2025.2513305">IT Operating Models: A Systematic Review of Academic and Practitioner Literature</a>,&#8221; <em>Information Systems Management</em> 43(1), 2025, 22-44. Open access, DOI 10.1080/10580530.2025.2513305.</p></li><li><p><strong>Joint optimization:</strong> Trist and Bamforth, &#8220;<a href="https://journals.sagepub.com/doi/10.1177/001872675100400101">Some Social and Psychological Consequences of the Longwall Method of Coal-Getting</a>,&#8221; <em>Human Relations</em> 4(1), 1951, 3-38, the founding sociotechnical-systems study.</p></li><li><p><strong>Conway&#8217;s Law:</strong> Melvin Conway, &#8220;<a href="https://www.melconway.com/research/committees.html">How Do Committees Invent?</a>,&#8221; <em>Datamation</em>, 1968. Turned into a practice in Matthew Skelton and Manuel Pais, <em><a href="https://teamtopologies.com/book">Team Topologies</a></em> (IT Revolution, 2019).</p></li><li><p><strong>AI-era frameworks (not peer-reviewed):</strong> Thorogood and Woerner, &#8220;<a href="https://cisr.mit.edu/publication/2025_1201_EntITOperatingModels_ThorogoodWoerner">Enterprise IT Operating Models in the AI Era</a>,&#8221; MIT CISR Research Briefing XXV-12, December 2025; Sandeep Saini, &#8220;<a href="https://cmr.berkeley.edu/2026/03/governing-the-agentic-enterprise-a-new-operating-model-for-autonomous-ai-at-scale/">Governing the Agentic Enterprise: A New Operating Model for Autonomous AI at Scale</a>,&#8221; <em>California Management Review</em> Insights, March 2026.</p></li><li><p><strong>Air Canada&#8217;s chatbot:</strong> <em><a href="https://www.canlii.org/en/bc/bccrt/doc/2024/2024bccrt149/2024bccrt149.html">Moffatt v. Air Canada</a></em>, 2024 BCCRT 149 (British Columbia Civil Resolution Tribunal); the airline was ordered to pay 812.02 Canadian dollars in total (650.88 damages, plus interest and fees).</p></li></ul><p></p><p style="text-align: center;">I make this Substack thanks to readers like you!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writing.tilinthecloud.com/subscribe?"><span>Subscribe now</span></a></p><p style="text-align: center;"></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tye4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tye4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!tye4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!tye4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!tye4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tye4!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:316119,&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://writing.tilinthecloud.com/i/205213874?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tye4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png 424w, https://substackcdn.com/image/fetch/$s_!tye4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png 848w, https://substackcdn.com/image/fetch/$s_!tye4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.png 1272w, https://substackcdn.com/image/fetch/$s_!tye4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F693369bd-c14a-4de4-9b58-e2dafcd58507_1200x675.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>]]></content:encoded></item><item><title><![CDATA[Start here]]></title><description><![CDATA[What Proof in the Pipeline is about, and where to start reading.]]></description><link>https://writing.tilinthecloud.com/p/start-here</link><guid isPermaLink="false">https://writing.tilinthecloud.com/p/start-here</guid><dc:creator><![CDATA[Thiago de Faria]]></dc:creator><pubDate>Mon, 08 Jun 2026 11:12:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4FaY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4FaY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4FaY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png 424w, https://substackcdn.com/image/fetch/$s_!4FaY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png 848w, https://substackcdn.com/image/fetch/$s_!4FaY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png 1272w, https://substackcdn.com/image/fetch/$s_!4FaY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4FaY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png" width="1200" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:331687,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.tilinthecloud.com/i/201127054?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.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_!4FaY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png 424w, https://substackcdn.com/image/fetch/$s_!4FaY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png 848w, https://substackcdn.com/image/fetch/$s_!4FaY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png 1272w, https://substackcdn.com/image/fetch/$s_!4FaY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F249f8210-fd5d-4c04-8c2c-9795da129325_1200x800.png 1456w" sizes="100vw" fetchpriority="high"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong>Most companies now have an AI policy. Very few can show it working.</strong></p><p>Teams ship code with agents in days, but review, testing and approvals still run at human speed&#8230; and nobody is sure who is allowed to decide what. <strong>Proof in the Pipeline</strong> is where I work that out in public: AI governance shown working where the code ships, not promised in a PDF.</p><p>So why is this so hard to fix? Because it&#8217;s a three-body problem. Architecture, teams and AI capability keep pulling on each other&#8230; move one and the other two move with it (<em>hello, Conway</em>). You steer all three together.</p><p><strong>Where to start</strong></p><ul><li><p><strong>The idea:</strong> <a href="https://writing.tilinthecloud.com/p/steer-dont-sequence">Steer, don&#8217;t sequence</a>. Architecture, teams and AI capability pull on each other like three gravitating masses, so you steer them, you don&#8217;t sequence them.</p></li><li><p><strong>Where the bottleneck went:</strong> <a href="https://writing.tilinthecloud.com/p/your-bottleneck-doesnt-burn-tokens">Your bottleneck doesn&#8217;t burn tokens</a> and <a href="https://writing.tilinthecloud.com/p/more-shipped-same-typing">More shipped, same typing</a>. AI sped up the step that was already fast; the numbers show where the queue moved.</p></li><li><p><strong>Governance in the pipeline:</strong> <a href="https://writing.tilinthecloud.com/p/who-reviews-the-reviewers">Who reviews the reviewers?</a>, <a href="https://writing.tilinthecloud.com/p/prove-it-before-it-runs">Prove it before it runs</a> and <a href="https://writing.tilinthecloud.com/p/nobody-owns-the-policy">Nobody owns the policy</a>. Where the gate sits, and who owns which rule.</p></li><li><p><strong>Teams and agents:</strong> <a href="https://writing.tilinthecloud.com/p/conways-law-has-a-new-employee">Conway&#8217;s law has a new employee</a>, the start of the series on agent topologies as org charts.</p></li></ul><p><strong>Who&#8217;s writing:</strong> I&#8217;m Thiago de Faria, a data and AI architect who still writes the code, running TilinTheCloud from the Netherlands. More on the <a href="https://writing.tilinthecloud.com/about">About page</a>.</p><p>The weekly posts are free and stay free. If you want the code and research updates behind them, you can pledge a paid tier (<em>nobody is charged until paid launches, and the founding AI Executive Circle has only 12 seats</em>).</p><p><strong>Subscribe, and tell me where I&#8217;m wrong</strong> :-]</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.tilinthecloud.com/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">Thanks for reading &#8220;Proof in the Pipeline&#8221;! Subscribe for free to receive new posts and support my work.</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></p>]]></content:encoded></item></channel></rss>