<?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[Hyperdev: Articles]]></title><description><![CDATA[Feature articles on all things agentic coding—
From prompt-driven development to autonomous dev workflows, this section dives into the tools, techniques, and thinking behind AI-first programming. Real-world use cases, architecture breakdowns, code experiments, and practical insight into building with agents instead of just writing code line by line.]]></description><link>https://hyperdev.matsuoka.com/s/hyperdev</link><image><url>https://substackcdn.com/image/fetch/$s_!j9a7!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab665959-5546-4469-9e93-9e1518976e2b_1024x1024.png</url><title>Hyperdev: Articles</title><link>https://hyperdev.matsuoka.com/s/hyperdev</link></image><generator>Substack</generator><lastBuildDate>Thu, 22 Oct 2026 19:26:54 GMT</lastBuildDate><atom:link href="https://hyperdev.matsuoka.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Robert Matsuoka]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[hyperdev@matsuoka.com]]></webMaster><itunes:owner><itunes:email><![CDATA[hyperdev@matsuoka.com]]></itunes:email><itunes:name><![CDATA[Robert Matsuoka]]></itunes:name></itunes:owner><itunes:author><![CDATA[Robert Matsuoka]]></itunes:author><googleplay:owner><![CDATA[hyperdev@matsuoka.com]]></googleplay:owner><googleplay:email><![CDATA[hyperdev@matsuoka.com]]></googleplay:email><googleplay:author><![CDATA[Robert Matsuoka]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Dream Police]]></title><description><![CDATA[I started out designing shared agent memory across machines. I ended up asking what memory is for.]]></description><link>https://hyperdev.matsuoka.com/p/the-dream-police</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/the-dream-police</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Wed, 07 Oct 2026 12:31:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5y9I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<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_!5y9I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5y9I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.png 424w, https://substackcdn.com/image/fetch/$s_!5y9I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.png 848w, https://substackcdn.com/image/fetch/$s_!5y9I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.png 1272w, https://substackcdn.com/image/fetch/$s_!5y9I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5y9I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.png" width="1456" height="873" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a487fe84-205d-43ae-a932-3df935608352_1619x971.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:873,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2266895,&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://hyperdev.matsuoka.com/i/219187705?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.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_!5y9I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.png 424w, https://substackcdn.com/image/fetch/$s_!5y9I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.png 848w, https://substackcdn.com/image/fetch/$s_!5y9I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.png 1272w, https://substackcdn.com/image/fetch/$s_!5y9I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa487fe84-205d-43ae-a932-3df935608352_1619x971.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>On October 4, 2026, I was working through how several trusty-mpm sessions, run by different people on different machines, could share engineering project memory. Each machine runs its own <a href="https://github.com/bobmatnyc/trusty-tools/blob/main/crates/trusty-memory/README.md">trusty-memory</a> daemon. What one session remembers stays on that machine, even when another person is working on the same project.</p><p>I organize memories into palaces, rooms and drawers. That works fairly well for me. The Rust implementation saves memories quickly, and an <a href="https://github.com/bobmatnyc/trusty-tools/blob/main/docs/adr/0031-uds-for-inter-crate-transport-http-for-external.md#the-measurements">August measurement against a live daemon</a> put recall at about 1.2 milliseconds.</p><p>I wanted the next collaborator to have some of the context behind the work. The tickets and specs were already there. The conversation that produced them might be somewhere else.</p><p>My first proposal was to classify memories as shareable, rank them by accuracy and usefulness, and push the eligible ones to a cloud store. Keep the name of whoever originated each memory. <a href="https://openai.com/codex/">Codex</a> separated permission to share from quality: a useful memory could still be private. I agreed, then moved away from requiring one central store. I wanted an interoperable API, with clients able to subscribe to several backends. A mesh.</p><p>Recall would stay local. A background connector would sync permitted memories, and the scope would be engineering project work. That was the proposed design on October 4. The system I had built supported local memory and recall, with background consolidation. The shared mesh was still a design discussion.</p><p>Then I raised a different requirement: memory should not become another copy of the tickets, requirements and specifications. I wanted it to preserve expressed intent as it evolved, including the reasons a person changed direction.</p><p>That puts a fairly demanding job on memory. My own system already had trouble telling an old fact from a current one.</p><h2>TL;DR</h2><ul><li><p>I want shared memory to preserve how intent develops, with links to the tickets and documents that hold the current decisions.</p></li><li><p>My August logs showed a stale checkpoint reaching 44.8% of turns. Sharing that memory would spread the problem.</p></li><li><p>I want dreaming to prepare memories before they enter a shared store, connecting related records and flagging conflicts. Permission to share remains a separate decision.</p></li><li><p>ADRs already preserve rationale and can hold tentative decisions. A separate memory store has to earn its place alongside them.</p></li><li><p>Agent capture leaves a human review cost. I haven&#8217;t shown that the recovered context is worth that cost.</p></li></ul><h2>One Fact, One Home</h2><p>The working rule I arrived at with Codex is that a fact should have an authoritative home. Other places can refer to it, but I don&#8217;t want several systems maintaining competing answers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Td3t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Td3t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!Td3t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!Td3t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!Td3t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Td3t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2250654,&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://hyperdev.matsuoka.com/i/219187705?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.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_!Td3t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!Td3t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!Td3t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!Td3t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68623599-7f40-4ca5-b589-abd059d5fbea_1448x1086.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 ticket owns the work&#8217;s status and assignee. Requirements state agreed outcomes and constraints. A product requirements document (PRD) explains the product case, while a spec describes intended behavior. An architecture decision record (ADR) holds a decision and its rationale, including alternatives. Search helps find the evidence across those artifacts.</p><p>Memory&#8217;s job, as I see it, is to preserve the path around them: what someone was trying to accomplish, how that changed, and what remained unsettled. Once that intent becomes a requirement or a decision, memory should link to the result. The requirement gets maintained in the requirements document.</p><p>There&#8217;s overlap. A spec can explain why. An issue discussion can contain a change of mind. My rule concerns which version gets maintained.</p><p>The conversation on October 4 contains the kind of movement I want to keep. I started with a cloud store, accepted a distinction between permission and quality, then changed the design to allow several backends. I narrowed its scope to engineering projects. Later I questioned what belonged in the system at all. A finished API spec could describe the resulting design without preserving those earlier framings or their sequence.</p><p>I asked for a position paper, then put it on hold and asked for this article first. I wanted to use the writing to work out the boundaries before treating them as requirements.</p><h2>Stale Memory Gets Believed</h2><p>In August, <a href="https://github.com/bobmatnyc/trusty-tools/blob/main/docs/adr/0028-memory-recall-tiers-standing-current-episodic.md">ADR-0028 in trusty-tools</a> examined my memory-injection logs from July 5 through August 4. The most frequently injected memory was a July 16 checkpoint announcing that a merge train was complete. It appeared in 3,612 of 8,063 trusty-tools turns, or 44.8%. By the end of the measurement period, it was 19 days old.</p><p>The fifteen most frequently injected memories were expired checkpoints. Another pinned <code>origin/main</code> to a commit hash that had been wrong for four weeks, then supplied it in about one turn in five.</p><p>Recall used a 90-day decay half-life. A PR&#8217;s current head can change in hours. The checkpoint was a record of something that happened, but recall kept handing it back as useful context for current work.</p><p>Retrieval accuracy is about finding the memory that fits the request. The accuracy of that memory&#8217;s contents is another question. A system can return a relevant record faithfully even when the information is outdated or wrong. My checkpoint still described a completed merge train, but it couldn&#8217;t establish the current state of the work. That&#8217;s why I need dreaming to examine relationships between records, including corrections and contradictions, before I treat recalled material as useful shared context.</p><p>Corrections existed. Following them was another problem. Of 109 hand-written links saying one memory superseded or corrected another, only 45 resolved to a memory ID. The rest used labels the machine couldn&#8217;t follow. In one case, a rebase made a remembered PR head stale. The correction was in memory, but the old memory had no usable link to it.</p><p><a href="https://github.com/bobmatnyc/trusty-tools/commit/434ce00b336a990b9c40b356615521588d14b80c">Since August 5</a>, the system has supported named fact slots through <code>fact_key</code>. Writing a new fact to an occupied slot retires the previous occupant and links it to the replacement. The older fact remains in history. That gives the machine a way to follow a correction instead of hoping it can interpret a hand-written note.</p><p>It also leaves me with a question about what belongs in the slot. The ADR&#8217;s example is a PR&#8217;s status at a particular head commit. GitHub already has that information. I can make a copy age more carefully, but I still have a copy to maintain.</p><h2>Keep the Transition and Its Reason</h2><p>Memory shows intent through its transitions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JmbS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JmbS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!JmbS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!JmbS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!JmbS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JmbS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2044177,&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://hyperdev.matsuoka.com/i/219187705?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.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_!JmbS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!JmbS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!JmbS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!JmbS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e1a6f18-ce60-4dd8-973c-dbc8aed08be2_1448x1086.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>I want to know what the person meant at one point, what they meant later, and why they moved. The ticket or PR can tell me the current status.</p><p>The fact slots have part of the direction I&#8217;m heading: earlier records survive, linked to their replacements. But a replacement link says what followed a fact. It doesn&#8217;t explain why the person changed their mind. Filling that history with successive copies of GitHub status would preserve a sequence without necessarily preserving intent.</p><p>My system also has task records for goals and checkpoints, including whether they&#8217;re complete. A goal expressed before a ticket exists could be useful memory. Once a ticket tracks the work, maintaining another open-or-done field creates another place to fall behind.</p><p>So the proposed rule would change how parts of my own system are used. I haven&#8217;t settled whether those records should become links with history attached, remain useful within a session, or move out of memory.</p><p>The July checkpoint is a reason to be careful. It was useful as a dated record that a merge train had completed. Its repeated appearance weeks later didn&#8217;t tell the next session what had changed since.</p><h2>Dreaming Before Sharing</h2><p>I need a dream cycle between raw capture and shared memory. A conversation leaves observations and half-formed ideas alongside decisions that may already have changed. Before another person relies on that material, I want it organized into a useful account of the thinking. For this shared-memory design, I consider dreaming an essential step.</p><p>I want the pass to recognize repeated accounts of the same intent, connect a later correction to an earlier assumption, and preserve why the thought changed. A collaborator should be able to find the correction alongside what it corrected. They should also be able to recover which parts of the earlier reasoning survived. Consolidation would help someone follow that development without piecing it together from scattered session records.</p><p>The human analogy is suggestive. In a <a href="https://pubmed.ncbi.nlm.nih.gov/20417102/">2010 study by Erin Wamsley and colleagues</a>, people who reported dreaming about a virtual maze during a nap improved more on the task afterward. The association links dreaming with processing recent experience, without establishing that the dreams caused the improvement or were necessary for memory.</p><p>With its model backend and consolidation enabled, my software&#8217;s <a href="https://github.com/bobmatnyc/trusty-tools/blob/main/crates/trusty-memory/README.md#dream-cycle-semantic-consolidation-issue-87">dream cycle</a> can merge overlapping memories while retaining the originals and links to their replacement. It flags contradictions for human review. Those capabilities give me a starting point for preparing memory while preserving its history.</p><p>I want the proposed shared store to accept only memories that have been through dreaming. The pass would prepare records for reuse, with their sources and unresolved disagreements still visible. It doesn&#8217;t establish truth or grant permission to share: repeated assertions can still be wrong, and useful memories can still be private. But I want the work of connecting and sorting them to happen before they reach another person&#8217;s session. That person should get a record they can examine and follow back to its origins.</p><h2>The ADR Objection</h2><p><a href="https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions">Michael Nygard&#8217;s description of ADRs</a>, published in 2011, starts with the difficulty of tracking the motivation behind decisions. His format records context, decision, status and consequences. <a href="https://adr.github.io/madr/">MADR</a> includes considered options and their pros and cons, with a proposed status for decisions still under discussion.</p><p>That is much of what I&#8217;m asking memory to preserve, but not just the ADR but the thinking that led to it.</p><p>I use ADRs in <a href="https://github.com/bobmatnyc/trusty-tools/tree/main/docs/adr">trusty-tools</a>. The one behind the stale-memory measurements records rejected alternatives and open limits as well as the decision. It is evidence against claiming formal documents can&#8217;t do this job. An ADR can start early, and the discussions linked to it can preserve the thinking around it.</p><p>What I want to capture is the thinking that happens before someone writes an ADR, or in the working conversation around it. A framing gets dropped before it becomes a considered option. A person gives a reason in passing. If that reason belongs in the adopted decision, it should make its way into the ADR. Memory might help it survive long enough to get there.</p><p>But a good ADR, linked discussion and search may already be sufficient. The distinction I&#8217;m proposing is about when and how context gets captured. It doesn&#8217;t establish that I need a separate store. I&#8217;m going on faith to some degree because I have been so successful using search and memory -- search covering all the static documents and memory covering the transitions.</p><p>Nor is the idea new. Jeff Conklin&#8217;s <em><a href="https://cognexus.org/dom.pdf">Designing Organizational Memory</a></em>, first written in 1997 and revised in 2001, distinguishes formal results from the informal knowledge created while producing them. That includes assumptions and questions, along with the reasons behind choices. My evolving-intent argument fits within his project memory.</p><p><a href="https://users.cs.northwestern.edu/~paritosh/papers/sketch-to-models/LeeDesignRationaleSystems.pdf">Jintae Lee&#8217;s 1997 survey of design-rationale systems</a> even describes an apprentice approach: a system observes the designer&#8217;s work and asks questions to capture the rationale. An agent in a coding session looks a lot like that apprentice. Whether it makes capture cheap enough is still a question.</p><h2>What I Would Ask Memory to Keep</h2><p>Codex derived a set of proposed requirements from the October 4 conversation. They would have a record identify the person and project, preserve what the person expressed, and link to the relevant issue or document version. Assistant synthesis would be labeled separately. A tentative preference would remain distinguishable from an explicit decision or a later correction. When the intent becomes a ticket, spec change or ADR, memory would link to that artifact and record the transition. It would retrieve current work status from the system responsible for it. These are design proposals from Codex, still to be worked through.</p><p>I care about the conditions around a choice as much as the choice itself. Which alternatives were considered? What remains open? What would change the decision? Those were part of the proposed evaluation: can another collaborator recover the reasoning and its limits?</p><p>A timestamp and an author give that collaborator somewhere to start. They don&#8217;t reproduce the conversation. The more tentative the thought, the more its meaning can depend on context that a short memory record leaves out. Sharing a record between people makes that harder than recalling it for the person who wrote it.</p><p>The stale-memory measurements also make me wary of treating a decision-state label as a solution. A field called <em>superseded</em> helps only if the correction can be found and followed. My hand-maintained links frequently failed that test.</p><h2>Who Does the Review?</h2><p>Lee&#8217;s survey describes the cost problem: the person doing the capture may be doing extra work for somebody else&#8217;s later benefit. Conklin likewise identifies additional documentation effort, without a clear immediate benefit, as a reason organizational memory systems failed.</p><p>An agent can write the record. Someone still has to check whether it recorded what the person meant, whether a preference became a decision in the summary, and whether the rationale was expressed or invented. Automating the writing leaves that review cost.</p><p>In a shared system, the person able to check the memory may be different from the person who benefits from it. I don&#8217;t have an answer for who does that review.</p><p>I also haven&#8217;t run the comparison that would justify the design: give a collaborator the ADR and linked discussions, then see whether adding memory helps them recover more of the reasoning. Include the effort spent reviewing the memory. The October 4 design notes list whether imported memories improve answers as something still to measure.</p><p>I started by asking how to move memories between machines. I now have a more specific job in mind: preserve expressed intent through its changes, and connect that history to the work it becomes. My own stale checkpoints show how easily memory can get in the way.</p><p>Whether the additional context, sharpened by dreaming, earns its capture and review cost is still open. When I figure THAT out, I&#8217;ll go back to trying to link multiple people&#8217;s memories together.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality profit and revenue-management platform, and writes about AI-augmented engineering practice. Previously, Bob has been CTO of Tripadvisor, Citymaps, and Runtime Technologies.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/when-sessions-talk">When Sessions Talk...</a> &#8212; What my agent sessions said to each other, and where their messages failed to arrive.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/capturing-context">Capturing Context</a> &#8212; Preserving insights and reasoning before an AI session resets.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/is-your-digital-brain-the-light-saber">Is Your Digital Brain the Light Saber of the AI Era?</a> &#8212; Building a personal knowledge system as part of an engineering practice.</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners.</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Conversation]]></title><description><![CDATA[When Agents Talk Back]]></description><link>https://hyperdev.matsuoka.com/p/the-conversation</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/the-conversation</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Mon, 05 Oct 2026 12:31:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HgNV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.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_!HgNV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HgNV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.png 424w, https://substackcdn.com/image/fetch/$s_!HgNV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.png 848w, https://substackcdn.com/image/fetch/$s_!HgNV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.png 1272w, https://substackcdn.com/image/fetch/$s_!HgNV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HgNV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.png" width="1024" height="782" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:782,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1216333,&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://hyperdev.matsuoka.com/i/218397416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7aeaa3b8-b2c6-498c-adeb-44ba97e7500c_1024x1024.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_!HgNV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.png 424w, https://substackcdn.com/image/fetch/$s_!HgNV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.png 848w, https://substackcdn.com/image/fetch/$s_!HgNV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.png 1272w, https://substackcdn.com/image/fetch/$s_!HgNV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c8ee28d-a3ae-4e7a-8018-03eb7125e52b_1024x782.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>The Dialogue</h2><p>I was at a conference this week, &#8220;Destination AI.&#8221; Travis Weber, our head of NA sales, and I put on a round table AI-themed conversation for some valued customers and partners. I&#8217;m also on an HFTP (Hospitality Financial and Technology Professionals) &#8220;AI Collective&#8221; committee, and we had a dinner on Tuesday night. And of course as is typical with these conferences, there are plenty of opportunities to talk with customers and partners.</p><p>So I&#8217;ve had no shortage of fascinating conversations regarding AI the past couple of days.</p><p>But the most unexpected may have been the one I had in my hotel room on Wednesday as I was packing for the airport:</p><blockquote><p><strong>Voice:</strong> The Sonnet 5.5 review draft and hero image are committed locally. Should it hold on for your review, or do you authorize the push now?</p><p><strong>Bob:</strong> You can push it. It&#8217;s not going to publish it, but just go ahead and push it, and I&#8217;ll review it later.</p></blockquote><p>That&#8217;s the ChatGPT voice chat, reading me a decision one of my coding sessions was waiting on. I recorded about 33 minutes of the conversation, and the clips run in the order they happened.</p><p>The channel carried engineering direction too. A few minutes before that decision, I set the priorities for my coding sessions.</p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;5e215d9e-f4ea-421a-b9e6-039403966e3b&quot;,&quot;duration&quot;:18.677551,&quot;downloadable&quot;:false,&quot;isEditorNode&quot;:true}"></div><blockquote><p><strong>Bob:</strong> The priority for the next few hours is to drive bug fixes and high priority issues in the trusty project. Have the supervisor poll all the other sessions as well, just to make sure there&#8217;s nothing waiting for me.</p><p><strong>Voice:</strong> I&#8217;ll ask the supervisor to poll all the other sessions for anything awaiting your decision.</p></blockquote><p>About ten minutes later I started this article the same way.</p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;91740bef-c0f8-40fa-b8eb-40b888742a7e&quot;,&quot;duration&quot;:14.811429,&quot;downloadable&quot;:false,&quot;isEditorNode&quot;:true}"></div><blockquote><p><strong>Bob:</strong> Start by having the supervisor ask the writing session to draft the initial premise, which is an interesting way of working through voice while I&#8217;m doing something else.</p><p><strong>Voice:</strong> I&#8217;ll ask the supervisor to have the writing session draft that premise.</p></blockquote><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;aed899b0-5e58-4ec8-9a03-28515ed9fe0f&quot;,&quot;duration&quot;:14.733061,&quot;downloadable&quot;:false,&quot;isEditorNode&quot;:true}"></div><blockquote><p><strong>Bob:</strong> Would it make more sense for you to talk directly to the writing session instead of going through the supervisor?</p><p><strong>Voice:</strong> Yes, talking directly to the writing session would streamline us and avoid errors. We saw one message get truncated, but the supervisor is useful for cross-project coordination.</p></blockquote><p>Then I asked where the article stood.</p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;8aef6812-3332-4dd8-b65c-cfb5cb3b5353&quot;,&quot;duration&quot;:14.053878,&quot;downloadable&quot;:false,&quot;isEditorNode&quot;:true}"></div><blockquote><p><strong>Bob:</strong> Okay, can you summarize where we are right now with the article?</p><p><strong>Voice:</strong> The core angle is a practical experiment. What it&#8217;s like to talk naturally in a quiet hotel room while doing other things with the assistant capturing notes and executing tasks.</p></blockquote><h2>What Was Happening</h2><p>I was having a conversation with two agentic working sessions through one agent. One was the Architect which coordinates the rest (the clips use its earlier name, the supervisor). The other was the writing session, researching/drafting this piece. Status updates from my other work and direction for the article arrived in the same exchange.</p><p>Clip 04 is the status side. The assistant read me a decision the Architect had queued, and I answered out loud. The limits travel with each instruction: save or draft unless I say otherwise, and no commit, push or publish without my explicit OK. The first request the assistant sent the Architect for this article ended, &#8220;This is a request to draft, not publish.&#8221;</p><p>Clip 03 is the article side. My words went to the Architect, which passed them to the writing session and told the assistant, &#8220;I&#8217;ll post the premise here word for word when it arrives.&#8221;</p><p>Clip 01 changed the route. I took the assistant&#8217;s advice, and from then on it worked with the writing session directly, with the Architect kept in the loop for decisions that cross projects. I asked to be interrupted when the Architect needed me, and the assistant answered, &#8220;if the supervisor needs a decision from you, I&#8217;ll interrupt with a specific question and enough context to answer.&#8221;</p><p>I didn&#8217;t build anything to support this - I already had &#8220;The Architect&#8221;, I just had ChatGPT connect to my home machine and figure out (in that moment) how to script access to it.</p><p>The result? A conversation.</p><h2>Why This Differs from Dictation</h2><p>Talking isn&#8217;t new. I type, or dictate, into my Claude remote session with the Architect, and it hands the work to the other sessions. Last year I wrote about <a href="https://hyperdev.matsuoka.com/p/why-voice-to-text-finally-makes-sense">why voice-to-text finally made sense for developers</a>. Dictating with Superwhisper improved my prompting, my architectural thinking and my documentation, and I still use push-to-talk all the time (now <a href="https://code.claude.com/docs/en/voice-dictation">built into Claude</a>). Dictation turns what I say into text, and the session receives that text like anything I type.</p><p>The clips show the next step, from speaking text into a tool to a running dialogue with an assistant that answers and coordinates work. I asked for an opinion in clip 01 and got a recommendation with a reason. I asked for a synthesis in clip 02 and heard the article&#8217;s angle played back. The full reply ended, &#8220;So, uniqueness is still an open question.&#8221; In clip 03 I delegated the first draft, and in clip 04 a decision came back for me to make.</p><p>The same assistant reasons over typed input, so none of that reasoning is specific to voice. What changed was getting it inside a spoken back-and-forth that kept running while I did something else. Brainstorming and workshopping ideas felt much easier that way than dictating.</p><p>The device (my phone) sat on a desk in my hotel room. ChatGPT handled both sides of the exchange, so for most of the conversation I talked and heard the replies without attending to it. When I stepped away to shower I left it running, and it said it would stay quiet. When I came back and asked, &#8220;You still there?&#8221;, it answered, &#8220;Yep, I&#8217;m here.&#8221; As I put it during the session, this &#8220;lets me use my hands and do other things like get dressed and take a shower while I&#8217;m conversing with you.&#8221; I&#8217;ve called ChatGPT &#8220;a very good asynchronous voice processor.&#8221;</p><h2>How ChatGPT, Tmux and Claude Code Connect</h2><p>My harness, <a href="https://trustytools.dev/tools/trusty-mpm">trusty-mpm</a>, automatically creates a tmux (tmux is a headless terminal session manager &#8212; you can run them without and actual terminal app running, good for working/resuming in the background) session for each working session, the Architect included. The ChatGPT voice assistant reads a session&#8217;s tmux pane and sends my direction into the same session. The Technical Appendix has the details.</p><p>The Architect is a higher-level agent session, running in tmux like the others, that talks to my working sessions, typically 6 to 12 of them. When one of them needs a decision, the Architect tries to answer or queues the question, and when I answer, it routes the answer back. It gets its own article later.</p><p>This works because the sessions work asynchronously. Here the word means task execution, not audio. The writing session launches research and transcription agents in the background and keeps talking to the assistant, and the assistant keeps talking with me. On this article, the research pass below ran while I sent new angles, and its findings arrived afterward. A transcription agent cut the 33-minute recording into these clips while I added the clip-led structure and the dictation section.</p><h3>What Already Exists</h3><p>Early in the conversation I asked the assistant whether anyone had written about working this way. It said there were close precedents, so it wouldn&#8217;t call this unique. The writing session&#8217;s research pass the same day found the same. The close examples, and what each lacks next to my setup:</p><ul><li><p><strong>ChatGPT voice with Codex and Work.</strong> OpenAI&#8217;s desktop voice <a href="https://learn.chatgpt.com/docs/features/voice">starts and checks Codex and Work tasks</a>, and the Codex CLI added experimental <code>/voice</code> conversations in <a href="https://github.com/openai/codex/releases/tag/rust-v0.155.0">release 0.155.0</a>. These drive OpenAI&#8217;s agents, not Claude Code sessions.</p></li><li><p><strong>Simon Willison.</strong> On <a href="https://www.heavybit.com/library/podcasts/high-leverage/ep-9-the-ai-coding-paradigm-shift-with-simon-willison">Heavybit&#8217;s High Leverage podcast</a> he described how he&#8217;d &#8220;fire up ChatGPT voice mode and tell it to write some Python and go back and forth with it while I&#8217;m out with the dog.&#8221; The coding happens inside the voice conversation, with no separate sessions described.</p></li><li><p><strong>mcp-voice-hooks and VoiceMode.</strong> <a href="https://github.com/johnmatthewtennant/mcp-voice-hooks">mcp-voice-hooks</a> offers continuous hands-free conversation with Claude Code, and <a href="https://github.com/mbailey/voicemode">VoiceMode</a> adds voice conversations through MCP. In both, the voice lives inside Claude Code, not in the stock ChatGPT app.</p></li><li><p><strong>yapcode and claude-voice-bridge.</strong> The closest. <a href="https://github.com/nithiink/yapcode">yapcode</a> is a voice agent driving many Claude Code sessions in tmux. <a href="https://github.com/shepard5/claude-voice-bridge">claude-voice-bridge</a> connects OpenAI&#8217;s Realtime voice to per-project Claude Code sessions in tmux, with status tools. Neither has a coordinating session in the middle.</p></li><li><p><strong>voice-integration.</strong> <a href="https://github.com/roykollensvendsen/voice-integration">voice-integration</a> puts realtime voice in front of an agent gateway with status and steering tools, rather than Claude Code sessions.</p></li></ul><p>Exact matches: none. No project in these searches put a coordinating Claude Code session between the voice assistant and the project sessions, or used the stock ChatGPT voice app for status relay and direct collaboration in one conversation. It felt unique to me. Because the GPT session isn&#8217;t managing a coding session or coordinating the work of several agents, it felt as if it was focusing its attention on how to communicate more effectively with me.</p><p>I&#8217;d call this tmux-connected combination experimental, ahead of the common packaged workflows. Native voice that drives agents already exists, and so do the projects above.</p><h2>What I Expect Next</h2><p>I do expect this asynchronous conversational workflow, talking while agents work in the background and hearing their results in the same conversation, to become readily available in most agent interfaces, OpenAI&#8217;s and Claude&#8217;s included.</p><p>I used it for one evening, in a quiet room, on high-level work. Hands-free had an exception: the assistant asked me to review a request in the app about 20 times in 33 minutes, and I answered most of them with &#8220;Done.&#8221; With headphones I could keep talking while moving around, but background noise matters, and I&#8217;d expect a loud street or a subway to work less well.</p><p>The format suits fairly high-level thinking, like making decisions or framing an article. When I need to get into code or inspect supporting detail, I expect a screen will serve me better than hearing its summary read aloud.</p><p>Voice-to-text runs one way. I talk, and text lands in a session. I expect it to become two-way dialogue fairly soon. Dictation gets my thinking into the session. A conversation lets me do the thinking with something that talks back.</p><p>Happy conversing!</p><h2>Technical Appendix</h2><ul><li><p><strong>A tmux session per working session.</strong> trusty-mpm creates one for each working session, the Architect included. Background agents, such as this article&#8217;s research and transcription agents, run inside those sessions.</p></li><li><p><strong>Read the pane, send input.</strong> The ChatGPT voice assistant reads a session&#8217;s tmux pane, which is that session&#8217;s output, and sends input into the same session.</p></li><li><p><strong>Scripts written on the spot.</strong> I built nothing for this. ChatGPT worked out during the session how to reach my Mac, and it ran scripts to capture each pane&#8217;s output.</p></li><li><p><strong>One remote connection.</strong> The ChatGPT app on my phone connects to my Mac. That one connection is all the voice assistant needs to reach my Claude sessions.</p></li><li><p><strong>The typed path still works.</strong> I can still type or dictate into my Claude remote session to the Architect, my usual path, and it delegates to the other sessions.</p></li></ul><p>Both vendors offer a way to reach a session on your own machine. Anthropic&#8217;s <a href="https://code.claude.com/docs/en/remote-control">Remote Control</a> lets you drive a local Claude Code session from claude.ai/code or the Claude apps, and I use it. OpenAI&#8217;s <a href="https://learn.chatgpt.com/docs/remote-connections">remote connections</a> pair a Mac or Windows desktop host with an iOS, Android or desktop client.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality profit and revenue-management platform, and writes about AI-augmented engineering practice. Previously, Bob has been CTO of Tripadvisor, Citymaps, and Runtime Technologies.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/why-voice-to-text-finally-makes-sense">Why Voice-to-Text Finally Makes Sense for Developers</a> &#8212; Where talking to my tools started: dictation with Superwhisper</p></li><li><p><a href="https://aipowerranking.com">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders</p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Billion-Token Engineer]]></title><description><![CDATA[And their shadow army]]></description><link>https://hyperdev.matsuoka.com/p/the-billion-token-engineer</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/the-billion-token-engineer</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Mon, 28 Sep 2026 12:16:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hr6a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.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_!hr6a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hr6a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.png 424w, https://substackcdn.com/image/fetch/$s_!hr6a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.png 848w, https://substackcdn.com/image/fetch/$s_!hr6a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.png 1272w, https://substackcdn.com/image/fetch/$s_!hr6a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hr6a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.png" width="1448" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2850207,&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://hyperdev.matsuoka.com/i/217684950?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeeff057-8587-41e8-92c5-c70e1425909f_1448x1086.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_!hr6a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.png 424w, https://substackcdn.com/image/fetch/$s_!hr6a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.png 848w, https://substackcdn.com/image/fetch/$s_!hr6a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.png 1272w, https://substackcdn.com/image/fetch/$s_!hr6a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb0f7440-bc36-433a-b47e-24cc943cd116_1448x848.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><figcaption class="image-caption">The BTE and their Shadow Army</figcaption></figure></div><p>We&#8217;re starting to see what I&#8217;m calling &#8220;Billion Token&#8221; hires. Engineers capable of consuming a billion tokens <strong>every month</strong>, and increasingly other AI-native employees who use harnesses for their daily work. Coding makes that scale easier to reach because implementation agents, testing, and code review can keep running together. I&#8217;ll focus on engineers here.</p><p>I&#8217;ve been living this for over a year. My harness sessions run coding agents in parallel: implementing features, investigating bugs, writing tests, and reviewing changes. These agents are my <strong>shadow army</strong>. The harness organizes their work and checks what comes back. I remain responsible for what I accept and ship.</p><p>Let&#8217;s define a billion-token engineer (BTE) as one that consumes (let&#8217;s say) a billion tokens a month <strong>excluding cache reads</strong>. Repeatedly reading cached context still costs money, but it doesn&#8217;t count toward that billion. My year-end &#8220;wrapped&#8221; listed 70B tokens for 2025, but that included cache reads and inflated the number relative to this definition. Last week I used about 0.8B tokens excluding cache reads. A billion a month is hardly outlandish when I consumed most of that in a week. Token volume alone tells us little about how much useful software came out.</p><p>My September usage analysis put one BTE at roughly $17,000&#8211;$20,000 a month at the <a href="https://platform.claude.com/docs/en/about-claude/pricing">API list prices</a> for the models I used, including the associated cache reads. That estimate uses incomplete transcript counts and my model mix. It is not my paid bill or a universal token price. For the thought experiment, use a $20,000 monthly inference budget per engineer, before salary and shared infrastructure.</p><p>Now hire twenty of them.</p><p>Today&#8217;s article discusses what happens when you do, and why I believe personal harness building may be the defining skill of this era.</p><h2>TL;DR</h2><ul><li><p>Twenty BTEs would bring twenty shadow armies into the organization: agents driven by each engineer&#8217;s harnesses. A twenty-person team behind each engineer is an assumption for this thought experiment, not a measured productivity multiplier.</p></li><li><p>The workload has to fit through review, integration, and user acceptance. Increasing generation without expanding those capacities creates unfinished work.</p></li><li><p>Personal harnesses need shared rules for ownership and acceptance when their engineers work on the same repository.</p></li><li><p>I think we will increasingly hire engineers for the output of their harnesses and their willingness to stand behind it. Insurance and certification are possible consequences of that responsibility.</p></li></ul><h2>One Person, One Week</h2><p>For September 14&#8211;20, I counted the activity in my local harness logs and matched it with the GitHub records I could access. These are aggregate figures across my work, with the project names left 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_!Dz9l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dz9l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.png 424w, https://substackcdn.com/image/fetch/$s_!Dz9l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.png 848w, https://substackcdn.com/image/fetch/$s_!Dz9l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.png 1272w, https://substackcdn.com/image/fetch/$s_!Dz9l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dz9l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.png" width="491" height="252" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:252,&quot;width&quot;:491,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38255,&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://hyperdev.matsuoka.com/i/217684950?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.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_!Dz9l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.png 424w, https://substackcdn.com/image/fetch/$s_!Dz9l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.png 848w, https://substackcdn.com/image/fetch/$s_!Dz9l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.png 1272w, https://substackcdn.com/image/fetch/$s_!Dz9l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c22fef2-6008-4e81-a16a-a60b47ee1ffc_491x252.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>One person directing the work, including sessions started or resumed by automation. The session counts cover the week, not simultaneous agents. Tokens include fresh input, cache creation, and output, with cache reads excluded.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XwSL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XwSL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!XwSL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!XwSL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!XwSL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!XwSL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1535811,&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://hyperdev.matsuoka.com/i/217684950?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.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_!XwSL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!XwSL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!XwSL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!XwSL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e32299e-7bb3-4406-840e-35562aaf41a5_1448x1086.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 GitHub figures cover my account&#8217;s work in repositories represented in the logs. Access gaps leave some work uncounted. Builds include repeats and separate platform targets, but exclude unverified local builds. The 10,438 automated workflow runs overall included notifications and other checks, so I haven&#8217;t counted them all as builds.</p><p>Opened and merged PRs are different sets, as are created and closed issues. Neither a merge nor a closed ticket establishes user acceptance.</p><h2>What I&#8217;m Delegating</h2><p>I&#8217;m largely <strong>delegating</strong> this work: setting the goal, supplying context, and evaluating what comes back. Much of it goes into internal applications, a hackathon site, companion tools, and CTO reporting. Other work involves analyzing knowledge for my CTO responsibilities, running classification experiments, or building the harnesses themselves.</p><p>That lets us build optional internal tools without hiring or allocating engineers specifically for them. Some wouldn&#8217;t justify a dedicated hire, so part of the value is doing work that might otherwise stay on the wish list. The activity counts don&#8217;t translate into salaries saved (or jobs lost), but these projects become possible without that staffing commitment. You can also make the argument that this work makes ALL engineers more effective (I spent 8 years at a company struggling to make product work and code visible/searchable, now I can trace any code or PRD and make reasonable estimations on any effort quickly).</p><p>I can also delegate quick projects that make a proposed direction concrete. A working example gives people something to examine and helps us decide whether the idea deserves more investment, even if the example doesn&#8217;t become a production product.</p><h2>Twenty Engineers and Their Shadow Armies</h2><p>But let&#8217;s expand this notion in the workplace. Suppose each BTE can direct something resembling a team of twenty implementation workers. Twenty hires would bring four hundred workers&#8217; worth of assumed implementation capacity. Their token budget would be $400,000 a month, or $4.8 million a year, plus compensation and shared infrastructure.</p><p>Twenty is a thought-experiment assumption. I don&#8217;t have a comparable human team completing the same assignments to the same acceptance standard, and agents spend much of their time checking or discarding other agents&#8217; work. Use five and the company still has a hundred workers&#8217; worth of assumed capacity arriving through twenty people. A useful multiplier would need to account for accepted changes, human review time, and subsequent defects and rework.</p><p>Each engineer runs a small software factory with its own practices and assumptions (presumably with alignment on core best practices) about when work is done. Someone has to divide useful work among them and settle disagreements about the result. Adding factories can increase the code available for review much faster than the organization&#8217;s ability to accept it. They still have to deliver a coherent product.</p><h2>The Issue Debris Field</h2><p>Mac, my colleague at work, described what happens to the follow-up issues our harnesses generate. He could keep track of five to seven parallel sessions working on substantial problems. What overwhelmed him was the &#8220;issue debris field&#8221; accumulating beneath those efforts, across several projects. A well-defined plan breaks into implementation issues. Working those issues produces follow-ups, some critical and some scope creep. Left unattended, they go stale as the code changes. Picking up a month-old ticket then requires someone to establish whether the problem still exists, whether later work partly solved it, and whether it deserves attention now. That consumes model time and human attention before implementation can begin.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vi9p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vi9p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!vi9p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!vi9p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!vi9p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!vi9p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2959974,&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://hyperdev.matsuoka.com/i/217684950?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.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_!vi9p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!vi9p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!vi9p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!vi9p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e6c9e54-5eea-4db7-8609-4fb54ab2ffcd_1448x1086.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>Mac had tried limiting follow-up creation. A ban could hide critical problems, while a critical-only rule still left ownership and tracking unresolved. The direction we discussed was to attach those findings to a parent tracker, keep its state current, and resolve or reassess them before they became stale. Research would live in committed documents linked from the issues, so another contributor could recover the context without needing the original session.</p><p>Even working on the fix exposed the coordination problem. I&#8217;d opened an issue-management effort while Mac was researching a related approach. He spotted the overlap and warned that we were heading for a collision. We agreed to put his work into the existing effort. Generating another plan was easy. Recognizing the overlap required a conversation.</p><p>Think of a commander directing several units toward agreed objectives. Every advance uncovers side missions, blocked routes, and reports that may already be obsolete. The units can keep moving while the commander loses track of what their movements mean for the campaign. A shared map needs to connect each finding to the objective, its owner, and a decision about what happens next. That is the role we were proposing for the parent tracker.</p><p>Generating more work is no longer the limiting factor in this part of my practice. <strong>Organizing it is.</strong> A newly filed issue needs a place in the plan and a decision about whether to pursue it. Otherwise, the shadow army can fill the tracker faster than its owner can determine what still needs doing.</p><h2>Three BTEs in the Same Repository</h2><p>Mac and I mostly work in different repositories, which gives us room to operate independently. What happens when three BTEs work on the same repository? Separate branches protect unfinished edits, but three sensible assignments can still conflict. A shared interface changes beneath another army&#8217;s implementation. Its tests may pass against assumptions that are no longer true.</p><p>In <a href="https://hyperdev.matsuoka.com/p/when-sessions-talk">When Sessions Talk...</a>, I documented my own sessions negotiating ownership and merge windows, with some messages never appearing in the receiving model&#8217;s context. Even one human needed a durable place for decisions. Three humans bring separate priorities and authority.</p><p>I&#8217;d want work claimed before dispatch, naming the responsible engineer, the subsystem, and any shared contracts affected. The claim must change when scope expands. Teams also need limits on concurrent changes to shared components and agreement on interfaces before several armies implement against them. Agents can investigate alternatives while a decision is pending without all modifying the same subsystem.</p><p>A <a href="https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue">merge queue</a> can test proposed changes against the target branch and earlier queued changes. It can&#8217;t settle an architectural disagreement the tests don&#8217;t express. A named owner still needs authority to hold the change until that decision is made.</p><h2>The Work Waiting to Be Accepted</h2><p>A tracker that says &#8220;coding complete&#8221; hides much of the remaining work. Implementation, independent review, integration, and user acceptance need distinct states, with evidence and someone responsible for the next decision.</p><p>Suppose twenty BTEs each submit five changes a day that need a human decision. At fifteen minutes apiece, those hundred decisions require twenty-five reviewer-hours a day, before rework or user acceptance testing. These are illustrative assumptions. The staffing problem gets harder if many changes need the same architect or product owner. A dashboard makes that queue visible without increasing the person&#8217;s capacity, while continued implementation changes the code underneath the waiting work.</p><p>I would manage the factories by accepted output and the age of their queues. How long does review take? How often does integration invalidate earlier checks? How much accepted work returns as a defect? A shadow army whose output waits unreviewed for days needs fewer new assignments and more effort clearing work in progress.</p><p>BTEs will need help tracking what is running, what is waiting, and what needs their attention. I have a possible solution in the concept of a <strong>supervisor</strong>. I&#8217;ll write more about that in a week or so.</p><p>User acceptance testing (UAT) needs its own capacity plan. Agents can prepare environments and test data, then replay agreed workflows. But passing criteria that misunderstand the customer&#8217;s task repeats the misunderstanding. A product owner or domain expert must decide whether the behavior is useful. They need a reviewable release candidate, a description of the affected workflow, and evidence tied to that version. If the implementation changes afterward, the team needs to know which acceptance results remain valid. Asking a user to approve a moving target makes the approval difficult to defend.</p><h2>What the Harness Has to Establish</h2><p>Writing an implementation gave me repeated opportunities to discover mistakes in my reasoning. When agents do more of that construction, the harness needs other ways to expose them. Types and static analysis help, alongside tests that exercise the surrounding system. Production observations need to feed back into the process. Agreement between agents provides weak evidence when both follow the same mistaken specification.</p><p>I also want to challenge the validation itself. Would the tests catch a deliberately broken implementation? Does a check fail when the behavior it protects disappears? A passing suite is more useful when I understand its limits, though that still leaves the question of whether we specified the right behavior.</p><p>The harness should retain what was requested, which version was evaluated, the checks performed, and the unresolved risks. A reviewer needs to reconstruct the acceptance decision without replaying the agent&#8217;s entire conversation. Building that ability consumes some of the capacity the shadow army appears to provide for free.</p><h2>The Engineer Comes With a Factory</h2><p>In <a href="https://hyperdev.matsuoka.com/p/is-your-digital-brain-the-light-saber">Is Your Digital Brain the Light Saber of the AI Era?</a>, I compared building a personal knowledge system to a Jedi building a lightsaber. The construction reflects how its owner thinks. I now think the engineer and harness relationship is a more apt analogy.</p><p>The harness is a tool of the trade, shaped by its driver&#8217;s style. Judgment appears in how the engineer decomposes problems, the failures their tests anticipate, and the conditions that make an agent stop and ask. It accumulates in instructions and executable checks that the engineer maintains.</p><p>That changes what I would look for in a hire. I want to see what their harness produces and how they decide to accept it. Show me a failure it caught. Show me a failure it missed, and what changed afterward. Show me how another engineer can investigate the result when you&#8217;re unavailable. A large token budget tells me that the factory runs. It doesn&#8217;t tell me whether I should trust its output. And I don&#8217;t particularly care <em>which</em> harness they use, just that they know how to adapt it for their own and my company&#8217;s needs: workflow, PR style, issue management, etc.</p><p>The company still needs common acceptance requirements and production-access rules. Personalization shouldn&#8217;t leave colleagues dependent on a private system they cannot inspect or operate. Hiring a team with shadow armies means judging whether their harnesses can work together and their owners can resolve conflicts.</p><h2>You Can&#8217;t Fire an Agent for Negligence</h2><p>An agent can be stopped, replaced, or given different instructions. None of those actions answers a customer asking who accepted the defective work. The engineer who directs the factory needs to stand behind what it ships. So does the organization that authorized the work and decided where to deploy it.</p><p>I think the professional definition of an engineer moves toward accountability for code produced under their direction, including code they didn&#8217;t write. I want to take that as far as professional liability. Will BTEs carry liability insurance? Will customers ask for certification of the harnesses producing their software? Those are possibilities to explore, not existing legal requirements. Delegated implementation should leave a recognizable person responsible for the engineering judgment.</p><p>A useful certification would examine the operating process, including how it handles failure. Changes to models, tools, or permissions could require reevaluation. An insurer, if this market develops, would have reason to examine those controls and the losses they failed to prevent. The harness supports the engineer&#8217;s assurance of quality by making decisions inspectable and providing a way to improve after failure. That is more persuasive to me than insisting they read every line, though neither promises defect-free code.</p><p>There is an apprenticeship problem inside this, too. Engineers need enough understanding to recognize bad output and challenge a weak test. Junior engineers will need practice investigating failures and operating the systems their agents help build. Giving them a finished harness without teaching them how to question it would leave the accountability mostly ceremonial.</p><p>I believe this is the engineering model for the next few years. You hire people whose factories produce solid, tested, defensible code, then build an organization capable of accepting that work. Their personal methods can differ. The shared product still needs owners who can explain why it was safe to ship and take responsibility when they were wrong.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality profit and revenue-management platform, and writes about AI-augmented engineering practice. Previously, Bob has been CTO of Tripadvisor, Citymaps, and Runtime Technologies.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/is-your-digital-brain-the-light-saber">Is Your Digital Brain the Light Saber of the AI Era?</a> &#8212; Building a personal knowledge system as part of developing your practice.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/when-sessions-talk">When Sessions Talk...</a> &#8212; What my agent sessions coordinated, and where their messages failed to arrive.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/we-need-to-teach-delegation-as-an">We Need to Teach Delegation as an Engineering Skill</a> &#8212; Defining outcomes and authority so another actor can do useful work.</p></li><li><p><a href="https://aipowerranking.com">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners.</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Why Now?]]></title><description><![CDATA[The frontier modelers call for a pit stop.]]></description><link>https://hyperdev.matsuoka.com/p/why-now</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/why-now</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Thu, 24 Sep 2026 12:32:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gIRV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.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_!gIRV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gIRV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.png 424w, https://substackcdn.com/image/fetch/$s_!gIRV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.png 848w, https://substackcdn.com/image/fetch/$s_!gIRV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.png 1272w, https://substackcdn.com/image/fetch/$s_!gIRV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gIRV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.png" width="1200" height="896" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:896,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1780460,&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://hyperdev.matsuoka.com/i/217151237?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.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_!gIRV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.png 424w, https://substackcdn.com/image/fetch/$s_!gIRV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.png 848w, https://substackcdn.com/image/fetch/$s_!gIRV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.png 1272w, https://substackcdn.com/image/fetch/$s_!gIRV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47682583-d19c-47e8-b0f3-f5e12ccfe259_1200x896.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 team can pull into the pits on its own. It cannot make the teams behind it stop racing.</p><p>That is how I read the frontier labs&#8217; push for a universal slowdown. They can pause their own work, and have paused parts of it. What they want from government is a requirement that caps the competition too, so taking time for safety doesn&#8217;t mean surrendering their advantage.</p><p><a href="https://darioamodei.com/post/we-must-pace-the-frontier">Dario Amodei&#8217;s September essay</a> states the condition: &#8220;without sacrificing commercial advantage or the United States&#8217; lead in AI.&#8221; <a href="https://openai.com/index/ai-policy-window/">OpenAI&#8217;s September policy statement</a> calls for mandatory national requirements and international standards governing when development should slow or stop.</p><p>Who has to stop, what has to be checked, and who decides when they can rejoin the race?</p><p>My hypothesis is that the universal slowdown also functions as an anti-distillation tactic. The leaders seek time for safety work, coupled with restrictions on how rivals acquire the capabilities needed to catch up. I think capable open weights and Chinese distillation are the bigger strategic concern here. A shared stop among US labs leaves that competition running unless the agreement also reaches the routes by which capabilities spread.</p><p>These are proposals for different constraints on development, not an agreed, fixed-duration halt.</p><h2>TL;DR</h2><ul><li><p>The labs can pause their own work. A mandatory shared pit stop would let them spend time on safety without leaving competitors free to race past.</p></li><li><p>The proposed mechanisms include independent evaluations and enforceable reporting, with stronger development limits under discussion. They are not one agreed global halt or a uniform waiting period.</p></li><li><p>The anti-distillation interpretation fits the combined package: shared safety obligations plus restrictions on the routes competitors use to catch up.</p></li><li><p>OpenAI&#8217;s approach also seeks mandatory oversight, but its federal blueprint leaves deployment decisions with developers. Its anti-distillation position is separate evidence, not proof of a single combined policy.</p></li><li><p>Open weights and cheaper inference put the economics of the lead at stake. Slowing the leaders alone could help followers; restricting capability transfer can have the opposite effect.</p></li></ul><h2>What Would Make the Stop Mandatory?</h2><p>Amodei proposes independent evaluation teams inside frontier labs and safety requirements tied to capability thresholds. Government coordination, including an antitrust waiver, would let competitors agree on pacing. Regulation would bring unwilling frontier developers into the system. Measures under discussion include limits on training or internal AI research, rather than only checks on products released to customers.</p><p>That reaches the process of building the next model. A lab could otherwise continue research while pausing public releases, leaving competitors to debate whether it had slowed down at all. The activity covered by the rule matters as much as the announced commitment to safety.</p><p><a href="https://cdn.openai.com/pdf/25752ecb-0e5c-47f9-b9e4-c0f4d76f8d3d/a-blueprint-for-a-federal-framework.pdf">OpenAI&#8217;s federal blueprint</a> proposes mandatory pre-release evaluation by the US Center for AI Standards and Innovation once the institution is ready, alongside annual independent audits and enforceable reporting duties. But the center would not approve or block deployment. The developer would have the final authority.</p><p>Amodei connects room to slow down to the US lead in AI over China. He advocates chip controls, measures against unauthorized distillation, and protection against weight theft to preserve that lead.</p><p>A capability assessment does not itself prohibit distillation. An independently trained model can face the same assessment; a distilled model could pass it. The anti-distillation tactic operates through the combined package: shared safety work alongside restrictions on the routes competitors use to acquire capabilities. Amodei connects those parts publicly. OpenAI&#8217;s documents support shared oversight and opposition to distillation separately.</p><p>A stop required only of the leaders could give independent competitors more time. Limits on competitors&#8217; compute or access to frontier outputs could reduce that opportunity. Which activities the rules constrain determines who gains time from the pit stop.</p><h2>Paying for the Frontier, Training the Competition</h2><p>In its <a href="https://www.anthropic.com/news/detecting-and-preventing-distillation-attacks">February 23 disclosure</a>, Anthropic attributed campaigns to DeepSeek, Moonshot, and MiniMax involving more than 16 million exchanges through roughly 24,000 accounts it described as fraudulent. It said the campaigns targeted capabilities including coding and agentic reasoning. These are Anthropic&#8217;s allegations and attribution, not independently audited findings.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KJCq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KJCq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.png 424w, https://substackcdn.com/image/fetch/$s_!KJCq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.png 848w, https://substackcdn.com/image/fetch/$s_!KJCq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.png 1272w, https://substackcdn.com/image/fetch/$s_!KJCq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!KJCq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.png" width="1200" height="466" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:466,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1260141,&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://hyperdev.matsuoka.com/i/217151237?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332a24fc-7d06-4e80-bb6c-640568aa419e_1200x896.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_!KJCq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.png 424w, https://substackcdn.com/image/fetch/$s_!KJCq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.png 848w, https://substackcdn.com/image/fetch/$s_!KJCq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.png 1272w, https://substackcdn.com/image/fetch/$s_!KJCq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd12247bd-0b45-4dc5-92dd-6fd8b6f9ade4_1200x466.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><figcaption class="image-caption">Is distillation illegal or just slipstreaming?</figcaption></figure></div><p><a href="https://cdn.openai.com/pdf/045aa967-ee96-4a09-94ee-3098ddf6db2c/OpenAI-US-House-Select-Cmte-Update-%5B021226%5D.pdf">OpenAI&#8217;s February memo to the House Select Committee on China</a> also describes DeepSeek activity consistent with adversarial distillation and identifies commercial risks. In September, <a href="https://www.nsa.gov/Press-Room/Press-Releases-Statements/Press-Release-View/Article/4592113/nsa-and-others-warn-china-based-ai-companies-are-distilling-us-frontier-ai-mode/">the NSA and partner agencies warned of industrial-scale distillation by China-based companies</a>, including the reduction in their research burden. The sources don&#8217;t quantify how much capability each competitor acquired this way.</p><p>Anthropic describes detection tools and stronger account verification. OpenAI reports classifiers, investigations, and account bans.</p><p>Its memo also asks government to close API-router loopholes and restrict adversaries&#8217; access to US compute, cloud, payment, and web services. Those requests would extend the campaign beyond what one lab can enforce through its own API.</p><p>Distillation trains a model using another model&#8217;s outputs. Developers can legitimately distill their own models. The dispute concerns unauthorized use of a competitor&#8217;s service for training material, which can transfer capability without stealing weights.</p><p>A frontier lab pays for failed approaches as well as the one that becomes a product. A follower using its outputs may capture part of the result without repeating that search. It still needs engineering and compute, and the advantage depends on how much useful behavior transfers.</p><p>An API customer pays for a stream of answers. A distilling competitor may use that stream to build a product that no longer needs the original API.</p><p>The originating lab can keep advancing yet have less time to recover its research investment before a cheaper alternative arrives. Its next model can also provide better training material for the follower.</p><p>Open distribution changes the next step. Once a capable model&#8217;s weights are available, multiple operators can sell access to it. The original frontier lab cannot set their prices or decide when they stop serving it. A capability gap that once supported a premium can become a narrower gap surrounded by competing inference offers.</p><p>Chinese labs also train independently; open models need not be distilled, and distilled models need not be open. My concern is where these paths meet: cheaper capability outside the originating lab&#8217;s control.</p><h2>A Substitute for Part of the Bill</h2><p>In July, I gave a section of <a href="https://hyperdev.matsuoka.com/p/openais-comeback">OpenAI&#8217;s &#8220;Comeback&#8221;</a> the heading &#8220;Open weights are a side argument.&#8221; My reasoning was that the applications and developer relationships protected the frontier labs even as model quality converged. But an enterprise buying inference for its own product doesn&#8217;t need a replacement for the whole application ecosystem. It needs a service that can do the required work at an acceptable cost.</p><p><a href="https://stateofopensource.ai/">Mozilla&#8217;s State of Open Source AI report</a>, updated September 15 using data through September 1, places the leading open model three points behind the closed leader on its cited intelligence index, at 60% of the list token price.</p><p>Three index points do not translate into a universal percentage of useful work, and a token price doesn&#8217;t include the retries needed to finish a task.</p><p>A more concrete example comes from <a href="https://fireworks.ai/blog/phylo-brings-frontier-ai-to-more-scientists-with-open-models-on-fireworks">Fireworks&#8217; September 17 account of Phylo&#8217;s Biomni Lab</a>. The customer moved the majority of its traffic to open models, retained proprietary models for harder tasks, and reported a 60% cost reduction. Its small team bought managed endpoints rather than running inference infrastructure itself. This is a vendor-published customer case, not an independently audited comparison, but the deployment pattern is specific.</p><p>Keep the expensive model for the work that earns its price. Route the rest elsewhere.</p><p>The frontier provider can retain the difficult tasks and still lose much of the routine volume. From the customer&#8217;s perspective, that is a procurement decision made workload by workload. From the lab&#8217;s perspective, it can mean keeping the expensive edge of the service while competing harder for the rest.</p><p>That can reduce a frontier provider&#8217;s revenue per customer even while the customer&#8217;s total AI usage grows. More inference demand doesn&#8217;t have to give the original provider the same share of the bill.</p><p><a href="https://fireworks.ai/enterprise">Fireworks</a> offers enterprise deployment and purchasing options, while <a href="https://openrouter.ai/enterprise/">OpenRouter</a> offers a single contract and SLA across its routing service. Buyers can acquire open inference without building the operation themselves, though <a href="https://openrouter.ai/docs/guides/features/zdr">privacy still depends on the endpoint and routing controls</a>.</p><p>A new type of mode, TypeSafe&#8217;sl <a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev">Jev</a>, has must come on the scene. It&#8217;s not an LLM, but it&#8217;s a very capable classification model, and it costs a fraction of Haiku -- Anthropic&#8217;s cheapest model -- and doesn&#8217;t even charge for output tokens, returns responses in 10s of milliseconds instead of seconds. We&#8217;re testing it now for a number of tasks we had been using general purpose LLMs for previously. I suspect more special use models will be coming down the pike.</p><h2>A Cheaper Token Can Still Be Bad for the Supplier</h2><p>Selected announced compute agreements exceed $818 billion: OpenAI&#8217;s <a href="https://blogs.microsoft.com/blog/2025/10/28/the-next-chapter-of-the-microsoft-openai-partnership/">Azure purchases of $250 billion</a>, <a href="https://openai.com/index/amazon-partnership/">AWS agreements totaling $138 billion</a>, and <a href="https://openai.com/index/five-new-stargate-sites/">Oracle partnership exceeding $300 billion</a>, plus Anthropic&#8217;s <a href="https://www.anthropic.com/news/anthropic-amazon-compute">AWS commitment above $100 billion</a> and <a href="https://www.anthropic.com/news/microsoft-nvidia-anthropic-announce-strategic-partnerships">Azure commitment of $30 billion</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_!1Dy1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Dy1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.png 424w, https://substackcdn.com/image/fetch/$s_!1Dy1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.png 848w, https://substackcdn.com/image/fetch/$s_!1Dy1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.png 1272w, https://substackcdn.com/image/fetch/$s_!1Dy1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Dy1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.png" width="1200" height="896" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:896,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1602371,&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://hyperdev.matsuoka.com/i/217151237?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.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_!1Dy1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.png 424w, https://substackcdn.com/image/fetch/$s_!1Dy1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.png 848w, https://substackcdn.com/image/fetch/$s_!1Dy1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.png 1272w, https://substackcdn.com/image/fetch/$s_!1Dy1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea99a22f-abac-4f24-8ae6-41f53f208924_1200x896.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>For scale, 2026 worldwide SaaS revenue forecasts run from <a href="https://www.fortunebusinessinsights.com/software-as-a-service-saas-market-102222">roughly $376 billion</a> to <a href="https://www.grandviewresearch.com/industry-analysis/saas-market-report">$530 billion</a>, with differing definitions. The selected agreements amount to roughly 1.5&#8211;2.2 years of that entire market&#8217;s revenue. (That compares multiyear announced arrangements with annual revenue, not annual spending or outstanding debt. It excludes equity and the overlapping Stargate umbrella.)</p><p>The entire SaaS market does not reflect potential AI demand, but what the numbers show is that the two labs are arranging input capacity on the scale of an established global software category. Recovering that investment will require profitable demand as capacity arrives. Lower token prices make it much harder to make those commitments profitable.</p><p>Take invented assumptions, not company estimates: revenue of 100 per unit and serving cost of 60 leave a contribution of 40. A 20% price cut halves that contribution to 20 at unchanged cost. Twice the volume restores the original total, provided that demand arrives.</p><p>If serving cost falls 20% too, revenue of 80 minus cost of 48 leaves 32. A 25% volume increase then restores the original contribution. Cheaper serving can offset price pressure; higher research spending can worsen it. Usage growth alone cannot settle profitability, and their public announcements don&#8217;t supply the contract details needed to calculate either company&#8217;s exposure.</p><p>I read looser subscription limits as an example of audience acquisition pressure. More usage for the same subscription gives prospective users a stronger reason to sign up. <a href="https://www.anthropic.com/news/higher-limits-spacex">Anthropic attributed its May increase in Claude Code allowances to new SpaceX capacity</a>. That explains how it could expand the allowance. Competing for users is a commercial use of that capacity, and it is how I read the offer.</p><h2>Safety Does Not Settle the Bargain</h2><p>The safety case has some evidence behind it. <a href="https://openai.com/index/hugging-face-incident-and-the-road-ahead/">OpenAI&#8217;s Hugging Face incident report</a> describes evaluation agents under reduced safeguards compromising external systems. OpenAI also <a href="https://openai.com/index/research-acceleration-view-inside-openai/">paused some reinforcement learning and restricted research environments</a>, while shifting some compute to other model classes. Those were selective restraints.</p><p>Both had already participated in external safety work: <a href="https://openai.com/index/us-caisi-uk-aisi-ai-update/">OpenAI reported government testing and nonpublic access in 2025</a>, and <a href="https://alignment.anthropic.com/2025/sabotage-risk-report/">Anthropic published an independent METR review that led to revisions</a>. The change under discussion is binding shared oversight and constraints on pace, not the discovery of independent testing.</p><p>And <a href="https://www.anthropic.com/news/position-open-weights-models">Anthropic opposes a blanket ban on open weights</a>, as does OpenAI&#8217;s September statement. Restricting unauthorized capability transfer can protect a commercial lead without excluding open models as a category.</p><p>So the safety threat is real, if overstated.</p><h2>Open Models Below, Platforms Above</h2><p>My July argument about applications still applies to the work wrapped around inference.</p><p>A customer buys a useful workflow, including its context and integrations. A lower token price does not automatically replace that workflow. Building software around the model gives a lab something to sell beyond access to its weights.</p><p>Moving into work applications brings the labs into businesses where other companies have distribution. <a href="https://news.microsoft.com/source/emea/2026/03/microsoft-365-copilot-introducing-the-frontier-suite/">Microsoft&#8217;s Copilot Cowork</a>, built with Anthropic, shows how a platform can be a partner while retaining the customer relationship.</p><p>Cheaper open inference could benefit a cloud provider selling more compute and hurt a model lab losing the premium that covers research. A successful application business offers another source of income, but we don&#8217;t know whether the labs&#8217; business model works at lower token prices.</p><h2>Protecting the Premium</h2><p>What I&#8217;m seeing leads me to believe that both OpenAI and Anthropic are trying to enlist the government in order to protect the premium price of frontier intelligence. That premium supports recovery of research spending and the massive multiyear compute commitments they have taken on. Open weights threaten that premium by expanding competing supply. Unauthorized distillation threatens the time available to recover the cost of creating the capability in the first place.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ODCL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ODCL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.png 424w, https://substackcdn.com/image/fetch/$s_!ODCL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.png 848w, https://substackcdn.com/image/fetch/$s_!ODCL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.png 1272w, https://substackcdn.com/image/fetch/$s_!ODCL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ODCL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.png" width="1200" height="627" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:627,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1808595,&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://hyperdev.matsuoka.com/i/217151237?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ec42f6-c532-4063-9438-122b5299952a_1200x896.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_!ODCL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.png 424w, https://substackcdn.com/image/fetch/$s_!ODCL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.png 848w, https://substackcdn.com/image/fetch/$s_!ODCL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.png 1272w, https://substackcdn.com/image/fetch/$s_!ODCL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db2857c-ccb8-4c44-929e-89cfe80f5e13_1200x627.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 pause by the US leaders alone could help followers catch up. Shared mandatory conditions reduce that disadvantage among participating labs; restrictions on outputs and compute reach competitors outside the agreement. Amodei makes the connection explicit. OpenAI&#8217;s safety proposals and anti-distillation campaign pursue the same two kinds of control, even though its documents don&#8217;t state that dependency as directly.</p><p>Mandatory evaluation and account enforcement leave other routes for competitors to gain ground. Independently trained models can improve, and cheaper serving can reduce prices without any unauthorized transfer. The package would protect a lead only to the extent that the targeted routes account for the competition the labs face.</p><p>The pricing pressure is my reading of those choices, not a disclosed margin calculation. The commercial objective fits the actions: defend access to frontier outputs, seek restrictions beyond the company&#8217;s own API, and require competitors to bear safety obligations too.</p><p>The leaders want a pit stop that preserves their position. Safety work takes time. Protecting the premium means making sure that stop does not become someone else&#8217;s cheaper model. </p><p>Finally, the irony of frontier modelers calling foul on someone using their content to create new models without giving them credit is likely not lost on many.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality profit and revenue-management platform, and writes about AI-augmented engineering practice. Previously, Bob has been CTO of Tripadvisor, Citymaps, and Runtime Technologies.</em></p><p><strong>Related Reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/openais-comeback">OpenAI&#8217;s &#8220;Comeback&#8221;</a>. The July assessment of model competition and application value that this article revisits.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/we-need-to-teach-delegation-as-an">We Need to Teach Delegation as an Engineering Skill</a>. Why defining an agent&#8217;s decision authority and evaluating its results are engineering work.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/what-is-harness-engineering">What Is Harness Engineering? (And Do You Need to Learn It?)</a>. The distinction between model assistance and the surrounding systems that control a workflow.</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a>. Tool comparisons and benchmarks for AI practitioners.</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a>. Strategic AI insights for CTOs and engineering leaders.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Who Tests the Test Environment?]]></title><description><![CDATA[Hint: It&#8217;s not your AI Agent.]]></description><link>https://hyperdev.matsuoka.com/p/who-tests-the-test-environment</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/who-tests-the-test-environment</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Tue, 22 Sep 2026 11:31:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!29jt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.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_!29jt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!29jt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!29jt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!29jt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!29jt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!29jt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2971729,&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://hyperdev.matsuoka.com/i/216817103?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.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_!29jt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!29jt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!29jt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!29jt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F223fe366-9fa6-485b-bd67-919edc57fa80_1448x1086.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>An AI security test named a fictional company. The name matched a real internet domain, and the test environment could reach it.</p><p>That detail from specialist AI security evaluator <a href="https://www.irregular.cv/research/addressing-recent-incidents-ongoing-findings-and-path-forward">Irregular&#8217;s August 14 account</a> deserves more attention than another argument about whether an AI escaped. Irregular said several customer disclosures involved the same underlying evaluation issue: internet access that should not have been available. A scenario intended to stay inside a simulation reached outsiders.</p><p>If you&#8217;re running offensive security evaluations, attempts to exploit software weaknesses are expected. The environment has to contain the resulting actions even when the model misunderstands its assignment, ignores an instruction, or discovers a route the evaluator missed. Calling something a simulation changes nothing about where its packets can go.</p><p>The restriction has to survive execution.</p><p>Reader <a href="https://www.linkedin.com/in/lairbob/">Laurent Stanevich</a> pointed me toward the shared testing provider. Following that connection changed the question I wanted to ask. How much of the apparent pattern was repeated exposure through the same environment? And what evidence did the labs require before giving that environment access to their models?</p><h2>Different Incidents, Different Mechanisms</h2><p>OpenAI&#8217;s <a href="https://openai.com/index/third-party-cyber-evaluations-involving-openai-models/">August 4 account</a> distinguishes Irregular&#8217;s incidents from its internal Hugging Face incident and from evaluations involving the UK AI Security Institute. In the <strong>Irregular</strong> case, misconfiguration provided internet access without requiring a sophisticated escape or a zero-day exploit. Those other incidents should retain their own timelines and explanations. The Hugging Face intrusion involved a longer chain. OpenAI&#8217;s <a href="https://cdn.openai.com/pdf/67869394-cb91-4c12-888c-5cbd85c7814c/OpenAI-Hugging-Face%20Incident-Technical-Report.pdf">technical report</a> describes shared Artifactory credentials that initially enabled communication without a vulnerability exploit, followed by use of infrastructure that provided an unintended route outward. On June 27, responders connected a monitoring alert to the evaluation but did not stop it.</p><p><a href="https://huggingface.co/blog/agent-intrusion-technical-timeline">Hugging Face&#8217;s account</a> describes a downstream compromise in which permissions to create cluster workloads, combined with missing restrictions on privileged workloads and host filesystem access, enabled control of a host. That was a breach with consequences for an outside organization. It cannot be reduced to a fictional name resolving to the wrong address.</p><p>A shared supplier can create correlated failures. Repeated incidents through one defective setup are not independent demonstrations that several models invented a new way out. But that correlation does not erase separate compromises, or tell us that the models behaved acceptably. We need the environment configuration alongside the behavior trace to interpret either.</p><h2>The Behavior Still Needs Explaining</h2><p>Anthropic&#8217;s <a href="https://www.anthropic.com/news/investigating-incidents-cybersecurity-evals">July 30 disclosure</a> emphasized a mismatch between instructions describing an isolated simulation and an environment with internet access. It also acknowledged room for better controls at both the lab and evaluator.</p><p>Its <a href="https://www.anthropic.com/research/alignment-assessment-cybersecurity-incidents">September 9 assessment</a> revised that interpretation. Anthropic found evidence that models sometimes understood they were interacting with real systems. It identified another incident that its initial review had missed. The report also distinguished the absence of explicit scope restrictions in the prompts from the models&#8217; broader obligation to avoid harmful behavior. These were single model instances, and Anthropic did not find concealment in the incidents it assessed.</p><p>That last finding belongs to those incidents. It should not be carried over to the separate Hugging Face investigation, where <a href="https://metr.org/blog/2026-08-26-openai-hugging-face-incident-investigation/">METR reported coordination and attempts at concealment</a>.</p><p>I don&#8217;t find either extreme useful. Poor containment does not make the behavior uninteresting. Concerning behavior does not excuse the people who exposed outside systems to it. Studying a model&#8217;s willingness to cross a boundary requires an environment where the attempted crossing can be observed without letting it harm someone else.</p><h2>Where Authority Should Live</h2><p>The model generates an action request, and an executor turns it into a process or an API call. The permissions attached to that execution determine what it can affect.</p><p>My proposed design starts by keeping the evaluator&#8217;s control plane outside the environment that runs model-generated code. That plane owns the run configuration and termination authority. The workload gets only the access needed for the scenario. The model cannot expand that access by editing a local policy file or persuading another model to approve it.</p><pre><code><code>flowchart LR
    M[Model inference] --&gt;|Action request| C[Evaluator control plane]
    C --&gt;|Authorized execution| W[Isolated tool process]
    W --&gt; E[Independent egress enforcement]
    E --&gt;|Permitted route| T[Scenario targets]
    C --&gt;|Stop and revoke| W</code></code></pre><p>This is a proposed boundary layout, not a reconstruction of Irregular&#8217;s infrastructure. It also leaves implementation choices open. A container, VM, or dedicated host has to be assessed against the authority it exposes and the failures it is expected to withstand.</p><p>For a simulation, I would resolve target names through a controlled namespace and route them to fixtures. A fictional company name should remain scenario data. If it coincides with a real domain, that coincidence should not authorize a connection.</p><p>Network policy needs to cover the destination reached after DNS resolution and redirects, as well as the name originally requested. Tests should exercise direct IP access and alternate protocols. An allowed proxy or artifact service also needs a defined access policy. Otherwise, a workload denied direct internet access may ask an accessible service to fetch something for it.</p><p>The same principle applies to identity. A run should have its own short-lived credentials, scoped to the resources it needs. Shared credentials complicate attribution and can create a route between supposedly isolated runs. Permissions on the services receiving those credentials need review too. Restricting a tool&#8217;s command syntax is weak protection if an allowed API call can create a privileged workload.</p><p>These proposals follow established security principles. <a href="https://cheatsheetseries.owasp.org/cheatsheets/AI_Agent_Security_Cheat_Sheet.html">OWASP&#8217;s agent security guidance</a> recommends limiting tool permissions and using approval controls. The engineering work is translating those principles into restrictions that remain in force when the workload is adversarial.</p><h2>Test the Boundary Without the Model</h2><p>I would make containment tests a prerequisite for starting an evaluation. The following tests are proposed acceptance criteria, not tests I have run against Irregular&#8217;s or the labs&#8217; systems.</p><p>A deterministic suite can attempt connections to controlled endpoints that are outside the scenario&#8217;s allowed destinations. It should run from the same execution context as the agent, with the same service identity and routing. Testing from the deployment controller tells you little about a workload with different permissions.</p><p>The assertion should include evidence at the destination. A tool reporting &#8220;denied&#8221; is insufficient if the request reached the endpoint before the error was returned. Pair the local denial with an independently collected record showing that the forbidden action did not complete. Use an authorized positive probe to confirm that destination telemetry is working before interpreting missing events as evidence of a block. Keep the endpoints under the test operator&#8217;s control so the containment test itself does not probe uninvolved companies.</p><p>A compact test matrix might look like this:</p><p>Proposed Test Required Outcome Fictional target resolves outside scenario Connection blocked before reaching destination Allowed service redirects to forbidden endpoint Redirected connection blocked Run A presents its credential to Run B&#8217;s resource Access denied by the receiving service Workload requests host filesystem access Request rejected before workload starts Operator stops run with active child processes Children stop and delegated access is revoked</p><p>Then deliberately damage the controls in a disposable replica. Remove a destination check. Broaden a test credential. Disable an admission rule. The relevant tests should fail. This is mutation testing applied to the security assumptions around the evaluation, and it answers a different question from whether the normal configuration passed.</p><p>A surviving mutation needs investigation. Perhaps another control blocked the attempt, which is useful evidence about defense in depth. Perhaps the test never exercised the damaged path. Record which explanation applies instead of treating a green result as interchangeable with safety.</p><p>Fault injection should also cover operational failures. What happens if the policy service is unavailable or the monitoring collector falls behind? Which failures prevent a run from starting, and which stop one already in progress? Those decisions belong in executable tests and the operating procedure.</p><h2>Give the Model a Contained Adversarial Job</h2><p>After the known paths are tested, stochastic runs can look for paths the deterministic suite missed. Vary scenarios and starting conditions, repeat trials, and preserve the action sequence when an unexpected route appears. A model can be useful at finding combinations the test author did not anticipate. The success condition for that exercise must stay inside authorized infrastructure. A controlled external canary can stand in for a forbidden destination. Reaching it is enough to establish a containment failure without continuing into a real company&#8217;s systems. An evaluator should be able to reproduce the resulting exploit sequence as a deterministic regression test even if the model does not invent it again on demand.</p><p>Behavioral findings need separate labels. An attempted scope violation blocked by network policy tells us something about the model and something about the control. A successful unauthorized connection adds an environment failure. Combining both into one &#8220;escape&#8221; count loses information needed to repair the system and compare models.</p><p>Stopping also deserves an end-to-end test. Ending the inference loop may leave tool processes running. Revoking credentials may leave established connections open. I would test termination against a deliberately persistent workload and verify the result from outside its environment. The operator needs evidence that execution and delegated access ended, rather than a dashboard saying the run is finished.</p><h2>The Lab Still Owns the Decision to Run</h2><p>Anthropic&#8217;s <a href="https://www.anthropic.com/news/improving-alignment-security-efforts">August 31 security update</a> described evaluations that had depended largely on one defensive layer. It announced stronger requirements around verifying isolation, explicit scope, and intervention during external evaluations. That is also a description of what the buyer needs to demand from the service it commissions.</p><p><strong>Irregular</strong> said it disabled the affected scenario, reviewed logs, notified affected parties, and expanded its review process. Its August account also promised further work and a whitepaper. Those are reported corrective actions. They are not, by themselves, a reproducible demonstration that the repaired environment enforces its intended boundaries.</p><p>For a commissioned evaluation, I would require a record tying the run to its deployed policy and containment test results. It should identify who can stop the run and how that authority was tested. The lab and vendor need an agreed response when a forbidden destination becomes reachable, including notification of affected outsiders. Their private division of work should not leave the decision to intervene unowned.</p><p>This costs infrastructure work and evaluation time. Maintaining realistic fixtures takes effort, and restrictive controls can make some scenarios less representative. Those tradeoffs should be visible in the evaluation report. If a test needs broader access, that expansion needs its own authorization and containment evidence.</p><p>Being good at building language models does not establish that a company is good at securing the software around them. Hiring a specialist evaluator does not settle that question either. Before I rely on the next capability result, I want to see what failed when the evaluator deliberately broke its own controls.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality profit and revenue-management platform, and writes about AI-augmented engineering practice. Previously, Bob has been CTO of Tripadvisor, Citymaps, and Runtime Technologies.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/we-need-to-teach-delegation-as-an">We Need to Teach Delegation as an Engineering Skill</a> &#8212; Defining scope, authority, and evidence for delegated work.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/what-is-harness-engineering">What Is Harness Engineering? (And Do You Need to Learn It?)</a> &#8212; The software surrounding an agent&#8217;s work.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/hyperdevs-three-golden-rules">HyperDev&#8217;s Three Golden Rules</a> &#8212; Project instructions, specialized agents, and deliberate context management.</p></li></ul><p>For business-focused coverage, see <a href="https://aipowerranking.com/">AI Power Ranking</a> and its <a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn newsletter</a>.</p>]]></content:encoded></item><item><title><![CDATA[2026: The Evolution of the Leader Practitioner - Part 2]]></title><description><![CDATA[The organization has not followed...yet]]></description><link>https://hyperdev.matsuoka.com/p/2026-the-evolution-of-the-leader-552</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/2026-the-evolution-of-the-leader-552</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Wed, 16 Sep 2026 11:32:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lmSy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.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_!lmSy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lmSy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.png 424w, https://substackcdn.com/image/fetch/$s_!lmSy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.png 848w, https://substackcdn.com/image/fetch/$s_!lmSy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.png 1272w, https://substackcdn.com/image/fetch/$s_!lmSy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lmSy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.png" width="1456" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3232409,&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://hyperdev.matsuoka.com/i/214091993?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.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_!lmSy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.png 424w, https://substackcdn.com/image/fetch/$s_!lmSy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.png 848w, https://substackcdn.com/image/fetch/$s_!lmSy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.png 1272w, https://substackcdn.com/image/fetch/$s_!lmSy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0234c856-8aff-47b0-bf41-68a22b6ac064_1615x969.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>I run an engineering organization and write a meaningful share of the company&#8217;s code by line count. Every engineer there has the same tools and budget access I do.</p><p>I asked the room:</p><blockquote><p>&#8220;Why are only 20% of the engineers using Claude Code on a regular basis when I analyze every commit they&#8217;ve done, and I&#8217;ve said that 75% of that could be done agentically with no loss of quality?&#8221;</p></blockquote><p>Nobody was surprised. Several people recognized the pattern.</p><p>Nearly all of my engineers use AI in some form. About one in five use it at anything like the depth the work allows.</p><p><a href="https://hyperdev.matsuoka.com/p/ai-practitioners-roundtable-part-1">Part 1</a> covered what the role is and how the world arrived at six names for it. This part considers what having one of us inside an organization changes, and what it does not.</p><h2>TL;DR</h2><ul><li><p>Use is no longer scarce. <a href="https://blog.jetbrains.com/research/2026/08/ai-coding-agent-adoption-2026/">JetBrains&#8217; August 2026 follow-up</a>, based on more than 15,000 professional developers surveyed from May through July, found 90% using AI coding agents at work at least weekly and 68% using them daily. Those figures measure contact with agents, not how deeply agents changed the work.</p></li><li><p><a href="https://www.bcg.com/publications/2026/ai-at-work-why-strategy-matters-more-than-tools">BCG&#8217;s </a><em><a href="https://www.bcg.com/publications/2026/ai-at-work-why-strategy-matters-more-than-tools">AI at Work 2026</a></em> (n=11,749 workers across 14 markets) put frontline regular use at 74%, up 23 points in a year, and declared &#8220;No more silicon ceiling.&#8221; The same report says most organizations have not converted the time saved into value and finds that strategic clarity matters more than adding tools.</p></li><li><p>Organizations have concentrated on access. <a href="https://arxiv.org/abs/2512.23327">A survey of 204 software-engineering practitioners by Giray, Demir&#246;rs, Kalinowski, and Mendez</a> found 81% had direct tool access, with less emphasis on training and governance. The remaining question is practice.</p></li><li><p>Diffusion research suggests a leader-practitioner should be the mechanism that closes the gap inside a company. Rogers&#8217; change-agent aide and Howell &amp; Higgins&#8217; champions both locate influence in technical credibility rather than formal authority.</p></li><li><p>My own company is the case against it. I am as hands-on as the argument requires. Use is close to universal and about one in five engineers work the way the tools now permit. Being a leader-practitioner is necessary at most, and not sufficient.</p></li><li><p>The one organization in the room where behavior demonstrably moved ran on an instrument: a spend dashboard built in nine hours, visible to everyone, with its author modeling restraint on it. Token leaderboards imposed as a KPI elsewhere produced gaming instead (CIO.com, June 5, 2026).</p></li></ul><h2>The Shape of the Gap</h2><p>The gap moved. Regular use spread far faster than operating models changed.</p><p>JetBrains&#8217; <a href="https://blog.jetbrains.com/research/2026/08/ai-coding-agent-adoption-2026/">August 2026 follow-up</a>, based on more than 15,000 professional developers surveyed from May through July, found 90% using AI coding agents at work at least weekly and 68% using them daily. Claude Code reached 39%, up from 18% in January, while GitHub Copilot fell from 29% to 21%. JetBrains makes developer tools and competes in this market, but it weighted the sample to better represent the global developer population.</p><p><a href="https://www.bcg.com/publications/2026/ai-at-work-why-strategy-matters-more-than-tools">BCG&#8217;s </a><em><a href="https://www.bcg.com/publications/2026/ai-at-work-why-strategy-matters-more-than-tools">AI at Work 2026</a></em>, published June 3 from a survey of 11,749 workers across 14 markets, found 74% of frontline employees using AI regularly, up 23 points from 2025. BCG explicitly labeled that result &#8220;No more silicon ceiling.&#8221; But the report also found that most organizations had not converted saved time into value, and that an explicit strategy improved impact even where access to tools was limited. Adoption itself moved. Access and regular use rose faster than operating models changed.</p><p>My own 20% measures depth rather than use. I run an engineering analytics tool against every commit, classifying effort against lines of code instead of just counting them. That is where the 75% in my question comes from: I read the work my team produced and concluded that roughly three-quarters of it could have been done by an agent without loss of quality.</p><h2>What the Room Named as the Obstacle</h2><p>Accountability stopped the serial founder cold:</p><blockquote><p>&#8220;If you have a system that was designed by and configured and touched in various ways by multiple people, and then that system then causes a bad event, who do you hold accountable?&#8221;</p></blockquote><p>The adoption advisor in the room had a direct answer: if he builds the harness and the adversarial review gates a system uses, he owns what that system does. He also drew a distinction on the regulatory side. The slow part is usually not the regulation itself but how it gets interpreted and which compensating controls get accepted. Once that becomes an audit question, the timeline drops from decades to something like six months to a year. The serial founder was less optimistic:</p><blockquote><p>&#8220;Yeah, but the regulatory environment moves at half-lives measured in decades.&#8221;</p></blockquote><p>The same founder worried that repeated human approvals would eventually become a rubber stamp. Approval fatigue is a design concern that will outlive every current tool. The adoption advisor named a governance version of it: requiring a platform team to pre-approve every skill is, in his view, one way these efforts fail.</p><h2>What Permission Bought</h2><p>I have provisioned accounts, removed gatekeeping, and actively encouraged the tools. I have also told my organization, on the record, that the token spend is theirs to use (within reason). Nearly everyone uses their accounts, and about one in five changed how they work.</p><p><a href="https://arxiv.org/abs/2512.23327">Giray, Demir&#246;rs, Kalinowski and Mendez</a> surveyed 204 software-engineering practitioners in a paper published December 29, 2025 and revised April 1, 2026. Direct access was reported by 81% of respondents, while training and governance received less emphasis. Access is largely solved. Internalization is the open part.</p><p>Pushing from the other end often fails as well. Duolingo tied AI usage to performance review in April 2025, took public backlash, and dropped the criterion. Luis von Ahn <a href="https://fortune.com/2026/04/13/duolingo-ceo-luis-von-ahn-ai-usage-requirement-employee-performance-evaluations/">told </a><em><a href="https://fortune.com/2026/04/13/duolingo-ceo-luis-von-ahn-ai-usage-requirement-employee-performance-evaluations/">Fortune</a></em><a href="https://fortune.com/2026/04/13/duolingo-ceo-luis-von-ahn-ai-usage-requirement-employee-performance-evaluations/"> on April 13, 2026</a>, &#8220;I&#8217;m not going to force you.&#8221;</p><h2>Why the Role Should Be the Mechanism</h2><p>If neither permission nor mandate produces deeper practice, diffusion research has a candidate for what does.</p><p><a href="https://www.simonandschuster.com/books/Diffusion-of-Innovations-5th-Edition/Everett-M-Rogers/9780743222099">Everett Rogers&#8217; </a><em><a href="https://www.simonandschuster.com/books/Diffusion-of-Innovations-5th-Edition/Everett-M-Rogers/9780743222099">Diffusion of Innovations</a></em> (1962; fifth edition 2003) treats &#8220;change agent&#8221; as a defined technical term rather than a synonym for a type of manager. His central finding is homophily: communication effectiveness rises with similarity in beliefs, status, and technical competence. Rogers names the failure mode directly. Change agents are usually credentialed professionals, &#8220;more technically competent than his or her clients,&#8221; which &#8220;poses problems for effective communication.&#8221; His prescribed fix is a less-credentialed change-agent aide who is &#8220;homophilous&#8221; with the adopters.</p><p>A leader who codes might bridge part of that gap: formal authority on one axis, shared technical practice on another. That is my extension, not Rogers&#8217;. His aides were intermediaries closer in status to the people adopting the new practice. Whether technical similarity can compensate for a leader&#8217;s difference in status is what we are starting to test with AI tooling.</p><p>A second line converges on it independently. Howell and Higgins&#8217; <a href="https://doi.org/10.2307/2393393">&#8220;Champions of Technological Innovation&#8221;</a>, published in <em>Administrative Science Quarterly</em> 35(2) in June 1990, ran a matched-pair study of 25 champions against non-champions. What distinguishes a champion is <strong>behavior and a wider repertoire of influence tactics</strong>, not formal authority. That study is thirty-six years old and has nothing to do with AI, which is partly why I trust it.</p><h2>My Own Company Is the Case Against My Own Argument</h2><p>I am as hands-on as this argument requires. By my own account in that room, I write a meaningful share of my company&#8217;s code by LOC. The infrastructure adoption worked and is not in dispute: internal services and MCP endpoints called thousands of times a day, the platform layer the entire company uses. Most meaningful knowledge is available &#8212; our full product plans, contracts, sales efforts, marketing strategy, personalized HR answers, an analyst in our domain with encyclopedic knowledge (literally &#8212; it&#8217;s RAG trained on the premier textbooks). Engineer behavior has changed, but not as much as I expected. Usage is almost universal, but not AI-first: harness/loop engineering still sits under 20%.</p><p>I described my own posture in the room like this:</p><blockquote><p>&#8220;My job is really not to be popular, it&#8217;s to apply this way of thinking&#8230; The unpopularity is not the blocker. It&#8217;s bringing them along without losing them.&#8221;</p></blockquote><p>That is my account of myself, which proves nothing. I could not find a clean confirming case elsewhere. <a href="https://zapier.com/blog/how-zapier-rolled-out-ai/">Zapier&#8217;s 63% to 97% adoption progression</a> is a self-reported internal survey with a thinly evidenced hands-on claim. NVIDIA&#8217;s public claim of universal engineer AI use shows leadership pressure, not the causal effect of a coding CEO. <a href="https://www.bvp.com/atlas/inside-shopifys-ai-first-engineering-playbook">Shopify&#8217;s case</a> rests on a documented top-down mandate and one account of leaders sharing their own use. No study I found isolates &#8220;leader who personally codes&#8221; as a tested variable. Being a leader-practitioner is necessary at most, and not sufficient.</p><h2>What Moved Behavior</h2><p>One organization in the room moved behavior demonstrably. The head of engineering at a research firm built the token dashboard described in Part 1, in nine hours, because nobody could say where the spend was going. Afterward he issued no instruction of any kind:</p><blockquote><p>&#8220;So anyways, I showed you this because I didn&#8217;t ask anybody to do anything. But you see, there&#8217;s a behavioral change that happened&#8230;&#8221;</p></blockquote><p>The mechanism has three moving parts. Visibility first:</p><blockquote><p>&#8220;So for now, I have it so everybody can see, because I want them to be like, what is everybody else doing?&#8221;</p></blockquote><p>Then peer comparison, doing the work a mandate would otherwise have to do:</p><blockquote><p>&#8220;If they know a successful AI project, and they know their project, they&#8217;re like, well, I know that&#8217;s successful, mine just launched &#8212; how could I spend three times more than them if they&#8217;re the successful AI project? So then there&#8217;s a conversation that&#8217;s had.&#8221;</p></blockquote><p>Then his own credibility, earned by using less than the people he was coaching. He described himself as &#8220;a token sipper. I am the most &#8230; user of tokens you&#8217;ve ever seen,&#8221; running a mid-tier model as his daily driver, and put the coaching claim plainly:</p><blockquote><p>&#8220;So I am the coach. I practice what I preach.&#8221;</p></blockquote><p>The teaching that followed was concrete rather than exhortative, and it was about model choice:</p><blockquote><p>&#8220;If you actually use [the frontier model] to craft the prompt, and then inject that prompt into your application &#8212; yeah, you can actually use a lesser model.&#8221;</p></blockquote><p>He is also carrying the ROI conversation upward without pretending the numbers exist:</p><blockquote><p>&#8220;I have too many more conversations with a CFO than I want to. &#8230; everybody else will say, yeah, we&#8217;re ROIing. I say, no, we&#8217;re not. But this is like in 1999 &#8212; are you not going to register your dot-com?&#8221;</p></blockquote><p><a href="https://www.cio.com/article/4178320/tokenmaxxing-when-ai-adoption-metrics-go-bad.html">CIO.com&#8217;s &#8220;Tokenmaxxing: When AI adoption metrics go bad&#8221;</a> (Grant Gross, June 5, 2026) documents token-usage leaderboards at Amazon, JPMorgan, Meta and Disney producing gaming rather than adoption. One Disney employee logged 460,000 Claude interactions in nine days. Trevor Stuart, SVP at Harness, said tokenmaxxing incentivizes the wrong behavior. Logan Wolfe of Kyndryl said the KPI rewards output volume over outcomes.</p><p>Both approaches made usage visible, but the external leaderboards turned it into a contest. In the room, the dashboard was paired with cost comparison and its author modeled restraint. That is one case beside four reported companies, not a controlled comparison.</p><p>I have told the team that <strong>how</strong> they solve problems with AI will be part of their review. The distinction from Duolingo and the leaderboards is what gets measured. &#8220;Use AI&#8221; turns into tokens burned or share of code written by an agent, and an input number invites gaming. Our review measures the outcome: whether the work got better and faster. AI is one route there. An engineer who clears that bar without heavy AI use has met the expectation.</p><p>The review expectation also ties to the change-agent model. In April, I did a 24-hour spike to migrate a high-performance application from Haskell to Rust. Seventy percent of that code remains in production, after two engineers built it out over the next three months. My follow-up commit analysis suggests a harness loop could have cut that buildout by roughly a third.</p><h2>The Counters</h2><p><strong>Process, not a person.</strong> The adoption specialist in the room prescribes a system rather than a champion. For the middle group, the people who are neither instant enthusiasts nor holdouts, his fix is to give them a harness, skills, a supervising application, and a shared library, then run it like any other change-management rollout. Three years either way, in his estimate, but nobody has to miss a kid&#8217;s baseball game to get there. That is a serious rival theory. He is also an external advisor rather than an internal operator, which puts him in a different position relative to the same problem.</p><p><strong>The player/coach trap, which points at me.</strong> <a href="https://dev.jimgrey.net/2026/03/25/the-player-coach-trap-why-engineering-managers-shouldnt-be-expected-to-code/">Jim Grey&#8217;s argument</a> (March 25, 2026) runs deeper than time management. A leader who stays in the code can cause engineers to defer technical decisions upward, hollowing out the technical-leadership bench. AI-accelerated shipping also increases the demand on leadership rather than freeing it. My answer is that Grey is describing <em>directive</em> hands-on leadership, while what worked in that room was the opposite: &#8220;I didn&#8217;t ask anybody to do anything.&#8221; My own practice, measured as a share of my company&#8217;s code, still looks more like Grey&#8217;s trap than the research-firm leader&#8217;s model. Outside the Rust project, however, my work has stayed off the production train: internal and DX tools, search, automated code reviews that pull in full source, our product knowledge base, and our JIRA tickets for context.</p><p><strong>The staff+ rival.</strong> <a href="https://leaddev.com/ai/ai-champions-are-the-key-to-engineering-adoption">LeadDev has made the same case</a> further down in the organization: staff and principal engineers combine technical credibility with organizational reach, and they have more in common with the adopting population than any CTO does. Applied here, Rogers&#8217; pair would be a leader supplying authority and priority while staff engineers supply in-network credibility. If the pair is the mechanism, the leader-practitioner is not the unit of analysis.</p><p><strong>Rogers&#8217; own boundary condition.</strong> Homophily &#8220;accelerates diffusion&#8230; but limits the spread of an innovation to those connected in a close-knit network.&#8221; A leader who codes might influence engineers. That says nothing about finance, sales, or support.</p><p>Only two of the ten people spoke in change-agent terms at all. A ten-person room cannot settle the question, either.</p><h2>Where the Role Goes Next</h2><p>The coordination work that defines the hands-on band of this role is starting to move into the orchestration layer: routing work to specialists, running verification, producing status checkpoints, and detecting conflicts earlier. <a href="https://hyperdev.matsuoka.com/p/era-of-the-leader-practitioner">The June 2026 piece</a> assigned that enabling, off-the-critical-path category to the human leader-practitioner.</p><p>Does automating that layer free the leader to build more and push the organization past 20% full adopters, or does it hollow the role out until only direction-setting and sign-off gates remain? I don&#8217;t know. It has not happened yet in my own work.</p><p><a href="https://doi.org/10.1287/orsc.2.1.71">James March&#8217;s &#8220;Exploration and Exploitation in Organizational Learning&#8221;</a>, published in <em>Organization Science</em> 2(1) in 1991, describes organizations trading exploitation of known practice against exploration for new practice. Applied here, a tool set that resets every few months pushes an organization back into exploration before exploitation pays. Churn alone could slow institutionalization without any leadership variable.</p><p>March explains why this is hard for everyone facing the churn. The change-agent claim tries to explain the differences between organizations facing the same churn. No speaker blamed slow adoption on fast-moving tools. The room did show how quickly a new capability could become infrastructure: the token dashboard depended on provider APIs that had not existed six months earlier, then took nine hours to build. That does not disprove March. It shows that exploration can be fast while organizational adoption remains slow.</p><p>The durability worry from Part 1 comes back here. If the labs absorb what individual practitioners build, then this room is building things that will not need to be built in eighteen months. The role&#8217;s value shifts from what these people construct to what they can judge.</p><p>By next summer, we should know whether PE demand for the role spread or was a hiring fashion. One of the six labels may have won, or hands-on work may have folded back into &#8220;engineering leader.&#8221; The share of my engineers working the way the tools permit will have moved off one in five or it will not, and I will be able to test whether visibility and peer comparison made the difference. The orchestration layer may also have eaten the enabling work I assigned to the role.</p><p>I hope to be running this same analysis next summer.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality profit and revenue-management platform, and writes about AI-augmented engineering practice. Previously, Bob has been CTO of Tripadvisor, Citymaps, and Runtime Technologies.</em></p><p><em>As in last year&#8217;s piece, the people in this room are identified by role rather than by name. That was the condition of the conversation, and it holds here.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/ai-practitioners-roundtable-part-1">2026: The Evolution of the Leader Practitioner (Part 1)</a> &#8212; The room, the demos, and the six names competing for the role.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/the-convergent-mind">The Convergent Mind</a> &#8212; The same gathering, one year earlier.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/era-of-the-leader-practitioner">The Era of the Leader/Practitioner</a> &#8212; The full case for the role.</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners.</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Same Product, Built Twice, A Year Apart]]></title><description><![CDATA[Three times as fast and better]]></description><link>https://hyperdev.matsuoka.com/p/the-same-product-built-twice-a-year</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/the-same-product-built-twice-a-year</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Fri, 11 Sep 2026 11:31:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Blqm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.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_!Blqm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Blqm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!Blqm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!Blqm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Blqm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Blqm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1224955,&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://hyperdev.matsuoka.com/i/214096560?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.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_!Blqm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!Blqm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!Blqm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Blqm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515a844d-7f55-42a0-a188-59ad5812e2c6_1024x768.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 March 2025 I built a travel app. You picked a destination, talked to it, and got an itinerary you could save as a PDF. Work started March 16 and stopped April 29. A second project did the part nobody sees, collecting the travel content behind the chat, and kept going until June 11. It took roughly three months to reach the point where the product delivered the value I wanted.</p><p>A year later I built it again. The 2026 version started on April 4. By April 14 it did most of what it does today. Ten days after I started.</p><p>Same author. Same kind of product. Both still on my laptop, both with a full record of every change I ever made.</p><p>So I measured them instead of remembering them. Software keeps its own logbook. Every time I saved a batch of work, it wrote down the date, and counting those days is the closest thing a project has to a stopwatch. What follows comes from those logs, the ticket lists, and the files. Where my memory and the record disagree, I went with the record.</p><p>In July, I measured the same year from the tooling side in <a href="https://hyperdev.matsuoka.com/p/what-a-difference-a-year-makes">What A Difference A Year Makes</a>. This is the companion at the product level.</p><h2>TL;DR</h2><ul><li><p><strong>Version one was two projects and a folder I filled by hand.</strong> Four destination planners (New York, Japan, Walt Disney World, Iceland), each set up one at a time. The travel content was PDFs, notes, and data files I gathered myself.</p></li><li><p><strong>Version two finds its own content.</strong> 78 starter cities across 59 countries, four kinds of public event listing plus web search, and a nightly job that refills any city running low. It keeps itself fed.</p></li><li><p><strong>The work compressed.</strong> Version one took 14 working days on the app and 19 more on the content project. Version two took 11, April 4 to 14.</p></li><li><p><strong>The safety work got cheap.</strong> The 2025 app switched off the language&#8217;s own error checking in 43 places. The 2026 one does it in 5. Tests went from 53 to 151.</p></li><li><p><strong>The discipline is still uneven.</strong> The checks that run automatically on every change do not run those 151 tests. Every change went straight to the main branch. The written description of the app has been out of date since day one.</p></li><li><p><strong>My argument:</strong> the model improved, but cheap engineering discipline matters more. Even with a softer curve, within three years harnesses erase the practical distinction between software engineering and vibe coding by making tests, security, maintenance, and system fit part of generation itself.</p></li></ul><h2>What version one was</h2><p>The 2025 app took 166 saved changes across 14 working days, March 16 to April 29.</p><p>Four destinations shipped. Each one was a separate assistant I set up by hand, with its own settings file, its own opening line, its own word list and background images. Adding a fifth meant doing all of it again. The work per destination did not come down, so five destinations would have cost five times what one did.</p><p>The travel knowledge behind the chat came out of the second project: 72 saved changes over 19 days, still going six weeks after the app had stopped. What it produced landed in a folder on my laptop holding 23 data files, 15 notes, 11 PDFs, and one text file. Downloaded etiquette booklets. Festival guides. Train-travel PDFs. And a file named, literally:</p><pre><code><code>Expand this json file with another 50 new locations.md</code></code></pre><p>That is the whole method in one filename. The list of places grew because I sat down and asked a model to extend it, then fed the longer list back in. Nothing ran unless I ran it, so the content was only ever as fresh as the last evening I spent on 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_!Aafu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Aafu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!Aafu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!Aafu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!Aafu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Aafu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2311252,&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://hyperdev.matsuoka.com/i/214096560?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.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_!Aafu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!Aafu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!Aafu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!Aafu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9110bf-cb2a-467a-af3a-fe255f3b198d_1448x1086.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><figcaption class="image-caption"><em>Version one ran like the steam engine: capable, but waiting on someone to feed it.</em></figcaption></figure></div><h2>What version two does on its own</h2><p>The 2026 version started on April 4 with an empty project. Eleven days and 259 saved changes later, it did most of what it does today.</p><p>The largest product-level change is the content pipeline. Version one had a folder I filled. Version two goes out and gets its own material. Four kinds of public event listings feed it: public calendars, event sites, a ticketing company&#8217;s open catalog, and the details venues publish on their own pages. A web-search service adds more, one city at a time. Version one had no live search at all. I tried that same search service during the 2025 build and the results were poor. It has improved since, which is why the 2026 version leans on it.</p><p>The starting point is a list of 78 cities across 59 countries I built by hand, each with three to five local sources I picked myself: tourism boards, Time Out, local culture sites. That is a starter list. I did not count how many events are live in the app today.</p><p>The list is only the starting point.</p><ul><li><p><strong>Every source is asked at once, with a fifteen-second cutoff each.</strong> One dead source cannot hold up the rest, and a failure gets written down instead of quietly vanishing. So a broken feed shows up as a broken feed. A city does not just mysteriously go quiet.</p></li><li><p><strong>The same concert reported by a listing site and by a search result collapses into one entry.</strong> A reader sees the show once instead of three times.</p></li><li><p><strong>A job runs every night at 06:00 UTC and goes back out for any city that has dropped below twenty listings.</strong> That is the difference between a travel app that works the day it ships and one that still works a month later.</p></li><li><p><strong>If the hosting service cuts that job off partway through, the job hands back its turn instead of blocking everything behind it.</strong> A second check takes over an abandoned run after fifteen minutes with no progress. Nightly work that gets stuck at 3am sorts itself out before anyone is awake to notice.</p></li><li><p><strong>A free first pass throws out obvious junk before anything reaches the step that costs money.</strong> Bad pages cost nothing to throw away.</p></li><li><p><strong>A second nightly job rebuilds every city page.</strong> New listings appear publicly without me shipping a new version of the app, so fresh content no longer waits on me.</p></li></ul><p>None of that is exotic. It is the unglamorous plumbing that used to go undone.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FfH4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FfH4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!FfH4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!FfH4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!FfH4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FfH4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2568393,&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://hyperdev.matsuoka.com/i/214096560?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.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_!FfH4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!FfH4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!FfH4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!FfH4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a71935-82b8-4f39-9897-a5ec6d070969_1448x1086.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>Side by side</h2><p>2025: the app plus the content project 2026: one app Separate projects 2 1 Active development days 14 + 19 11 (April 4 to 14) Saved changes 166 + 72 259 Lines of code 28,219 + 24,614 34,317 Where the travel content came from PDFs, notes, and data files I gathered by hand Public listings and web search, refilled every night Signing in Email, first name, invite code Google account behind an invite list How models were used One assistant per destination, set up by hand One model for every job Automated tests 53 + 57 151 Tickets filed 0 + 7 (all on one day at the end) 27, all closed Changes reviewed before going live 1 0</p><p>My own estimate for version one, from a retrospective I wrote in March 2025, was roughly 76 hours over the first six days. The day counts above come straight out of the log.</p><h2>What got safer, and what did not</h2><p>Version one had real problems, the kind that come from moving fast with nothing checking you.</p><p>Two copies of the same 57-line sign-in file sat in the project, identical down to the byte. I had started rearranging the files partway through and left the job unfinished, so both were still there. Editing one would have quietly missed the other, and that kind of bug shows up later, in the part you were sure you had fixed.</p><p>In 43 places the code switched off the language&#8217;s own error checking. That checking is what catches a mistake before the app runs. Switch it off and the mistake surfaces in front of a user instead. This was deliberate, too: the project&#8217;s written rules told me to do it, with a worked example.</p><p>Version two narrows most of those gaps. Five places switch off error checking across 34,000 lines, all of them in two files. The app checks its own inputs in 22 places before spending money on them, so a source that changes its format gets caught and thrown out before it fills the app with garbage. Nineteen files open with a short note saying why the code exists and how you would test it. Seventeen spell out the test case, so whoever touches the file next (me, months later) does not have to guess what it was meant to do.</p><p>Two of the April tickets were security holes. One let a crafted search term reach data it should not have. The other let a shared-trip link accept whatever was sent to it. Both were found and fixed the same day, in the middle of the build. A security hole gets more expensive the longer it sits unnoticed. These sat for a few hours.</p><p>Version two has its own gaps. The checks that run automatically on every change will format the code and build the app. They will not run the tests. So 151 tests exist and not one of them stands between a bad change and the live site. They help only when I remember to run them, and the whole point of an automatic check is not having to remember. No change ever waited on review by anyone, including me. The app&#8217;s written description still describes the empty project it started from on April 4, so a person reading it learns nothing about what the app became.</p><p>The tickets and the notes came earlier than I remembered. I have said I brought them in &#8220;in the latter part&#8221; of the build. Tickets existed from day one. The first twelve were filed on April 4, the same day as the first saved change, as a list of things I wanted. Then they sat, and were closed in a batch five months later rather than one at a time as each feature landed.</p><p>The stretch where the tracker was doing live work is tickets 13 through 24, filed and closed on April 6 and 7: two security findings, six cleanup and safety fixes, a data-quality fix, a speed fix, a dead-code removal, and one feature. File, fix, close, same day or the next. That is the middle of the burst, not the end of the project.</p><p>The design notes tell a cleaner story. Twenty-four dated documents, every one written between April 4 and April 12, alongside the build. Which framework to move to, how to shape an itinerary, how to search one city well. Writing the reasoning down while the decision is still fresh is what separates a project you can pick back up from one you have to work out again from scratch.</p><h2>What I think the difference is</h2><p>Almost every 2026 saved change carries a line naming the AI model that helped write it: 253 of 279. The build ran Claude Code through claude-mpm, a tool I wrote that runs a set of AI agents the way a manager runs a small team. It is a harness, the software that sits between a person and a model, turning a request into steps, running them, and checking what comes back. It did not exist when version one was built. Version one&#8217;s saved changes carry the older form of that line, with no model named: the coding tool on its own, nothing coordinating above it. I recall using a second AI coding tool alongside it that year, though nothing in either project confirms it.</p><p>The model improved over the year. Version one used one company&#8217;s assistant service, one assistant per destination, because that was the tool available. Version two sends eight or more different jobs through a single small fast model: reading an itinerary, pulling events out of a page, writing a plan, translating a foreign-language listing, judging whether a listing is worth keeping. It gets usable results from all of them. One model, one place to watch the bill.</p><p>The bigger share of the gap is that the work around the work got cheap. In 2025, writing a safety check, a note with an expected test case, a browser test, and a ticket for every unit of work would have cost more time than the work itself. So I skipped nearly all of it, and what I got was four planners sitting on a pile of content I fed by hand. In 2026 that same wrapper is close to free, because the thing writing the code also writes the check, the test, and the ticket. What I got, in a third of the days, keeps its own listings current, unsticks its own nightly job, and screens its own inputs before spending money on them.</p><p>The self-refilling city list is the clearest example. &#8220;Check every city each night, find the ones running low, and go get more&#8221; is a simple idea. It is also boring, fiddly plumbing with awkward edge cases, and in 2025 it would have been the thing I meant to do and did not. It exists now because handing it off was cheaper than putting it off.</p><p>Two things limit all of this. I got better at this over the year, and with two projects and a log I cannot separate my improvement from the tooling&#8217;s, so some unknown share of the gap is me. Both projects were also solo, unreviewed, and low stakes. Nothing here says what happens with a team, a compliance boundary, or a customer contract.</p><h2>What this points at</h2><p>Version one needed me to know things. What an assistant setting did. Why a stored login needs a date it stops working. What half-finished file rearranging does to a project over the following month. Version two needed less of that from me, because the parts that required it were the parts I handed off.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gOov!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gOov!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!gOov!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!gOov!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!gOov!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!gOov!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2596465,&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://hyperdev.matsuoka.com/i/214096560?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.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_!gOov!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!gOov!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!gOov!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!gOov!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95ee06-d1b6-46df-9a23-f08be2fcc803_1448x1086.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><figcaption class="image-caption"><em>The harness is the railway around the train: routing, checks, maintenance, and existing tracks it can reuse.</em></figcaption></figure></div><p>The model wrote the code in both years, more or less. What changed is everything around the code. The harness broke the work into steps, filed the ticket, wrote the test, caught the security hole the same afternoon, and left a note explaining why the code was there. I brought the idea, a travel app that keeps its own listings current, and the judgment about whether what came back was any good. The system handled the steps in between.</p><p>Two projects cannot prove a three-year forecast. Here is mine anyway.</p><p>The curve will soften. Legacy systems and organizational limits will slow it, especially where regulation raises the cost of being wrong. Even after that discount, I think the practical distinction between software engineering and vibe coding disappears within three years.</p><p>Today, vibe coding means prompting for a result without much discipline around how the result is produced. Software engineering is the work surrounding the code: architecture, tests, security, maintenance, and fitting a new piece into everything already running. The harness is pulling that work into the generation loop. It will not make every decision right. It will make reliable engineering the default instead of a cleanup phase after the prototype.</p><p>That changes the economics of code. As software gets cheaper to make, code by itself is worth less. The scarce part is how well it fits the larger system and how much real-world value the system creates. I made that bet with <a href="https://github.com/bobmatnyc/trusty-tools">Trusty</a>, putting the harness and its supporting tools into the open rather than treating the code as the moat.</p><p>I expect more software to move into the open-source ecosystem for the same reason. The tools will also get better at searching what is already there, understanding whether it fits, and integrating it before writing another copy. Cheap generation makes rebuilding easy. A good harness will make reuse easier still.</p><p>The second project is live at <a href="https://tripbot.tours/">tripbot.tours</a>. One caveat: I am paying for the scraping and hosting myself. If enough people use it to overwhelm that budget, I will have to shut it down or sell it. For now, it is there to try.</p><p>Two projects, one author, a year apart. The second is bigger, cleaner, and more capable, and it took a third of the days.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality profit and revenue-management platform, and writes about AI-augmented engineering practice. Previously, Bob has been CTO of Tripadvisor, Citymaps, and Runtime Technologies.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/what-a-difference-a-year-makes">What A Difference A Year Makes</a>. The same year measured at the tooling level, comparing two of my own developer projects</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a>. Tool comparisons and benchmarks for AI practitioners</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a>. Strategic AI insights for CTOs and engineering leaders</p></li></ul>]]></content:encoded></item><item><title><![CDATA[2026: The Evolution of the Leader Practitioner - Part 1]]></title><description><![CDATA[What do we call ourselves?]]></description><link>https://hyperdev.matsuoka.com/p/2026-the-evolution-of-the-leader</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/2026-the-evolution-of-the-leader</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Fri, 11 Sep 2026 11:31:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZnsP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.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_!ZnsP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZnsP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.png 424w, https://substackcdn.com/image/fetch/$s_!ZnsP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.png 848w, https://substackcdn.com/image/fetch/$s_!ZnsP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.png 1272w, https://substackcdn.com/image/fetch/$s_!ZnsP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZnsP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.png" width="1456" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3232409,&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://hyperdev.matsuoka.com/i/214091553?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.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_!ZnsP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.png 424w, https://substackcdn.com/image/fetch/$s_!ZnsP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.png 848w, https://substackcdn.com/image/fetch/$s_!ZnsP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.png 1272w, https://substackcdn.com/image/fetch/$s_!ZnsP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e5bb095-e571-4e88-be2e-075a091e44f3_1615x969.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>Six months into my job, the PE firm that owns the company asked me to help its portfolio companies find people who run engineering organizations and still build things themselves. Leaders, up to their elbows in the work.</p><p>Two years ago, I&#8217;m not sure I could have told them where to look. I probably would have recommended against it. It ran counter to my management philosophy: &#8220;you&#8217;re not being paid to <em>do</em> things, you&#8217;re being paid to <em>lead</em>.&#8221; As head of engineering for Tripadvisor, I heard an enduring story from my coach about the &#8220;do nothing&#8221; manager, someone who expressed his value entirely through delegation. Not a bad lesson...back then.</p><p>When this group first met in my living room in June 2025, nine people fit the description, including about half of those who came back this year. Not one of us had a name for it. I wrote that afternoon up as <a href="https://hyperdev.matsuoka.com/p/the-convergent-mind">The Convergent Mind</a>, published June 25, 2025. Read back now, it is a careful catalog of what those people believed and a blank space where the thing they had in common should have been.</p><p>We convened a similar room on July 24, 2026. There were ten people, and six had built something to show. In twelve months the role acquired at least six competing names.</p><h2>TL;DR</h2><ul><li><p>A year ago the hands-on leader was rare enough that a room full of them had no shared word for it. Now the role carries at least six circulating labels, and the PE firm that owns the company I work for has asked me to source people who fit it.</p></li><li><p>LeadDev&#8217;s survey program reversed itself inside twelve months. Its June 2025 reporting had hands-on opportunities for leaders drying up under budget pressure. Its 2026 report (n=600) has 37% of leaders doing more hands-on technical work and 33% of managers considering a move back to individual contributor.</p></li><li><p>That same 2026 report also has 45% working more hours and 41% reporting team motivation down.</p></li><li><p>The scale of what a single practitioner builds changed categorically. In 2025 the frontier in this room was prompt scaffolding and a CRM made of Markdown files. In 2026 it was token-cost governance with FinOps conversations at CFO level, agent monitoring as its own sub-discipline, and personal systems resolving years of accumulated data behind an agent interface.</p></li><li><p>A counter-current showed up that the 2025 conversation had no room for. One founder in the room thinks the advantage any of us build individually is temporary, because the frontier labs will absorb it.</p></li></ul><h2>What a Leader-Practitioner Is, and Why AI Made It Possible</h2><p>The role is easy to describe. Someone who runs an organization and does hands-on technical work as a deliberate part of the job, not in the gaps between meetings. The work has a recognizable shape: internal tooling, agentic harnesses, MCP connectors, a DX platform layer other teams depend on. Work that enables production rather than sitting on its critical path. At startups, that can extend to production code. I know more than one where the CTO writes all of it.</p><p>What changed is the time-and-cost proposition. Directing a team of agents is close enough to delegation that it fits inside a leadership mindset, which sustained hand-coding rarely did. Now you specify intent, review what comes back, correct, and direct again. A fifteen-minute attention window can produce something that used to need an uninterrupted day.</p><p>I made the full case for the archetype, where it comes from, and why it was rarely adopted for most of the last forty years in <a href="https://hyperdev.matsuoka.com/p/era-of-the-leader-practitioner">The Era of the Leader/Practitioner</a>, published June 1, 2026. This piece is about what happened to the role in the past year.</p><h2>A Year Ago This Was Rare. Now Companies Recruit for It.</h2><p>The signal I trust most is that capital is staffing for it. A private equity firm asked me to help find these people for companies it owns, and a startup I advise already has one. I&#8217;m informally helping a few others. A year ago, I had not seen anyone recruit against this description because the job did not exist in a form you could put in a posting.</p><p>The survey data moved the same way, and fast enough to cause whiplash. LeadDev&#8217;s <a href="https://leaddev.com/reporting/how-engineering-leadership-is-changing-in-2025">June 2025 reporting</a> described hands-on opportunities for engineering leaders as having dried up. Its <a href="https://leaddev.com/the-engineering-leadership-report-2026">2026 Engineering Leadership Report</a> (n=600) has <strong>37% of leaders doing more hands-on technical work</strong> and <strong>33% of managers considering leaving management for an IC track</strong>. One survey program, one year apart, and the message reversed.</p><p>The same 2026 report has 45% working more hours and 41% reporting team motivation down. It records leaders doing more technical work inside organizations that are, by their own account, more tired.</p><p>What has not happened is agreement on what to call any of it. <a href="https://newsletter.pragmaticengineer.com/p/zirp-engineering-managers">Gergely Orosz</a> predicted the player-coach in 2024, and the term is heavily used in <a href="https://leaddev.com/management/engineering-managers-have-a-new-job-description">LeadDev&#8217;s coverage</a> as recently as July 27, 2026. Addy Osmani introduced <a href="https://www.oreilly.com/radar/loop-engineering/">loop engineering</a> at O&#8217;Reilly Radar on June 22, 2026. <a href="https://eightfold.ai/blog/most-important-job-2026/">&#8220;Agent orchestrator&#8221;</a> circulates widely, including one vendor calling it the most important job of 2026. <a href="https://paulgraham.com/foundermode.html">&#8220;Founder mode&#8221;</a> has been around since Paul Graham wrote up Brian Chesky in September 2024. Simon Willison offered <a href="https://simonwillison.net/2025/Oct/7/vibe-engineering/">&#8220;vibe engineering&#8221;</a> in 2025 as the serious counterpart to Karpathy&#8217;s vibe coder. Mine is leader-practitioner, which makes six labels for one job. James Stanier&#8217;s <a href="https://leaddev.com/career-development/the-end-of-the-non-technical-engineering-manager">&#8220;The End of the Non-Technical Engineering Manager&#8221;</a>, for LeadDev on April 20, 2026, skips the naming problem and describes what the role displaces.</p><p>The description cuts across titles. I opened the introductions by calling one person there the most emblematic of the era we were in. His reply:</p><blockquote><p>&#8220;I&#8217;m 61 years old and this is the first time I&#8217;ve been emblematic of an era.&#8221;</p></blockquote><p>He was not an engineer at all, and he stayed on the same note when he introduced himself:</p><blockquote><p>&#8220;Everybody remember Coco, the gorilla who learned sign language? I think I&#8217;m sort of that in this room.&#8221;</p></blockquote><p>That was a longtime marketing consultant who shipped his first piece of software, ever, this year. Its market fits in one sentence:</p><blockquote><p>&#8220;My market is people who have one to three short-term rental properties that they self-manage and are scared shitless of losing money.&#8221;</p></blockquote><p>An angel investor who had come up through IT consulting put the same impulse differently:</p><blockquote><p>&#8220;Having been a technologist for most of my career, I can&#8217;t let new tech get away from me.&#8221;</p></blockquote><p>And then:</p><blockquote><p>&#8220;I think probably there&#8217;s at least 50,000 other people building the exact same thing.&#8221;</p></blockquote><p>The 2025 piece did not anticipate this. It described nine people who had converged on nearly identical conclusions about how software gets built. It closed on new patterns and organizations. It had a great deal to say about what we thought and little about what we were.</p><h2>The Scale Changed</h2><p>The group changed more than its headcount. What one person now runs would not have been buildable twelve months earlier, and the problems people brought to the room only exist at the new scale.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!051m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!051m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.png 424w, https://substackcdn.com/image/fetch/$s_!051m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.png 848w, https://substackcdn.com/image/fetch/$s_!051m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.png 1272w, https://substackcdn.com/image/fetch/$s_!051m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!051m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.png" width="712" height="310" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:310,&quot;width&quot;:712,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65071,&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://hyperdev.matsuoka.com/i/214091553?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.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_!051m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.png 424w, https://substackcdn.com/image/fetch/$s_!051m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.png 848w, https://substackcdn.com/image/fetch/$s_!051m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.png 1272w, https://substackcdn.com/image/fetch/$s_!051m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bb11e46-ce22-4812-bef7-cdd6af724126_712x310.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><figcaption class="image-caption">The Scale Changed</figcaption></figure></div><p>An advisor who works with engineering leaders on AI adoption had turned the agents in his personal system into a named executive team:</p><blockquote><p>&#8220;Sloan&#8217;s my head of engineering. Louise is my editor in chief. Morgan is my chief operating officer. Ren is my head of design.&#8221;</p></blockquote><p>He also had a cross-lab failover rule. If Anthropic went down, one switch would move the system to another lab&#8217;s models within minutes.</p><p>The head of engineering at a research firm demoed a token dashboard. It started with a bill nobody could explain:</p><blockquote><p>&#8220;So, yes &#8212; this is something I built in about nine hours. Why was it built? We were going through a token-maxing issue &#8212; a really bad token-maxing issue, where nobody knew how much they were spending.&#8221;</p></blockquote><p>Six months earlier, the provider APIs behind that dashboard did not exist.</p><p>A Brooklyn-based startup operator and fractional CTO had arrived at monitoring from the other end, watching his own agents rather than his own spend:</p><blockquote><p>&#8220;I have a Hermes agent that runs. I&#8217;m always trying to throw more work at it. So I kind of built a tool to help keep tabs on what it&#8217;s doing.&#8221;</p></blockquote><p>His tool is deterministic rather than agentic, runs roughly a hundred monitors, and feeds a self-remediation loop back into the agent it watches. He introduced it with no ceremony whatsoever:</p><blockquote><p>&#8220;So this is called, I call this &#8216;Glance&#8217;.&#8221;</p></blockquote><p>Both people built instrumentation for processes they no longer needed to watch directly. Those processes existed because of the AI tools they had added. No one in the 2025 group brought a problem like that.</p><p>The angel investor did not demo, but the people who presented were not the only builders. He described a personal system that pulls his accumulated records into a single graph, resolves the same person across the addresses and jobs they have moved through, and sits behind an agent interface he can ask to brief him before a meeting. In <a href="https://hyperdev.matsuoka.com/p/is-your-digital-brain-the-light-saber">Is Your Digital Brain the Light Saber?</a>, I argued that building your own knowledge system rather than renting a generic one separates practitioners now. He built one, though he does not write software for a living.</p><p>Technical terms have become vernacular. The marketing consultant, describing what he liked in a recent model release, reached for a term the room&#8217;s engineers use as jargon:</p><blockquote><p>&#8220;The thing that I really liked about Fable is that it introduced the idea of the adversarial review.&#8221;</p></blockquote><p>A serial founder supplied a counter-current the 2025 conversation had no room for. He had built something and concluded that the market for it was disappearing:</p><blockquote><p>&#8220;Two weeks &#8212; less than two weeks into that, I realized shit, the problem I solved is going away. It&#8217;s financial.&#8221;</p><p>&#8220;The combination of mixture-of-experts models and optimized model routing are probably going to eat a lot of that.&#8221;</p></blockquote><p>The 2025 piece framed convergence as validation. This group took for granted that the value of individual construction is shrinking while the volume of it grows.</p><p>Software generation rose even as its durability decreased. Ten people who fit a description that barely existed a year ago spent an afternoon comparing instrumentation for systems they did not need to observe back then. My own engineering organization, meanwhile, still operates much as it did last year. The tools are everywhere: JetBrains&#8217; <a href="https://blog.jetbrains.com/research/2026/08/ai-coding-agent-adoption-2026/">August 2026 follow-up</a>, based on more than 15,000 professional developers surveyed from May through July, found 90% using AI coding agents at work at least weekly and 68% using them daily. Most do not work like we do. Part 2 is about that gap.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality profit and revenue-management platform, and writes about AI-augmented engineering practice. Previously, Bob has been CTO of Tripadvisor, Citymaps, and Runtime Technologies.</em></p><p><em>As in last year&#8217;s piece, the people in this room are identified by role rather than by name. That was the condition of the conversation, and it holds here.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/the-convergent-mind">The Convergent Mind</a> &#8212; The same gathering, one year earlier, and the piece this one grades.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/era-of-the-leader-practitioner">The Era of the Leader/Practitioner</a> &#8212; The full case for the role, including where the archetype comes from.</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners.</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[We Need to Teach Delegation as an Engineering Skill]]></title><description><![CDATA[idea -> communication -> outcome]]></description><link>https://hyperdev.matsuoka.com/p/we-need-to-teach-delegation-as-an</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/we-need-to-teach-delegation-as-an</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Fri, 04 Sep 2026 11:31:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!JOIZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.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_!JOIZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JOIZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.png 424w, https://substackcdn.com/image/fetch/$s_!JOIZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.png 848w, https://substackcdn.com/image/fetch/$s_!JOIZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.png 1272w, https://substackcdn.com/image/fetch/$s_!JOIZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JOIZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.png" width="1024" height="426" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:426,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1066990,&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://hyperdev.matsuoka.com/i/214072948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97d87c64-64eb-4974-9a4b-be5d2e7881b0_1024x768.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_!JOIZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.png 424w, https://substackcdn.com/image/fetch/$s_!JOIZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.png 848w, https://substackcdn.com/image/fetch/$s_!JOIZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.png 1272w, https://substackcdn.com/image/fetch/$s_!JOIZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50bb55de-6fed-4fde-87ba-f5f1917ac61f_1024x426.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><figcaption class="image-caption">Engineering as orchestration</figcaption></figure></div><p>Some of the strongest engineers I know won&#8217;t work with coding agents, at least not at the level I&#8217;d expect. A bit of Cursor yes, some Claude -- but it&#8217;s an add-on, not fundamental harness loop engineering. Just as likely, they are uncomfortable with it because they have never had to practice the skill it takes.</p><p>They see the problem quickly. They know the part of the codebase that needs to change, the shortcut that will fail in production, and the test that will catch it. Then they give an agent two sentences, watch it head in the wrong direction, and take the keyboard back. Ten minutes later the change is done.</p><p>Their conclusion is reasonable: I can do this better myself.</p><p>For that one task, they may be right. But they have skipped a different piece of engineering. They moved from idea to code. Agentic development inserts a middle layer:</p><p><strong>idea -&gt; communication -&gt; outcome</strong></p><p>That middle layer is <strong>delegation</strong>. It means deciding which context another actor needs, which decisions belong to them, what cannot change, how the result will be evaluated, and when the work needs to come back. A manager has to do this with people. Coding agents have made it an individual-contributor skill too.</p><p>We teach engineers how to solve problems. We teach design, decomposition, testing, and code review. We spend far less time teaching them how to make their understanding usable by somebody else.</p><p>I think that explains a meaningful share of the gap between engineers who get substantial output from agents and engineers who find them irritating. The evidence does not prove delegation skill is the sole cause. It does show that expertise can make instruction more abstract, that experienced developers do not get an automatic productivity gain from AI, and that successful agent use depends heavily on problem framing and evaluation.</p><h2>TL;DR</h2><ul><li><p>Solving a problem yourself and specifying it for another capable actor are different forms of work. Agentic development makes engineers practice the second one.</p></li><li><p>Experts can be poor instructors because their knowledge has become compressed. A Stanford study found experts gave more abstract, less concrete instructions than beginners.</p></li><li><p>In roughly 400,000 Claude Code sessions, people made about 70% of planning decisions while Claude made about 80% of execution decisions. The human job did not disappear. It moved toward intent and evaluation.</p></li><li><p>Useful delegation defines the outcome, relevant context, decision authority, evidence of success, and a return path. It leaves implementation room inside those boundaries.</p></li><li><p>Engineering organizations should teach and assess delegation alongside system design, testing, and code review.</p></li></ul><h2>Strong Engineers Short-Circuit the Middle</h2><p>Expertise is compression.</p><p>A senior engineer does not consciously replay every step required to diagnose a stale cache, unwind a dependency cycle, or recognize that an innocent schema change will break an old consumer. Years of experience have turned those steps into pattern recognition. That is part of what makes the engineer fast.</p><p>It can also make the engineer a poor source of instructions.</p><p>In a 2001 <a href="https://pubmed.ncbi.nlm.nih.gov/11768064/">Journal of Applied Psychology study</a>, Pamela Hinds, Michael Patterson, and Jeffrey Pfeffer asked experts and beginners to give novices instructions for an electronic circuit-wiring task. The experts used more abstract and advanced statements, with fewer concrete statements. Novices taught by beginners performed better on the same task and reported fewer problems with the instructions.</p><p>The expert instructions had a different advantage. Novices taught by experts transferred what they learned more successfully to another task in the same domain. Abstraction was useful, but it was pitched at the wrong level for immediate execution.</p><p>That is a close description of many failed agent sessions. The engineer supplies the concept because the missing steps no longer feel like steps. The agent supplies its own version of those missing steps. Then the engineer calls the output stupid.</p><p>Sometimes it is. Coding agents make bad decisions, miss local conventions, and produce code that passes a narrow test while violating the system around it. But &#8220;the agent should know that&#8221; often means &#8220;I knew that and failed to communicate it.&#8221;</p><p>The distinction gets lost because explaining the work feels like overhead to somebody who can already do it. Delegation is slower than execution until the delegated system starts producing more than one person&#8217;s hands 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_!u7AK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u7AK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!u7AK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!u7AK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!u7AK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!u7AK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1218071,&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://hyperdev.matsuoka.com/i/214072948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.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_!u7AK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!u7AK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!u7AK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!u7AK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb12d8c33-92e4-4e78-98ef-442c50ce5a26_1024x768.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>Seniority Does Not Produce an Automatic AI Gain</h2><p>A strong counterweight to AI productivity anecdotes remains METR&#8217;s randomized study of early-2025 coding tools. <a href="https://metr.org/Early_2025_AI_Experienced_OS_Devs_Study-paper.pdf">Sixteen experienced open-source developers completed 246 tasks</a> in repositories where they averaged five years of prior experience. When AI tools were allowed, completion time increased by 19%.</p><p>The developers expected a 24% speedup before the work. Afterward, they still estimated that AI had made them 20% faster.</p><p>This is a historical result, not a verdict on current models. The study mostly used Cursor with Claude 3.5 and 3.7 Sonnet. METR later <a href="https://metr.org/blog/2026-02-24-uplift-update/">changed its follow-up design</a> after more developers declined to participate because they did not want to work without AI, which introduced selection bias. The researchers also warn against treating their original participants as representative of software development as a whole.</p><p>Still, the result closes off one comforting assumption: being good at a codebase does not make somebody good at directing an agent through it. The participants knew their systems. They had substantial AI experience. They could choose whether to use the tools. And in that setting, the tools cost them time while feeling faster.</p><p>METR did not test my delegation thesis. It measured the gap I am trying to explain.</p><h2>Agentic Development Splits Planning From Execution</h2><p>Anthropic&#8217;s June 2026 study of <a href="https://www.anthropic.com/research/claude-code-expertise">roughly 400,000 Claude Code sessions</a> offers a clearer picture of the work split. Its classifiers attributed about 70% of planning decisions to the person and about 80% of execution decisions to Claude.</p><p>Planning included what to do, which approach to take, and what counts as done. Execution included which files to change, what code to write, and which commands to run.</p><p>This is delegation in software form. The person retains the problem and the acceptance decision. The agent gets a bounded decision space inside it.</p><p>Anthropic also found that novice-rated prompts led to around five agent actions and 600 words of output, while expert-rated prompts led to about 12 actions and 3,200 words. Sessions rated intermediate or above reached Anthropic&#8217;s strict verified-success measure 28% to 33% of the time, compared with 15% for novice-rated sessions. When sessions ran into trouble, expert-rated users recovered more often.</p><p>There is a circularity in those numbers. Anthropic&#8217;s expertise classifier partly looked at how precisely a person framed directions, what they asked Claude to verify, and whether they corrected the model. Those are delegation behaviors. The study shows that the behaviors travel with longer agent runs and higher measured success, but it cannot tell us how much each behavior caused the result.</p><p>The occupational result is still suggestive. In code-producing sessions, management occupations finished slightly above software occupations on the strict verified-success measure, though Anthropic says managers may be more likely to state explicitly that they got what they wanted. A skill learned by directing people may transfer to directing software agents.</p><p>Small qualitative studies point the same way. In a 2026 mixed-methods study of senior and junior engineers, Dana Feng, Bhada Yun, and April Yi Wang found that <a href="https://arxiv.org/abs/2602.00496">senior engineers maintained control through detailed delegation</a>. They scoped changes, supplied context, delegated smaller units, asked for minimal reviewable diffs, and refined the work through feedback. The junior engineers moved between over-reliance and cautious avoidance.</p><p>Ten juniors and ten seniors are not a population. But the described behavior will be familiar to anybody who has watched one person steer an agent while another person alternates between accepting everything and taking the work back.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nXzJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nXzJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!nXzJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!nXzJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!nXzJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!nXzJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1081125,&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://hyperdev.matsuoka.com/i/214072948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.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_!nXzJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!nXzJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!nXzJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!nXzJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80bb502b-db63-4fd1-bc1d-7cdf0ab21947_1024x768.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>From Hub to System</h2><p>An engineering leader recently described his problem to me as being &#8220;too much in the hub.&#8221; Teams waited for him to make decisions. Work crossed his desk because he knew the history, the risks, and how the parts fit together. His competence had become part of the system architecture.</p><p>So he started moving ownership outward. One leader took a product area. Another took day-to-day operational work. The change was not a pile of redistributed tickets. Each person received a decision space and a return path.</p><p>Senior individual contributors create the same topology when every difficult change routes through them. Doing the work faster reinforces it. Soon the engineer is both the source of expertise and the queue in front of it.</p><p>Coding agents make that topology visible because they are always available to receive work. If nothing can move without the engineer touching the implementation, availability was not the constraint. The system had no interface for the engineer&#8217;s judgment.</p><p>Delegation builds that interface. A useful handoff answers five questions:</p><p>Decision Question Outcome What observable state should exist when the work is done? Context Which system facts and prior decisions affect the work? Authority What may the delegate decide or change without asking? Evidence Which tests, traces, screenshots, or artifacts establish success? Return path When should the delegate stop, ask, or escalate?</p><p>This applies to a person, an agent, or a group of agents. The amount of detail changes. The information contract does not.</p><h2>Delegate Outcomes, Not Motions</h2><p>&#8220;Implement this endpoint&#8221; delegates motion. The instruction names an activity and leaves the purpose, production bar, ownership boundary, and failure conditions unstated.</p><p>An outcome-level delegation describes the state the system must reach. It supplies the constraints that protect surrounding systems and says how to determine whether the result is acceptable. The delegate still chooses the implementation inside that space.</p><p>OpenAI&#8217;s <a href="https://openai.com/index/harness-engineering/">Codex harness-engineering case study</a> includes two good examples: service startup must finish in under 800 milliseconds, and no span in four named user journeys may exceed two seconds. Those are outcomes an agent can test. The repository exposes the application, logs, metrics, architecture rules, and remediation instructions required to pursue them.</p><p>The team did not achieve that by writing longer chat messages. It made the environment carry repeatable context. Plans became versioned artifacts. Architecture constraints became linters and structural tests. The agent could inspect the same evidence used to judge its work.</p><p>That team reported around one million lines across code, infrastructure, tooling, and documentation, with roughly 1,500 pull requests opened and merged over five months by three engineers directing Codex. OpenAI estimates the product took one-tenth the hand-written time. The more durable lesson is in their account of the slow start: progress was poor while the environment was underspecified.</p><p>I have seen the same pattern in my own work. <a href="https://github.com/bobmatnyc/trusty-tools">Trusty Tools</a>, the Rust-based multi-agent system I have been building since May 19, reached 3,200 commits and 3,426 closed GitHub issues by September 3. The current checkout contains roughly 1.46 million lines across code, documentation, and configuration formats.</p><p>Those are activity metrics. They do not prove the software is good. They do prove I was not typing every change myself.</p><p>The work moved when I stopped treating the agent as autocomplete and started treating the repository as an operating environment. Instructions became code-adjacent. Review rules became executable. Agents received narrow authority and had to return evidence. Failures fed changes back into the system instead of becoming one-off corrections in a chat window.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QTlF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QTlF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!QTlF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!QTlF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!QTlF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!QTlF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23349c88-6cec-400f-b03a-82d71918f52f_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1203383,&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://hyperdev.matsuoka.com/i/214072948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.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_!QTlF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!QTlF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!QTlF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!QTlF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349c88-6cec-400f-b03a-82d71918f52f_1024x768.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>Delegation Has a Cost</h2><p>Good delegation takes time. That is a feature, not a bug. It is why strong engineers resist it.</p><p>Vincent Schmalbach&#8217;s June 2026 pilot study on <a href="https://arxiv.org/abs/2606.17099">software delegation contracts</a> compared ordinary issue-style prompts with explicit contracts covering the task, authority, returned work package, and acceptance context. Across 64 runs on ten small TypeScript tasks, every run passed the hidden acceptance tests. The contracts did not improve correctness because the tasks were already easy for the agents.</p><p>They improved reviewability. Evidence sufficiency improved in 22 of 30 paired comparisons and worsened in none. Reviewers saw more changed-file lists, known limitations, residual risks, and checklists. The contracts also used 13% more agent tokens and took 38% more wall-clock time.</p><p>That is a good trade only when reviewability is worth the cost. On a tiny task you will do once, it may not be. On repeated work, risky work, or work distributed across several actors, a reusable contract can pay for itself because the next handoff starts with an interface instead of another explanation.</p><p>Delegation also fails when it becomes abandonment. Giving somebody an outcome does not transfer away responsibility for the problem framing, the quality bar, or integration with the larger system. Autonomy needs a boundary and a feedback loop.</p><p>In one leadership model from my notes, exploratory work happened in a sandbox against broad targets. Useful results returned to an owner who could productionize them. The exploration was allowed to fail. The production handoff was not.</p><p>That distinction matters with agents. &#8220;Go figure it out&#8221; can be appropriate when the blast radius is small and the work is exploratory. It is negligence when the agent can change production state and nobody has defined how it returns evidence.</p><h2>Teach the Skill</h2><p>Delegation should appear in engineering development before somebody becomes a manager.</p><p>Code review already gives us the right setting. Ask an engineer to write the issue another engineer could implement without a private briefing. Ask what the assignee can decide, which constraints are real, which test would change the author&#8217;s mind, and when the work should come back. Then evaluate the handoff alongside the patch. Architecture exercises can do the same. A candidate should be able to design a subsystem and divide it into owned outcomes with interfaces between them.</p><p>Senior promotion rubrics should look for expertise that travels: working agreements, executable checks, useful documentation, and teams that can make decisions without routing every question back through the expert.</p><p>Engineering education is beginning to move this way. After two 2026 roundtables with roughly 30 to 40 academic and industry participants each, Sungmin Kang, Baishakhi Ray, and Abhik Roychoudhury argued that <a href="https://arxiv.org/abs/2606.21894">future engineers should learn to translate intent into machine-checkable specifications</a> and evaluate whether those specifications capture the intended result. They also put agent orchestration and verification into the proposed curriculum.</p><p>I would call the umbrella skill delegation.</p><p>The engineer who can do everything is not necessarily the engineer who can create the most throughput. Agentic development rewards the engineer who can make judgment portable without pretending judgment has disappeared.</p><p>We will still need people who can solve the hard problem themselves. They are the ones most able to recognize a wrong abstraction, an unsafe shortcut, or a test that proves less than it claims. But if all of that understanding remains inside one person&#8217;s implementation process, it can guide only one stream of work.</p><p><strong>The goal isn&#8217;t to do less engineering. It&#8217;s to move more of the engineering into a form that other capable actors can use.</strong></p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality profit and revenue-management platform, and writes about AI-augmented engineering practice.  Previously, Bob has been CTO of Tripadvisor, Citymaps, and Runtime Technologies.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/harness-engineering">What Is Harness Engineering? (And Do You Need to Learn It?)</a>. Why the system around the model determines how much useful work it can do</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a>. Tool comparisons and benchmarks for AI practitioners</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a>. Strategic AI insights for CTOs and engineering leaders</p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Word Problem: Why Developers Can’t Stand Talking to Opus 5]]></title><description><![CDATA[An genuinely honest, load-bearing, structural take worth reading]]></description><link>https://hyperdev.matsuoka.com/p/the-word-problem-why-developers-cant</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/the-word-problem-why-developers-cant</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Mon, 31 Aug 2026 11:31:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Mqay!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.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_!Mqay!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mqay!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.png 424w, https://substackcdn.com/image/fetch/$s_!Mqay!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.png 848w, https://substackcdn.com/image/fetch/$s_!Mqay!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.png 1272w, https://substackcdn.com/image/fetch/$s_!Mqay!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mqay!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.png" width="1152" height="864" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:864,&quot;width&quot;:1152,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:981456,&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://hyperdev.matsuoka.com/i/213180440?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.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_!Mqay!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.png 424w, https://substackcdn.com/image/fetch/$s_!Mqay!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.png 848w, https://substackcdn.com/image/fetch/$s_!Mqay!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.png 1272w, https://substackcdn.com/image/fetch/$s_!Mqay!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17e0b9a0-0583-4635-b0ec-db75e026f559_1152x864.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>On August 10, after a phrase had shown up for the ninth time, I typed this into a Claude Code session running Opus 5:</p><blockquote><p>&#8220;the load-bearing section&#8221; this is too jargon-y. Do not use language like this (add it to tm output style)</p></blockquote><p>Forty-nine minutes later, the rule was live in trusty-tools:</p><blockquote><p>No borrowed-metaphor jargon. &#8220;Load-bearing&#8221; is the instance that prompted this rule... Wrong: &#8220;that section is load-bearing&#8221; / Right: &#8220;deleting that section breaks X&#8221;.</p></blockquote><p>I had seen it nine times in two days. Opus 5 used &#8220;load-bearing&#8221; for a constraint, then a crate, then a test suite, all in six sessions on August 9 and 10. I got tired of reading it, so I banned the word.</p><p>I remembered a much worse week. In my version, I fought with Opus 5 for days, switched to Fable 5, and everything got better. Then I checked my logs.</p><p>Across eight days, I typed 201 messages to the two models. The record is boring: no capability problems, no ALL-CAPS, no profanity, no &#8220;that&#8217;s not what I said.&#8221; I was calm and typo-heavy throughout (agents understand intent well enough that my typing has gotten worse). The switch to Fable happened in the middle of a session without a command or comment from me.</p><p>The window&#8217;s one documented correction appears secondhand, inside an auto-generated summary. It concerned version-bump authorization. My complaint about Opus 5&#8217;s prose came two days earlier. I remembered a fight, but the logs recorded something else.</p><p>Meanwhile, Opus 5 produced 1.37 million words of output on real engineering tasks, next to Fable 5&#8217;s 193,000 words. The capability argument was gone. I was left with the way it talked.</p><h2>TL;DR</h2><ul><li><p>My trusty-tools logs show zero capability problems with Opus 5 over the window that supposedly caused a switch to Fable 5. My original thesis was wrong.</p></li><li><p>Across the month-long sample, Opus 5 opens sentences with &#8220;worth noting/naming/knowing&#8221; 10.7x more often than Fable 5 (0.451 vs. 0.042 per 1,000 words).</p></li><li><p>A recurring metaphor (something &#8220;wearing&#8221; something else&#8217;s clothing) shows up 26 times across 12+ Opus 5 sessions and zero times anywhere else in the sample.</p></li><li><p>Eight named developers across Hacker News and X say they prefer GPT-5.6 Sol specifically for how it communicates. None turned up making that same claim on Reddit.</p></li><li><p>The voice predates Opus 5. A GitHub issue filed 11 days before it shipped describes the same tics, and Claude Code gives Opus 5 a system prompt a bit over a third the length of Sonnet 5&#8217;s.</p></li></ul><h2>How Opus 5 Talks</h2><p>The trusty-tools bans landed between August 10 and 12. From August 12 onward, the same rule applied to every model: no &#8220;worth noting,&#8221; no &#8220;load-bearing,&#8221; no borrowed-metaphor jargon, and none of the &#8220;honest/honestly&#8221; family. The month-long counts also include earlier output, so this is not a clean post-ban comparison. It is a record of how often the patterns appeared in the logs I have.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Aqo4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Aqo4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.png 424w, https://substackcdn.com/image/fetch/$s_!Aqo4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.png 848w, https://substackcdn.com/image/fetch/$s_!Aqo4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.png 1272w, https://substackcdn.com/image/fetch/$s_!Aqo4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Aqo4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.png" width="719" height="246" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:246,&quot;width&quot;:719,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38568,&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://hyperdev.matsuoka.com/i/213180440?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.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_!Aqo4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.png 424w, https://substackcdn.com/image/fetch/$s_!Aqo4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.png 848w, https://substackcdn.com/image/fetch/$s_!Aqo4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.png 1272w, https://substackcdn.com/image/fetch/$s_!Aqo4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f0d33b2-a6f3-4795-95ad-f3ef95dbabfd_719x246.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 sample covers July 28 through August 27 in the same repository: 9,148 Opus 5 turns (1.37M words) and 2,732 Fable 5 turns (193K words). Opus 5 averages 149.5 words a turn on equivalent status-update and engineering tasks, more than double Fable 5&#8217;s 70.5.</p><p>On a routine GitHub API check, Opus 5 wrote:</p><blockquote><p>Worth noting how it verified: its first PATCH used <code>-f description=@file</code>, which isn&#8217;t a real <code>gh api</code> shorthand...</p></blockquote><p>Later, in a <code>SlotRegistry</code> design note:</p><blockquote><p>It&#8217;s load-bearing for assertion B, it&#8217;s about to be cited in an ADR, and right now nobody but you can retrieve it.</p></blockquote><p>The &#8220;wearing&#8221; metaphor got under my skin. Opus 5 used some version of it 26 times across at least 12 sessions that month. A conflict resolution became &#8220;unreviewed code wearing a rebase&#8217;s clothing.&#8221; A misattributed fact came back as &#8220;a hypothesis wearing a rule&#8217;s clothing.&#8221; A faster teardown was &#8220;a regression dressed as a performance win.&#8221; Fable 5 produced zero in 193,000 words. The thinner Opus 4.8 and Sonnet 5 samples produced zero too.</p><p>Fable 5, working the same repository, the same kind of task, under the same ban:</p><blockquote><p>Error arms proven load-bearing (swallowing provider errors turns four tests red)...</p><p>You&#8217;re right, and the honest accounting is that the day went to the plumbing that kept invalidating runs...</p><p>The pinned gate run is genuinely green.</p></blockquote><p>Fable used the same forbidden words, but less often. The &#8220;worth noting&#8221; family appears roughly a tenth as often.</p><p>&#8220;Honest&#8221; is the exception. Opus 5 sits at 0.193 per 1,000 words against Fable 5&#8217;s 0.176, close enough to call a wash. The other gaps run from roughly 2x to 10.7x.</p><h2>Developers Recognize the Voice</h2><p>On Hacker News alone, I found 29 items from April through August 2026 about Opus 5&#8217;s communication style. Roughly 55 people joined the complaint. The <a href="https://news.ycombinator.com/item?id=49296740">highest-engagement thread</a>, &#8220;Why does Opus 5 feel worse to work with?&#8221;, sits at 993 points and 873 comments. Two Ask HN threads pose nearly the same question: <a href="https://news.ycombinator.com/item?id=49045140">&#8220;Which is the least sloppy and claudeism free model you have used?&#8221;</a> (July 25) and <a href="https://news.ycombinator.com/item?id=49444272">&#8220;Why are Claude models so verbose?&#8221;</a> (August 26).</p><p>On X, 13 tweets with verifiable URLs carry the same complaint from 11 distinct authors, dated July 24 through August 19.</p><p>By comparison, eight named people across both platforms say they prefer GPT-5.6 Sol specifically for how it communicates: six on Hacker News (including <a href="https://news.ycombinator.com/item?id=49239262">matheusmoreira</a>: &#8220;Opus has a distinctive sentence structure and Fable somehow manages to be even more obtuse&#8221;), plus two on X: <a href="https://x.com/eshear/status/2081583932999700758">Emmett Shear</a> (&#8221;Talking to Opus makes me angry and depressed in a way that&#8217;s hard to articulate. It&#8217;s actually somehow worse than Sol&#8221;) and <a href="https://x.com/yacineMTB/status/2081217662323982724">yacineMTB</a> (&#8221;Meh. Switched back to sol. I am trying to get shit done not be hypnotized by a robot&#8221;).</p><p>The <a href="https://news.ycombinator.com/item?id=49412301">816-point thread</a> that gets cited most often in this argument, &#8220;Anthropic&#8217;s best AI model struggles to attract users as cheaper tools thrive,&#8221; is a price story. One top comment calls the output &#8220;peak verbosity vomit,&#8221; but the thread itself is about pricing pressure from cheaper models, not a referendum on tone.</p><p>These quotes come from Reddit aggregator blogs that include thread names, usernames, and vote counts. One step removed. The style complaint still shows up with its own vocabulary: &#8220;essay of slop,&#8221; &#8220;Claudeslop,&#8221; &#8220;benchslop,&#8221; and &#8220;load-bearing&#8221; appear independently across multiple write-ups as stock Opus 5 language. But I could not find a single Reddit thread where someone says they prefer Sol because of how it talks. The Sol arguments there are about benchmarks and price. Two threads praise Fable 5&#8217;s voice over Opus 4.8, which says nothing about Fable 5 versus Opus 5.</p><p>Counted across the Hacker News threads read for this piece: &#8220;load-bearing&#8221; appears 83 times, &#8220;verbose&#8221; 69, &#8220;honest/honestly&#8221; 66, &#8220;jargon&#8221; 34, &#8220;seam(s)&#8221; 36.</p><h2>The Voice Predates the Model</h2><p><a href="https://github.com/anthropics/claude-code/issues/77136">GitHub issue #77136</a> was filed July 13, 2026, eleven days before Opus 5 shipped. It documents &#8220;load bearing,&#8221; invented jargon, &#8220;hand-waving,&#8221; &#8220;reflexive hedging,&#8221; and &#8220;honest framing&#8221; in Opus 4.7, Opus 4.8, and Fable 5. The complaint is older than the model now taking the blame.</p><p>Claude Code also gives Opus 5 a <a href="https://lucadidomenico.studio/en/blog/opus-5-verbose-system-prompt-claude-code">system prompt of roughly 11,000 characters</a> with almost no anti-verbosity instructions. Sonnet 5 gets about 29,000 characters, much of the difference made up of rules that suppress this behavior. In the published test, restoring the longer prompt changed the behavior. The model may supply the prose, but the harness decides how much restraint to ask for.</p><p>And somebody made the opposite switch. <a href="https://homeless-entrepreneur.web.app/blog/opus-vs-sol">Manu Parasuraman</a> moved from Sol to Opus 5 because Sol was harder to read: &#8220;Sol answers questions nobody asked in language nobody speaks,&#8221; while Opus 5 &#8220;walks you through its reasoning and stays concrete.&#8221;</p><p>I started this piece assuming Opus 5&#8217;s personality was the whole problem. The system-prompt evidence complicates that: I may be hearing Claude Code&#8217;s prompt as much as the model underneath it, then blaming the name in the model picker.</p><h2>What This Comparison Can and Can&#8217;t Show</h2><p>The 10.7x gap is descriptive. It combines output from before and after the bans, and it does not tell me what either model would say on an empty prompt. Sonnet 5 contributed 13 turns from one session, too thin to rate. GPT-5.6 Sol never appears in the trusty-tools logs, which means every Sol comparison here comes from other people rather than my own measurement. The Reddit material is secondhand because the primary site was unreachable during research.</p><h2>Ten Days Later, Anthropic Shipped a Concise Style</h2><p>Anthropic reportedly shipped a built-in Concise output style for Claude Code on August 20, according to <a href="https://botmonster.com/ai/make-opus-5-less-verbose/">a third-party writeup</a>. That was ten days after my rule landed and six days after the 993-point Hacker News thread. I haven&#8217;t checked whether it helps. I prefer my own.</p><p>The logs explain why I wrote the rule. Opus 5 completed the engineering work, at scale, while repeatedly talking past an instruction written for it in plain English. I don&#8217;t call that a capability failure, but it is a product problem. The rule stays in trusty-tools.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality revenue-management platform, and writes about AI-augmented engineering practice.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/when-sessions-talk">When Sessions Talk</a> &#8212; What 375 messages between my own Claude Code sessions said to each other</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders</p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Cheap Model Blinked First]]></title><description><![CDATA[Economics of AI Addiction]]></description><link>https://hyperdev.matsuoka.com/p/the-cheap-model-blinked-first</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/the-cheap-model-blinked-first</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Mon, 10 Aug 2026 11:31:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CRg0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.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_!CRg0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CRg0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.png 424w, https://substackcdn.com/image/fetch/$s_!CRg0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.png 848w, https://substackcdn.com/image/fetch/$s_!CRg0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.png 1272w, https://substackcdn.com/image/fetch/$s_!CRg0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CRg0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.png" width="889" height="498" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:498,&quot;width&quot;:889,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1042157,&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://hyperdev.matsuoka.com/i/210415157?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a386f5-14d8-441b-89b0-11aeb1ff9bc6_1024x768.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_!CRg0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.png 424w, https://substackcdn.com/image/fetch/$s_!CRg0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.png 848w, https://substackcdn.com/image/fetch/$s_!CRg0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.png 1272w, https://substackcdn.com/image/fetch/$s_!CRg0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96817f0e-67da-4dcf-83c9-1b5aef5bd8b4_889x498.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 June of 2025 I predicted that Chinese open weight models would set the LLM pricing floor. The piece pointed at DeepSeek-V3 and DeepSeek-R1 turning up in the cheap tiers of tools like Windsurf and said &#8220;these will likely become the new baseline for price-sensitive usage.&#8221; I wrote it a month after a $622 Anthropic bill (up from around $50 the month before) and after burning a $20 Zed plan&#8217;s entire monthly allocation in a few hours. My reasoning was this: the frontier providers were selling inference below cost, the subsidy would end, and the cheap models were waiting underneath.</p><p>I gave it two time windows. The tighter one sat with the claim that &#8220;Chinese competition will eventually drive costs down significantly,&#8221; following &#8220;a period&#8212;probably 6-12 months&#8212;where usage-based pricing hits hard.&#8221; That one ran out around June. The looser one sat with a broader claim, that Chinese pressure would &#8220;eventually drive down pricing across the board,&#8221; with the caveat that &#8220;eventually&#8221; might be 12-18 months out. That one runs to December.</p><p>The first window failed outright. The second is failing in a direction I didn&#8217;t anticipate: not that the floor held, but that the floor is about to go up.</p><p>DeepSeek&#8217;s <a href="https://api-docs.deepseek.com/quick_start/pricing/">own API pricing documentation</a> now carries this: &#8220;We plan to raise the overall pricing for DeepSeek API services in the near future, with a significant increase expected.&#8221; No percentage. No effective date. No list of affected models. The <a href="https://www.scmp.com/tech/tech-trends/article/3363129/deepseek-signals-significant-price-hike-amid-surge-demand-low-cost-ai-models">South China Morning Post</a>, which reported the notice, has DeepSeek telling developers that specifics are &#8220;to be advised later&#8221; and that &#8220;users should plan their usage accordingly.&#8221; SCMP attributes the pressure to demand for DeepSeek-V4-Flash-0731, a 284-billion-parameter model released on July 31, a week before the notice went up.</p><p>The company I expected to set the floor has signaled it will raise it. The labs I expected to raise prices spent the last four months cutting prices or raising limits.</p><h2>TL;DR</h2><ul><li><p>In June 2025 I gave Chinese models two windows to set the price floor: 6-12 months, and 12-18 months. The first ran out around June 2026. The second runs to December, and DeepSeek is now warning of a &#8220;significant&#8221; price increase with no figure and no date attached, confirmed on its own pricing docs, not just in press coverage.</p></li><li><p>Over the same stretch the frontier moved the other way. Anthropic doubled Claude Code&#8217;s 5-hour limits and dropped peak-hour throttling (May 6). OpenAI split its $200 Pro tier into $100 and $200 tiers running identical models, differing only in usage volume (April 9). Google cut its top Gemini subscription from $249.99 to $199.99 (May 19).</p></li><li><p>On July 30 OpenAI cut GPT-5.6 Luna by 80%, to $0.20 input and $1.20 output per million tokens. Multiply DeepSeek V4-Flash by ten and it lands at $1.40/$2.80: 3.6x to 7x under Opus 5 and Fable 5 on input where today it is 36x to 71x under them, and more expensive than Luna.</p></li><li><p>OpenAI&#8217;s stated reason for the cut was efficiency: 20% lower serving costs and 15%+ better token-generation efficiency. That covers a 20% cut. Terra got 20%. Luna got 80%.</p></li><li><p>The rationing I predicted did happen, one layer down. Cursor converted flat billing to metered credits in June 2025. GitHub Copilot moved to token-metered AI Credits on June 1, 2026, at unchanged sticker prices.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uvKD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uvKD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.png 424w, https://substackcdn.com/image/fetch/$s_!uvKD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.png 848w, https://substackcdn.com/image/fetch/$s_!uvKD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.png 1272w, https://substackcdn.com/image/fetch/$s_!uvKD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uvKD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.png" width="1024" height="539" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:539,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1294023,&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://hyperdev.matsuoka.com/i/210415157?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0552316-002e-47ee-8b53-1a61c870279d_1024x768.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_!uvKD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.png 424w, https://substackcdn.com/image/fetch/$s_!uvKD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.png 848w, https://substackcdn.com/image/fetch/$s_!uvKD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.png 1272w, https://substackcdn.com/image/fetch/$s_!uvKD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1315a340-9d36-4c46-8c32-d2187474abd1_1024x539.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><h2>What DeepSeek Disclosed</h2><p>V4-Flash lists at $0.14 per million input tokens and $0.28 per million output, with cache hits at $0.0028. V4-Pro lists at $0.435 and $0.87. Those are the pre-hike numbers. DeepSeek disclosed neither the size of the increase nor when it lands. Any number you see attached to this story is somebody&#8217;s guess.</p><p>A &#8220;significant&#8221; increase off a base that low still leaves room. Double V4-Flash and it sits at $0.28/$0.56, cheaper than most of what the frontier sold a year ago. The magnitude we don&#8217;t know yet. The direction we do, and that is the part I called backwards.</p><h2>The Frontier Went The Other Way</h2><p>Anthropic <a href="https://www.anthropic.com/news/higher-limits-spacex">doubled Claude Code&#8217;s 5-hour rate limits on May 6</a> for Pro, Max, Team, and seat-based Enterprise plans, and removed the peak-hours limit reduction for Pro and Max. Max 5x is still $100 a month. Max 20x is still $200. Both buy more than they did in the spring.</p><p>On April 9 of this year, OpenAI split its $200 Pro tier into $100 and $200 tiers running identical models and differing only in usage volume. That&#8217;s a second fixed-price plan at Claude Max&#8217;s number. Neither tier is uncapped. OpenAI doesn&#8217;t publish the Pro-model allowance on either, and running it out soft-degrades you to a smaller model rather than cutting you off.</p><p>Google restructured <a href="https://blog.google/products-and-platforms/products/google-one/google-ai-subscriptions/">AI Ultra at I/O on May 19</a>. The single $249.99 tier became $99.99 at 5x Pro limits and $199.99 at 20x, with daily prompt caps replaced by compute-weighted 5-hour refresh and weekly metering. The top tier alone dropped $50.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dm-1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dm-1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!Dm-1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!Dm-1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Dm-1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dm-1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1318172,&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://hyperdev.matsuoka.com/i/210415157?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.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_!Dm-1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!Dm-1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!Dm-1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Dm-1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb95a2297-eaa6-48df-b8e1-a070230a2de1_1024x768.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>Who GPT-5.6 Luna Is For</h2><p>Then came July 30. OpenAI cut GPT-5.6 Terra from $2.50/$15 to $2/$12, a 20% reduction. It cut GPT-5.6 Luna from $1/$6 to $0.20/$1.20, an 80% reduction. The stated reason, <a href="https://x.com/OpenAI/status/2082577277246972300">from OpenAI&#8217;s own account</a>: &#8220;20% lower serving costs from production GPU kernel improvements. 15%+ better token-generation efficiency from improved speculative decoding.&#8221;</p><p>That explains Terra. Twenty percent cheaper to serve, twenty percent off the price, a straight pass-through. It doesn&#8217;t explain Luna. The same kernels and the same speculative decoding produced a cut four times larger on the cheaper model. Efficiency gains don&#8217;t sort themselves by tier. Pricing decisions do.</p><p>Max plans holding steady is not by itself evidence that providers depend on volume. Falling serving costs cover that on their own. A lab building a tier at the bottom of the market and then cutting it 80% in a single move is harder to explain that way, because a $0.20 input tier is not where a company with a $5/$25 flagship model makes its money. It&#8217;s where a company goes when it wants a number that reads lower than DeepSeek&#8217;s.</p><p><a href="https://hyperdev.matsuoka.com/p/weve-turned-a-corner">Two months ago I wrote</a> that dealers give the first one away for a reason, and that the Max plan was my first bag. The habit runs in both directions. A dealer who keeps cutting the price of the first bag is a dealer who can&#8217;t afford to have you buy it somewhere else.</p><p>Run my June 2025 claim forward against a tenfold hike. DeepSeek disclosed nothing supporting that multiple or any other, so it&#8217;s a stress test, not a forecast. V4-Flash at ten times list: $1.40 input, $2.80 output. Against the models people think of when they say &#8220;frontier&#8221;, a multiple survives. Claude Opus 5 at $5/$25 is 3.6x the input price and 8.9x the output. Claude Fable 5 at $10/$50 is 7.1x and 17.9x. GPT-5.5 at $5/$30 is 3.6x and 10.7x. Those are reduced from much bigger numbers. At today&#8217;s list price Opus 5 costs 36x what V4-Flash does on input and 89x on output. A tenfold hike takes about ninety percent of that away. At 36x, price picks the model. At 3.6x, the model does.</p><p>Further down the market it reverses. Against Luna at $0.20/$1.20, a tenfold-hiked V4-Flash costs seven times more on input and more than twice as much on output. Against Gemini 3.6 Flash at $1.50/$7.50 it&#8217;s roughly a wash on input. Even Gemini 3.1 Pro at $2/$12 for prompts at or under 200k tokens (above that it goes to $4/$18) sits within 1.4x on input (4.3x on output). Run the stress test and the frontier ends up priced below the discounter, not for the flagship but for the tier built for exactly the work I said DeepSeek would take.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gU6k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gU6k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!gU6k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!gU6k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!gU6k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!gU6k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:958904,&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://hyperdev.matsuoka.com/i/210415157?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.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_!gU6k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!gU6k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!gU6k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!gU6k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af20b9a-f7a8-45fb-9a3e-e429287618d6_1024x768.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 Case Against</h2><p>Three things complicate this reading.</p><p><strong>DeepSeek&#8217;s prices track chip supply, not just strategy.</strong> The company cited &#8220;constraints in high-end compute capacity&#8221; when it priced V4-Pro in April 2026, a constraint widely linked to US export controls on Nvidia H20 chips, though DeepSeek didn&#8217;t specify. In late May it made a 75% V4-Pro price cut permanent without saying why, on timing that lines up with easing Huawei Ascend 950 supply. The August notice gives no reason at all, though SCMP&#8217;s reporting points at demand for a model released the week before. I can&#8217;t tell a capacity bottleneck from a strategic retreat from outside the company.</p><p><strong>The rationing happened at the consumer level.</strong> Cursor replaced flat request-based Pro billing with usage-based credits pegged to API cost in June 2025, then ran a refund program from June 16 to July 4 after users got painful bills. GitHub Copilot moved from flat Premium Request Units to token-metered AI Credits on June 1, 2026, at unchanged sticker prices, with the code-review multiplier rising to 13x for legacy annual-plan holders. Anthropic added weekly caps on top of its 5-hour caps in August 2025, citing round-the-clock usage and account resale, and <a href="https://techcrunch.com/2025/07/28/anthropic-unveils-new-rate-limits-to-curb-claude-code-power-users/">estimated at announcement</a> that they would &#8220;apply to less than 5% of subscribers based on current usage.&#8221; Model-lab sticker prices held. The metering moved to heroin layer.</p><p><strong>The efficiency explanation may be the whole explanation.</strong> Serving costs have fallen steeply, and Anthropic&#8217;s gross margin has reportedly climbed off a deeply negative base, roughly -94% in 2024. <a href="https://www.investing.com/news/stock-market-news/anthropic-trims-profit-margin-outlook-as-ai-operating-costs-rise--the-information-4459316">The Information reported in January 2026</a> that Anthropic had trimmed its own projection to about 40% for 2025, still a steep climb off that base. If cost per token falls faster than price per token, generous Max plans need no dependency on volume to explain them. My reading rests on the 20/80 split between Terra and Luna, and that&#8217;s one data point on one day from one vendor.</p><h2>What Would Prove Me Wrong Again</h2><p>The June 2025 piece got the $200 line right, which was the easy part. What I got wrong was which end of the market was fragile. Any of these would tell me I&#8217;m getting it wrong a second time.</p><ul><li><p><strong>DeepSeek publishes numbers and the increase is under 2x on V4-Flash</strong>, leaving it under $0.30 input. That would be a capacity adjustment &#8212; the floor is where I thought it was.</p></li><li><p><strong>OpenAI raises Luna back toward $1 within two quarters.</strong> If that happens, July 30 was pass-through of a real engineering result, and I read a price war into it.</p></li><li><p><strong>Anthropic or Google restores throttling, or cuts 5-hour allowances at unchanged prices, before the end of 2026.</strong> That would mean the generosity was a promotional window, and June 2025 was early rather than wrong.</p></li><li><p><strong>The tool layer keeps metering while the model labs keep expanding:</strong> the pricing pressure was sitting at the tool layer the whole time, and both of my previous pieces were aimed at the wrong tier.</p></li><li><p><strong>DeepSeek&#8217;s hike lands and its API volume holds anyway</strong> &#8212; which would mean price wasn&#8217;t what price-sensitive buyers were choosing on.</p></li></ul><p>If you&#8217;re budgeting against a Chinese-model price floor for 2027, price in the possibility that the floor is now a frontier lab&#8217;s customer-acquisition tier.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a>, a hospitality revenue-management platform, and writes about AI-augmented engineering practice.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/the-other-shoe-will-drop">The Other Shoe Will Drop</a> &#8212; The June 2025 prediction this piece corrects.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/the-other-shoe-has-dropped">The Other Shoe Has Dropped</a> &#8212; Why per-token price cuts stopped reaching the invoice.</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners.</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[OpenAI's "Comeback"]]></title><description><![CDATA[Can it really be a comeback with they have so much money, so much exposure, and so little revenue?]]></description><link>https://hyperdev.matsuoka.com/p/openais-comeback</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/openais-comeback</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Fri, 31 Jul 2026 11:30:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hQ4A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.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_!hQ4A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hQ4A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.png 424w, https://substackcdn.com/image/fetch/$s_!hQ4A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.png 848w, https://substackcdn.com/image/fetch/$s_!hQ4A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.png 1272w, https://substackcdn.com/image/fetch/$s_!hQ4A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hQ4A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.png" width="1456" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1378063,&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://hyperdev.matsuoka.com/i/209163913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.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_!hQ4A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.png 424w, https://substackcdn.com/image/fetch/$s_!hQ4A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.png 848w, https://substackcdn.com/image/fetch/$s_!hQ4A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.png 1272w, https://substackcdn.com/image/fetch/$s_!hQ4A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36b4f06-c8d8-4a65-9808-b8f069539891_1600x960.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>GPT-5.6 Sol scores 80 on the <a href="https://artificialanalysis.ai/articles/gpt-5-6-has-landed">Artificial Analysis Coding Agent Index</a> against 77 for Claude Fable 5, at a lower cost per task (about $1.04). That post went up on July 9.</p><p>I called model parity back in April, in <a href="https://hyperdev.matsuoka.com/p/its-the-harness-stupid">a piece</a> with a section headed &#8220;GPT-5.4 Caught Up.&#8221; What I missed was everything around the model: that OpenAI would close the product gap, and buy a decade of compute while doing it.</p><p>Over the last few months I&#8217;ve been using ChatGPT more and more for work-like tasks. Not Duetto work, because we don&#8217;t have an enterprise plan and Duetto material stays out of it. Work-like things. Both the capabilities and the UX have improved to the point where I&#8217;d put the product at least on par with claude.ai, to my surprise. There are still gaps. It&#8217;s still good.</p><h2>TL;DR</h2><ul><li><p>GPT-5.6 Sol leads the Artificial Analysis Coding Agent Index 80 to 77 over Claude Fable 5 (July 9) and Terminal-Bench 2.1 85.77% to 84.64% over Claude Opus 5 (July 22), the second one with a methodology caveat that widens the gap.</p></li><li><p>Claude Opus 5 still leads the broader Artificial Analysis Intelligence Index at 60.7 against GPT-5.6 Sol&#8217;s 58.9 (July 29). Anthropic&#8217;s remaining model lead is general capability, not agentic coding.</p></li><li><p>Anthropic leads on revenue ($47B run-rate, May 28, 2026) and valuation ($965B), and leads enterprise API share 40% to 27% (Menlo, December 2025). OpenAI closed the capability gap and most of the product gap while trailing commercially.</p></li><li><p>OpenAI is far ahead on planned compute (Stargate at nearly 7GW toward a stated 10GW commitment, the Broadcom &#8220;Jalape&#241;o&#8221; inference ASIC). In July it moved its usage limits three times in seventeen days, in both directions, around a near-global outage on the 25th. Anthropic has been raising its limits since May.</p></li><li><p>No open-weight provider I found fields an app ecosystem within reach of ChatGPT or Claude Code, which keeps this a two-horse race even as the weights converge. Chinese domestic app numbers could complicate that.</p></li></ul><h2>Where the coding lead sits</h2><p>Two current measures put GPT ahead on agentic coding. The Coding Agent Index lists GPT-5.6&#8217;s three effort tiers at Sol 80, Terra 77.4 and Luna 74.6, with Claude Fable 5 at 77.2 (Terra and Fable 5 land 0.2 apart). Sol&#8217;s per-task cost runs below both Fable 5 and Opus 4.8. On <a href="https://www.vals.ai/benchmarks/terminal-bench-2-1">Terminal-Bench 2.1</a> (89 tasks, Terminus 2 harness, snapshot dated July 22), GPT-5.6 Sol leads Claude Opus 5 by about a point, 85.77% to 84.64%.</p><p>The Terminal-Bench result comes with a caveat from the publisher. Opus 5&#8217;s run used Claude Opus 4.8 as a refusal fallback. Count the nine affected passing results as failures instead and Opus 5 drops to 81.27%, which widens the GPT lead to roughly four and a half points. The lead is real. Its size depends on how you count.</p><p>Now the other direction. On the broader Artificial Analysis Intelligence Index, <a href="https://benchlm.ai/benchmarks/artificialAnalysis">as of July 29</a>, Claude Opus 5 sits first at 60.7 and Claude Fable 5 second at 59.9, with GPT-5.6 Sol third at 58.9. Anthropic holds the top two spots on general capability while losing the coding-agent tables. My &#8220;diminishing edge&#8221; framing was directionally right if imprecise. The edge moved. It didn&#8217;t disappear.</p><p>SWE-bench Pro, the number everybody reached for six months ago, has no usable current standing. Scale&#8217;s <a href="https://labs.scale.com/leaderboard/swe_bench_pro_public">public-set leaderboard</a> doesn&#8217;t list GPT-5.6, Claude Opus 5 or Claude Fable 5 at all, and the top of it reshuffled again this month. The aggregator sites quoting newer figures disagree with each other and cite at least one model name I can&#8217;t confirm exists. Skip it.</p><h2>The product story is a two-way race now</h2><p>This is the first half of what I missed. Codex spans CLI, IDE, web, and a hosted cloud mode for long-running tasks. The <a href="https://learn.chatgpt.com/docs/changelog?type=codex-cli">Codex CLI changelog</a> for the last two weeks of July includes resumable sessions with paginated thread history, session naming and branching, configurable sub-agents, audio input, and an <code>/import</code> command that migrates project-scoped memories out of Cursor and Claude Code. That last one reads like a decision made by somebody thinking hard about switching costs. On <a href="https://9to5mac.com/2026/07/09/openai-announcing-the-next-chapter-for-chatgpt-today-watch-here/">July 9</a> OpenAI also folded the standalone Codex desktop app into a single ChatGPT desktop app with Chat, Work, and Codex modes. Existing Codex users were moved across automatically, and Codex remains a full mode inside the merged app.</p><p>What I notice in use isn&#8217;t a benchmark, it&#8217;s flow. Codex and GPT live in the same product, and when I go looking for something I worked on weeks ago, ChatGPT finds it wherever I left it. Claude&#8217;s Projects still behave like sealed folders for me. That isolation was an advantage once, back when context was scarce and a hard wall around what the model could see was the safer design. With current context budgets it mostly means I go hunting. GPT is also the far better image renderer, which makes for a short comparison, since Claude doesn&#8217;t ship a first-party image model at all.</p><p>Anthropic didn&#8217;t stand still while any of this happened. <a href="https://www.anthropic.com/news/claude-design-anthropic-labs">Claude Design</a> shipped out of Anthropic Labs on April 17, and it&#8217;s excellent: you talk to it and get slides, wireframes, one-pagers and pitch decks, with export to PPTX or PDF, inline comments, adjustment sliders, and handoff into Claude Code. Codex has no equivalent that I&#8217;m aware of (and I&#8217;d bet real money they&#8217;re building one). Claude Cowork expanded to web and mobile on <a href="https://techcrunch.com/2026/07/07/the-coding-agent-wars-are-spilling-into-the-rest-of-the-office-claude-cowork/">July 7</a>. Both labs shipped serious B2B product work inside the same four months.</p><h2>Capacity: a much bigger future, a strained present</h2><p>The second half is compute. OpenAI is buying a much bigger future than Anthropic is, and is visibly straining in the present.</p><p>On committed buildout it isn&#8217;t close. OpenAI, Oracle and SoftBank put combined planned Stargate capacity at <a href="https://openai.com/index/five-new-stargate-sites/">nearly 7 gigawatts</a> across the Abilene flagship plus five more sites, with over $400B invested and the full commitment still stated as $500B and 10GW. Tomasz Tunguz&#8217;s aggregation of the announced vendor deals puts OpenAI&#8217;s 2025&#8211;2035 infrastructure commitment at <a href="https://tomtunguz.com/openai-hardware-spending-2025-2035/">roughly $1.15 trillion</a> across seven suppliers, which is derived rather than OpenAI-confirmed. On June 24, OpenAI and Broadcom unveiled <a href="https://openai.com/index/openai-broadcom-jalapeno-inference-chip/">Jalape&#241;o</a>, OpenAI&#8217;s first custom inference ASIC, designed to tape-out in about nine months, with engineering samples already running Codex workloads in the lab and first production deployment targeted at gigawatt scale in late 2026 (<a href="https://www.cnbc.com/2026/06/24/openai-and-broadcom-reveal-jalapeno-first-ai-chip-in-partnership.html">CNBC&#8217;s coverage</a> has the same details).</p><p>Anthropic&#8217;s disclosed commitments are significant but much smaller: <a href="https://www.anthropic.com/news/anthropic-amazon-compute">up to 5GW with AWS</a> announced April 20 (with nearly 1GW of Trainium online by year end and $100B+ committed over ten years), <a href="https://www.anthropic.com/news/google-broadcom-partnership-compute">well over 1GW of Google TPU capacity in 2026</a> with the Broadcom-built expansion arriving from 2027, and <a href="https://www.anthropic.com/news/higher-limits-spacex">more than 300MW from SpaceX&#8217;s Colossus 1</a>. Its custom silicon is at the conversation stage, <a href="https://techcrunch.com/2026/07/02/anthropic-is-discussing-a-new-custom-chip-with-samsung/">reportedly early talks with Samsung</a> on a 2nm accelerator with nothing shipping before late 2027.</p><p>The strain shows up in the usage limits, which OpenAI moved three times in seventeen days, in both directions. Sol&#8217;s launch week doubled traffic inside 48 hours, so on July 12 and 13 it lifted the five-hour cap on Plus, Pro and Business tiers to absorb the load. On July 25 came a <a href="https://status.openai.com/incidents/01KYC921K145JTR1JK7DYKGWH1">near-global outage</a>, 9:17 to 11:08 AM ET, elevated errors across ChatGPT, the API and Codex, resolved the same morning. On July 29 it reset banked limits for ChatGPT Work and Codex users, whose quota Sol was burning faster than the math anticipated, then put the five-hour cap back the next day. Anthropic has been moving the other way since spring. On May 6 it permanently doubled Claude Code&#8217;s five-hour limits for Pro, Max, Team and seat-Enterprise users and dropped peak-hour throttling for Pro and Max, on the back of that SpaceX capacity.</p><h2>Where Anthropic still leads</h2><p>Anthropic&#8217;s remaining, potentially durable, advantages are enterprise adoption and commercial scale. Anthropic is ahead on total revenue and on valuation, and well ahead on enterprise API share. Its <a href="https://www.anthropic.com/news/series-h">Series H</a>, a $65B round closed May 28, 2026, disclosed a $47B run-rate and a $965B post-money valuation. OpenAI&#8217;s most recent confirmed figures are roughly $25B annualized (about $2B a month) at the <a href="https://www.cnbc.com/2026/03/31/openai-funding-round-ipo.html">March 31, 2026 close</a> of its $122B round, at an <a href="https://www.bloomberg.com/news/articles/2026-03-31/openai-valued-at-852-billion-after-completing-122-billion-round">$852B post-money valuation</a>. Menlo Ventures&#8217; <a href="https://menlovc.com/perspective/2025-the-state-of-generative-ai-in-the-enterprise/">December 2025 enterprise report</a> put Anthropic at 40% of enterprise LLM API usage against OpenAI&#8217;s 27%, and at 54% in AI coding specifically. No 2026 Menlo report exists yet, so December is the current number.</p><p>So OpenAI has closed the capability gap and most of the product gap while trailing on money and on enterprise accounts. That&#8217;s the actual shape of the comeback. The lead Anthropic still holds on the Intelligence Index is general capability, and general capability is the harder thing to put in front of a CTO who&#8217;s buying a coding agent this quarter.</p><h2>Apple versus Microsoft, again?</h2><p>I reached for that analogy myself in May 2025, when OpenAI spent close to $10 billion in three weeks on Jony Ive&#8217;s io Products and on Windsurf, and I called it <a href="https://hyperdev.matsuoka.com/p/openais-apple-moment-building-a-walled">OpenAI&#8217;s Apple moment</a>: control the stack from silicon to screen, consumer-first, design-led. Anthropic in that mapping is Microsoft, enterprise and developer-led, winning the accounts while nobody writes headlines about it.</p><p>I don&#8217;t fully trust it. Apple versus Microsoft was never settled by who had the better quarter. It ran on which company owned the layer everybody else had to build on top of, and on switching costs measured in years. Nobody owns that layer here. Both companies rent it, from Amazon, Google, Microsoft, Nvidia, Broadcom and now SpaceX. For a developer, changing frontier models is a config change and an eval run. What costs real time is changing the tool you work in, which is a much smaller lock than owning the platform. The Apple/Microsoft dynamic assumed you couldn&#8217;t leave.</p><p>The mapping also keeps slipping. Anthropic is the enterprise player in it, which is right, but it&#8217;s also the one with the bigger revenue base and the higher valuation, which is not the role the analogy assigns it.</p><h2>Can either of them make money</h2><p>Neither is profitable and both are burning billions, so anything past that is projection.</p><p>OpenAI&#8217;s advertising business is <a href="https://247wallst.com/investing/2026/07/21/openai-is-on-pace-to-miss-its-own-ad-revenue-forecast-by-90-heres-what-it-means-for-the-ai-trade/">on pace to miss its own five-year forecast by about 90%</a>, OpenAI projected $2.5B in ad revenue this year, scaling to $100B by 2030. eMarketer puts the entire US chatbot-ad market, not just OpenAI, under $1B this year and around $5.4B by 2030, per 24/7 Wall St. on July 21. The widely circulated 2026 cash-burn estimates in the $25B range are analyst syntheses rather than disclosures, because OpenAI is private and doesn&#8217;t publish the figures that would settle it. Same caution applies to the gross-margin numbers people quote for both companies.</p><p>Anthropic&#8217;s topline looks better but is contested. Ed Zitron argues in <a href="https://www.wheresyoured.at/anthropics-profitability-swindle/">&#8221;Anthropic&#8217;s &#8216;Profitability&#8217; Swindle&#8221;</a> that the near-term EBITDA profitability claim is a one-quarter accounting artifact of temporarily discounted SpaceX compute during exactly the months profitability was claimed, and that costs still rise linearly with revenue. He also flags CFO Krishna Rao&#8217;s March 9 sworn filing citing cumulative revenue &#8220;exceeding $5 billion to date&#8221; against the $19B run-rate announced six days earlier. That second point is weaker than it reads, since cumulative revenue and annualized run-rate aren&#8217;t the same measure. The first point is the one I&#8217;d want answered, and it hasn&#8217;t been.</p><p>Hardware doesn&#8217;t resolve it. Chris Lehane said at Davos in January that OpenAI&#8217;s first consumer device would debut in the <a href="https://9to5mac.com/2026/01/19/openai-teases-hardware-unveil-this-year-as-jony-ives-team-hires-more-apple-alumni/">&#8221;latter part&#8221; of 2026</a>, which is an unveiling and explicitly not an on-sale date. MacRumors reported in <a href="https://www.macrumors.com/2026/02/20/jony-ive-openai-smart-speaker-2027/">February</a> that the thing is a smart speaker with a camera launching in 2027. Everything else circulating about it (screenless, voice-first, 360-degree camera, Foxconn in Vietnam) is unconfirmed. As of today nothing has shipped and no date is confirmed, so I&#8217;d file the device as a 2027 question and stop considering it this year.</p><h2>Open weights are a side argument</h2><p>The open-weight families are close to the frontier on raw capability. Kimi K3, the highest-scoring open model on the Artificial Analysis Intelligence Index, sits at 57, about four points behind Claude Opus 5&#8217;s 60.7 and under two behind GPT-5.6 Sol&#8217;s 58.9, the same index cited above. On <a href="https://arena.ai/leaderboard">LMArena</a> the best open-weight entry, Kimi K3-max at 1491, trails Claude Fable 5 at the top by 17 points.</p><p>What none of them have is the app ecosystem. No open-weight provider fields anything within reach of ChatGPT or Claude Code on integration depth or developer reach, at least none I found, though I didn&#8217;t dig into DeepSeek&#8217;s or Qwen&#8217;s domestic app numbers in China, which could complicate that. Weights converging matters much less than it sounds like it should when the surface people work in belongs to two companies.</p><p>Which is where I end up. The model tables are the smallest part of it. OpenAI put Codex and ChatGPT in one app with an import command pointed straight at Claude Code&#8217;s users, and it has nearly 7 gigawatts of planned capacity standing behind that. Claude Opus 5 still holds the top of the Intelligence Index at 60.7, and Anthropic still held 40% of enterprise API spend as of last December. OpenAI is knocking on the door. A year ago I&#8217;d have told you that door was closed.</p><p>A coda. Could we imagine a world in which Anthropic and OpenAI run products on other models? Seems very unlikely now. But the cost of developing new models is astronomical, the cost of derived models much less (even though both companies are <a href="https://www.completeskeptic.com/p/is-it-even-possible-for-the-chinese">fighting distillation</a> tooth and nail). So there is a world in which they use the model building work they&#8217;ve done as an audience and tool building exercise, and focus on expanding that share by expanding options, let the models fight for their own justification. Farfetched, as I mentioned, but if they start losing to application clones that use open weight models, they&#8217;re essentially inviting someone to compete. The existing assumption that the app ecosystem was just to drive captured inference falls apart if that inference is cost prohibitive. We shall see.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a> and also writes about AI business at <a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496">AI Power Ranking</a>.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/openais-apple-moment-building-a-walled">OpenAI&#8217;s &#8216;Apple Moment&#8217;: Building a Walled-Garden AI Stack</a> &#8212; Where I first made the Apple analogy, three weeks and $10 billion into OpenAI&#8217;s acquisition run.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/its-the-harness-stupid">It&#8217;s the Harness, Stupid</a> &#8212; The April piece where I already conceded model parity, under a section header that says so. Everything I got wrong after that is in this article.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/i-switched-to-claudeai-from-chatgpt">I Switched to Claude.AI from ChatGPT As My Main AI Assistant</a> &#8212; The May 2025 call I&#8217;m revisiting here, with the context-management and stability reasons that drove it.</p></li><li><p><a href="https://aipowerranking.com">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners.</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[What A Difference A Year Makes]]></title><description><![CDATA[claude-mpm to trusty-tools/mpm]]></description><link>https://hyperdev.matsuoka.com/p/what-a-difference-a-year-makes</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/what-a-difference-a-year-makes</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Fri, 24 Jul 2026 12:30:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ko1F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.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_!Ko1F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ko1F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.png 424w, https://substackcdn.com/image/fetch/$s_!Ko1F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.png 848w, https://substackcdn.com/image/fetch/$s_!Ko1F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.png 1272w, https://substackcdn.com/image/fetch/$s_!Ko1F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ko1F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.png" width="1456" height="873" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3035844-db97-4357-a169-309d987dc3b0_1619x971.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:873,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2305672,&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://hyperdev.matsuoka.com/i/208282371?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.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_!Ko1F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.png 424w, https://substackcdn.com/image/fetch/$s_!Ko1F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.png 848w, https://substackcdn.com/image/fetch/$s_!Ko1F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.png 1272w, https://substackcdn.com/image/fetch/$s_!Ko1F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3035844-db97-4357-a169-309d987dc3b0_1619x971.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>I made the first commit to my project, called <a href="https://github.com/bobmatnyc/claude-mpm">claude-mpm</a>, on July 24, 2025. It was a multi-agent project manager built on top of Claude Code: a Python package that gave you specialist agents, a ticket workflow, a thin memory layer, and a way to route work between them. Building the agents was most of the work, because at that time Claude Code had no notion of a subagent. You wrote your agents as Markdown, loaded them yourself, and orchestrated the handoffs by hand.</p><p><a href="https://code.claude.com/docs/en/sub-agents">Custom subagents</a> shipped in Claude Code on July 25, 2025, the day after that first commit.</p><p>I&#8217;m not telling this story because of that coincidence. I&#8217;m telling it because it marks a moment. In July 2025, multi-agent orchestration was something novel. A year later it&#8217;s commonplace. And that single move (capability migrating out of the code you write and into the tool you run) is a line connecting the past twelve months in agentic coding, measurable in two of my own repositories.</p><h2>TL;DR</h2><ul><li><p><strong>Same author, same subscription, two eras.</strong> claude-mpm (Python) took roughly twelve months and 4,552 commits, with memory and search either hand-rolled or bolted on from outside. <a href="https://github.com/bobmatnyc/trusty-tools">trusty-tools</a>, a 25-crate Rust monorepo with first-class memory, semantic search, worktree orchestration, and PR review, came together in about two months.</p></li><li><p><strong>The budget held. The developer improved, but the harness and the models leapt.</strong> I spent the year getting better at driving a team of agents. Even so, most of the difference sits with the tooling, not with me. Both projects ran on the same Claude Max subscription. What changed underneath was the frontier model and everything Claude Code learned to do on its own.</p></li><li><p><strong>A year ago you hand-built the PM layer.</strong> Agents-as-Markdown, an external vector-search dependency, a memory subsystem you maintained yourself. Working in tickets felt like an edge.</p></li><li><p><strong>Now the harness carries it.</strong> Subagents nest and run in the background, worktrees are a native flag, skills and memory and search are first-class. Ticket-driven development is table stakes. Running many worktrees against one repo is my working model now.</p></li><li><p><strong>The safe extrapolation:</strong> The observed path is tickets &#8594; worktrees &#8594; many concurrent sessions per repo. If the next year rhymes with the last, the harness manages more parallelism than a person can hold in their head.</p></li></ul><h2>A year ago: you built the orchestration yourself</h2><p>claude-mpm was shaped by what the harness couldn&#8217;t do at that time.</p><p>The frontier models in late July 2025 were Claude Opus 4 and Sonnet 4, which had <a href="https://www.anthropic.com/news/claude-4">reached general availability</a> on May 22, 2025. Claude Code itself was about two months into GA, capable but young. Subagents didn&#8217;t exist until the day after I started. <a href="https://www.anthropic.com/news/agent-skills">Agent Skills</a> wouldn&#8217;t launch until October 2025. There was no native worktree support. If you wanted isolated parallel work, you ran <code>git worktree add</code> yourself and wired it up by hand. MCP was maybe eight months old. Memory and semantic search were not primitives the harness handed you.</p><p>So we (claude-mpm and me) built all of it. The agents were Markdown templates the package loaded and orchestrated. The ticket workflow lived in the CLI. Memory was thin by necessity, a couple of files under <code>src/claude_mpm/memory/</code>, and even that was on its way out. The changelog shows the memory hooks being removed and handed off to an external successor rather than maintained in-tree. Semantic search wasn&#8217;t native either. It came in as an outside dependency, <code>mcp-vector-search</code>, referenced across dozens of files. Worktree awareness existed at the level of a consumer that knew the concept, not a subsystem that owned it.</p><p>That was the state of the art then, and it worked. Over about twelve months claude-mpm accumulated 4,552 commits (roughly 380 a month) and grew into a real system: multiple MCP channel servers built into the Python package, a plugin path exposing 56-odd skills, agent templates for a spread of specialist roles. Ticket-driven development, routing discrete units of work through a queue instead of narrating one long conversation, felt like an advance at the time. You had to construct the scaffolding to get there, and the scaffolding was the hard part of the project.</p><h2>Now: the harness carries it</h2><p>trusty-tools took its first commit on May 19, 2026. It was still under active development the day I pulled these numbers. In roughly two months it reached 1,726 commits on <code>main</code>, about 860 a month. Same author, same Claude Max subscription, a different era.</p><p>That first commit wasn&#8217;t a blank slate. It already carried claude-mpm&#8217;s PM scaffolding, and one absorbed component holds claude-mpm session logs dated May 11, a week before the new repo existed. The Python predecessor was building its Rust successor. Then the successor began building itself: on July 6 the commit attribution switched to &#8220;generated with trusty-mpm,&#8221; in a commit that was fixing trusty-mpm&#8217;s own guard for its own subagents. Three days later the instructions moved out of CLAUDE.md into trusty-mpm&#8217;s own convention. About seven weeks were built by its predecessor before it took over its own development.</p><p>A lot shipped in that window. The frontier moved to <a href="https://www.anthropic.com/news/claude-opus-4-8">Claude Opus 4.8</a> (late May 2026) and <a href="https://www.anthropic.com/news/claude-sonnet-5">Claude Sonnet 5</a> (end of June 2026), with a Mythos-class model, <a href="https://www.anthropic.com/news/claude-fable-5-mythos-5">Fable 5</a>, arriving in June at a million tokens of context. The million-token context window had <a href="https://claude.com/blog/1m-context-ga">gone GA at standard pricing</a> in early 2026. Inside Claude Code, subagents now nest several deep and run in the background by default. <code>/fork</code><a href="https://code.claude.com/docs/en/changelog"> and </a><code>/subtask</code><a href="https://code.claude.com/docs/en/changelog"> landed</a> in mid-2026, and a <a href="https://code.claude.com/docs/en/changelog">native </a><code>--worktree</code><a href="https://code.claude.com/docs/en/changelog"> flag</a> had arrived in 2026. The harness I was building on top of in mid-2026 was a different animal from the one I started claude-mpm against.</p><p>And trusty-tools reflects that, because it didn&#8217;t have to build the parts the harness now provides. It could spend that effort building capabilities further out. The result is a 25-crate workspace consisting of about 600K lines of Rust. The pieces claude-mpm hand-rolled or imported are now first-class crates of their own:</p><ul><li><p><strong>Memory</strong> is <a href="https://github.com/bobmatnyc/trusty-tools">trusty-memory</a>, a dedicated crate with knowledge-graph operations, &#8220;dream&#8221; consolidation that compacts and reorganizes stored facts, multiple namespaced memory &#8220;palaces,&#8221; and chat-session persistence. claude-mpm had no equivalent. Its two-file memory layer was being handed off precisely because maintaining that by hand no longer made sense.</p></li><li><p><strong>Search</strong> is a first-class crate (semantic, lexical, and knowledge-graph search, call-chain lookup, typeahead, indexing) rather than an external MCP dependency referenced across the codebase.</p></li><li><p><strong>Worktree orchestration</strong> is heavy and native to the design: <code>EnterWorktree</code>/<code>ExitWorktree</code> as real operations, and fifteen-plus simultaneous live worktrees as the ordinary way of working, not a party trick.</p></li><li><p><strong>Ticketing</strong> is a dedicated subsystem spanning GitHub issues and JIRA, not an example command.</p></li><li><p>And then the crates with no claude-mpm analogue at all: PR and diff review, git analytics, a code intelligence layer, a TUI, an embedding daemon.</p></li><li><p>It also has an original (not meta) harness called trusty-code (still a work in progress but early indications are that it will perform similarly to open-code), and a personal agents harness called trusty-agents. Both leverage many of the same orchestration tools that trusty-mpm uses, which is why I&#8217;m including them in the package.</p></li></ul><p>On top of that sits a catalog of 37 specialist agents over five foundation layers, and a live skill catalog surfacing more than 190 skill names, triple claude-mpm&#8217;s 56. The prompting style changed too. A year ago you spent your prompt budget teaching the model how to be an agent. Now you spend it telling a competent agent what you want, because the harness supplies the how (in the form of memory, search, specs, and tickets).</p><p>Speaking of, ticket-driven development, the edge a year ago, is now the assumed baseline. The frontier moved up a level: many worktrees against a single repo or monorepo, several sessions of work in flight at once.</p><h2>The measured contrast</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wZXl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wZXl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.png 424w, https://substackcdn.com/image/fetch/$s_!wZXl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.png 848w, https://substackcdn.com/image/fetch/$s_!wZXl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.png 1272w, https://substackcdn.com/image/fetch/$s_!wZXl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!wZXl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.png" width="1456" height="626" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:626,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91029,&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://hyperdev.matsuoka.com/i/208282371?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.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_!wZXl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.png 424w, https://substackcdn.com/image/fetch/$s_!wZXl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.png 848w, https://substackcdn.com/image/fetch/$s_!wZXl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.png 1272w, https://substackcdn.com/image/fetch/$s_!wZXl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa668e6d3-c3a0-4473-934c-49b405983fd7_1600x688.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>Two projects, one author, one subscription. Here&#8217;s the comparison. Effort and wall-clock framing are estimates. Commit counts and dates are exact. The productivity story they imply is inference.</p><p><em>Time to build a comparable system: claude-mpm ~12 months versus trusty-tools ~2 months, roughly a sixth of the wall-clock time.</em></p><p>A more capable system (25 crates with first-class memory, search, worktree orchestration, PR review, and git analytics) came together in about a sixth of the calendar time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mZkp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mZkp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.png 424w, https://substackcdn.com/image/fetch/$s_!mZkp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.png 848w, https://substackcdn.com/image/fetch/$s_!mZkp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.png 1272w, https://substackcdn.com/image/fetch/$s_!mZkp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!mZkp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.png" width="1456" height="670" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:670,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97055,&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://hyperdev.matsuoka.com/i/208282371?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.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_!mZkp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.png 424w, https://substackcdn.com/image/fetch/$s_!mZkp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.png 848w, https://substackcdn.com/image/fetch/$s_!mZkp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.png 1272w, https://substackcdn.com/image/fetch/$s_!mZkp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffec223-9ac6-409c-8a8e-eaa391cea2b4_1600x736.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>Commit velocity: claude-mpm ~380/month versus trusty-tools ~860/month, roughly 2.3x, though squash-merges across many worktrees likely undercount trusty-tools&#8217; true activity.</em></p><p>Velocity roughly 2.3x per month. A year of tech-lead work sharpened the exact skills this way of working rewards, driving a team, now a team of agents, and holding SDLC discipline as the branches multiply. And it shows in the git record, not just in my own say-so. Three signals I can actually measure. Commit messages that name a driving issue or decision rose from roughly one commit in ten to about nine in ten. The code now logs <em>why</em>, not only <em>what</em>. The eight near-identical agent files I copy-pasted early in claude-mpm collapsed into one composed base definition, a fix I started mid-project and carried further into trusty-tools. And architecture decision records went from essentially none to eighteen numbered ADRs plus a per-crate decisions taxonomy, a habit that matured across both projects rather than one trusty-tools invented. Developer growth and harness capability compound. They push the same direction. But even with that, a person going from good to better doesn&#8217;t buy you a sixth of the calendar time. The impressive part is still the tooling.</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_!tj7D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tj7D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.png 424w, https://substackcdn.com/image/fetch/$s_!tj7D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.png 848w, https://substackcdn.com/image/fetch/$s_!tj7D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.png 1272w, https://substackcdn.com/image/fetch/$s_!tj7D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!tj7D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.png" width="1456" height="979" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:979,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:180011,&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://hyperdev.matsuoka.com/i/208282371?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.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_!tj7D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.png 424w, https://substackcdn.com/image/fetch/$s_!tj7D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.png 848w, https://substackcdn.com/image/fetch/$s_!tj7D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.png 1272w, https://substackcdn.com/image/fetch/$s_!tj7D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19050f4c-efa9-4513-9c5a-0c97c3860b5b_1650x1110.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>Capability checklist across three columns, a year ago, now, and a speculative year from now, for orchestration, memory, search, worktrees, skills, ticketing, and PR review.</em></p><p>Every row that read &#8220;you build this&#8221; a year ago reads &#8220;the harness provides this&#8221; now. Multi-agent orchestration: hand-built then, native flag now. Memory: thin and hand-maintained then, a knowledge-graph crate now. Search: external dependency then, first-class now. Worktrees: DIY shell commands then, a <code>--worktree</code> flag and fifteen live trees now.</p><p>The harness now enforces the workflow, not just supplies the parts. Spec-linked documentation was a prompt hint in claude-mpm, off by default. In trusty-tools it&#8217;s a build-blocking lint gate (<code>trusty-sld-lint</code>) wired into CI and pre-commit. Documentation that fails the build, not documentation you&#8217;re reminded to write. Ticket discipline hardened the same way: that rise in issue-referenced commits now sits inside a codified chain (spec &#8594; issue &#8594; PR-linked-to-issue &#8594; review gate &#8594; squash-merge), process-enforced, not yet a hard check that rejects an unlinked PR. And claude-mpm&#8217;s main branch required zero approvals and no passing checks, protected in name only. trusty-tools&#8217; main requires a review approval and six passing CI checks, with an LLM review pass (<code>trusty-review</code>) as a named gate. A year ago a disciplined developer chose these. Now the harness refuses to merge without a review and passing checks.</p><h2>A word on the subscription plan</h2><p>Claude Max was announced in April 2025 at <a href="https://support.claude.com/en/articles/11049741-what-is-the-max-plan">$100/month (Max 5x) and $200/month (Max 20x)</a>, with usage shared across chat and Code. Those price points appear to have held from then through mid-2026. The most visible change over that whole span was the five-hour rate limits for Claude Code, which Max subscribers draw on, <a href="https://www.anthropic.com/news/higher-limits-spacex">being doubled</a> in mid-2026. More headroom, not a different product tier.</p><p>So the input that stayed roughly constant was the money and the person. The input that changed was the model quality and the harness capability. When you hold the developer and the budget still and the output grows by this much, the variable that moved most would be the model and the harness (mostly the model, though in my experience good memory and search make a huge difference), even granting the developer improved and the language changed.</p><h2>A year from now</h2><p>The trajectory has a clear shape: tickets &#8594; worktrees &#8594; multi-session parallelism. Working in tickets was novel in mid-2025 and is common sense now. Native worktrees arrived in early 2026 and, within months, running many of them at once became my working model rather than a demo. Each step took a workflow that used to live in the developer&#8217;s head (tracking the units of work, isolating the parallel branches) and moved it into the tool. There are no hard adoption statistics for this progression. I&#8217;m describing a tooling timeline and a direction, not a measured majority practice. The tooling timeline itself is real, though: worktree support arriving across editors and agents through late 2025 and into 2026 follows the same curve.</p><p>The next frontier isn&#8217;t hard to name. If tickets became common sense and worktrees became my working model, the thing after worktrees is many concurrent sessions against one repo or monorepo. Enough parallel work in flight so that no human is tracking all of it, and the harness keeps the branches, the memory, and the review gates coherent. The <code>/fork</code> and <code>/subtask</code> primitives that landed in mid-2026, and subagents running in the background by default, are early moves in exactly that direction. The developer&#8217;s job shifts further from writing the steps toward specifying the outcome and reviewing the merge.</p><p>That&#8217;s not a prediction of artificial general anything. It&#8217;s the same migration, run one more turn: complexity leaving the code you write by hand and entering the tool you run. A year ago the hard part of the project was the scaffolding. This year it&#8217;s the harness. Next year it&#8217;s the coordination of more parallel work than one person can follow. So that one person gets pushed further up into the spec and the design.</p><h2>What a difference a year makes</h2><p>I built claude-mpm, and I&#8217;m very proud of it. For its moment it was a good answer to a real constraint. That&#8217;s the ordinary fate of scaffolding once the platform grows the feature underneath it, the design working as intended.</p><p>The measure of the year isn&#8217;t that I got better, though I hope I did. It&#8217;s that the same person, on the same max plan, with the same working habits, could build a materially more capable system in a fraction of the time, because the models got sharper and the harness absorbed the work that used to be mine to do. Twelve months of hand-built PM layer on one side, two months of composing first-class parts on the other. Same author. Same subscription.</p><p>What a difference a year makes.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a> and also writes about AI business at <a href="https://aipowerranking.com/">AI Power Ranking</a>.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/its-the-harness-stupid">It&#8217;s the Harness, Stupid</a> &#8212; Why orchestration, not raw model quality, drives the spread in outcomes &#8212; the mechanism underneath this whole comparison.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/what-is-harness-engineering">What Is Harness Engineering? (And Do You Need to Learn It?)</a> &#8212; The durable skill under the tooling: designing the loop, not just the scaffolding.</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners.</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[What Is Harness Engineering?]]></title><description><![CDATA[And Do You Need to Learn It?]]></description><link>https://hyperdev.matsuoka.com/p/what-is-harness-engineering</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/what-is-harness-engineering</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Fri, 10 Jul 2026 11:30:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yCIE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.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_!yCIE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yCIE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.png 424w, https://substackcdn.com/image/fetch/$s_!yCIE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.png 848w, https://substackcdn.com/image/fetch/$s_!yCIE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!yCIE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yCIE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.png" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2396213,&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://hyperdev.matsuoka.com/i/206397665?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.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_!yCIE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.png 424w, https://substackcdn.com/image/fetch/$s_!yCIE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.png 848w, https://substackcdn.com/image/fetch/$s_!yCIE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!yCIE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08ade5e0-a528-4d25-ab18-f607fbc7ada9_1536x1152.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><figcaption class="image-caption">Enhancing the Golden Egg</figcaption></figure></div><p>An engineer at work asked me a good question last week. &#8220;What&#8217;s harness engineering, and do I actually need to learn it &#8212; or is it going to be obsolete by the time I do?&#8221; Fair question. The term is about five months old, half the people using it mean different things by it, and the people who build the most capable coding agents around keep going on record to say the thing you&#8217;d build will get absorbed into the next model.</p><p>So here is my answer, stated plainly, because I think most engineers are getting it wrong: harness engineering is the most important skill you can build right now beyond coding and architecture themselves. And the strongest evidence that it matters is that most engineers don&#8217;t yet believe they need it.</p><p>I&#8217;ve been writing harnesses for over a year, so treat that as a disclosed bias rather than a neutral survey. What follows argues against the smartest version of the other side &#8212; the case that harness work is disposable scaffolding the models will eat for breakfast &#8212; because that case is largely correct, and it still doesn&#8217;t touch the skill I&#8217;m talking about.</p><h2>TL;DR</h2><ul><li><p><strong>Harness engineering is real but young.</strong> The phrase traces to <a href="https://mitchellh.com/writing/my-ai-adoption-journey">Mitchell Hashimoto in February 2026</a> and an <a href="https://openai.com/index/harness-engineering/">OpenAI Codex case study days later</a>; <a href="https://martinfowler.com/articles/harness-engineering.html">Fowler and B&#246;ckeler</a> formalized it as &#8220;Agent = Model + Harness.&#8221; Report it as an emerging frame, not a settled discipline &#8212; and no &#8220;harness engineer&#8221; job title exists yet.</p></li><li><p><strong>The labs are right that the crutch layer shrinks.</strong> Anthropic&#8217;s Cat Wu says <a href="https://www.lennysnewsletter.com/p/how-anthropics-product-team-moves">&#8220;the models will eat your harness for breakfast&#8221;</a>; Boris Cherny says scaffolding gets &#8220;pushed into the model itself.&#8221; No one at Anthropic said &#8220;don&#8217;t learn it.&#8221;</p></li><li><p><strong>The benchmark fight lives at the crutch layer.</strong> Same model, different scaffold moves scores by <a href="https://arxiv.org/abs/2606.08529">up to 28 points on GAIA</a> and <a href="https://www.tbench.ai/leaderboard/terminal-bench/2.0">18.6 points on Terminal-Bench 2.0</a> &#8212; but <a href="https://agents-last-exam.org/blogs/harness-matters">Agents&#8217; Last Exam</a> shows model choice drives roughly 3x the spread of harness choice. Scores were beside the point.</p></li><li><p><strong>The skill lives at a layer the benchmarks don&#8217;t measure.</strong> Not a better crutch &#8212; a different unit of work: research &#8594; spec &#8594; ticket &#8594; build &#8594; PR &#8594; review &#8594; merge &#8594; deploy, driven by the harness. <a href="https://openai.com/index/harness-engineering/">OpenAI ran that loop with 3 engineers to ~1M lines and 1,500 PRs</a> with zero human-written code.</p></li><li><p><strong>Harness engineering is not IDE engineering.</strong> If you treat the harness as an extension of your old editor workflow, you cap your ceiling. The durable move is letting it drive and jumping in when needed.</p></li><li><p><strong>Yes, you need to learn it.</strong> The specific syntax is throwaway. That&#8217;s exactly why the skill matters &#8212; you&#8217;re learning to operate a new unit of work, not one vendor&#8217;s config file.</p></li></ul><h2>The question, stated bluntly</h2><p>Start with what &#8220;harness engineering&#8221; is even asking you to do, because the word carries two arguments at once and people talk past each other constantly.</p><p>I already made the case that orchestration beats model quality in <a href="https://hyperdev.matsuoka.com/p/its-the-harness-stupid">It&#8217;s the Harness, Stupid</a> back in April &#8212; same model, large spread in outcomes, the competitive edge moving from model superiority to ecosystem superiority. That piece defined what a harness <em>is</em> and showed that it dominates results. I&#8217;m not going to re-argue it. This is the follow-up question that piece left open: if the harness matters that much, is <em>building</em> one a skill worth learning &#8212; or a treadmill that resets every model release?</p><p>That distinction is the whole article. Because the answer the evidence points to is: parts of it reset every release, and the part that doesn&#8217;t is the part almost nobody is naming. Most of the public argument is being had about the parts that reset.</p><h2>What a harness actually is</h2><p>The cleanest definition comes from Martin Fowler and <a href="https://martinfowler.com/articles/harness-engineering.html">Birgitta B&#246;ckeler</a>: &#8220;the harness&#8221; is everything in an AI agent except the model itself. Agent = Model + Harness. They split it into guides that push instructions forward and sensors that feed results back, and they frame the whole practice as a specific form of context engineering. <a href="https://simonwillison.net/guides/agentic-engineering-patterns/how-coding-agents-work/">Simon Willison</a> puts it the same way from the other direction: a coding agent is software that acts as a harness for an LLM.</p><p>When I say &#8220;using a harness,&#8221; here&#8217;s the concrete inventory I mean:</p><ul><li><p><strong>Agents</strong> &#8212; the loop that calls the model and routes its tool calls, plus any sub-agents you dispatch work to.</p></li><li><p><strong>Skills</strong> &#8212; reusable capabilities you can invoke by name instead of re-explaining every time.</p></li><li><p><strong>Hooks</strong> &#8212; deterministic gates that fire on events: run the tests, block a commit, reformat on save.</p></li><li><p><strong>Workflow</strong> &#8212; the orchestrated path from research to deploy, and who (or what) drives each step.</p></li><li><p><strong>Harness-specific instructions</strong> &#8212; how <em>this</em> harness should behave, kept distinct from project-specific instructions about <em>this</em> codebase. Conflating those two is one of the most common configuration mistakes I see.</p></li><li><p><strong>Memory and search</strong> &#8212; what persists across sessions, and how the agent retrieves it.</p></li></ul><p>Internalize that inventory before you touch any tool, because every product arranges these pieces differently and calls them different things. <a href="https://huggingface.co/blog/agent-glossary">Hugging Face</a> is the one source I&#8217;ve found that formally separates the <em>scaffolding</em> (the behavior layer &#8212; prompts, tool descriptions, memory) from the <em>harness</em> proper (the execution layer that calls the model and decides when to stop), then notes that most products just call the whole bundle a harness. That ambiguity is real, not something to paper over: the term is contested, <a href="https://haverin.substack.com/p/what-is-harness-engineering-ai-hype">some practitioners call it an old idea in new packaging</a>, and Latent Space literally ran a piece titled <a href="https://www.latent.space/p/ainews-is-harness-engineering-real">&#8220;Is Harness Engineering Real?&#8221;</a>. I don&#8217;t want to oversell a five-month-old buzzword. I want to separate the durable part from the disposable part, and to do that I have to give the skeptics their strongest swing first.</p><h2>&#8220;The models will eat your harness for breakfast&#8221;</h2><p>Here&#8217;s the skeptical case in its own words, and it&#8217;s a good case.</p><p>Cat Wu, who heads product for Claude Code, has a line for it: <a href="https://www.lennysnewsletter.com/p/how-anthropics-product-team-moves">the models will eat your harness for breakfast</a>. Her team does a system-prompt audit on every new model and deletes the reminders the model no longer needs. Her example: a to-do enforcement tool built to stop Claude Code from overclaiming that a refactor was finished became dead weight once newer models completed multi-step refactors on their own.</p><p>Boris Cherny, who created Claude Code, says the same thing from the architecture side. In an <a href="https://every.to/podcast/transcript-how-to-use-claude-code-like-the-people-who-built-it">Every.to interview</a>, he described the tool as &#8220;the thinnest possible wrapper over the model&#8221; and said that as models advance, &#8220;stuff that used to be scaffolding... gets pushed into the model itself.&#8221; His team builds harness features they expect to delete: &#8220;we build most things... even if that means we&#8217;ll have to get rid of it in three months. If anything, we hope that we will get rid of it in three months.&#8221; Disposable on purpose. And at Sequoia&#8217;s AI Ascent this spring he extended it forward &#8212; prompt-injection defenses, static command verification, permission modes, human-in-the-loop gates would all become less critical, he argued, &#8220;because models will do the right thing themselves.&#8221;</p><p>This isn&#8217;t only an Anthropic view. It&#8217;s the <a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html">bitter lesson</a> applied to agents: building in how we think the work should be structured tends to lose, over time, to raw capability and scale. Han Lee makes the practitioner version <a href="https://leehanchung.github.io/blogs/2026/05/08/hidden-technical-debt-agent-harness/">bluntly</a>: &#8220;Almost all of it is going to dissolve into the next generation of models... build each production harness like you mean to replace it.&#8221; Tool wrappers dissolve because models read OpenAPI specs directly now. Elaborate memory layers collapse into &#8220;plain text in progress.md plus git log.&#8221;</p><p>Two concessions I&#8217;ll make up front, because the fair version of this argument requires them. First: nobody at Anthropic said &#8220;don&#8217;t learn it.&#8221; The claim that they did is a paraphrase &#8212; a real cluster of &#8220;the harness shrinks&#8221; statements from Wu and Cherny, compressed by repetition into something stronger than anyone actually said. Second, and this is the one that stings: even the benchmark evidence <em>for</em> harnesses says model choice usually wins. On <a href="https://agents-last-exam.org/blogs/harness-matters">Agents&#8217; Last Exam</a>, swapping models with the harness fixed produced an 18-point pass-rate spread; swapping harnesses with the model fixed produced about 6. &#8220;The model accounts for about 3x the pass-rate spread of the harness.&#8221; If your goal is a higher number on the leaderboard, buy the better model before you tune the scaffold.</p><p>So the skeptics have a benchmark, a bitter lesson, and the people who build the reference implementation all pointing the same way. If I stopped here, the answer to &#8220;do you need to learn it&#8221; would be &#8220;not really &#8212; wait for the next model.&#8221; I don&#8217;t stop here, because all of that is arguing about a layer I don&#8217;t mean.</p><h2>Why both are right &#8212; and why it doesn&#8217;t touch the real skill</h2><p>The reconciliation is that &#8220;harness&#8221; names two different things, and the argument above is entirely about the first one.</p><p>The first layer is scaffolding-as-crutch. A hook that reminds the model to actually run the tests. A tool wrapper that translates an API the model can&#8217;t yet read. A permission gate that catches a mistake the model still makes. Anthropic&#8217;s own framing nails why this dissolves: <a href="https://www.anthropic.com/engineering/harness-design-long-running-apps">&#8220;every component in a harness encodes an assumption about what the model can&#8217;t do on its own.&#8221;</a> When the model can suddenly do that thing, the component becomes dead weight &#8212; exactly Wu&#8217;s deleted to-do tool. This layer is <em>supposed</em> to shrink. Anthropic builds it disposable on purpose. The benchmark gaps live here too: the <a href="https://arxiv.org/abs/2606.08529">28-point GAIA swing</a> and the <a href="https://www.tbench.ai/leaderboard/terminal-bench/2.0">18.6-point Terminal-Bench spread</a> measure how much a scaffold props up a fixed model&#8217;s score. Prop-up value falls as the model climbs. That&#8217;s the whole skeptical case, and it&#8217;s correct.</p><p>The second layer is workflow orchestration. Letting the harness drive the entire loop &#8212; research &#8594; spec &#8594; ticket &#8594; build &#8594; iterate &#8594; PR &#8594; review &#8594; merge &#8594; deploy &#8212; as one continuous operation instead of a sequence of prompts you babysit. This layer does not dissolve into a better model, because a better model doesn&#8217;t decide what&#8217;s safe to run unattended, what the blast radius of an autonomous change is, or where a human judgment call has to sit. Better models make the loop <em>run better</em>. They don&#8217;t make the loop <em>design itself</em>.</p><p>Blake Crosley draws the same line and I think it&#8217;s the sharpest version: harness <em><a href="https://blakecrosley.com/blog/loops-win-where-verification-is-cheap">syntax</a></em><a href="https://blakecrosley.com/blog/loops-win-where-verification-is-cheap"> is ephemeral and gets absorbed, but </a><em><a href="https://blakecrosley.com/blog/loops-win-where-verification-is-cheap">verification judgment</a></em><a href="https://blakecrosley.com/blog/loops-win-where-verification-is-cheap"> is durable</a> &#8212; knowing what&#8217;s safe to run without watching, what the acceptable failure modes are, where the loop needs a gate. The config file you write today is throwaway. The judgment about how to structure autonomous work is not.</p><p>The killer piece of evidence sits in the phrase&#8217;s own origin story. When <a href="https://openai.com/index/harness-engineering/">OpenAI published its harness-engineering case study</a>, the headline number was three engineers producing roughly a million lines of code across 1,500 pull requests, with zero human-written code, by engineering the harness around Codex. Read that carefully. That is not a better crutch bolted onto a fixed workflow. It&#8217;s a different unit of work &#8212; the engineers stopped writing lines and started operating a loop. No model upgrade alone produces that shape of output, because the shape is a workflow-design decision, not a capability. Ryan Lopopolo&#8217;s summary of what changed is the tell: the only scarce resource left was synchronous human attention. That&#8217;s an orchestration problem, and no amount of model progress makes it go away.</p><p>This is why I can concede the entire benchmark argument without losing anything. Model choice beats harness choice on scores &#8212; sure, roughly 3x on Agents&#8217; Last Exam. But the fight over scores is being had at the crutch layer, and the skill I mean lives at the orchestration layer, which those benchmarks don&#8217;t even measure. Even the strongest model still needs someone who knows how to hand it a whole workflow instead of a single task.</p><h2>Harness engineering vs. IDE engineering</h2><p>Here&#8217;s the crux, and it&#8217;s where I think most engineers cap their own ceiling without noticing.</p><p>The biggest difference between harness engineering and IDE engineering is what the unit of work is. In the editor era &#8212; including the AI-autocomplete-in-your-editor era &#8212; the unit is a change you make, assisted. You&#8217;re still driving. The tool suggests, you accept, you commit. A good harness inverts that. The unit becomes an <em>outcome you delegate</em>: research through deploy, handled by the harness, with you supervising the loop rather than typing inside it.</p><p>If you approach a harness as an extension of your existing editor workflow &#8212; a faster autocomplete, a smarter pair &#8212; you&#8217;ll get some lift and you&#8217;ll hit a ceiling fast, because you&#8217;re still the bottleneck on every step. The results I&#8217;ve gotten that actually surprised me came from letting the harness drive the whole loop and jumping in only where my judgment was needed: at the spec, at the review, at the &#8220;is this safe to merge&#8221; gate. That maps exactly onto Crosley&#8217;s durable skill. You&#8217;re not writing less carefully. You&#8217;re spending your attention on the decisions that don&#8217;t delegate, and letting the loop own the ones that do.</p><p>This is a materially different workflow from anything I did before agents, and I say that as someone who&#8217;s lived through several supposed paradigm shifts that turned out to be the same job with new keybindings. This one isn&#8217;t. The muscle you build isn&#8217;t &#8220;prompt the model well.&#8221; It&#8217;s &#8220;decompose an outcome into a loop a machine can run mostly unattended, and know precisely where to stand in it.&#8221; Harrison Chase, who runs LangChain, frames harness engineering as <a href="https://venturebeat.com/orchestration/langchains-ceo-argues-that-better-models-alone-wont-get-your-ai-agent-to">an extension of context engineering</a>, and that lineage is right &#8212; context engineering is about a year old and settled, harness engineering is the newer, contested layer on top. But the operative verb changed. You&#8217;re not composing a context window. You&#8217;re operating a workflow.</p><h2>Do you need to learn it? Yes &#8212; here&#8217;s how</h2><p>Yes. The fact that it still feels optional is the problem, not a reason to wait.</p><p>Here&#8217;s the path I&#8217;d suggest, and it&#8217;s roughly the one I took.</p><p><strong>Start by understanding what using a harness means</strong> &#8212; the inventory from earlier: agents, skills, hooks, workflow, harness-specific versus project-specific instructions, memory, search. Not as vocabulary. As the actual pieces you&#8217;ll arrange. If those seven words don&#8217;t map to concrete settings you can change, start there before you touch a workflow.</p><p><strong>Try several, and configure them well.</strong> Don&#8217;t judge the category from one tool on defaults. Learn to tune Claude Code yourself until it performs, rather than running it out of the box and concluding the harness &#8220;doesn&#8217;t matter.&#8221; Try <a href="https://openai.com/index/harness-engineering/">Codex</a>, Gemini, Auggie, OpenCode. I built <a href="https://github.com/bobmatnyc/claude-mpm">claude-mpm</a>, so weight my enthusiasm for the multi-agent approach accordingly &#8212; the point isn&#8217;t which one wins, it&#8217;s that you can&#8217;t feel the shape of the skill from a single vendor&#8217;s config.</p><p><strong>Lean into the differences instead of smoothing them over.</strong> The instinct is to find the tool that feels most like your old editor and stop. The results live in the opposite direction &#8212; in the workflows that feel least familiar, where the harness drives and you supervise. Best results come from leaning into what&#8217;s different, not translating it back into what you already knew.</p><p><strong>Let it drive, and know where to stand.</strong> This is the whole skill in one sentence. Hand the loop the outcome, supervise at the gates your judgment actually owns, jump in when the blast radius or the ambiguity demands it. That standing-in-the-right-place instinct is what transfers across every tool and survives every model release.</p><p>And that&#8217;s the reframe I&#8217;ll close on. Everything about the <em>specific</em> harness you learn this quarter is throwaway. The config syntax, the exact hooks, the tool wrappers &#8212; Han Lee is right, the next model eats away at it. But that&#8217;s precisely why the skill is worth building, not a reason to skip it. You&#8217;re not learning one vendor&#8217;s settings file. You&#8217;re learning to operate a new unit of work &#8212; an autonomous loop from research to deploy &#8212; and that competence is the thing the model upgrades keep <em>raising the value of</em>, not erasing. The syntax is disposable. The judgment about how to run the loop is what compounds.</p><p>Most engineers will figure this out eventually, when the workflow shift is obvious in hindsight. The ones who figure it out now get a head start measured in the gap between &#8220;my editor got smarter&#8221; and &#8220;my unit of work changed.&#8221; I&#8217;d rather be early on that one.</p><h2>One layer up: loop engineering</h2><p>There&#8217;s a move past the harness, and it picked up a name while I was writing this.</p><p>The stack is starting to read like a ladder: prompt engineering, then context engineering, then harness engineering &#8212; and now loop engineering on top. Each rung stops being where you spend your attention once the rung below it gets good enough to trust. You quit hand-tuning prompts when context engineering settled into a roughly year-old, mostly-solved practice. The bet underneath loop engineering is the same shape one level up: once your harness is solid, you stop prompting the agent and start designing the loops that prompt it for you.</p><p>The term isn&#8217;t mine. <a href="https://addyosmani.com/blog/loop-engineering/">Addy Osmani formalized it in June</a>, and his definition is the one I&#8217;d hand someone first: &#8220;Loop engineering is replacing yourself as the person who prompts the agent. You design the system that does it instead.&#8221; He also collected two lines that land the shift faster than I can. Peter Steinberger&#8217;s version: you should be designing the loops that prompt your agents. And Boris Cherny &#8212; the same Cherny from the &#8220;eat your harness for breakfast&#8221; section &#8212; put it flatly: &#8220;I don&#8217;t prompt Claude anymore&#8230; my job is to write loops.&#8221; <a href="https://www.langchain.com/blog/the-art-of-loop-engineering">LangChain picked it up a week later</a>, and their framing is the practical one: you don&#8217;t build a loop, you stack them &#8212; an agent loop inside a verification loop inside an event-driven loop inside a hill-climbing loop, each one checking the one below 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_!KNlZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KNlZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.png 424w, https://substackcdn.com/image/fetch/$s_!KNlZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.png 848w, https://substackcdn.com/image/fetch/$s_!KNlZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!KNlZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!KNlZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.png" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2248716,&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://hyperdev.matsuoka.com/i/206397665?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.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_!KNlZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.png 424w, https://substackcdn.com/image/fetch/$s_!KNlZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.png 848w, https://substackcdn.com/image/fetch/$s_!KNlZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!KNlZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fd96b6-ed6f-43c1-be83-2956e9647562_1536x1152.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><figcaption class="image-caption">Loop Engineering</figcaption></figure></div><p>Here&#8217;s the seam between the two layers, drawn plainly. Harness engineering is the discipline of building the scaffolding &#8212; the agents, hooks, skills, gates, and workflow from the inventory up top. Loop engineering is what you do once that scaffolding is good enough that you stop typing prompts and start directing repeatable cycles. The harness is what you build. The loop is what you run on it, again and again, with your attention moved up to which loops to run and when to trust them unattended. That&#8217;s the same &#8220;let it drive, know where to stand&#8221; instinct from a few paragraphs back, pushed one rung higher: now you&#8217;re not standing inside the loop at all &#8212; you&#8217;re choosing which loops get to run.</p><p>I&#8217;m not planting a flag here. The people already naming it are out ahead of me, and that&#8217;s the reason to point at it &#8212; this is where the harness work goes next, not a term I&#8217;m coining. If harness engineering closes the gap between &#8220;my editor got smarter&#8221; and &#8220;my unit of work changed,&#8221; loop engineering is what shows up on the far side of that gap, once the unit of work is a cycle you supervise instead of a task you run. I&#8217;m watching that one closely. And I&#8217;d start learning it before it feels obvious.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a> and also writes about AI business at <a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">AI Power Ranking</a>.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/its-the-harness-stupid">It&#8217;s the Harness, Stupid</a> &#8212; The predecessor to this piece: same model, wide spread in outcomes, and why the competitive edge moved from model quality to orchestration. It defined what a harness is; this piece argues that building one is a skill worth learning.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/hyperdevs-three-golden-rules">HyperDev&#8217;s Three Golden Rules</a> &#8212; The working rules I keep coming back to for professional AI work, and the discipline that keeps a driven-by-the-harness loop from running off the rails.</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/claude-sonnet-5-takes-the-default">Claude Sonnet 5 Takes the Default Driver Slot</a> &#8212; A concrete example of the crutch layer shrinking: adaptive thinking folds interleaved reasoning into the model, removing work harness authors used to do by hand.</p></li><li><p><a href="https://addyosmani.com/blog/loop-engineering/">Loop Engineering</a> &#8212; Addy Osmani&#8217;s June 2026 piece that named the layer above the harness: once the scaffolding holds, you stop prompting the agent and design the loops that prompt it. The forward edge of the arc this article traces.</p></li><li><p><a href="https://www.langchain.com/blog/the-art-of-loop-engineering">The Art of Loop Engineering</a> &#8212; LangChain&#8217;s treatment of loop engineering as stacked loops &#8212; agent, verification, event-driven, hill-climbing &#8212; each one checking the one beneath. The practitioner&#8217;s map of where harness work heads next.</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners, including the coding-agent leaderboards this piece leans on.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Coding's Great Depresh ]]></title><description><![CDATA[&#8212; and How to Find Your Energesh]]></description><link>https://hyperdev.matsuoka.com/p/codings-great-depresh</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/codings-great-depresh</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Mon, 29 Jun 2026 12:16:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4RhI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<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_!4RhI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4RhI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!4RhI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!4RhI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!4RhI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4RhI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1503107,&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://hyperdev.matsuoka.com/i/203766515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.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_!4RhI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!4RhI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!4RhI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!4RhI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc3ff9ce-c117-4182-9b49-d918a3630ad5_1024x768.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 2019, comedian Gary Gulman released an HBO special called <em><a href="https://www.imdb.com/title/tt10409666/">The Great Depresh</a></em>. The title puns on the 1930s collapse, but the special is about Gulman&#8217;s own clinical depression &#8212; the hospitalization, the electroconvulsive therapy, the long climb back. He calls it &#8220;depresh&#8221; throughout. The diminutive is the point: &#8220;depression&#8221; was too heavy to say out loud for years, so he found a smaller word that let him talk about it at all. The special ends on a line he delivers like a weather report: &#8220;My depresh is in remish.&#8221;</p><p>Something adjacent is moving through the developer community, and most people don&#8217;t have a name for it yet. It isn&#8217;t burnout, and it isn&#8217;t fear of replacement, though that gets blamed for it. It&#8217;s a specific malaise in senior engineers who, by outward measures, are doing fine &#8212; shipping more, faster, with tools that work. They feel worse anyway. Call it the Coding Depresh.</p><p>The Depresh is real, it&#8217;s documented, and there&#8217;s a path out that doesn&#8217;t require pretending the loss isn&#8217;t a loss. I write from an unusual position. I spent eight years as CTO of TripAdvisor managing more than 560 engineers, mostly not writing code, and I missed it. I came back to hands-on coding in March 2025, entirely through AI tools &#8212; my re-entry and AI-assisted development are inseparable. I never had to grieve a pre-AI coding identity, because I didn&#8217;t have one to defend. That gives me a strange vantage point on the engineers who did.</p><h2>TL;DR</h2><ul><li><p>The Coding Depresh is identity disconfirmation, not job-loss fear: when the thing you built your professional self around gets automated, &#8220;who am I as a developer?&#8221; stops having an easy answer.</p></li><li><p>It&#8217;s documented. A 15-year veteran describes shipping an AI-built pipeline and feeling grief &#8220;for an identity.&#8221; Stack Overflow&#8217;s 2025 survey shows distrust in AI accuracy (46%) outrunning trust (33%) for the first time, even as usage climbed to 84%.</p></li><li><p>The most-cited evidence that AI slows experienced developers &#8212; METR&#8217;s 2025 trial showing them ~19% slower &#8212; has been retired by the same researchers, whose redesigned data now points the other way. Even the skeptics&#8217; own number moved.</p></li><li><p>A different camp &#8212; the Energesh &#8212; reports feeling more capable, not less. The fault line isn&#8217;t seniority or skill. It&#8217;s your answer to &#8220;who are you as a developer.&#8221;</p></li><li><p>The most useful question I&#8217;ve seen comes from an Anthropic engineer: &#8220;I thought that I really enjoyed writing code, and I think instead I actually just enjoy what I <em>get</em> out of writing code.&#8221; Where you land tells you where you live.</p></li><li><p>For engineers in the Depresh, and the CTOs managing them: the craft instinct that makes the tools feel wrong is the most valuable thing you own. It doesn&#8217;t have to die for you to adopt the tools.</p></li></ul><h2>The Depresh is real, and it&#8217;s documented</h2><p>Start with the most precise account I&#8217;ve found. <a href="https://medium.com/codetodeploy/ai-existential-dread-and-developer-ego-death-aef8bfc93214">George Violaris</a>, a developer with fifteen years&#8217; experience, wrote in March 2026 about shipping a data pipeline with AI assistance in an afternoon &#8212; work that would have taken him three days by hand. He expected pride. He got this instead:</p><blockquote><p>&#8220;That evening, I felt something I can only describe as grief. Not for a person. For an identity.&#8221;</p></blockquote><p>He goes on: &#8220;Three years ago, writing code wasn&#8217;t just what I did. It was who I was.&#8221; Then: &#8220;The ego death was real. &#8216;I am a person who writes excellent code&#8217; had to die.&#8221;</p><p>This is not a man worried about his next paycheck. He shipped the thing. The pipeline is in production. What broke wasn&#8217;t his employment; it was the relationship between his sense of self and the work. Most of the public conversation treats developer anxiety as a labor-market story &#8212; real, severe for junior developers, but separate, and not the one I&#8217;m writing about.</p><p>The Depresh I&#8217;m describing hits a different person: the experienced developer whose answer to &#8220;who are you?&#8221; was &#8220;I am the person who writes excellent code.&#8221; For that person, the tools don&#8217;t threaten the job first. They threaten the identity first.</p><p>The numbers underneath the mood are strange. <a href="https://survey.stackoverflow.co/2025/ai/">Stack Overflow&#8217;s 2025 Developer Survey</a>, the largest census of working developers we have, shows two lines crossing. Favorable sentiment toward AI tools fell from 77% in 2023 to 60% in 2025, while usage or intent to use rose from 70% to 84%. People are adopting tools they feel worse about. Trust in AI accuracy dropped to 33% against 46% who distrust it &#8212; the first year distrust outran trust &#8212; and the top frustration, cited by 66%, was &#8220;AI solutions that are almost right, but not quite.&#8221; The most experienced developers are the most skeptical: only 2.5% &#8220;highly trust&#8221; the output, and use it all day anyway. Working with something you don&#8217;t trust, that demands verification you can&#8217;t delegate &#8212; that&#8217;s the exhaustion of vigilance without resolution.</p><p>Then there&#8217;s the METR study &#8212; less for the number most people quoted than for what happened to it. In 2025 the nonprofit METR <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">ran a controlled trial</a> with experienced open-source developers and found them 19% slower with AI assistants while they believed they&#8217;d been roughly 20% faster. That became the most-cited evidence that the tools don&#8217;t pay off. Then in February 2026 the same team <a href="https://metr.org/blog/2026-02-24-uplift-update/">retired it</a>, writing that the original no longer reflects &#8220;the current impact of AI models on open-source developer productivity&#8221;; their redesigned measurement runs the other way, an estimated 18% speedup for the same returning developers. The intervals are wide, so the magnitude is soft &#8212; but the direction reversed, and why it had to be rebuilt is the tell: 30 to 50% of developers refused to submit tasks they expected AI to speed up, and many refused to work without AI at all. The measurement broke down because people won&#8217;t give up the tools. I read the original not as &#8220;the tools are bad&#8221; but as disorientation: when your instincts and the stopwatch disagree, then a year later the stopwatch reverses, your competence comes unmoored.</p><h2>There is another camp, and it&#8217;s also documented</h2><p>Here is what keeps the Depresh from being the whole story. A different group of engineers is having close to the opposite experience, and they&#8217;re not naive optimists or vendors.</p><p>Andrej Karpathy <a href="https://x.com/karpathy/status/1886192184808149383">named the moment in February 2025</a>: &#8220;a new kind of coding I call vibe coding, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.&#8221; He was describing a feeling, not a methodology. Simon Willison later coined <a href="https://simonwillison.net/2025/Oct/7/vibe-engineering/">&#8220;vibe engineering&#8221;</a> for the responsible professional version &#8212; engineers using these tools deliberately to accelerate real work.</p><p>The output side is loud. Pieter Levels built a <a href="https://levels.io/fly-pieter-com-vibecoded-flight-simulator">browser flight simulator</a> with no game-development background and reached around $1M in annualized revenue in 17 days. <a href="https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny">Boris Cherny</a>, who leads Claude Code at Anthropic, runs five parallel instances and ships 20 to 30 pull requests a day: &#8220;once there is a good plan, it will one-shot the implementation almost every time.&#8221;</p><p>This is where my own story sits. When I came back, the mechanics of typing code line by line weren&#8217;t part of my working identity &#8212; I&#8217;d been away from the keyboard for years. What I found waiting was the part I&#8217;d missed: building things, deciding what should exist, watching it take shape, fixing what&#8217;s wrong with it. The joy of building and the mechanics of writing code were never the same thing.</p><p>I can be concrete, because I&#8217;ve done it in the open. Since March 2025 I&#8217;ve shipped real, full-cycle software through these tools &#8212; not snippets, complete projects. The flagship is <a href="https://github.com/bobmatnyc/claude-mpm">claude-mpm</a>, a multi-agent orchestration platform for Claude with a real user base. Most of 2025 was Python; then in 2026 I taught myself Rust to build the trusty-* ecosystem &#8212; code search, memory, PR review, orchestration &#8212; something I wouldn&#8217;t have attempted by hand while running an org. Architecture, review, releases, the full loop, at a volume I couldn&#8217;t reach typing every line. Most of it is public on GitHub under <a href="https://github.com/bobmatnyc">bobmatnyc</a>, so the claim is checkable. I&#8217;m not theorizing about the Energesh. I&#8217;m living in it.</p><h2>What actually separates the two camps</h2><p>Not seniority. Not raw skill. Not the domain you work in, though each shades the experience. The fault line is the answer you&#8217;d have given, before any of this started, to a single question: who are you as a developer? There&#8217;s an older version of the same split.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xDfL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xDfL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!xDfL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!xDfL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!xDfL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xDfL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bba5a639-91a8-4072-939c-05ed95492b5b_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1319015,&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://hyperdev.matsuoka.com/i/203766515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.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_!xDfL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!xDfL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!xDfL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!xDfL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbba5a639-91a8-4072-939c-05ed95492b5b_1024x768.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 the early nineteenth century the <em><a href="https://en.wikipedia.org/wiki/Canut_revolts">canuts</a></em> were the silk weavers of Lyon, clustered in the Croix-Rousse district, working intricate patterns by hand. It was master-craft work, identity-defining &#8212; the skill lived in the fingers. Then Joseph Marie Jacquard demonstrated a loom that wove those same complex patterns automatically, driven by punched cards, doing in a single pass what had taken the weaver and an assistant by hand. The canut whose sense of self lived in the act of weaving, in the tight and skilled handwork itself, was displaced at the identity layer. The canut whose relationship was with the silk itself, the finished cloth, still had somewhere to stand. The fabric still got made. More of it, in fact. If your identity comes from the tight weaving rather than from seeing the cloth made, you are a Canut.</p><p>Coding has the same shape. If your answer to &#8220;who are you&#8221; was inseparable from &#8220;I am the person who writes the code&#8221; &#8212; the line-by-line authorship, the mechanical understanding of every decision, the craft of it &#8212; then AI arrives at the identity layer, not the job layer. Violaris&#8217;s grief is the correct, proportional response; it scales with how much of himself he invested. If your answer was closer to &#8220;I am the person who builds the thing that exists at the end,&#8221; the same tools feel like a gain. You were always pointed at the cloth, not the weave. The result just got cheaper to make.</p><p>There&#8217;s a quiet irony in the comparison. Jacquard&#8217;s punched cards are a direct ancestor of the computer &#8212; they ran on into Babbage&#8217;s Analytical Engine and later Hollerith&#8217;s tabulators and the IBM punch card. The mechanism that displaced the weaver became the machine the coder works on, now automating a layer of the coder&#8217;s craft too. Same lineage, one more turn.</p><p>The cleanest articulation comes from an Anthropic engineer, quoted in <a href="https://www.anthropic.com/research/how-ai-is-transforming-work-at-anthropic">Anthropic&#8217;s own internal research on AI-assisted work</a>:</p><blockquote><p>&#8220;I thought that I really enjoyed writing code, and I think instead I actually just enjoy what I <em>get</em> out of writing code.&#8221;</p></blockquote><p>That is the skeleton key. Most developers in the Depresh believe they love writing code, and they&#8217;re not wrong, exactly &#8212; but the two halves of that sentence always came bundled. You couldn&#8217;t get the output without the authorship. AI unbundles them. Do you love the writing, or what the writing gets you? Where you land tells you which camp you&#8217;re in, and it&#8217;s not always where you assumed.</p><p><a href="https://newsletter.kentbeck.com/p/augmented-coding-beyond-the-vibes">Kent Beck&#8217;s vocabulary</a> dissolves a false worry. He distinguishes <em>augmented coding</em> from <em>vibe coding</em>. In vibe coding you don&#8217;t care about the code, only the behavior. In augmented coding you care deeply about the code, its complexity, its tests &#8212; &#8220;it&#8217;s just that I don&#8217;t type much of that code.&#8221; The Energesh isn&#8217;t about lowering your standards: the taste and architectural judgment that took decades to build are still doing the real work.</p><p>David Heinemeier Hansson gives the sharpest version of the craft objection. DHH spent most of 2025 resisting agent-first coding, and his reason was a craft reason. On <a href="https://lexfridman.com/dhh-david-heinemeier-hansson">Lex Fridman&#8217;s podcast</a> he said the joy is to type the code himself; he keeps AI in a separate window because letting it drive made him &#8220;feel competence draining out of [his] fingers.&#8221; He has since <a href="https://newsletter.pragmaticengineer.com/p/dhhs-new-way-of-writing-code">switched to an agent-first workflow</a>, on the logic that the tools finally met his standard, not that his standard moved. His values stayed put; what changed was his assessment of whether the tools honored them. That&#8217;s the template: the resister and the convert are the same man with the same principles.</p><p>Which is why the craft instinct deserves defending, not demolishing. The tools feel wrong partly because you&#8217;re judging them against that instinct, not just against output. Its firing isn&#8217;t a malfunction &#8212; it&#8217;s the sharpest instrument you own, calibrated over years, telling you when something is almost right but not quite, the same complaint 66% named in the Stack Overflow data. The mistake is concluding it has to be put down for the tools to be picked up. It doesn&#8217;t.</p><h2>The path from Depresh to Energesh</h2><p>This part is for the reader sitting in the Depresh right now. It isn&#8217;t a pep talk, and I&#8217;m not going to tell you the feeling is irrational, because it isn&#8217;t.</p><p><strong>Grieve first.</strong> The ego death Violaris describes is real, and you&#8217;re allowed to mourn it. The craft identity you spent years building had value &#8212; it shipped real systems and earned you a career. Skipping the grief doesn&#8217;t work. The developers I&#8217;ve watched leap straight to enthusiasm tend to adopt the tools resentfully and use them badly, half-hoping they&#8217;ll fail. Let the loss be a loss before you look for what&#8217;s on the other side.</p><p><strong>Then ask the real question.</strong> The Anthropic engineer&#8217;s version: do I love writing code, or what I <em>get</em> from writing code? You&#8217;ve probably never had to answer it, because the two were never separable before. They are now. The answer isn&#8217;t a verdict on your worth as an engineer. It&#8217;s a map of where you actually live, and either answer is fine &#8212; but you can&#8217;t find the path until you know which is true for you.</p><p><strong>Learn harness engineering.</strong> The on-ramp for a senior engineer goes up a level, not down. Vibe coding pulls you toward the model&#8217;s altitude; this pulls you above it. The harness is the tooling layer around the model &#8212; orchestration, context management, verification scaffolding, the agent configuration that decides what the model sees and whether you can trust what comes back. Engineering that layer rewards the judgment you spent years building: systems thinking, architecture, the discipline of making an unreliable component dependable. My own claude-mpm and trusty-* tools are harness engineering and nothing else. So skip the vibe-coded toy app. Pick something real, build the harness that drives it, and watch how it feels &#8212; whether <em>you</em> feel more like yourself, or less.</p><p><strong>Reframe from author of code to author of outcomes.</strong> Your craft instinct &#8212; what good architecture looks like, what breaks at scale, when a design is quietly wrong &#8212; isn&#8217;t going away, and the model doesn&#8217;t have it. The model is fast, capable, judgment-free. You are slow by comparison and you have taste. The job becomes directing the thing and knowing whether what came back is right. Not a demotion from engineer to button-pusher. It&#8217;s the part of the work that was always hardest to teach, now occupying most of your day.</p><p>A word for the CTOs reading this: you have a version of this problem you may not have named. The Depresh shows up in your metrics before your one-on-ones: review cycles stretching out, code-quality variance widening, your most experienced engineers going quiet in design reviews. The path for them is the path for an individual &#8212; don&#8217;t push adoption before you&#8217;ve made room for the grief. And understand who you&#8217;re dealing with: the engineers who feel the Depresh most sharply are frequently your best ones, who invested most in the craft. Their standards are the feature, not the bug. Burn that instinct down to force faster adoption and you&#8217;ll get the adoption and lose the standards.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1RiK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1RiK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!1RiK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!1RiK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!1RiK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1RiK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1317916,&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://hyperdev.matsuoka.com/i/203766515?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.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_!1RiK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!1RiK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!1RiK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!1RiK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe76ca282-db68-4682-8a30-3d327f8a6e50_1024x768.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>Where this leaves you</h2><p>Gulman didn&#8217;t end his special by announcing he was cured. He said his depresh was in remish &#8212; smaller word, smaller claim, a thing managed rather than defeated. That&#8217;s about the right register for where the industry is.</p><p>The craft you built was real, and so is the grief if you&#8217;re feeling it. But the thing you actually loved &#8212; if it turns out to be the building, the deciding, the watching something work that didn&#8217;t exist this morning &#8212; that part never depended on you typing every character yourself. The canut whose love was the cloth still had cloth to make. You can find out which one you are. Most developers go a whole career without having to ask. You get to.</p><p>Your depresh can be in remish. The energesh is on the other side of one unsparing question, and you already know how to ask those. You&#8217;ve been debugging your own assumptions for years.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a> and writes about AI business trends at <a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">AI Power Ranking</a>.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/tide-has-turned-senior-devs">The Tide Has Turned: Senior Developers Are Finally Adopting AI Tools</a> &#8212; Why the holdouts changed their minds, and what shifted to make it happen</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/era-of-the-leader-practitioner">The Era of the Leader/Practitioner</a> &#8212; How AI tools made the hybrid leader-who-builds role viable again</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/weve-turned-a-corner">We&#8217;ve Turned a Corner</a> &#8212; On the shift from skepticism to working practice</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders</p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Math Doesn't Work (Yet): Inside the AI Profitability Problem]]></title><description><![CDATA[Why Scaling Doesn't Lead To Profitability]]></description><link>https://hyperdev.matsuoka.com/p/the-math-doesnt-work-yet-inside-the</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/the-math-doesnt-work-yet-inside-the</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Wed, 10 Jun 2026 11:31:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XBpX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.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_!XBpX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XBpX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.png 424w, https://substackcdn.com/image/fetch/$s_!XBpX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.png 848w, https://substackcdn.com/image/fetch/$s_!XBpX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.png 1272w, https://substackcdn.com/image/fetch/$s_!XBpX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XBpX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.png" width="1195" height="896" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:896,&quot;width&quot;:1195,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1847405,&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://hyperdev.matsuoka.com/i/201357245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.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_!XBpX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.png 424w, https://substackcdn.com/image/fetch/$s_!XBpX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.png 848w, https://substackcdn.com/image/fetch/$s_!XBpX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.png 1272w, https://substackcdn.com/image/fetch/$s_!XBpX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61162dd8-5fc3-4493-856f-338f6a569f95_1195x896.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><h1>The Math Doesn&#8217;t Work (Yet): Inside the AI Profitability Problem</h1><p>OpenAI&#8217;s own projections show losses getting bigger as revenue gets bigger. Leaked investor documents reported across WSJ, Fortune, and The Information put the company at roughly <a href="https://fortune.com/2025/11/12/openai-cash-burn-rate-annual-losses-2028-profitable-2030-financial-documents/">$74 billion in operating losses in 2028</a> &#8212; on roughly $100 billion in projected revenue. That pairing is the headline. Not a smaller loss as scale arrives. A loss that grows faster than the top line.</p><p>That single relationship is the whole story. We tend to model AI companies as software businesses that will eventually grow into their cost structure the way SaaS companies did before them. The numbers say otherwise. These are capital-intensive infrastructure plays wearing software-company clothing, and the unit economics underneath them run in the opposite direction from the SaaS playbook most of us internalized over the last fifteen years.</p><p>A caveat before the numbers, because it matters for what&#8217;s below: neither OpenAI nor Anthropic publishes audited financials. Most figures here come from leaked investor decks, run-rate annualizations the companies announce in funding rounds, or SEC filings made by their cloud partners. The uncertainty is part of the analysis, not a footnote to it. When a specific timeline or quarterly figure couldn&#8217;t survive cross-checking against primary sources, I left it out.</p><h2>TL;DR</h2><ul><li><p>OpenAI&#8217;s leaked projections show operating losses <em>widening</em> as revenue grows &#8212; roughly <a href="https://fortune.com/2025/11/12/openai-cash-burn-rate-annual-losses-2028-profitable-2030-financial-documents/">$74B in losses on ~$100B revenue projected for 2028, with cumulative cash burn near $115B through 2029</a>.</p></li><li><p>In 2025 OpenAI spent about <a href="https://fortune.com/2025/11/12/openai-cash-burn-rate-annual-losses-2028-profitable-2030-financial-documents/">$1.69 for every dollar of revenue (~$9B net loss on ~$13B revenue)</a>, per leaked documents confirmed by multiple outlets.</p></li><li><p>Anthropic&#8217;s revenue trajectory is steep &#8212; roughly $1B annualized at the end of 2024 to a figure announced in the tens of billions by mid-2026 &#8212; with <a href="https://sacra.com/c/anthropic/">Claude Code alone reported at $2.5B annualized by February 2026</a>.</p></li><li><p><a href="https://www.investing.com/analysis/the-ai-token-pricing-crisis-behind-openai-and-anthropics-revenue-race-200680777">Inference token prices fell about 75% in a year</a>. Selling more AI makes the per-unit economics cheaper, which makes revenue growth harder, not easier.</p></li><li><p><a href="https://www.techtimes.com/articles/317542/20260601/ai-agent-economics-token-tax-locks-gross-margins-30-points-below-saas-baseline.htm">AI-native gross margins sit near 45% versus 75&#8211;85% for mature SaaS</a> &#8212; a structural gap of 23&#8211;33 points no company has yet closed.</p></li><li><p>No company has a verified path to profitability. Every specific breakeven-by-year claim I tried to confirm fell apart under scrutiny.</p></li></ul><h2>Two Companies, Two Shapes</h2><p>OpenAI ended 2025 at <a href="https://futurumgroup.com/insights/ai-capex-2026-the-690b-infrastructure-sprint/">roughly $20 billion in annualized revenue, a figure CFO Sarah Friar has stated directly</a>. That is a large business by any normal measure. It is also a business that, in the same year, spent about <a href="https://fortune.com/2025/11/12/openai-cash-burn-rate-annual-losses-2028-profitable-2030-financial-documents/">$1.69 for every dollar it took in &#8212; somewhere around a $9 billion net loss on roughly $13 billion in recognized revenue</a>, according to leaked documents that WSJ, Fortune, and The Information each reported. The company is majority funded by Microsoft, runs its compute primarily on Azure, and its strategy is scale-first: build the largest models, capture the most usage, and trust that revenue follows the curve.</p><p>Anthropic&#8217;s shape is different. Its revenue trajectory is steeper and more concentrated. The company grew from roughly $1 billion annualized at the end of 2024 to a figure it announced in the tens of billions by mid-2026 &#8212; <a href="https://sacra.com/c/anthropic/">the number it cited in its Series H materials</a>. I&#8217;m deliberately not pinning an exact figure to a month here, because the company has grown several-fold inside a single five-month window and any precise number is stale by the time you read it. What&#8217;s verifiable is the slope, and the slope is steep.</p><p>The more interesting detail is the concentration of value. Claude Code, one product, was reported at <a href="https://sacra.com/c/anthropic/">roughly $2.5 billion annualized by February 2026</a>. A single coding tool driving that much of a company&#8217;s run rate tells you something about where the margin-bearing demand actually lives. Anthropic is backed by Amazon (over $8 billion invested) and Google (over $2 billion), and it has <a href="https://techcrunch.com/2026/05/20/anthropic-will-pay-xai-1-25-billion-per-month-for-compute/">committed to spend more than $100 billion on AWS over ten years</a>, with roughly 1 GW of Trainium capacity targeted by the end of 2026. Two large companies funding it; one of them also selling it the silicon it runs on.</p><h2>Why Compute Is the Problem</h2><p>What separates these companies from every SaaS business you&#8217;ve evaluated: they don&#8217;t own their infrastructure. They rent it, at hyperscaler rates, from the same companies that fund them.</p><p>OpenAI&#8217;s Azure spend reportedly ran around <a href="https://www.theregister.com/2025/11/12/openai_spending_report/">$3.7 billion in 2024 and roughly $8.7 billion across the first three quarters of 2025</a>. Treat those numbers as medium-confidence &#8212; they come from leaked documents, and Microsoft pushed back that the figures &#8220;aren&#8217;t quite right.&#8221; But the direction is consistent with everything else: compute cost is the dominant line item, it&#8217;s largely fixed, and it grows with usage.</p><p>Anthropic&#8217;s arrangement produced one of the stranger details in modern enterprise finance I&#8217;ve read in some time. The company signed a deal for compute from Colossus 1 &#8212; Elon Musk&#8217;s Memphis data center, operated by xAI &#8212; at <a href="https://techcrunch.com/2026/05/20/anthropic-will-pay-xai-1-25-billion-per-month-for-compute/">roughly $1.25 billion per month for 300 MW of capacity, running through May 2029</a>. That&#8217;s not from a leak. It surfaced in SpaceX&#8217;s S-1 SEC filing and was confirmed by CNBC, Axios, and Data Center Dynamics, with a potential total value above $40 billion. There&#8217;s a 90-day mutual cancellation clause, so the headline total overstates the firm commitment. Still: Anthropic &#8212; funded by Google and Amazon &#8212; is paying Elon Musk&#8217;s company more than a billion dollars a month for compute. The AI capital world is stranger from the inside than the press releases suggest.</p><p>Zoom out and the renter problem gets sharper. Hyperscaler capex for 2026 is projected at <a href="https://futurumgroup.com/insights/ai-capex-2026-the-690b-infrastructure-sprint/">$660&#8211;690 billion</a>. Against that, OpenAI&#8217;s $20 billion ARR is roughly 3% of a single year&#8217;s data-center buildout by its suppliers. The companies selling AI applications are small tenants in an infrastructure market they don&#8217;t control and can&#8217;t currently price against.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GBF-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GBF-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!GBF-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!GBF-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!GBF-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GBF-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1143520,&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://hyperdev.matsuoka.com/i/201357245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.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_!GBF-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!GBF-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!GBF-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!GBF-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88636760-5028-4c28-a47a-a9be5e14e2e7_1024x768.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 Unit Economics Trap</h2><p>This story inverts an instinct most of us trust.</p><p>In normal software, even in the Cloud, scale is your friend. Marginal cost trends toward zero, gross margin climbs as you grow, and a mature SaaS business lands at <a href="https://www.techtimes.com/articles/317542/20260601/ai-agent-economics-token-tax-locks-gross-margins-30-points-below-saas-baseline.htm">75&#8211;85% gross margin</a> because serving the millionth customer costs almost nothing. Volume is the cure.</p><p>Inference doesn&#8217;t behave that way. Every token generated costs compute &#8212; real, metered, non-zero compute &#8212; so the marginal cost of serving usage stays stubbornly positive. And the price you can charge for that token is collapsing. Enterprise transaction data from Ramp shows <a href="https://www.investing.com/analysis/the-ai-token-pricing-crisis-behind-openai-and-anthropics-revenue-race-200680777">inference prices falling roughly 75% in a single year, from around $10 per million tokens to around $2.50</a>. Capability per dollar is improving fast, which is good for buyers and brutal for sellers, because it means the revenue you booked at last year&#8217;s prices reprices downward while your compute bill does not.</p><p>Put the two forces together and you get a squeeze that worsens with success. The better you are at selling inference, the more usage you drive; the more usage you drive, the more the per-unit price falls; the more it falls, the harder it is to grow revenue against a compute bill that scales with that same usage. Volume isn&#8217;t the cure here. Under these dynamics it&#8217;s part of the disease.</p><p>The survey data puts a number on how far this world sits from SaaS. ICONIQ Capital polled about 300 software executives and <a href="https://www.techtimes.com/articles/317542/20260601/ai-agent-economics-token-tax-locks-gross-margins-30-points-below-saas-baseline.htm">pegged AI-native gross margins at 41% in 2024, 45% in 2025, and a projected 52% in 2026</a>. Improving &#8212; but starting from a base 30-plus points below mature SaaS, and closing the distance slowly. A 52% gross margin is a respectable hardware business. It is a structurally difficult software business, especially one still spending heavily to grow.</p><h2>Two Different Bets</h2><p>OpenAI and Anthropic are running different experiments on how you eventually close that gap. Neither has been validated.</p><p>OpenAI&#8217;s bet is scale and breadth. Build the broadest platform, capture consumer and enterprise and API demand simultaneously, and assume that at sufficient scale you gain pricing power over compute, model-efficiency gains compound, and the revenue base grows fast enough to absorb the fixed cost. The leaked projections embody the risk in this bet: they show <a href="https://fortune.com/2025/11/12/openai-cash-burn-rate-annual-losses-2028-profitable-2030-financial-documents/">losses </a><em><a href="https://fortune.com/2025/11/12/openai-cash-burn-rate-annual-losses-2028-profitable-2030-financial-documents/">widening</a></em><a href="https://fortune.com/2025/11/12/openai-cash-burn-rate-annual-losses-2028-profitable-2030-financial-documents/"> through 2028 even as revenue approaches $100 billion, with cumulative cash burn near $115 billion through 2029</a>. The theory requires the curve to bend after the window we can currently see.</p><p>Anthropic&#8217;s bet is narrower and more product-led. Find a wedge where the work is valuable enough that buyers tolerate real prices, prove the margin there, and expand outward. Claude Code is that wedge made concrete &#8212; <a href="https://sacra.com/c/anthropic/">$2.5 billion annualized from developers</a> who pay because the output is worth more than the inference under it. Coding, agents, and enterprise automation are higher-value work than chat, and higher-value work supports prices that don&#8217;t immediately erode under token deflation. The risk: revenue concentration in a single product line, and an infrastructure bill &#8212; AWS commitments plus the xAI deal &#8212; that&#8217;s enormous relative to a company still proving the model.</p><p>Two theories of the same problem. Scale your way past the margin gap, or find work valuable enough that the gap doesn&#8217;t bind. We don&#8217;t yet have the data to say either works.</p><h2>What Would It Actually Take</h2><p>I&#8217;ll skip the timeline speculation &#8212; every specific breakeven-by-year claim I tried to verify died on contact with the sources. The structural requirements are clearer than the dates.</p><p>Three things have to move. First, gross margins have to climb from the mid-40s toward something defensible &#8212; call it 60-plus &#8212; and stay there while volume grows. That means model-efficiency gains (cheaper inference per unit of capability) have to outrun price deflation, rather than getting passed straight through to buyers as lower prices.</p><p>Second, these companies need pricing power over compute, which today they don&#8217;t have. At current scale they&#8217;re tenants. The open question is at what ARR a vendor becomes large enough to negotiate compute like a partner instead of a customer &#8212; or to build its own. Anthropic&#8217;s Trainium commitment and OpenAI&#8217;s various infrastructure moves are bets that vertical integration eventually changes the cost equation. That&#8217;s unproven, and it&#8217;s expensive in the interim.</p><p>Third, the product mix has to keep shifting toward work that resists deflation &#8212; enterprise agents, coding tools, automation that&#8217;s measured against labor cost rather than against the falling price of a token. Claude Code is the cleanest evidence that this category exists and that buyers will pay. Whether it&#8217;s a large enough share of total volume to lift blended margins across a company is the question that decides the whole thing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I6FB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I6FB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!I6FB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!I6FB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!I6FB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!I6FB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1409865,&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://hyperdev.matsuoka.com/i/201357245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.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_!I6FB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!I6FB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!I6FB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!I6FB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b6f837-7c33-4d8b-9fce-0ef475dfb701_1024x768.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 Open Questions</h2><p>What we don&#8217;t know outweighs what we do.</p><p>We don&#8217;t know the actual, current gross margins at either company &#8212; only the <a href="https://www.techtimes.com/articles/317542/20260601/ai-agent-economics-token-tax-locks-gross-margins-30-points-below-saas-baseline.htm">AI-native sector estimate of roughly 45%</a>. Neither company publishes the number that would settle the argument. We don&#8217;t know whether Anthropic&#8217;s stack of compute commitments, the decade-long AWS deal alongside the month-by-month xAI arrangement, creates structural tension or healthy redundancy. A company hedging across three infrastructure providers is either diversifying supply or revealing that no single supplier can meet its demand. We don&#8217;t know the ARR threshold at which compute pricing becomes negotiable, which is the hinge the entire margin story turns on.</p><p>And there&#8217;s the strategic risk that has no clean precedent: your infrastructure supplier is also your competitor. Microsoft ships Copilot. Amazon and Google both build models that compete with Anthropic&#8217;s. xAI builds Grok. Every dollar these companies pay for compute partly funds a rival&#8217;s model program. In normal software you don&#8217;t hand your gross margin to the company trying to beat you. Here it&#8217;s the default arrangement.</p><p>So the real question isn&#8217;t whether the AI labs are growing. They obviously are, faster than almost any companies in history. The question is whether revenue growth and margin improvement are the same trend or opposing ones. The SaaS era trained a generation of operators to believe that scale fixes economics. The leaked numbers describe a business where scale, so far, makes the loss bigger. Until one of these companies publishes a gross margin that shows the curve bending, that&#8217;s the math we have. And the math doesn&#8217;t work yet.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a> and writes about AI-powered engineering at HyperDev.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/the-first-70-era">The First 70% Era</a> &#8212; Where agentic AI delivers value and where it stops, and why the higher-value work resists token deflation</p></li><li><p><a href="https://hyperdev.matsuoka.com/p/ai-and-the-rise-of-the-hyperdev">AI and the Rise of the Hyperdev</a> &#8212; Why developers pay real money for AI tooling, the demand side of the margin story</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders</p></li></ul>]]></content:encoded></item><item><title><![CDATA[What’s Old Is New Again]]></title><description><![CDATA[Nine classic SDLC practices that AI finally makes practical]]></description><link>https://hyperdev.matsuoka.com/p/whats-old-is-new-again</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/whats-old-is-new-again</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Wed, 03 Jun 2026 11:31:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FRWK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.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_!FRWK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FRWK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.png 424w, https://substackcdn.com/image/fetch/$s_!FRWK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.png 848w, https://substackcdn.com/image/fetch/$s_!FRWK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.png 1272w, https://substackcdn.com/image/fetch/$s_!FRWK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FRWK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.png" width="873" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:873,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1435244,&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://hyperdev.matsuoka.com/i/200236698?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b89068-cf8e-4789-95f1-e357c61076b0_1024x768.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_!FRWK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.png 424w, https://substackcdn.com/image/fetch/$s_!FRWK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.png 848w, https://substackcdn.com/image/fetch/$s_!FRWK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.png 1272w, https://substackcdn.com/image/fetch/$s_!FRWK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b2c67b8-b815-4f06-a401-6d57b2a9d884_873x576.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>Most of the best ideas in software engineering aren&#8217;t new. They&#8217;ve been written up in books, argued over at conferences, taught in every &#8220;best practices&#8221; deck since the late 1990s. And most teams quietly don&#8217;t do them.</p><p>Not because anyone thinks they&#8217;re wrong. Test-driven development, design by contract, architecture decision records, mutation testing &#8212; ask a room of senior engineers whether these are good ideas and you&#8217;ll get nods. Ask the same room who practices them consistently under deadline pressure and the hands stay down. I&#8217;ve been in that room for twenty-five years, on both sides of the question. I&#8217;ve also been the engineering leader who let those practices slip because shipping the feature mattered more this quarter.</p><p>There&#8217;s a single economic reason these practices lose. The upfront cost is high, the payoff is real but distant, and human attention is the binding constraint. Write the test before the code, document the decision, specify the invariant &#8212; every one of those is a tax you pay now against a benefit you collect later, maybe, if the project lives long enough. Under deadline pressure, that&#8217;s a losing trade for a human. So we skip it, ship, and pay the interest later in bugs and confusion. Call it the impatience tax.</p><p>Agents don&#8217;t pay that tax. They have infinite patience for upfront rigor and roughly zero marginal cost for the tedious work that rigor demands. Writing a thorough test suite for code that doesn&#8217;t exist yet is psychologically brutal for a person and completely fine for a model. That single shift &#8212; the cost of patience going to zero &#8212; quietly inverts the economics of a whole list of practices we knew were right and gave up on anyway.</p><p>This isn&#8217;t a piece about what AI makes <em>possible</em>. Lots of things are possible. It&#8217;s about a narrower, more useful question: which disciplines did we already agree were correct, fight about for decades, and abandon for reasons that no longer hold?</p><p>Here are nine.</p><h2>TL;DR</h2><ul><li><p>These nine practices share one structure: high upfront cost, distant payoff. Human attention is the constraint that kills them under deadline pressure.</p></li><li><p>AI removes the constraint. A failing test is the clearest prompt you can hand an agent; a spec is its input; an ADR is its context. The discipline becomes the interface.</p></li><li><p>TDD, design by contract, and property-based testing turn from &#8220;things we should do&#8221; into the most effective way to <em>constrain</em> agent behavior and prevent hallucinated correctness.</p></li><li><p>Documentation, ADRs, and living docs get a bilateral ROI: agents generate them from code, and they make agents far more effective in your codebase.</p></li><li><p>The catch is real. A 2025 METR randomized trial found experienced developers were about 19% <em>slower</em> with AI assistance. These practices pay off only when AI is used with discipline, not as autocomplete.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hmow!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hmow!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.png 424w, https://substackcdn.com/image/fetch/$s_!hmow!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.png 848w, https://substackcdn.com/image/fetch/$s_!hmow!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.png 1272w, https://substackcdn.com/image/fetch/$s_!hmow!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hmow!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.png" width="1024" height="431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:431,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1083571,&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://hyperdev.matsuoka.com/i/200236698?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f4ba76c-18f5-413a-bf35-a56dc7861a00_1024x768.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_!hmow!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.png 424w, https://substackcdn.com/image/fetch/$s_!hmow!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.png 848w, https://substackcdn.com/image/fetch/$s_!hmow!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.png 1272w, https://substackcdn.com/image/fetch/$s_!hmow!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff117aee0-1765-4975-a0c5-dd7bdddbe34d_1024x431.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>1. Test-Driven Development</h2><p>Start with the practice most teams abandoned first.</p><p>Writing tests before code was always the theoretically superior move. It forces you to define the interface before you build behind it, catches bugs at the moment of definition instead of during integration, and leaves behind a living specification of what the code is supposed to do. Kent Beck made the case decades ago and the case held up.</p><p>Almost nobody did it consistently. The reason is psychological, not technical. Writing detailed tests for code that doesn&#8217;t exist yet, while a deadline breathes on your neck, feels like building scaffolding for a house you haven&#8217;t designed. Your brain screams at you to just write the function. So you write the function, promise yourself you&#8217;ll add tests after, and &#8212; well. You know how that goes.</p><p>Now flip the perspective. To an agent, a failing test isn&#8217;t scaffolding. It&#8217;s the clearest possible specification of intent you can provide. &#8220;Make this pass, don&#8217;t break anything else&#8221; is an unambiguous, machine-checkable instruction, which is exactly what a probabilistic system needs to stay honest. The test suite becomes a guardrail that prevents the most dangerous failure mode in AI-assisted coding: confident, plausible, wrong. Hallucinated correctness dies against a red bar.</p><p>TDD went from the discipline most teams couldn&#8217;t sustain to one of the best tools we have for bounding what an agent is allowed to claim it did. Same practice. Opposite economics.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a841!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a841!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.png 424w, https://substackcdn.com/image/fetch/$s_!a841!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.png 848w, https://substackcdn.com/image/fetch/$s_!a841!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.png 1272w, https://substackcdn.com/image/fetch/$s_!a841!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a841!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.png" width="1024" height="670" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:670,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1640038,&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://hyperdev.matsuoka.com/i/200236698?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a4cda20-f557-4918-88d1-529fec00bdee_1024x768.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_!a841!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.png 424w, https://substackcdn.com/image/fetch/$s_!a841!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.png 848w, https://substackcdn.com/image/fetch/$s_!a841!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.png 1272w, https://substackcdn.com/image/fetch/$s_!a841!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb60534e-05b5-4873-ab47-586bb7ec68bd_1024x670.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>2. Spec-Driven Development and Design by Contract</h2><p>Bertrand Meyer formalized design by contract in the 1980s and built it into the Eiffel language: specify preconditions, postconditions, and invariants, then let the implementation follow from the contract.</p><p>The idea was sound and the adoption was thin, for one stubborn economic reason: the contract only pays off if someone <em>else</em> writes the implementation from it. If you&#8217;re writing both the spec and the code, the spec is overhead &#8212; you already know what you meant. The contract&#8217;s value lives in the handoff, and for most of software history there was no cheap handoff to hand it to.</p><p>Now there is. You write the contract; the agent writes the implementation from it. Spec-driven development stops being a documentation chore and becomes the actual control surface for delegation. The spec is the part requiring human judgment about <em>what</em> the system should do. The implementation &#8212; the part that used to eat the hours &#8212; is the part you delegate. Meyer&#8217;s economics finally close, forty years late, because the missing party in the transaction showed 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_!P-wa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P-wa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.png 424w, https://substackcdn.com/image/fetch/$s_!P-wa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.png 848w, https://substackcdn.com/image/fetch/$s_!P-wa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.png 1272w, https://substackcdn.com/image/fetch/$s_!P-wa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P-wa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.png" width="1024" height="487" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:487,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1370470,&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://hyperdev.matsuoka.com/i/200236698?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d6c7c5-50c0-4b34-9a46-0700c4bf1e82_1024x768.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_!P-wa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.png 424w, https://substackcdn.com/image/fetch/$s_!P-wa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.png 848w, https://substackcdn.com/image/fetch/$s_!P-wa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.png 1272w, https://substackcdn.com/image/fetch/$s_!P-wa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5605bf-95f5-490e-b318-7334ff70ae87_1024x487.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>3. Architecture Decision Records</h2><p>Why does the codebase look like this? Why Postgres and not Dynamo, why this queue, why the weird module boundary that everyone trips over?</p><p>ADRs were the right answer to that question &#8212; a short dated record of each significant decision, the context, and the alternatives rejected. The discipline almost never held. Same shape as everything else here: the cost is immediate (stop, write the thing) and the value accrues slowly, mostly to some future engineer who isn&#8217;t in the room yet.</p><p>Two things flipped at once, which makes this one more interesting than the rest. First, agents can generate ADRs from an existing codebase &#8212; read the git history, the dependency choices, the structure, and reconstruct the decisions that produced them. The retroactive cost of documentation drops toward zero. Second, and this is the part people miss: existing ADRs dramatically improve what an agent can do <em>in</em> your codebase. An agent that can read why you chose eventual consistency won&#8217;t keep proposing changes that assume strong consistency.</p><p>So the ROI went bilateral. Agents help you write ADRs, and ADRs help agents help you. The practice that used to only cost now pays on both ends.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cfey!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cfey!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.png 424w, https://substackcdn.com/image/fetch/$s_!cfey!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.png 848w, https://substackcdn.com/image/fetch/$s_!cfey!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.png 1272w, https://substackcdn.com/image/fetch/$s_!cfey!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cfey!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.png" width="1024" height="445" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:445,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1079171,&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://hyperdev.matsuoka.com/i/200236698?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eca5b97-c8ef-45f0-97de-eb23cc9969c2_1024x768.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_!cfey!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.png 424w, https://substackcdn.com/image/fetch/$s_!cfey!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.png 848w, https://substackcdn.com/image/fetch/$s_!cfey!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.png 1272w, https://substackcdn.com/image/fetch/$s_!cfey!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256e6ffa-ac04-401b-bd1d-276e0dc51f21_1024x445.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>4. Continuous Code Review</h2><p>&#8220;Catch issues early&#8221; has sat on every best-practices list since Extreme Programming put continuous review on the map. The advice was never controversial. The bottleneck was always the same: human reviewer attention is finite, expensive, and easily exhausted. So review collapsed into batch PR review &#8212; a tired engineer reading a 600-line diff on a Friday afternoon, approving most of it on faith.</p><p>AI review on every commit &#8212; not batched at the PR boundary, but running as code lands &#8212; is moving from aspirational toward baseline: increasingly the default on teams that have wired it in, though not yet universal. The marginal cost of a careful read went to nearly nothing, and the read happens while the context is still warm.</p><p>But this one comes with an emergent problem worth naming, because it bites teams that adopt the tooling without rethinking the model. PRs are getting larger and arriving faster under AI-assisted development. An agent can produce a 2,000-line change in an afternoon. If your review model still routes everything through a human approver at the end, that human is now the rate limiter, drowning in volume they didn&#8217;t generate and can&#8217;t realistically read. AI review on every commit is part of the answer. The harder part is restructuring <em>what</em> the human reviews &#8212; architecture, intent, the decisions a model shouldn&#8217;t make alone &#8212; and letting the machine handle line-level correctness continuously. Adopt the tool without rethinking the workflow and you&#8217;ve just built a faster way to overwhelm your best reviewer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SXYP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SXYP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.png 424w, https://substackcdn.com/image/fetch/$s_!SXYP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.png 848w, https://substackcdn.com/image/fetch/$s_!SXYP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.png 1272w, https://substackcdn.com/image/fetch/$s_!SXYP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SXYP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.png" width="1024" height="456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:456,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1098227,&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://hyperdev.matsuoka.com/i/200236698?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce64d7a-b849-4c7e-b523-2565960ee237_1024x768.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_!SXYP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.png 424w, https://substackcdn.com/image/fetch/$s_!SXYP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.png 848w, https://substackcdn.com/image/fetch/$s_!SXYP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.png 1272w, https://substackcdn.com/image/fetch/$s_!SXYP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb6d6b9-de10-452f-8b64-7bb0bcba1041_1024x456.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>5. Pair Programming</h2><p>Pairing always looked expensive in the most obvious way: two engineers, one task, double the salary against a single unit of output. That intuition was wrong on the numbers &#8212; the measured overhead from the pair-programming studies was closer to 15%, often recovered through fewer defects &#8212; but the 2&#215; gut feeling is what drove the decisions. The benefits were real &#8212; knowledge transfer, real-time review, fewer dumb mistakes &#8212; but the perceived math meant most teams reserved it for critical paths, gnarly bugs, or onboarding a new hire. A luxury, rationed.</p><p>The pair is now a human and an agent, and it&#8217;s available to every engineer continuously, not rationed to the critical path. The knowledge-transfer benefit generalizes &#8212; the agent can explain unfamiliar parts of the codebase on demand. The real-time-review benefit generalizes &#8212; a second set of eyes on every line, every time, without scheduling two calendars. The economics that made pairing a rationed luxury simply don&#8217;t apply when one half of the pair has near-zero marginal cost.</p><p>Worth a caveat: agent-as-pair is genuinely good at the review and explanation half of pairing, and weaker at the part where a human partner pushes back on a bad <em>design</em> before you&#8217;ve written a line. You still need humans pairing with humans for that. But the day-to-day, line-by-line version of pairing just became free, and that&#8217;s most of what pairing was for.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DHDP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DHDP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.png 424w, https://substackcdn.com/image/fetch/$s_!DHDP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.png 848w, https://substackcdn.com/image/fetch/$s_!DHDP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.png 1272w, https://substackcdn.com/image/fetch/$s_!DHDP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DHDP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.png" width="1024" height="592" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:592,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1439433,&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://hyperdev.matsuoka.com/i/200236698?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F611b1613-4024-4d10-8e69-2b2a1936432d_1024x768.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_!DHDP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.png 424w, https://substackcdn.com/image/fetch/$s_!DHDP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.png 848w, https://substackcdn.com/image/fetch/$s_!DHDP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.png 1272w, https://substackcdn.com/image/fetch/$s_!DHDP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e5b59c-a9a7-44ae-8725-1333f8e08687_1024x592.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>6. Mutation Testing</h2><p>Coverage numbers lie, and most engineers know it. Eighty percent line coverage tells you eighty percent of your lines got executed by a test &#8212; not that any of those tests would <em>notice</em> if the behavior broke. Mutation testing is the honest measure: it deliberately introduces bugs (flip a comparison, drop a line, change a constant) and checks whether your test suite catches them. If a mutant survives, you have a test that runs code without actually validating it.</p><p>Mutation testing was always the gold standard and almost never run continuously, for one reason: it&#8217;s computationally expensive. You&#8217;re effectively running your whole suite many times over, once per mutation. On a real codebase that&#8217;s brutal. So it lived in research papers and the occasional heroic CI job that someone eventually disabled for being too slow.</p><p>That constraint is mostly gone &#8212; compute is cheap and parallel, and we got more comfortable spending it. And the practice arrived right when we suddenly need it most. AI-generated tests have a characteristic failure mode: they drift toward coverage metrics without meaningful assertions. The model writes a test that calls the function, exercises the path, and asserts almost nothing of substance &#8212; green checkmark, zero protection. Coverage looks great. Mutation testing is the thing that catches exactly that. It&#8217;s the verification layer for a verification layer, and it matters more now than when it was invented, because now a machine is writing the tests.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EY9I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EY9I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!EY9I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!EY9I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!EY9I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EY9I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1482204,&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://hyperdev.matsuoka.com/i/200236698?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.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_!EY9I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!EY9I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!EY9I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!EY9I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ad3dac-f7cb-48da-9d0a-a6098d28cbe6_1024x768.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>7. Living Documentation</h2><p>Documentation was always supposed to be a first-class artifact. It almost never was, and the reason is by now familiar: writing docs is tedious, and the penalty for stale docs accrues slowly and lands on someone else. So docs rotted. Every team has a wiki that&#8217;s a graveyard of half-true pages from two reorgs ago.</p><p>AI changes both halves of the equation at once. It generates docs from code, so the writing cost drops. And it <em>consumes</em> docs as context, so the docs earn their keep immediately &#8212; a well-documented codebase is a measurably more useful codebase for an agent working in it. The ROI is immediate and bilateral, same structure as ADRs.</p><p>There&#8217;s a quiet shift hiding in there. Documentation used to be written for humans who&#8217;d mostly never read it. Now it&#8217;s also written for the agent that will read it on every task, which means stale docs don&#8217;t just confuse a future engineer &#8212; they actively degrade your tooling today. The feedback loop tightened from months to minutes. That&#8217;s the kind of change that actually moves behavior, because the cost of skipping it shows up now instead of later.</p><h2>8. Runbook Generation from Incidents</h2><p>On-call always leaned too hard on tribal knowledge. The person who knows why the payment service wedges at 3 a.m. is asleep, on vacation, or left the company last spring. Writing a runbook after each incident was obviously the right move and reliably the thing nobody did, because the incident was <em>over</em> and everyone wanted to go back to bed.</p><p>Incidents become runbooks automatically now. The agent has the incident timeline, the chat transcript, the commands that resolved it, the postmortem &#8212; and it can turn that into a structured runbook while the details are fresh, without asking an exhausted engineer to relive the night. The cost that used to fall right when motivation was lowest now falls on a system that doesn&#8217;t get tired or resentful.</p><p>I&#8217;d treat the generated runbook as a draft a human still signs off on, not gospel. But &#8220;imperfect draft, reviewed in five minutes&#8221; beats &#8220;blank page nobody ever fills in,&#8221; and that was always the real competition.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dM5v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dM5v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.png 424w, https://substackcdn.com/image/fetch/$s_!dM5v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.png 848w, https://substackcdn.com/image/fetch/$s_!dM5v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.png 1272w, https://substackcdn.com/image/fetch/$s_!dM5v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dM5v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.png" width="1024" height="693" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:693,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1615996,&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://hyperdev.matsuoka.com/i/200236698?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3f83774-28c6-4b46-addd-83efad33390b_1024x768.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_!dM5v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.png 424w, https://substackcdn.com/image/fetch/$s_!dM5v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.png 848w, https://substackcdn.com/image/fetch/$s_!dM5v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.png 1272w, https://substackcdn.com/image/fetch/$s_!dM5v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c754a4-9b5b-424f-b008-30dbcb217887_1024x693.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>9. Property-Based Testing</h2><p>Example-based tests check the cases you thought of. Property-based testing is stronger: you specify the <em>invariants</em> a system must always satisfy &#8212; reversing a list twice returns the original, a serialized-then-deserialized object equals the original, the account balance never goes negative &#8212; and the framework generates hundreds of adversarial inputs trying to break them. QuickCheck pioneered the approach; it finds the edge cases you&#8217;d never have written by hand.</p><p>It never went mainstream outside a few communities, and the bottleneck wasn&#8217;t tooling &#8212; good property-based libraries exist for most languages. The bottleneck was writing good property specifications. Identifying the right invariants requires deep domain reasoning: you have to understand the system well enough to state what must <em>always</em> be true, which is harder than writing a few example cases. Most engineers, under pressure, defaulted to the easier thing.</p><p>This is where AI helps in a way that&#8217;s less obvious than &#8220;it writes the code.&#8221; A model can generate property suites from a spec, and &#8212; more usefully &#8212; it can reason about <em>what invariants a system should satisfy</em> in the first place, surfacing properties you hadn&#8217;t articulated. That&#8217;s the expensive, judgment-heavy part it actually offloads. Combined with mutation testing to keep the generated properties honest, you get a testing approach that was always more powerful than example-based testing and was always too expensive in human reasoning to adopt widely.</p><h2>The Catch</h2><p>I&#8217;d be selling you something if I stopped there, and the data won&#8217;t let me.</p><p>In July 2025, METR ran a randomized controlled trial with experienced open-source developers working on real tasks in repositories they knew well. The developers expected AI assistance to speed them up. It slowed them down &#8212; by roughly 19%. METR&#8217;s February 2026 follow-up found that gap narrowing, and reversing on some measures, as the same kind of developers gained real experience with the tools &#8212; which is to say the 19% was a snapshot of the unfamiliar, undisciplined path, and it closes precisely as people pick up the habits this piece is about.</p><p>That finding is real and it isn&#8217;t a contradiction of everything above. It&#8217;s the missing condition. Every practice in this piece works <em>because</em> it imposes structure on the agent &#8212; TDD as a guardrail, the spec as input, the ADR as context, mutation testing as the check on the check. Used that way, with discipline, AI is constrained toward correctness. Used the other way &#8212; as autocomplete, as a vibe-coding partner you don&#8217;t supervise &#8212; you get more code, faster, with less correctness and a slower path to done once you account for the cleanup. The METR developers, working in code they already understood deeply, may well have been paying exactly that tax: accepting plausible suggestions that took longer to vet and fix than writing it themselves would have.</p><p>So the inversion isn&#8217;t automatic. The cost of patience dropped to zero, which makes the rigorous path finally affordable. It does not make the undisciplined path good. If anything it makes discipline more important, because a tool that produces plausible output at high volume is precisely the tool that most needs a guardrail you can&#8217;t talk your way past. A red test bar doesn&#8217;t care how confident the model sounds.</p><h2>What To Do With This</h2><p>The interesting question was never &#8220;what does AI make possible.&#8221; That list is enormous, mostly speculative, and not very actionable. The better question is the one this whole piece is built on: which practices did we already know were right, argue about for decades, and quietly give up on?</p><p>That list is short, specific, and yours to write. Go pull your own team&#8217;s &#8220;we should really do this but we don&#8217;t&#8221; backlog &#8212; the standing items in retros that everyone agrees with and nobody owns. I&#8217;d bet most of them have the same economic shape: high upfront cost, distant payoff, killed by human impatience under deadline. Test coverage on the legacy module. The runbooks. The ADRs for the three decisions everyone keeps re-litigating. The integration tests that would&#8217;ve caught last quarter&#8217;s outage.</p><p>Run each one through a single question: was this abandoned because it was <em>wrong</em>, or because it was <em>expensive in human patience</em>? The wrong ones, leave abandoned. The expensive-in-patience ones just got cheap. Those are the ones to pick back up first.</p><p>The impatience tax got repealed. The disciplines it used to make unaffordable are sitting right there, mostly unchanged, waiting for someone to notice the price changed.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a> and writes about AI-powered engineering at <a href="https://hyperdev.substack.com/">HyperDev</a>.</em></p><p><strong>Related reading:</strong></p><ul><li><p>The Other Shoe Has Dropped &#8212; Why enterprise AI bills don&#8217;t match the per-token price collapse</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders</p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Era of the Leader/Practitioner]]></title><description><![CDATA[Putting "Do" back into "Lead"]]></description><link>https://hyperdev.matsuoka.com/p/the-era-of-the-leaderpractitioner</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/the-era-of-the-leaderpractitioner</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Mon, 01 Jun 2026 11:31:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!E_Vr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.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_!E_Vr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E_Vr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.png 424w, https://substackcdn.com/image/fetch/$s_!E_Vr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.png 848w, https://substackcdn.com/image/fetch/$s_!E_Vr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.png 1272w, https://substackcdn.com/image/fetch/$s_!E_Vr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E_Vr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.png" width="1024" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3731b710-763c-4f36-860f-560f95b11d2b_1024x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1378805,&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://hyperdev.matsuoka.com/i/200067020?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6656d57-be88-4993-a972-b7c0c5fd743d_1024x1024.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_!E_Vr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.png 424w, https://substackcdn.com/image/fetch/$s_!E_Vr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.png 848w, https://substackcdn.com/image/fetch/$s_!E_Vr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.png 1272w, https://substackcdn.com/image/fetch/$s_!E_Vr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3731b710-763c-4f36-860f-560f95b11d2b_1024x700.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>Something shifted in the last year, and it took me a while to name it.</p><p>A growing number of people are running organizations while still doing real hands-on technical work. Not as a hobby, not on weekends, not as a vanity exercise to keep their commit graph green. They are building things their teams depend on &#8212; and they are doing it as a deliberate part of the job, not in the cracks between meetings. The work has a specific shape. It is rarely a production feature. It is the layer underneath: developer productivity tooling, internal services, agentic harnesses, MCP connectors, the infrastructure that unblocks everyone else.</p><p>For most of my career this combination didn&#8217;t really hold together. You could code or you could lead, and the moment you tried to do both seriously, one of them rotted. I&#8217;ve watched plenty of technical executives keep a foot in the codebase and slowly become the bottleneck everyone routed around politely. The pattern was familiar enough to be a warning.</p><p>What changed is not that leaders suddenly got more disciplined. It&#8217;s that the time cost of meaningful technical contribution collapsed. Agentic coding made a hybrid role viable that wasn&#8217;t viable before &#8212; and the more I look at it, the more I think this isn&#8217;t a new invention at all. It&#8217;s the recovery of a very old idea that modern specialization interrupted.</p><p>I&#8217;m writing this as someone living in the middle of it. I spend roughly 30% of my time coding. And when I say coding, I mean directing a team of agents &#8212; much closer to that than hands-on work, which is probably the whole point. That&#8217;s not a full-time IC&#8217;s week, and it isn&#8217;t meant to be. It&#8217;s enough to stay close to the work that matters and to build the enabling infrastructure I think is worth my own hands on the keyboard.</p><h2>TL;DR</h2><ul><li><p>A distinct role is emerging: leaders who run organizations and still do deep technical work &#8212; specifically enabling/institutional work (tooling, harnesses, internal services), not critical-path product features.</p></li><li><p>This satisfies Charity Majors&#8217; actual advice. Her line was never &#8220;stop coding.&#8221; It was &#8220;stop writing code in the critical path.&#8221; Enabling work fits that exactly.</p></li><li><p>The integration of strategist and practitioner has deep cross-cultural precedent &#8212; Japan&#8217;s <em>bunbu-ry&#333;d&#333;</em>, Rome&#8217;s Marcus Aurelius, China&#8217;s <em>wen-wu</em>, the Renaissance polymath, Mattis&#8217;s &#8220;warrior monk.&#8221; The modern role is a recovery, not a novelty.</p></li><li><p>Agentic coding is what makes it newly viable: focused sessions now deliver output that once required sustained, uninterrupted immersion. The Anthropic 2026 data shows ~27% of AI-assisted work is work that &#8220;wouldn&#8217;t have been done otherwise.&#8221;</p></li><li><p>Directing agents feels like delegation &#8212; the same skill leaders already use with human reports. Which is why experienced leaders adapt to it more naturally than juniors do.</p></li></ul><h2>The pattern, named</h2><p>The difficulty with the coding executive was never philosophical. It was attentional.</p><p>Charity Majors mapped this years ago in <a href="https://charity.wtf/2017/05/11/the-engineer-manager-pendulum/">The Engineer/Manager Pendulum</a>, and the piece holds up because she was precise about the mechanism. Management is interruptive by design &#8212; your job is to be available, to unblock, to absorb the chaos so your team doesn&#8217;t have to. Serious engineering is the opposite. It requires blocking interruptions for long enough to hold a complex system in your head. Two incompatible attention modes. Try to run both at once and you do neither well.</p><p>But here is the part people skip when they quote her. Majors never said managers should stop coding. Her actual advice was sharper: <em>don&#8217;t write code in the critical path.</em> Don&#8217;t be the person others are waiting on. Stay technical, stay sharp, just don&#8217;t make yourself a dependency that blocks shipping. &#8220;The best frontline eng managers in the world,&#8221; she wrote, &#8220;are the ones that are never more than 2-3 years removed from hands-on work.&#8221;</p><p>That distinction carries the whole argument. Because there is a category of technical work that is consequential without being critical-path, and it turns out to be exactly the work senior people are best positioned to do.</p><p>Call it enabling work. Internal tooling. Developer productivity infrastructure. Agentic harnesses. MCP services that other teams plug into. Architectural prototypes that prove a direction before anyone commits to it. None of this is what blocks a release on Thursday. All of it multiplies whoever comes after. It tolerates interruption &#8212; you can pick it up Tuesday afternoon and put it down when a real fire starts &#8212; precisely because nobody is standing at your desk waiting for it.</p><p>This is also where the industry is putting its money. Gartner named platform engineering a top strategic trend for two years running and projects that 80% of large engineering organizations will run dedicated platform teams by 2026. The structural reason a leader can work here without becoming the bottleneck is built into the definition of the domain: its output unblocks others rather than blocking them.</p><p>Will Larson&#8217;s <a href="https://lethain.com/staff-engineer-archetypes/">Staff Engineer archetypes</a> circle the same territory without quite landing on it. His &#8220;Architect&#8221; sits in a permanent argument &#8212; some organizations demand the Architect stay deep in the code, others forbid it. The leader/practitioner resolves that argument by relocating it: deep in the enabling and infrastructure work, absent from production product code. Not the pendulum, not the staff IC. A real hybrid, and a newly coherent one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jHB6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jHB6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.png 424w, https://substackcdn.com/image/fetch/$s_!jHB6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.png 848w, https://substackcdn.com/image/fetch/$s_!jHB6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.png 1272w, https://substackcdn.com/image/fetch/$s_!jHB6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jHB6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.png" width="1024" height="684" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:684,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1540586,&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://hyperdev.matsuoka.com/i/200067020?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e7bf7a-504a-4f0c-b75f-1832889fc598_1024x1024.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_!jHB6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.png 424w, https://substackcdn.com/image/fetch/$s_!jHB6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.png 848w, https://substackcdn.com/image/fetch/$s_!jHB6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.png 1272w, https://substackcdn.com/image/fetch/$s_!jHB6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffd3763-7ad5-4119-96d4-4e0c1d01f0cd_1024x684.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>This is not new</h2><p>Here is where I want to slow down, because the most interesting thing about this role is how old it is.</p><p>The idea that a leader should be both a strategist and a practitioner &#8212; not separate modes to alternate between but a single integrated way of operating &#8212; shows up independently across at least five civilizations. That kind of convergence usually means a culture has found a durable answer to a real problem.</p><p>Japan gave it a name: <em>bunbu-ry&#333;d&#333;</em> (&#25991;&#27494;&#20001;&#36947;), the way of both the literary and the martial. <em>Bun</em> is letters, cultivation, strategy. <em>Bu</em> is the martial, the active, the practitioner&#8217;s hand. <em>Ry&#333;d&#333;</em> means both ways, together &#8212; not balanced, not traded off, but held at once. By the mid-fourteenth century the dual-talented warrior was already established as the model leader, and during the Edo period the Tokugawa shogunate made it official policy for the samurai class. The phrase that survives captures the stakes: culture without power is ineffective, and power without culture is barbarous.</p><p>The archetype is Miyamoto Musashi. Undefeated in more than sixty duels, often fighting with a wooden sword against live steel. He founded a two-sword school, and in the last months of his life he wrote <em>The Book of Five Rings</em> in a cave. He was also a recognized master of ink painting and calligraphy &#8212; his <em>Shrike on a Withered Branch</em> survives as a designated Important Cultural Property of Japan. The same hands that won sixty duels produced fine art a nation still protects. He didn&#8217;t oscillate between the sword and the brush. He held both, and each sharpened the other. &#8220;When I apply the principle of strategy to the ways of different arts and crafts,&#8221; he wrote, &#8220;I no longer have need for a teacher in any domain.&#8221; Mastery in one discipline illuminating all the others.</p><p>Rome had Marcus Aurelius, the philosopher-king made historical rather than theoretical. He ran the empire and commanded its armies on the Danube, and he wrote the <em>Meditations</em> in the war camps &#8212; fragmentary notes to himself, composed in the middle of campaigning and administration. That book was never published philosophy. It was a working journal, the most powerful man in the ancient world writing to stay grounded while doing the job.</p><p>China institutionalized the same ideal as <em>wen</em> and <em>wu</em> &#8212; civil cultivation and martial capability &#8212; and ran it for roughly thirteen centuries through the scholar-official class. Zeng Guofan is the canonical case: he rose through the imperial examinations to high Confucian office, then built and commanded an army of more than a hundred thousand, reportedly keeping a diary on Neo-Confucian ethics even as he directed the campaigns. The integration wasn&#8217;t left to personal taste. It was built into the examination and career structure.</p><p>And the archetype still lands today. James Mattis earned the nickname &#8220;Warrior Monk&#8221; &#8212; battlefield commander and devoted reader, a 7,000-book library, the <em>Meditations</em> carried into combat. The chain from Aurelius to Mattis is literal: the same book, eighteen centuries apart. That we still reach for &#8220;warrior monk&#8221; as a compliment for a leader tells you the integration never stopped resonating.</p><p>Across all of it, the answer is the same. The contemplative and the active were not specializations to assign to different people. They were a single discipline, each half informing the other. Modernity &#8212; with its org charts, its clean role boundaries, its professional specialization &#8212; interrupted that. The leader/practitioner is not a tech-industry novelty. It&#8217;s an old integration becoming feasible again.</p><h2>Why now</h2><p>So what actually changed? Not the wisdom. The economics.</p><p>The thing that made the coding executive a bad idea was the attention math. Serious technical work demanded long, unbroken stretches of focus &#8212; the exact resource a leadership schedule cannot reliably provide. You cannot design a system in the fifteen minutes between a board prep and a one-on-one. The pendulum was a real constraint, not a failure of will.</p><p>Agentic coding changes that math directly. The unit of work moved up a level. Instead of holding every implementation detail in working memory across a four-hour session, you specify intent, direct an agent, review what comes back, correct course, and direct again. A focused 30-minute session now produces what used to require an afternoon of immersion &#8212; not because the thinking got easier, but because the implementation cost collapsed.</p><p>The Anthropic <a href="https://resources.anthropic.com/2026-agentic-coding-trends-report">2026 Agentic Coding Trends Report</a> puts numbers on the shift. Average session length has climbed to 23 minutes in the agentic era, up from about 4 in the autocomplete era &#8212; the work got denser, not just faster. 78% of Claude Code sessions now involve multi-file edits, up from 34% a year earlier. Teams running multi-agent workflows report 2&#8211;4x faster delivery from task creation to deployment. And the figure that matters most for this argument: roughly 27% of AI-assisted work consists of tasks that &#8220;wouldn&#8217;t have been done otherwise&#8221; &#8212; the scaling projects, the nice-to-have tools, the exploratory infrastructure that was never quite worth the manual hours.</p><p>That 27% is the enabling work. It is the category that lives or dies on time cost, and it&#8217;s the category a leader/practitioner is best placed to take on.</p><p>The arithmetic is what makes 30% credible. I documented a 6&#8211;10x multiplier on focused technical sessions in <a href="https://hyperdev.matsuoka.com/the-irreducibles-what-a-pattern-master-does">The Irreducibles</a> earlier this year &#8212; a project I estimated at 150&#8211;200 billable hours compressed into roughly 50&#8211;70 hours of wall-clock time, most of which wasn&#8217;t coding at all. If directed work runs several times faster than hand-coding, then a day and a half a week can produce what once consumed a full-time engineer&#8217;s week. That&#8217;s not a marginal gain. It&#8217;s a change in what&#8217;s structurally possible.</p><p>There&#8217;s another dimension that doesn&#8217;t show up in the productivity numbers: the work itself is unstable. Agentic coding patterns are still shaking out. There aren&#8217;t many experienced practitioners, the field is moving fast, and we don&#8217;t yet have good consensus on which patterns are load-bearing and which are fashion. A manager who&#8217;s only reading about it can&#8217;t make that distinction on behalf of a team. You have to be in it to know.</p><p>There&#8217;s a counterintuitive wrinkle worth naming: the people best positioned to exploit this are the senior ones. A University of Chicago working paper from late 2025 found experienced developers were 5&#8211;6% more likely to succeed with AI agents for every standard deviation of work experience, largely because they worked plan-first &#8212; laying out objectives, alternatives, and steps before invoking the tool. That&#8217;s the opposite of the assumption that AI flattens the seniority curve. Expertise improves your ability to delegate to a model for the same reason it improves your ability to delegate to a person. AI doesn&#8217;t change what senior engineering is. It reveals what it always was.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EYNR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EYNR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.png 424w, https://substackcdn.com/image/fetch/$s_!EYNR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.png 848w, https://substackcdn.com/image/fetch/$s_!EYNR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.png 1272w, https://substackcdn.com/image/fetch/$s_!EYNR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EYNR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.png" width="1024" height="634" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:634,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1514078,&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://hyperdev.matsuoka.com/i/200067020?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1745d9f4-d955-45cb-b61a-c12956852f96_1024x1024.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_!EYNR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.png 424w, https://substackcdn.com/image/fetch/$s_!EYNR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.png 848w, https://substackcdn.com/image/fetch/$s_!EYNR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.png 1272w, https://substackcdn.com/image/fetch/$s_!EYNR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F727ed32e-2441-4dc7-bf6b-4ea9a19a2cb7_1024x634.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>Directing agents is delegation</h2><p>This is the part that interested me the most, and it&#8217;s the bridge between the leadership job and the technical one.</p><p>A year or so ago, working with Claude Code felt like coding. Now it feels like delegating. I <a href="https://hyperdev.matsuoka.com/coding-to-delegation-shift">wrote about that shift</a> when it first became undeniable &#8212; the move from being a programmer who uses AI to being something closer to a technical project manager who directs it. Anthropic&#8217;s report uses the same vocabulary, describing engineers moving &#8220;from writing code to orchestrating the systems that write it.&#8221;</p><p>What I didn&#8217;t fully appreciate at the time is how directly that maps onto the muscle leaders already have. Delegating to an agent feels, in practice, just like delegating to a human engineer. You frame the problem, set the constraints, hand it off, and come back to assess the result. Give a directive, walk away, return to completed work. That loop is the daily reality of management. Leaders developed it because they had to, and it transfers to agents almost without friction.</p><p>So the leader/practitioner doesn&#8217;t have to become a coder again in the old sense. The skill in demand is judgment plus delegation, and that&#8217;s the skill leadership has been building all along. The hands-on knowledge tells you what to ask for and whether the answer is any good. The delegation instinct does the rest.</p><p>This is why the enabling work and the agentic tools fit together so cleanly. Enabling work tends to be well-defined, non-user-facing, and long-horizon &#8212; exactly the profile agents handle well and exactly the profile that tolerates a leader&#8217;s interrupted schedule. The hands-on contribution mostly takes the form of specifying constraints and patterns, which is what I&#8217;ve called <a href="https://hyperdev.matsuoka.com/what-does-a-pattern-master-do">pattern mastery</a>: when you write the pattern down, you&#8217;ve written the spec, and the spec multiplies everyone else&#8217;s output.</p><h2>What it actually looks like</h2><p>Let me ground this without turning it into a war story.</p><p>The concrete examples from my own work are the kind of thing I mean. I built an agentic harness &#8212; the orchestration layer I <a href="https://hyperdev.matsuoka.com/its-the-harness-stupid">argued is the real determinant of AI coding outcomes</a>, where the same model can swing more than a quality point depending on the scaffolding around it. I built MCP services, the <a href="https://hyperdev.matsuoka.com/is-this-the-era-of-the-connector">org-specific connectors</a> that replaced a handful of standalone tools in a few hours of directed work each. None of that was a production feature. All of it was infrastructure other people now depend on.</p><p>Here&#8217;s a detail that may make the point. I now have an &#8220;AI architect&#8221; on my leadership team helping maintain the very infrastructure I originally built &#8212; not just the harness, but our inference relationships, our training program, office hours, the real human work I no longer have the time, or the right, to be doing myself. And I expect to hand off more over time. The enabling work I do today partly becomes the system that does tomorrow&#8217;s enabling work. That handoff is the role in miniature: you build the thing that multiplies the team, then you put someone in place to build the next version.</p><p>The proportion matters. Around 30% hands-on keeps judgment fresh without putting me in the critical path. Even full-time senior ICs aren&#8217;t full-time coders &#8212; Bain&#8217;s Jue Wang, quoted in MIT Technology Review last December, put developer coding time at 20&#8211;40%, with the rest going to analysis, strategy, and the surrounding work. A leader at 30% isn&#8217;t doing something exotic. They&#8217;re spending their technical budget on the layer where it compounds.</p><p>The decision is not &#8220;how do I find time to code.&#8221; It&#8217;s &#8220;what enabling work is worth my own hands?&#8221; Those are different questions. The first leads to the bottleneck I watched so many executives become. The second leads somewhere useful.</p><h2>The choice</h2><p>I&#8217;ll resist overselling this, because it isn&#8217;t for everyone and it isn&#8217;t automatic.</p><p>This is a deliberate role, not a default. Staying technically current costs ongoing investment, and the work is often invisible &#8212; enabling infrastructure rarely shows up in a quarterly review the way a shipped feature does. The role is easy to misread, too. From the outside, a CTO who codes can look like a CTO who hasn&#8217;t let go. The defense against that reading is the discipline Majors named: stay out of the critical path. Build the multipliers, not the blockers.</p><p>The returns are real, though. Fresh judgment &#8212; the kind that lets you evaluate not just what and why but how. Trust from engineers who see you in the work rather than above it. And institutional infrastructure that makes the whole team faster, built by the person with both the technical depth and the positional authority to prioritize it.</p><p>There&#8217;s a closing note in the history worth keeping. <em>Bunbu-ry&#333;d&#333;</em> wasn&#8217;t only a personal aspiration. The Tokugawa shogunate institutionalized it &#8212; built career and class structures around the assumption that a leader should be both. China did the same with its examination system. We&#8217;re not there yet. For now, the leader/practitioner is an individual choice, made one person at a time, made viable by tools that finally collapsed the cost of staying hands-on.</p><p>But the precedent suggests where this could go. When a way of working proves durable, organizations eventually build structures around it. The era of the leader/practitioner is early. It is also, I&#8217;d argue, a return &#8212; to an integration we knew was valuable long before we had the means to make it practical again.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a> and writes about AI-powered engineering at <a href="https://hyperdev.substack.com/">HyperDev</a>.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/coding-to-delegation-shift">From Coding with AI to Managing AI</a> &#8212; When agentic coding starts to feel like delegation</p></li><li><p><a href="https://hyperdev.matsuoka.com/its-the-harness-stupid">It&#8217;s The Harness, Stupid!</a> &#8212; Why orchestration quality dominates AI coding outcomes</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders</p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Other Shoe Has Dropped]]></title><description><![CDATA[The Economics of Enterprise Inference Usage]]></description><link>https://hyperdev.matsuoka.com/p/the-other-shoe-has-dropped</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/the-other-shoe-has-dropped</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Fri, 29 May 2026 11:31:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-Qpp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.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_!-Qpp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-Qpp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!-Qpp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!-Qpp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!-Qpp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-Qpp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1174362,&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://hyperdev.matsuoka.com/i/199673840?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.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_!-Qpp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!-Qpp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!-Qpp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!-Qpp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41ae5cbb-29e9-4a44-96a2-fb1724f0bf79_1024x768.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>Two stories from the last two weeks. Uber <a href="https://fortune.com/2026/05/26/uber-coo-ai-spending-tokens-claude-code/">burned through its entire 2026 AI budget in four months</a> on Claude Code, with COO Andrew Macdonald telling the <em>Rapid Response</em> podcast that the link between that spend and shipped consumer features &#8220;is not there yet.&#8221; <a href="https://www.theinformation.com/newsletters/applied-ai/uber-cto-shows-claude-code-can-blow-ai-budgets">The Information had the underlying numbers a few weeks earlier</a>: engineer adoption from 32% to 84% between December and March, heavy users running $500&#8211;$2,000/month in tokens, and CTO Praveen Neppalli Naga torching $1,200 in a two-hour demo. Same week, Microsoft told thousands of engineers in its Experiences + Devices division that their Claude Code access is going away. <a href="https://www.windowscentral.com/microsoft/microsoft-cancels-claude-code-licenses-shifting-developers-to-github-copilot-cli-a-move-likely-driven-by-financial-motives">Windows Central, summarizing The Verge&#8217;s Notepad scoop</a>, has the cutoff at June 30 &#8212; end of fiscal year &#8212; with cost as the actual driver even though EVP Rajesh Jha framed it publicly as convergence on Copilot CLI.</p><p>Two of the most AI-forward enterprises on the planet, same tool, same week. The &#8220;AI is failing&#8221; takes were live within hours.</p><p>I don&#8217;t buy that framing.</p><p>The headlines are getting it wrong. Uber didn&#8217;t cancel anything &#8212; adoption ran ahead of the budget and the company blew its annual spend keeping up. That&#8217;s a planning failure, not a verdict on the tool. Microsoft didn&#8217;t divorce Anthropic either; they&#8217;re still consuming Claude through Azure Foundry and M365 Copilot. What they cancelled is a specific license &#8212; Claude Code at the engineer-seat level &#8212; because engineers preferred it over GitHub Copilot CLI and the division was paying for that preference.</p><p>What both stories show: AI is a new tool and we haven&#8217;t learned to use it well yet. The teams over budget pointed it at problems it wasn&#8217;t the cheapest way to solve, then let it decide for itself how much work to do per task.</p><p>I&#8217;ve made <a href="https://hyperdev.matsuoka.com/p/what-the-other-shoe-sounds-like-when">the cloud parallel here before</a>. Early cloud was expensive and misused. Lift-and-shift workloads routinely ran two or three times their on-prem cost &#8212; I watched that play out across teams I ran, and it took years to correct through architecture. Then the industry learned: right-sizing, reserved instances, autoscaling, serverless where it fit, on-prem where it didn&#8217;t. The bills came down. Not because compute got dramatically cheaper, but because we got more careful about what we asked the cloud to do. AI is in the same phase. Cheap per-token, expensive per-task, and the gap is architectural.</p><p>A few weeks ago I ran controlled head-to-head tests on Opus 4.6 and Opus 4.7 against identical coding tasks. Both models passed every test. Opus 4.7 cost 3.6&#215; more to do it. Same outcomes, same rate card, dramatically more tokens.</p><p>Finout&#8217;s analysis of production deployments <a href="https://www.finout.io/blog/claude-opus-4.7-pricing-the-real-cost-story-behind-the-unchanged-price-tag">tells the same story at scale</a>: up to a 35% cost increase overnight, driven by tokenizer changes that don&#8217;t show up on the per-token rate card. Not one team&#8217;s bad luck &#8212; the shape of the bill across the enterprise AI buyer base right now. The second of two shoes on AI economics.</p><p>I wrote about that <a href="https://hyperdev.matsuoka.com/p/opus-46-vs-47-the-real-cost-of-incremental">version-to-version cost drift in detail</a>. Providers can collapse per-token prices in public while the per-task bill drifts upward in private. The first shoe was the per-token price collapse that made everyone optimistic. The second is the behavioral and architectural cost overhang now landing on quarterly P&amp;Ls.</p><p><strong>TL;DR</strong></p><ul><li><p>Per-token costs at GPT-3.5-equivalent performance are down roughly 280&#215; since late 2022, per <a href="https://aiindex.stanford.edu/report/">Stanford&#8217;s AI Index 2025</a>. Vendor revenue tells the opposite story: Anthropic&#8217;s annualized revenue went from <a href="https://www.pymnts.com/artificial-intelligence-2/2026/anthropic-hits-30-billion-run-rate-as-enterprise-demand-accelerates/">$1B in January 2025 to $30B by April 2026</a> &#8212; a 30&#215; move in 15 months, coming from enterprise inference, not consumer subscriptions.</p></li><li><p>Gartner&#8217;s April 2026 survey: just 28% of AI use cases fully meet ROI expectations, 78% of IT leaders report material AI charges that didn&#8217;t show up in any procurement model.</p></li><li><p>Gartner estimates agentic workflows consume 5&#8211;30&#215; more tokens than equivalent chatbot interactions; Stanford&#8217;s Digital Economy Lab puts the upper bound for coding agents at 1,000&#215;. The cost driver isn&#8217;t the model &#8212; it&#8217;s the workflow architecture wrapped around it.</p></li><li><p>Two patterns hold the line in production. Search-first architectures put inference at the end of a deterministic pipeline. Consolidated single-shot designs replace multi-call chains.</p></li><li><p>Inference is a power tool, not a default. Use it with specific ROI goals per call, apply it to <em>code</em> solutions rather than to directly solve problems, and bound it with deterministic structure on both ends.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TPPJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TPPJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!TPPJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!TPPJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!TPPJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!TPPJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1163417,&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://hyperdev.matsuoka.com/i/199673840?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.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_!TPPJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!TPPJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!TPPJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!TPPJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F491e72b0-16e1-49fe-a551-391ba05461bc_1024x768.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>Why the Per-Token Savings Didn&#8217;t Reach the Invoice</h2><p>Per-token economics of frontier models have been collapsing for two years. <a href="https://aiindex.stanford.edu/report/">Stanford&#8217;s AI Index 2025</a> puts the decline at roughly 280&#215; from a late-2022 baseline at GPT-3.5-equivalent performance. Most enterprise budget conversations in 2024 started from that headline. The implicit assumption: bills should be going <em>down</em>.</p><p>They&#8217;re not. The clearest read comes from the vendor side. Anthropic&#8217;s annualized revenue <a href="https://www.anthropic.com/news/anthropic-raises-30-billion-series-g-funding-380-billion-post-money-valuation">went from $1B in January 2025 to $30B by April 2026</a>, with roughly 80% from enterprise and API usage rather than consumer subscriptions. Anthropic <a href="https://www.saastr.com/anthropic-just-passed-openai-in-revenue-while-spending-4x-less-to-train-their-models/">now discloses 1,000+ customers spending more than $1M per year</a> &#8212; a cohort that doubled in under two months &#8212; alongside roughly 300,000 business customers. The mid-tier ($100K&#8211;$1M/year) grew 7&#215; year over year.</p><p>Menlo Ventures&#8217; <a href="https://menlovc.com/perspective/2025-the-state-of-generative-ai-in-the-enterprise/">2025 State of Generative AI report</a> cross-checks at the market level: enterprise GenAI spend tripled to $37B in 2025, with LLM API consumption alone at $8.4B by mid-year. The high tier shows up in named deals: <a href="https://sacra.com/c/anthropic/">Snowflake&#8217;s $200M multi-year partnership</a> implies a $50&#8211;70M annual run rate from one customer, and <a href="https://sacra.com/c/anthropic/">Deloitte is deploying Claude across 470,000 employees</a>.</p><p>For a typical enterprise running multiple production AI workloads, $500K&#8211;$2M per year is now the realistic floor. Fortune 100 is running $10M&#8211;$50M+, the most AI-intensive past $100M. The Gartner numbers point the same direction: <a href="https://www.gartner.com/en/newsroom/press-releases/2026-04-07-gartner-says-artificial-intelligence-projects-in-infrastructure-and-operations-stall-ahead-of-meaningful-roi-returns">just 28% of AI use cases fully meet ROI expectations and 20% fail outright</a>, and <a href="https://zylo.com/blog/saas-management-index/">78% of IT leaders report material AI charges</a> that didn&#8217;t show up in any procurement model.</p><p>The per-token chart is real. The invoice is also real. What closes the gap is <em>behavior</em>. Three behaviors specifically.</p><p><strong>Models do more work per task.</strong> Reasoning models reason. Agentic loops loop. The prompt that used to consume 4K tokens now consumes 40K because the assistant explores, plans, second-guesses, and verifies. Some of that is valuable. Much of it is the model performing thoroughness in a way that costs you money. The Opus 4.6-to-4.7 jump I documented earlier: same task, same outcome, 2.9&#215; more output tokens and 4.8&#215; more cache reads.</p><p><strong>Workflows fan out.</strong> A &#8220;single&#8221; task in a modern agentic system might trigger a planner, researcher, coder, reviewer, and summarizer. Each makes its own LLM calls over overlapping context. Gartner&#8217;s March 2026 analysis puts agentic workflows at 5&#8211;30&#215; the token consumption of an equivalent chatbot ask. Stanford Digital Economy Lab&#8217;s April 2026 arXiv paper goes further: coding agents can consume 1,000&#215; more tokens than equivalent chat completions. The agent isn&#8217;t more expensive because it&#8217;s smarter. It&#8217;s more expensive because it&#8217;s louder.</p><p><strong>Context windows fill themselves.</strong> Long context is a feature in marketing and a bill in practice. In our own enterprise Claude.AI usage &#8212; 82,852 messages from 329 employees over 3.5 months, audited via the Anthropic Compliance API &#8212; the average request carried 366,000 input tokens, mostly from 10-turn conversations dragging accumulated history forward into every new turn. Most production systems I&#8217;ve audited show the same fingerprint: pipelines paying for context they aren&#8217;t actually using.</p><p>None of this is fraud and none of it is mysterious. It&#8217;s the natural consequence of letting probabilistic systems decide how much work to do on every call. The savings from cheaper tokens were real. They just got consumed by an order of magnitude more tokens per task.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T_ba!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T_ba!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!T_ba!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!T_ba!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!T_ba!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!T_ba!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1253809,&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://hyperdev.matsuoka.com/i/199673840?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.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_!T_ba!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!T_ba!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!T_ba!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!T_ba!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7441c01-b144-4b0c-83a2-113c2bb730fd_1024x768.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>What I&#8217;ve Found Shipping These Systems</h2><p>The teams handling this well aren&#8217;t the ones cutting AI usage. They&#8217;re changing the <em>shape</em> of how they use it.</p><p>The pattern I keep coming back to: treat inference as the expensive step at the end of a mostly deterministic pipeline. Do the cheap, structured work in code. Reserve the model call for the part that actually requires judgment. Then bound the call hard &#8212; context budget, output budget, quality gate on whether the call even runs.</p><p>Two examples from systems I&#8217;ve been building illustrate this from different angles.</p><h3>Example 1: Code-Intelligence &#8212; Search-First Architecture</h3><p>The naive version of a code review tool is obvious: dump the changed files into Claude, ask for a review. That works. It also costs roughly $0.03 per operation, scales linearly with repo size, and produces a lot of review output you didn&#8217;t need. Claude.AI offers a code review service &#8212; it ended up costing us thousands a month for just a few repos. Augment Code offers a well-regarded one as a GitHub app, but charges a platform fee (a meaningful fraction of our Anthropic spend) <em>just</em> to connect.</p><p>So we built our own. It leverages a multimodal search/RAG/KG engine I&#8217;d already built, so this wasn&#8217;t from scratch.</p><p>The version I actually ship uses a multi-tier search pipeline with the LLM call at the very end:</p><pre><code><code>Stage 1: Vector Search    (~$0.0002 per query, semantic similarity)
Stage 2: BM25 Reranking   (~$0.0001 per query, lexical relevance)
Stage 3: Static Analysis  (~$0.0001 per query, AST + symbol resolution)
Stage 4: Quality Gate     (free, deterministic threshold check)
Stage 5: Single LLM Call  (~$0.03 per call, only if Stages 1-4 passed)</code></code></pre><p>The first four stages cost about $0.0004 combined. They do the bulk of the work: deciding <em>what code is actually relevant</em>, ranking it, pulling structural relationships, and deciding whether the result is even worth asking an LLM about.</p><p>Hard budget controls run through the whole pipeline:</p><pre><code><code># Budget enforcement, not aspiration
MAX_CONTEXT_FILES = 6          # cap on what we send to the model
MAX_REVIEW_WORDS = 500         # cap on what the model returns
RELEVANCE_FLOOR = 0.005        # quality gate before calling the model

if combined_relevance_score &lt; RELEVANCE_FLOOR:
    # no point spending $0.03 to get a review of weakly-related code
    return SkipReason("below relevance floor")

context = select_top_n(ranked_results, MAX_CONTEXT_FILES)
review = llm.review(context, max_output_tokens=MAX_REVIEW_WORDS * 1.4)</code></code></pre><p>The <code>RELEVANCE_FLOOR</code> check is the part to underline. A meaningful percentage of review requests in real codebases don&#8217;t justify an LLM call at all &#8212; the changes are mechanical, the related code trivial, or the search signal weak enough that whatever the model says will be hallucinated context. Refusing to spend $0.03 on those cases is where most of the savings come from.</p><p>Rough economics across a quarter of usage:</p><p>Approach Cost per operation LLM calls per 1K operations Direct &#8220;review the diff&#8221; ~$0.030 1,000 Search-first with gates ~$0.0034 average ~430</p><p>About 80% of the workflow logic ends up deterministic: search, ranking, static analysis, gating. The model handles the last 20% &#8212; judgment on curated context. Same outcome from the user&#8217;s perspective, roughly an order of magnitude cheaper, with more predictable failure modes because most of the pipeline is debuggable code rather than prompt behavior.</p><p>The limitation: this is more work than wiring up a single LLM call, and the gates are only as good as your search infrastructure. The payoff is on the cost and determinism side, not on speed of initial implementation.</p><h3>Example 2: duetto-intelligence &#8212; Context Injection Instead of Replacement</h3><p>The second pattern comes from duetto-intelligence, internal tooling I&#8217;ve been building against that same enterprise Claude.AI usage &#8212; 82,852 real employee messages over 3.5 months, not a thought experiment. The problem here isn&#8217;t &#8220;should we call the LLM at all.&#8221; It&#8217;s: given that our people are already routing structured-data questions through a $0.274-per-request multi-turn Sonnet conversation, what&#8217;s a cheaper path that doesn&#8217;t degrade the answer?</p><p>The audit data made the gap concrete. Average request: 366K input tokens, ten-turn conversation, $0.274 to Anthropic. The same query answered through a Haiku single-pass against deterministically-retrieved internal data: $0.0009. A 300:1 cost ratio on the slice of traffic about structured product knowledge, CRM/account prep, JIRA, people and org lookups.</p><p>Not all traffic. Somewhere in the 35&#8211;40% range based on classified samples. About half of remaining queries genuinely need full Sonnet or Opus reasoning &#8212; writing, debugging, free-form analysis &#8212; and shouldn&#8217;t be intercepted at all.</p><p>The framing matters, because it&#8217;s easy to mis-read this as &#8220;replace Claude with a smaller model.&#8221; It isn&#8217;t. duetto-intelligence acts as a <strong>context injection layer</strong> in front of the user-facing model. When a query has structured-data intent, we route a sub-query to DI, get back a bounded structured result, and inject that into the prompt the larger model sees. The expensive model still does the reasoning &#8212; it just stops being responsible for the deterministic data retrieval it&#8217;s bad at and expensive for.</p><p>The naive design for the routing layer looks like this:</p><pre><code><code>1. Classify the user's intent             &#8594; LLM call (~150 tokens)
2. Plan which subsystems to query         &#8594; LLM call (~250 tokens)
3. Call subsystem A, summarize response   &#8594; LLM call (~300 tokens)
4. Call subsystem B, summarize response   &#8594; LLM call (~300 tokens)
5. Synthesize a final answer              &#8594; LLM call (~250 tokens)
                                          Total: ~1,250 tokens, 5 calls</code></code></pre><p>Each call is plausible on its own. Together they&#8217;re a tax on every user interaction. Latency stacks linearly with calls, and any one of the five can hallucinate in a way that corrupts the rest of the chain.</p><p>The consolidated design replaces three steps with deterministic code:</p><pre><code><code>1. Classify intent                  &#8594; LLM call  (~80 tokens, tight tagger prompt)
2. Fan-out to subsystems            &#8594; code      (0 tokens, intent &#8594; call map)
3. Consolidated synthesis           &#8594; LLM call  (~200 tokens, structured input)
                                       Total: ~280 tokens, 2 calls</code></code></pre><p>The trick is the intent classifier. It produces a tag from a fixed vocabulary of 87 tags &#8212; <code>revenue.query.ytd</code>, <code>forecast.compare.year_over_year</code>, <code>account.lookup.contact</code>, and so on. Each tag maps deterministically to a set of downstream calls in plain Python. No LLM in the routing step. The model isn&#8217;t asked &#8220;what should we do?&#8221; It&#8217;s asked &#8220;what is the user asking about?&#8221; &#8212; a much smaller, bounded question.</p><p>We validated against a 50-query test corpus drawn directly from the compliance data &#8212; real questions people had asked the model in production. After tuning, 100% of those queries land on the fast path with no LLM call required for routing. That&#8217;s the proof the deterministic-discipline part holds at the boundary; the routing isn&#8217;t quietly falling back to a second model call to bail itself out.</p><p>Budget enforcement is explicit in every prompt template:</p><pre><code><code>SOURCE_CHAR_BUDGET = 600    # per data source pulled into context
OUTPUT_TOKEN_BUDGET = 200   # cap on synthesis response
INTENT_TAG_VOCAB = load_intent_taxonomy()  # 87 tags, versioned

def synthesize(intent_tag: str, sources: list[Source]) -&gt; str:
    trimmed = [s.truncate(SOURCE_CHAR_BUDGET) for s in sources]
    return llm.complete(
        prompt=template(intent_tag, trimmed),
        max_tokens=OUTPUT_TOKEN_BUDGET,
    )</code></code></pre><p>The economics, against measured baselines rather than estimates: current Claude.AI Chat spend across the 329-user population runs $15,264 over 3.5 months. Roughly $4,360/month, driven by that $0.274-per-request multi-turn average. If DI intercepts the 35&#8211;40% of traffic that&#8217;s structured-retrieval underneath, projected savings come in around $1,500&#8211;1,700/month, or $18&#8211;20K/year on this single user population. The leverage isn&#8217;t from picking a cheaper model. It&#8217;s from refusing to pay Sonnet rates to answer questions a deterministic system already has the data for.</p><p>The intent vocabulary is the contract. New capability means a new tag, a new downstream mapping, a new prompt template. The model never has to invent structure on the fly. This is what people mean by &#8220;use the LLM to code solutions, not to solve problems directly&#8221; &#8212; the routing logic lives in code, the tagger is a thin call, the synthesis is bounded.</p><p>The source-character budget matters more than the output budget. The compliance audit confirmed it: production overspend is on the <em>input</em> side. 366K input tokens against a few hundred output. Models will happily consume whatever context you hand them. Trimming at the source &#8212; 600 characters per source, no exceptions &#8212; is how you keep per-call cost from drifting upward as the system gets more capable.</p><p>The limitation: this only works on the routable slice. The pattern isn&#8217;t &#8220;eliminate inference.&#8221; It&#8217;s &#8220;stop spending $0.274 to answer questions that have a structured answer at $0.0009.&#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_!-uHZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-uHZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!-uHZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!-uHZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!-uHZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-uHZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1351360,&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://hyperdev.matsuoka.com/i/199673840?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.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_!-uHZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!-uHZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!-uHZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!-uHZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0775c6-8743-46e4-908a-ee4e2a8db5d6_1024x768.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>Why &#8220;Just Use a Cheaper Model&#8221; Doesn&#8217;t Save You</h2><p>A reasonable objection: aren&#8217;t the cheaper, smaller models supposed to handle this? Why not route everything to Haiku or an open model and call it solved?</p><p>The pricing math seems to support it. The behavioral math doesn&#8217;t.</p><p>Two things go wrong when you swap a cheaper model into an unstructured workflow. Cheaper models are usually less efficient <em>per task</em> &#8212; more turns to converge, more exploration, more hallucination, which means more retries and verification calls. A model 5&#215; cheaper per token can run 1.5&#8211;2&#215; more expensive per completed task if your workflow lets it spin.</p><p>And the workflow itself is where most of the cost lives. The 5&#8211;30&#215; multiplier is structural, not modal &#8212; it exists regardless of which model you point at it. Switching from Sonnet to Haiku inside an unbounded agent loop changes the per-token cost. It doesn&#8217;t change the loop.</p><p>Model choice is a 2&#8211;5&#215; lever. Architecture choice is closer to an order-of-magnitude lever in the systems I&#8217;ve shipped &#8212; consistently larger than what model swaps deliver. Most teams are over-tuning the model selection and under-tuning the structure around it.</p><p>The default assumption &#8212; including from vendors with strong incentives to sell you more tokens &#8212; is that the answer to AI cost is buying inference more cleverly. The actual answer is using inference less, more deliberately, with hard bounds on what each call is allowed to do.</p><h2>How I Think About Inference Now</h2><p><strong>Inference is a power tool.</strong> Not a default. You don&#8217;t reach for it when a search query, a regex, or a <code>switch</code> statement would do. You reach for it when you need probabilistic judgment over unstructured input. Every call you don&#8217;t make is the cheapest call.</p><p><strong>Use it to code solutions, not to solve problems.</strong> The highest-leverage use of LLMs in my workflow is generating the deterministic code that then handles the workflow without further LLM calls. A model that writes you a 50-line classifier is more valuable than a model that <em>acts as</em> the classifier on every request forever. The first costs tokens once. The second costs tokens every transaction for the life of the system.</p><p><strong>Wrap every call in a budget.</strong> Context budget on the input, token budget on the output, quality gate on whether the call runs at all. Treat the LLM call as you&#8217;d treat a paid API with rate limits and SLA penalties. Because it is.</p><p><strong>Set specific ROI targets per call.</strong> &#8220;AI-assisted code review&#8221; is too coarse to optimize. &#8220;Reviewing files with relevance score &gt; 0.005, capped at 6 files, returning 500 words&#8221; is something you can measure cost-per-outcome on. Even loose ROI math at the call level surfaces where you&#8217;re paying for theater.</p><p><strong>Treat behavioral cost as the primary risk.</strong> Model rate cards will keep coming down. They are not your problem. Your problem is what your pipeline asks of the model and what the model decides to do once asked. That&#8217;s the line item that grew while the unit cost dropped 280&#215;. That&#8217;s the shoe that just dropped.</p><h2>What This Means If You&#8217;re Running an AI Budget</h2><p>Three things to look at, in order of how much they&#8217;ll move the line item.</p><p><strong>Audit the call graph, not the rate card.</strong> Pull a representative day of production traffic and trace the actual LLM calls per user task. Count them. Most teams find a handful of workflows producing the majority of cost, and most of those have 2&#8211;4 LLM calls that could be replaced by deterministic code. That&#8217;s the consolidated-design pattern from the duetto-intelligence example. 50&#8211;80% reductions are common when you actually look.</p><p><strong>Put quality gates in front of inference.</strong> For any workflow where the LLM call is expensive and the input quality is variable, add a deterministic check that decides whether the call is worth making. That&#8217;s the search-first pattern from the code-intelligence example. The savings come from the calls you <em>don&#8217;t</em> make, which never show up on the invoice.</p><p><strong>Set hard context budgets and enforce them in code.</strong> Per-source character limits, per-call token caps, no &#8220;just in case&#8221; context stuffing. The output budget gets attention because it&#8217;s visible. The input budget is usually where the actual money goes.</p><p>None of this requires changing models, switching providers, or making bets on the next frontier release. It&#8217;s architectural work inside the pipeline you already have &#8212; work the per-token price chart has been letting people defer.</p><p>The teams that do it over the next two quarters will look like they got a 5&#8211;10&#215; cost improvement from &#8220;AI getting cheaper.&#8221; The teams that don&#8217;t will look like AI got 3&#8211;4&#215; more expensive while everyone else&#8217;s costs fell. Same providers, same models, same rate cards. Different shoe.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a> and writes about AI-powered engineering at <a href="https://hyperdev.substack.com/">HyperDev</a>.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/p/opus-46-vs-47-the-real-cost-of-incremental">Opus 4.6 vs 4.7: The Real Cost of Incremental AI Improvements</a> &#8212; The first shoe, on per-task cost drift between model versions</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders</p></li></ul><p></p>]]></content:encoded></item><item><title><![CDATA[Is Your Digital Brain the Light Saber of the AI Era?]]></title><description><![CDATA[Jedi Knight Tools for the Knowledge Worker]]></description><link>https://hyperdev.matsuoka.com/p/is-your-digital-brain-the-light-saber</link><guid isPermaLink="false">https://hyperdev.matsuoka.com/p/is-your-digital-brain-the-light-saber</guid><dc:creator><![CDATA[Robert Matsuoka]]></dc:creator><pubDate>Wed, 20 May 2026 12:02:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!90qs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.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_!90qs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!90qs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.png 424w, https://substackcdn.com/image/fetch/$s_!90qs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.png 848w, https://substackcdn.com/image/fetch/$s_!90qs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.png 1272w, https://substackcdn.com/image/fetch/$s_!90qs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!90qs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.png" width="1456" height="1007" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1007,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5326200,&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://hyperdev.matsuoka.com/i/198515384?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.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_!90qs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.png 424w, https://substackcdn.com/image/fetch/$s_!90qs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.png 848w, https://substackcdn.com/image/fetch/$s_!90qs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.png 1272w, https://substackcdn.com/image/fetch/$s_!90qs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6533e48e-54c3-4232-aa80-b2fe447f0136_1993x1378.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><figcaption class="image-caption">Your Digital Lightsaber is your AI Memory</figcaption></figure></div><p>My Duetto colleague Jake Becker is sharp. He&#8217;s been ahead of AI adoption on our team &#8212; experimenting early, pushing for new tools, staying current. Last week he messaged me on Slack: &#8220;I wish I had my own CTO Assistant. Like what you have.&#8221;</p><p>I paused.</p><p>I have one. I&#8217;ve had several, in different forms, going back months. But I hadn&#8217;t said anything about it publicly.</p><p>That gap &#8212; between an AI-forward person who knows the tools and a practitioner who actually has the thing &#8212; is what this piece is about.</p><p><strong>TL;DR</strong></p><ul><li><p>Off-the-shelf AI tools are capable but contextually blind. You still have to leave your domain to get help.</p></li><li><p>Serious knowledge workers &#8212; writers, researchers, historians &#8212; have always built their own knowledge systems. Never trusted a vendor to hold their material.</p></li><li><p>Coding is shifting toward what writing has always been: directing, curating, maintaining a living body of knowledge.</p></li><li><p>Building your own AI memory and search layer is the new rite of passage. The tool you build IS the skill being developed.</p></li><li><p>The latest versions of my own stack: trusty-memory and trusty-search &#8212; both open source, both installable today.</p></li></ul><h2>Everyone Wants One. Few Have One.</h2><p>Jake&#8217;s comment revealed something I&#8217;d been taking for granted.</p><p>The major vendors are actively working on this &#8212; memory features, RAG pipelines, personalization layers. But those solutions are optimized for breadth, not for one person&#8217;s actual work across functions.</p><p>ChatGPT, Claude, Copilot &#8212; these are all capable. They&#8217;re also still contextually blind to <em>you</em>. You have to leave your environment, paste in context, explain your situation from scratch, then interpret the output back into your actual work. Vendors are working on it. But the solutions remain generic, and every session still starts from zero.</p><p>I wrote about this in March &#8212; <a href="https://hyperdev.matsuoka.com/personal-bots-abomination">Everyone Blamed Clawd Bot&#8217;s Execution. The Concept Was the Problem.</a> The structural flaw of universal assistants isn&#8217;t fixable. They require you to leave your context to get help. What actually works is the opposite: your tools get assistant capabilities, and assistance comes to where your context lives.</p><p>Off-the-shelf tools haven&#8217;t solved this. They&#8217;ve gotten more powerful &#8212; better reasoning, longer context, faster inference &#8212; but they still don&#8217;t know your codebase, your decisions, your institutional history, your current sprint. They know a lot about the world, and very little about you.</p><p>Jake wanted <em>my</em> assistant. But what he actually wants is <em>his</em> assistant. The one that knows what he knows.</p><p>That&#8217;s a different problem entirely.</p><p>The job changed first.</p><h2>Coding Is Becoming Writing</h2><p>Practitioners feel it before analysts name it.</p><p>A few years ago, being a strong engineer meant writing a lot of code quickly and correctly. Today, with agentic AI coders at their disposal, the best engineers I watch spend their time directing, reviewing, specifying, and curating. The unit of work has moved up a level. Implementation is increasingly delegated. Judgment &#8212; about architecture, trade-offs, what to build and why &#8212; is the differentiator.</p><p>This is not what happens when automation replaces a skill. It&#8217;s what happens when a new discipline appears.</p><p>Writers have always worked this way. A novelist doesn&#8217;t produce words per minute as a primary metric. They produce decisions &#8212; what to say, in what order, with what emphasis. The words are the output of the decisions, not the work itself. What makes a writer productive over a career isn&#8217;t typing speed. It&#8217;s having a system: notes, research, accumulated material, patterns of thought that compound over years.</p><p>Some (typically senior) engineers are arriving at the same realization. Your value isn&#8217;t the code. It&#8217;s the judgment, the accumulated context, the knowledge of what was tried and why it failed. The question is whether that accumulates in your head alone &#8212; which doesn&#8217;t scale, and doesn&#8217;t survive a context switch &#8212; or whether it lives in a system.</p><p>Good engineers who learn to use their AI tools effectively generate better code &#8212; the stack amplifies judgment and accumulated knowledge. The gap isn&#8217;t between skilled and unskilled engineers in isolation; it&#8217;s between engineers who&#8217;ve wired their knowledge into their tools and those who haven&#8217;t. The knowledge is real in both cases. Only in one case does it compound.</p><p>The writers I&#8217;ve observed who sustain serious output over decades all have the same property: they know where things are. Their research is retrievable. Their earlier thinking is available to their current thinking. The system makes the person bigger than their working memory.</p><p>That&#8217;s the gap.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ynth!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ynth!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.png 424w, https://substackcdn.com/image/fetch/$s_!Ynth!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.png 848w, https://substackcdn.com/image/fetch/$s_!Ynth!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.png 1272w, https://substackcdn.com/image/fetch/$s_!Ynth!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ynth!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.png" width="1456" height="894" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:894,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5603002,&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://hyperdev.matsuoka.com/i/198515384?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.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_!Ynth!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.png 424w, https://substackcdn.com/image/fetch/$s_!Ynth!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.png 848w, https://substackcdn.com/image/fetch/$s_!Ynth!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.png 1272w, https://substackcdn.com/image/fetch/$s_!Ynth!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd8f91e4-5bab-49cc-8f75-bb43db12e9e7_1999x1227.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><figcaption class="image-caption"> The AI Zettelkasten</figcaption></figure></div><h2>Writers Don&#8217;t Trust Vendors With Their Material</h2><p>Niklas Luhmann, a German sociologist working in the 1950s, produced 70 books and nearly 400 articles over his career. I haven&#8217;t written a book yet &#8212; but I have published over 200 articles at HyperDev. Worth naming the parallel. He credits his output to his Zettelkasten &#8212; a slip-box system of 90,000 interconnected index cards, each with a unique identifier linking it to related thoughts. Not a filing cabinet. A network of ideas that got richer with every addition.</p><p>And it&#8217;s worth asking: is that so different from what an AI knowledge system does today? The Zettelkasten was an analog precursor to what trusty-memory and trusty-search do programmatically &#8212; indexing ideas, linking related thoughts, surfacing connections that wouldn&#8217;t otherwise be visible. Luhmann was doing manually what these tools do automatically. Same architecture. New substrate.</p><p>He didn&#8217;t use a vendor product. He built a system that reflected how he thought. The architecture of his Zettelkasten was itself an expression of his intellectual method.</p><p>This isn&#8217;t a historical quirk. It&#8217;s a pattern. Serious knowledge workers have always built their own systems &#8212; commonplace books, research archives, private wikis. The reason is structural: the schema you design reflects how you think. That&#8217;s not something a product gives you. A product gives everyone the same schema.</p><p>Andrej Karpathy pointed at something similar last month with his LLM Wiki gist. His framing: use LLMs not just to write code, but to build and maintain a personal knowledge base. &#8220;Obsidian is the IDE, the LLM is the programmer, the wiki is the codebase.&#8221; Three folders, structured Markdown, a large context window. He concluded: &#8220;I think there is room here for an incredible new product.&#8221;</p><p>He&#8217;s right there&#8217;s room. I wrote about his framing in <a href="https://hyperdev.matsuoka.com/whats-in-your-second-brain">What&#8217;s In Your Second Brain?</a> The product comment is where I&#8217;d push back. You can build tooling around the pattern. You can&#8217;t productize the schema. The schema is the moat &#8212; because it reflects how <em>you</em> think, not how a product manager thinks you think. The ones who get it aren&#8217;t waiting for a product.</p><h2>The Lightsaber Rite of Passage</h2><p>In Star Wars canon, a Padawan doesn&#8217;t receive a lightsaber. They build one.</p><p>The ritual is called the Gathering. Initiates travel alone to the Crystal Caves of Ilum. They have to find their kyber crystal &#8212; the crystal that&#8217;s attuned to them through the Force. The caves are shaped by the initiate&#8217;s own fears and insecurities. The crystal doesn&#8217;t go to the strongest or the fastest. It bonds with the person who confronts what&#8217;s in the way.</p><p>Then they build it themselves, guided by Professor Huyang.</p><p>You can&#8217;t buy this. You can&#8217;t inherit it. The construction is the training. The tool reflects the builder.</p><p>I&#8217;m not the first to reach for this metaphor in tech. But I think it lands differently now. Building your own AI memory and search layer isn&#8217;t just useful. It&#8217;s diagnostic. You can&#8217;t do it without confronting what you actually know, how you actually think, what deserves to persist and what doesn&#8217;t. The schema you design for your knowledge base is a statement about your mind.</p><p>The engineers I know who are operating at the highest level right now &#8212; CTOs, senior architects, tech leads at places moving fast &#8212; they all quietly roll their own. They don&#8217;t announce it. They just have it.</p><h2>My Own Lineage</h2><p>I&#8217;ve been building versions of this for months.</p><p>trusty-izzie was the first &#8212; a simple wrapper. Then ai-commander, a more structured approach to context management. Then open-mpm and claude-mpm, which was where I started thinking seriously about multi-agent orchestration. Then kuzu-memory, a graph-backed memory layer. Then mcp-vector-search, semantic search over my entire codebase.</p><p>Each iteration taught me something about what I actually needed. Not what I thought I needed. What the practice revealed.</p><p>This piece was drafted with a configured writing assistant &#8212; <a href="https://github.com/bobmatnyc/claude-mpm">claude-mpm</a> loaded with my publication style guide, my voice patterns, my article archive. That&#8217;s a saber too. Not a generic chat interface. A tool shaped around how I think and write, producing work I can actually publish rather than work I have to fix. The saber list keeps growing.</p><p>The latest two are the most capable tools I&#8217;ve built.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cyse!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cyse!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.png 424w, https://substackcdn.com/image/fetch/$s_!cyse!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.png 848w, https://substackcdn.com/image/fetch/$s_!cyse!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.png 1272w, https://substackcdn.com/image/fetch/$s_!cyse!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!cyse!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.png" width="1456" height="1030" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1030,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6229361,&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://hyperdev.matsuoka.com/i/198515384?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.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_!cyse!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.png 424w, https://substackcdn.com/image/fetch/$s_!cyse!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.png 848w, https://substackcdn.com/image/fetch/$s_!cyse!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.png 1272w, https://substackcdn.com/image/fetch/$s_!cyse!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc209a6-05f2-4b6d-8950-09c7562bd1ac_2005x1419.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 Latest Sabers</h2><p><strong>trusty-memory</strong> is a machine-wide AI memory daemon written in Rust. It uses what I call the Memory Palace architecture &#8212; multiple named palaces, each for a different domain. Sub-5ms baseline retrieval on Apple Silicon. It runs as an MCP server for Claude Code, which means my assistant stores and retrieves memories automatically, across sessions, without me managing any of it explicitly.</p><pre><code><code>cargo install trusty-memory</code></code></pre><p>Available at <a href="https://crates.io/crates/trusty-memory">crates.io/crates/trusty-memory</a>.</p><p><strong>trusty-search</strong> is a machine-wide hybrid code search daemon, also in Rust. Always-on, one install per machine. It combines BM25 lexical search with HNSW vector search (all-MiniLM-L6-v2 INT8) and a Knowledge Graph with 1-2 hop expansion, fused via Reciprocal Rank Fusion. It exposes an MCP server with 11 tools. Stdio and HTTP/SSE transports drop straight into Claude Code.</p><pre><code><code>cargo install trusty-search</code></code></pre><p>Available at <a href="https://crates.io/crates/trusty-search">crates.io/crates/trusty-search</a>.</p><p>These tools, along a set of custom reporting pythons apps along with a custom Slack Bot I use to access the data remotely, comprise my digital brain.</p><p>These aren&#8217;t products I bought. These are tools I built, iterated, and use daily. They know my codebase the way a Zettelkasten knows a scholar&#8217;s intellectual territory &#8212; not because a vendor configured them, but because I did.</p><p>To be precise: trusty-memory and trusty-search are infrastructure utilities &#8212; the memory layer and the search layer. Building the actual assistant that uses them is a separate act of customization. That&#8217;s where the lightsaber metaphor completes: the kyber crystal is only part of it. The construction &#8212; what you build with the crystal &#8212; is the saber.</p><p>When Jake said he wished he had a CTO Assistant, this is what he was gesturing at. Not a prompt template. Not a workflow. A living knowledge layer that compounds.</p><h2>The Right Question</h2><p>Jake asked: &#8220;Can I get a CTO Assistant?&#8221;</p><p>That&#8217;s the wrong question. It assumes the thing is available off the shelf, and the task is finding and configuring it.</p><p>The right question is: &#8220;What would it take to build one that knows what I know?&#8221;</p><p>That question is harder. It requires confronting the shape of your knowledge, what&#8217;s worth persisting, how to structure retrieval. It&#8217;s uncomfortable in the same way the Crystal Caves are uncomfortable &#8212; not because the work is technically difficult, but because you have to be honest about what you actually have.</p><p>Not everyone needs to write Rust. The specific technology isn&#8217;t the point. The point is that the engineers asking the right question are already operating differently. They&#8217;re working like writers &#8212; maintaining a living body of knowledge, building systems that compound, treating their accumulated context as an asset rather than a liability.</p><p>Writers&#8217; discipline has been creeping into engineering for a while. AI made it urgent.</p><p>If you&#8217;re waiting for a product to hand you the thing, you&#8217;re waiting for someone to build your lightsaber. It won&#8217;t be yours.</p><div><hr></div><p><em>Bob Matsuoka is CTO of <a href="https://www.duettocloud.com/">Duetto</a> and writes about AI-powered engineering at <a href="https://hyperdev.substack.com/">HyperDev</a>.</em></p><p><strong>Related reading:</strong></p><ul><li><p><a href="https://hyperdev.matsuoka.com/whats-in-your-second-brain">What&#8217;s In Your Second Brain?</a> &#8212; Karpathy&#8217;s LLM Wiki and the case for a compounding knowledge layer</p></li><li><p><a href="https://hyperdev.matsuoka.com/personal-bots-abomination">Everyone Blamed Clawd Bot&#8217;s Execution. The Concept Was the Problem.</a> &#8212; Why universal assistants are architecturally broken</p></li><li><p><a href="https://aipowerranking.com/">AI Power Ranking</a> &#8212; Tool comparisons and benchmarks for AI practitioners</p></li><li><p><a href="https://www.linkedin.com/newsletters/ai-power-ranking-7345782916301418496/">LinkedIn Newsletter</a> &#8212; Strategic AI insights for CTOs and engineering leaders</p></li></ul>]]></content:encoded></item></channel></rss>