<?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[Altered Craft]]></title><description><![CDATA[Software craftsmanship in the age of AI]]></description><link>https://writing.alteredcraft.com</link><image><url>https://substackcdn.com/image/fetch/$s_!5w8-!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0162636c-3833-4868-a6fd-0ce66dd2607e_589x589.png</url><title>Altered Craft</title><link>https://writing.alteredcraft.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 25 Jun 2026 14:20:01 GMT</lastBuildDate><atom:link href="https://writing.alteredcraft.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Sam Keen]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[alteredcraft0@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[alteredcraft0@substack.com]]></itunes:email><itunes:name><![CDATA[Sam Keen]]></itunes:name></itunes:owner><itunes:author><![CDATA[Sam Keen]]></itunes:author><googleplay:owner><![CDATA[alteredcraft0@substack.com]]></googleplay:owner><googleplay:email><![CDATA[alteredcraft0@substack.com]]></googleplay:email><googleplay:author><![CDATA[Sam Keen]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Weekly Review: Around the Model]]></title><description><![CDATA[Welcome back to Altered Craft&#8217;s weekly AI review for developers.]]></description><link>https://writing.alteredcraft.com/p/weekly-review-around-the-model-bae</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-around-the-model-bae</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 22 Jun 2026 12:06:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9d45ea2c-4feb-4199-b617-6f1983304029_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>Welcome back to Altered Craft&#8217;s weekly AI review for developers. Thanks for reading, and for sticking with us into a quieter week after the frontier-model drama. One pattern runs through this issue: as models get cheaper, more open, and easier to swap, the hard part moves to everything around them. Bayer&#8217;s context discipline, two new agent harnesses, and three editorials on review and judgment all point the same way. The edge is in the scaffolding, not the core.</em></p></blockquote><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><p><em>This week&#8217;s case studies share a thread: the scaffolding and ownership around a model matter more than its raw size. We open with a disciplined enterprise build, then move to running the stack yourself.</em></p><h3><strong>How Bayer Built a Reliable Agentic RAG System for Drug Discovery</strong></h3><p>Estimated read time: 12 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0qqR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0qqR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.png 424w, https://substackcdn.com/image/fetch/$s_!0qqR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.png 848w, https://substackcdn.com/image/fetch/$s_!0qqR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.png 1272w, https://substackcdn.com/image/fetch/$s_!0qqR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0qqR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.png" width="589" height="243.93337912087912" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:603,&quot;width&quot;:1456,&quot;resizeWidth&quot;:589,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0qqR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.png 424w, https://substackcdn.com/image/fetch/$s_!0qqR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.png 848w, https://substackcdn.com/image/fetch/$s_!0qqR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.png 1272w, https://substackcdn.com/image/fetch/$s_!0qqR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6baf22-fbdd-49d6-a68b-3b5757761d7c_3976x1648.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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Bayer&#8217;s PRINCE platform grew from keyword search into a multi-agent research assistant for preclinical data. Its reliability comes from <strong><a href="https://martinfowler.com/articles/reliable-llm-bayer.html">context discipline over larger context windows</a></strong>, giving each agent only what it needs, backed by LangGraph orchestration, model fallbacks, and Langfuse observability.</p><p><strong>Why this matters:</strong> Bigger context windows don&#8217;t replace deliberate context engineering. Scope what each agent actually sees, and the whole system becomes easier to steer, debug, and evaluate over time.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Altered Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Building a Phone-Friendly AI Dev Platform for Your Homelab</strong></h3><p>Estimated read time: 5 min</p><p>From a corporate platform to a personal one, this setup wires OpenCode&#8217;s web UI into a homelab so an AI agent can maintain Docker Compose stacks while <strong><a href="https://rsgm.dev/post/ai-dev-platform/">staying behind PR review with a small blast radius</a></strong>. It runs isolated, pushes feature branches, and humans merge before deploy.</p><p><strong>The opportunity:</strong> Give your AI agent its own user, an isolated VM, and PR-only access, so it can manage real infrastructure safely, without ever touching production directly.</p><h3><strong>Local Models Are Actually Good Now</strong></h3><p>Estimated read time: 5 min</p><p>Once you&#8217;re running your own infrastructure, the next question is which models fit on it. Continuing our coverage of the shift toward cheaper, smaller models[1] last week, this hands-on account runs agentic coding on a 64GB M2 Mac, where the Gemma 4 family <strong><a href="https://vickiboykis.com/2026/06/15/running-local-models-is-good-now/">hits roughly 75% of frontier accuracy and speed</a></strong>, with a Pi-plus-LM-Studio setup and Docker sandboxing.</p><p><strong>What&#8217;s interesting:</strong> Local models have crossed a threshold. Agentic coding tasks that were impossible six months ago now work well enough that you can often skip double-checking against an API.</p><p>[1] <a href="https://writing.alteredcraft.com/i/202048390/the-coming-shift-from-bigger-models-to-cheaper-ones">The Coming Shift From Bigger Models to Cheaper Ones</a></p><h3><strong>Local AI Is Not Opus: A Founder&#8217;s Receipts</strong></h3><p>Estimated read time: 12 min</p><p>That optimism comes with a caveat. A bootstrapped founder shares hard data from running Qwen 27B on a $12,000 GPU. The card pays for itself on support work, but <strong><a href="https://blog.alexellis.io/local-ai-is-not-opus/">local models are a different tool, not a cheaper Claude</a></strong>, looping once quantized for consumer hardware.</p><p><strong>Worth noting:</strong> Local models earn their keep on privacy, fixed costs, and vendor risk for scoped, supervised tasks. They still can&#8217;t replace frontier models for unattended agentic work.</p><h2><strong>TOOLS</strong></h2><p><em>The tools this week assemble the agent stack from the outside in: a model to drive it, two harnesses to run it, a format to feed it context, and an auth layer to govern it.</em></p><h3><strong>GLM-5.2 Brings a Usable 1M-Token Context to Open-Source Coding</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fw-T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fw-T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png 424w, https://substackcdn.com/image/fetch/$s_!Fw-T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png 848w, https://substackcdn.com/image/fetch/$s_!Fw-T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png 1272w, https://substackcdn.com/image/fetch/$s_!Fw-T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fw-T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png" width="545" height="353.35164835164835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:944,&quot;width&quot;:1456,&quot;resizeWidth&quot;:545,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;img_v3_0212n_dd3e6c79-bb10-4959-9080-56eb8525b92g&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="img_v3_0212n_dd3e6c79-bb10-4959-9080-56eb8525b92g" title="img_v3_0212n_dd3e6c79-bb10-4959-9080-56eb8525b92g" srcset="https://substackcdn.com/image/fetch/$s_!Fw-T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png 424w, https://substackcdn.com/image/fetch/$s_!Fw-T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png 848w, https://substackcdn.com/image/fetch/$s_!Fw-T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png 1272w, https://substackcdn.com/image/fetch/$s_!Fw-T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a9fd3f5-3e04-4d2b-8fea-0b6dac441f2b_6006x3894.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Z.ai&#8217;s MIT-licensed GLM-5.2 targets long-horizon coding with a <strong><a href="https://z.ai/blog/glm-5.2">1M-token context that stays reliable under real engineering pressure</a></strong>. It tops open-source models on three benchmarks, adds effort-level controls, and introduces anti-hacking RL to keep training honest.</p><p><strong>What this enables:</strong> If you run long, messy coding-agent trajectories, GLM-5.2 gives you a frontier-adjacent, openly licensed option where the 1M context actually holds up across hours-long tasks.</p><h3><strong>eve: Vercel&#8217;s Framework for Production-Ready Agents</strong></h3><p>Estimated read time: 7 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5OE-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5OE-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png 424w, https://substackcdn.com/image/fetch/$s_!5OE-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png 848w, https://substackcdn.com/image/fetch/$s_!5OE-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png 1272w, https://substackcdn.com/image/fetch/$s_!5OE-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5OE-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png" width="501" height="314.845467032967" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:915,&quot;width&quot;:1456,&quot;resizeWidth&quot;:501,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A session trace, with one turn opened to its tool call and a pending approval&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A session trace, with one turn opened to its tool call and a pending approval" title="A session trace, with one turn opened to its tool call and a pending approval" srcset="https://substackcdn.com/image/fetch/$s_!5OE-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png 424w, https://substackcdn.com/image/fetch/$s_!5OE-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png 848w, https://substackcdn.com/image/fetch/$s_!5OE-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png 1272w, https://substackcdn.com/image/fetch/$s_!5OE-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ebbfd95-966e-45d3-a7e3-eb18eb6371ff_1920x1207.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>To put a model like that to work, you need a harness. Vercel&#8217;s open-source eve makes <strong><a href="https://vercel.com/blog/introducing-eve">an agent a directory</a></strong> of files defining tools, skills, and subagents. It ships durable sessions, sandboxed compute, approvals, multi-channel delivery, tracing, and evals, so you focus on behavior, not plumbing.</p><p><strong>Key point:</strong> Define your agent as a versioned folder of files, then let the framework handle the durability, sandboxing, approvals, and deployment you would otherwise build by hand.</p><h3><strong>Flue: A Programmable Harness for Autonomous Agents</strong></h3><p>Estimated read time: 4 min</p><p>The Astro team takes that idea from a different angle. Flue is a TypeScript harness that gives any model the sessions, tools, skills, sandbox, and durable execution for autonomous work. It&#8217;s <strong><a href="https://github.com/withastro/flue?_bhlid=63290e95114205f6b9ae93f4b66e03472b49de9a">not another SDK but a programmable environment</a></strong>.</p><p><strong>The takeaway:</strong> If you&#8217;re building agents that take real action, Flue handles the sandbox, durability, and observability plumbing, so you can focus on the task instead of the scaffolding.</p><h3><strong>Google&#8217;s Open Knowledge Format: A Standard for Feeding Context to AI Agents</strong></h3><p>Estimated read time: 8 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dplL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dplL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.png 424w, https://substackcdn.com/image/fetch/$s_!dplL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.png 848w, https://substackcdn.com/image/fetch/$s_!dplL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.png 1272w, https://substackcdn.com/image/fetch/$s_!dplL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dplL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.png" width="524" height="370.6868131868132" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.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;:524,&quot;bytes&quot;:173874,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/203026436?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.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_!dplL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.png 424w, https://substackcdn.com/image/fetch/$s_!dplL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.png 848w, https://substackcdn.com/image/fetch/$s_!dplL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.png 1272w, https://substackcdn.com/image/fetch/$s_!dplL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F210ffda8-02ca-4ff1-a840-09c1ab7046de_1496x1058.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A harness still needs something to feed it. Google Cloud&#8217;s Open Knowledge Format is a vendor-neutral spec that formalizes the LLM-wiki pattern into portable markdown bundles with YAML frontmatter. It treats <strong><a href="https://cloud.google.com/blog/products/data-analytics/how-the-open-knowledge-format-can-improve-data-sharing/">knowledge as a format, not a service</a></strong>, so agents and humans read identical files.</p><p><strong>Why now:</strong> If your agents keep reassembling the same scattered context from scratch, a portable markdown-and-YAML standard like OKF could make that knowledge readable by every tool you use.</p><h3><strong>MCP Gets Enterprise-Grade Auth: Authorize Once, Inherit Everywhere</strong></h3><p>Estimated read time: 4 min</p><p>Finally, governing all of this at scale. MCP&#8217;s Enterprise-Managed Authorization extension is now stable, letting organizations control server access through their identity provider instead of per-app consent prompts. <strong><a href="https://blog.modelcontextprotocol.io/posts/enterprise-managed-auth/">The IdP becomes the authoritative decision-maker</a></strong>, so users log in once and inherit servers scoped to their roles.</p><p><strong>The context:</strong> Deploying MCP in an enterprise? EMA lets you centralize access policy and audit in your identity provider, instead of leaving authorization to whatever each employee happened to approve.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><p><em>The editorials orbit one question: if agents now write the code, what part of the job stays yours? We open with the week&#8217;s biggest deal, then follow the answer through deciding, reviewing, and the discipline that cheap code demands.</em></p><h3><strong>SpaceX Buys Cursor for $60B in Stock After Record IPO</strong></h3><p>Estimated read time: 5 min</p><p>We open with the week&#8217;s biggest deal. SpaceX agrees to acquire AI coding startup Cursor in a $60 billion all-stock deal days after its record IPO, betting the tool helps its troubled xAI division catch the major labs. The move shows how <strong><a href="https://techcrunch.com/2026/06/16/spacex-to-acquire-cursor-for-60b-in-stock-days-after-blockbuster-ipo/">AI coding became a strategic prize</a></strong>.</p><p><strong>What to watch:</strong> The tools developers use daily are now acquisition targets in trillion-dollar bets. Watch how ownership shifts affect the roadmaps, pricing, and data practices of tools your team depends on.</p><h3><strong>Who Decides What: What 400K Claude Code Sessions Reveal About Agentic Work</strong></h3><p>Estimated read time: 8 min</p><p>That raises the question of who is actually steering. Building on our coverage of the decide-execute-deliver argument[2] last week, Anthropic&#8217;s analysis of roughly 400,000 Claude Code sessions finds a consistent split: <strong><a href="https://www.anthropic.com/research/claude-code-expertise">people decide what to build, the agent decides how</a></strong>. Over seven months, debugging nearly halved while task value rose about 25%.</p><p><strong>The lesson:</strong> Bring deep understanding of your problem to the agent. Domain expertise, not raw coding skill, is what makes the model do more and succeed more often.</p><p>[2] <a href="https://writing.alteredcraft.com/i/202048390/the-decide-execute-deliver-sandwich-why-ai-hasnt-replaced-engineers">The &#8220;Decide-Execute-Deliver&#8221; Sandwich: Why AI Hasn&#8217;t Replaced Engineers</a></p><h3><strong>Review Is Now the Most Leveraged Skill in Software</strong></h3><p>Estimated read time: 14 min</p><p>If people own the &#8220;what,&#8221; verification is where that ownership shows up. Addy Osmani argues that as coding agents accelerate, <strong><a href="https://addyosmani.com/blog/agentic-code-review/">the bottleneck moved from writing code to verifying it</a></strong>. Citing 2026 data showing 4x output for roughly 12% real value, he shows how review scales with blast radius.</p><p><strong>The practice:</strong> Scale your human review to the blast radius of the change, and pair two deliberately different AI reviewers rather than chasing a single best tool.</p><h3><strong>When Code Becomes Disposable, Discipline Becomes the Product</strong></h3><p>Estimated read time: 15 min</p><p>Which points to a deeper shift. The piece argues cheap, regenerable AI code turns code into <strong><a href="https://charitydotwtf.substack.com/p/ai-demands-more-engineering-discipline">a materialized view of understanding, disposable when stale</a></strong>. Drawing on Phoenix Architecture ideas, it contends disposability raises the bar for rigor, pushing teams toward observability, characterization tests, and evals in production.</p><p><strong>The shift:</strong> Stop treating code as the durable asset. Invest in evals, observability, and short feedback loops so the understanding lives where it can be regenerated on demand.</p><div><hr></div><p><em>That&#8217;s the week. As the model becomes the easy part, your edge is everything you build around it: the context you curate, the harness you run it in, and the review that catches what it gets wrong. See you next Monday.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Altered Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Tilth gets a Flight Recorder]]></title><description><![CDATA[Seeing what a long-running agent actually does]]></description><link>https://writing.alteredcraft.com/p/tilth-gets-a-flight-recorder</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/tilth-gets-a-flight-recorder</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Fri, 19 Jun 2026 18:22:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rxGM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A quick progress update on <a href="https://github.com/AlteredCraft/tilth">Tilth</a>, the small agent harness I introduced a <a href="https://alteredcraft0.substack.com/p/notes-from-building-a-tiny-long-running">while back</a> for running open-weights models against real coding tasks. Most of the recent work has gone into one thing: being able to see what a session is doing, while it runs and after it finishes.</p><p>This is in the form of a web app composed of a dashboard and a visualized stream of the activity logs for a session.<br>Here we see the dashboard section for a finished session:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rxGM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rxGM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png 424w, https://substackcdn.com/image/fetch/$s_!rxGM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png 848w, https://substackcdn.com/image/fetch/$s_!rxGM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png 1272w, https://substackcdn.com/image/fetch/$s_!rxGM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rxGM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png" width="1456" height="1453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1453,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:254909,&quot;alt&quot;:&quot;Tilth's dashboard for a finished session: status all_done, 285k tokens across 4 tasks. It shows limit utilization well under the token and wall-clock caps, per-task iteration counts (7, 12, 9, 13 against a cap of 32), four accept verdicts and zero rejects, a session timeline of task spans with verdict markers, and a context-pressure bar chart where prompt tokens climb within each task and reset at task boundaries.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/202617238?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tilth's dashboard for a finished session: status all_done, 285k tokens across 4 tasks. It shows limit utilization well under the token and wall-clock caps, per-task iteration counts (7, 12, 9, 13 against a cap of 32), four accept verdicts and zero rejects, a session timeline of task spans with verdict markers, and a context-pressure bar chart where prompt tokens climb within each task and reset at task boundaries." title="Tilth's dashboard for a finished session: status all_done, 285k tokens across 4 tasks. It shows limit utilization well under the token and wall-clock caps, per-task iteration counts (7, 12, 9, 13 against a cap of 32), four accept verdicts and zero rejects, a session timeline of task spans with verdict markers, and a context-pressure bar chart where prompt tokens climb within each task and reset at task boundaries." srcset="https://substackcdn.com/image/fetch/$s_!rxGM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png 424w, https://substackcdn.com/image/fetch/$s_!rxGM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png 848w, https://substackcdn.com/image/fetch/$s_!rxGM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.png 1272w, https://substackcdn.com/image/fetch/$s_!rxGM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d72711e-8a65-46c2-a1be-bbe2c6b223cd_1680x1676.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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Four tasks, start to finish, in about six and a half minutes and 285k tokens. The reason I keep coming back to this view is that it answers a question the exit code can&#8217;t. A run that finishes and a run that finishes <em>well</em> look identical if all you have is <code>all_done</code>. The difference is in the shape.</p><p>A few patterns I read off it now without thinking:</p><ul><li><p>Iteration counts spread evenly and well under the cap: a healthy run. One task pinned near the ceiling is one that got stuck.</p></li><li><p>Mostly accepts, few rejects: the worker and the evaluator agree. A wall of rejects means they are talking past each other.</p></li><li><p>Context pressure that climbs through a task and resets at each boundary: the out-of-context memory doing its job. A line that never resets is context quietly bloating.</p></li></ul><p>Here is a fresh one kicking off: a path, a model, and the loop starts turning.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_-B5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_-B5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif 424w, https://substackcdn.com/image/fetch/$s_!_-B5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif 848w, https://substackcdn.com/image/fetch/$s_!_-B5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif 1272w, https://substackcdn.com/image/fetch/$s_!_-B5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_-B5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif" width="1200" height="725" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:725,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:841792,&quot;alt&quot;:&quot;Animated terminal recording of a Tilth run launching: the `tilth run` command loads four tasks, prints the session id, worktree and branch, selects the deepseek-v4-flash model, and begins task T-001 at iteration 1.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/202617238?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Animated terminal recording of a Tilth run launching: the `tilth run` command loads four tasks, prints the session id, worktree and branch, selects the deepseek-v4-flash model, and begins task T-001 at iteration 1." title="Animated terminal recording of a Tilth run launching: the `tilth run` command loads four tasks, prints the session id, worktree and branch, selects the deepseek-v4-flash model, and begins task T-001 at iteration 1." srcset="https://substackcdn.com/image/fetch/$s_!_-B5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif 424w, https://substackcdn.com/image/fetch/$s_!_-B5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif 848w, https://substackcdn.com/image/fetch/$s_!_-B5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif 1272w, https://substackcdn.com/image/fetch/$s_!_-B5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd19ad6-8e93-49df-a189-6a5fbcc75e54_1200x725.gif 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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The model and harness activity stream live in the web view, filling in event by event.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0SPz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0SPz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif 424w, https://substackcdn.com/image/fetch/$s_!0SPz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif 848w, https://substackcdn.com/image/fetch/$s_!0SPz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif 1272w, https://substackcdn.com/image/fetch/$s_!0SPz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0SPz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif" width="1200" height="725" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:725,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1315747,&quot;alt&quot;:&quot;Animated Tilth dashboard for a running session, status \&quot;running\&quot;, with the summary panels filling in live and a Communication feed streaming events (session start, tool calls, hook checks, results) as they happen, with a follow button pinned to the latest event.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/202617238?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Animated Tilth dashboard for a running session, status &quot;running&quot;, with the summary panels filling in live and a Communication feed streaming events (session start, tool calls, hook checks, results) as they happen, with a follow button pinned to the latest event." title="Animated Tilth dashboard for a running session, status &quot;running&quot;, with the summary panels filling in live and a Communication feed streaming events (session start, tool calls, hook checks, results) as they happen, with a follow button pinned to the latest event." srcset="https://substackcdn.com/image/fetch/$s_!0SPz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif 424w, https://substackcdn.com/image/fetch/$s_!0SPz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif 848w, https://substackcdn.com/image/fetch/$s_!0SPz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif 1272w, https://substackcdn.com/image/fetch/$s_!0SPz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F164496a9-4bd0-4793-b553-8ae7acc623fd_1200x725.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And I can drop into any single iteration and read it like a transcript: the evaluator&#8217;s verdict with its reasoning, the ledger entry, the commit.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q4EM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q4EM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png 424w, https://substackcdn.com/image/fetch/$s_!Q4EM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png 848w, https://substackcdn.com/image/fetch/$s_!Q4EM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png 1272w, https://substackcdn.com/image/fetch/$s_!Q4EM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q4EM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png" width="1456" height="960" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:216143,&quot;alt&quot;:&quot;A single Tilth iteration read as a transcript: iteration 12 with its token counts, the evaluator's accept verdict and its reasoning against the acceptance criteria, the appended ledger entry, a task-done summary, and the commit hash.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/202617238?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A single Tilth iteration read as a transcript: iteration 12 with its token counts, the evaluator's accept verdict and its reasoning against the acceptance criteria, the appended ledger entry, a task-done summary, and the commit hash." title="A single Tilth iteration read as a transcript: iteration 12 with its token counts, the evaluator's accept verdict and its reasoning against the acceptance criteria, the appended ledger entry, a task-done summary, and the commit hash." srcset="https://substackcdn.com/image/fetch/$s_!Q4EM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png 424w, https://substackcdn.com/image/fetch/$s_!Q4EM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png 848w, https://substackcdn.com/image/fetch/$s_!Q4EM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png 1272w, https://substackcdn.com/image/fetch/$s_!Q4EM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da70a26-36b1-47f6-9ab4-46469f66a173_1684x1110.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>None of this is novel as &#8220;observability.&#8221; There is a lot of good writing on agent tracing right now. What I&#8217;d flag is smaller and more practical. I built all of this for myself, to debug my own runs, and the live view came almost for free, because every panel is a render of the same append-only event log. Build the log for the autopsy and the live dashboard falls out of it.</p><p>Why I care about this particular instrument: I am trying to work out how far cheaper open-weights models can be trusted with autonomous work. You can&#8217;t answer that from a pass or fail. You have to watch how the model gets there, and notice when it thrashes. This is the thing that makes that legible.</p><p>That is the progress. It is the instrument, not the study. The study is the next step: I want to batch-evaluate a finished session and score it on effectiveness and efficiency, so the shape I am reading by eye becomes something gradable.</p><p>The rest of the details are in the <a href="https://alteredcraft.github.io/tilth/">Tilth docs</a>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Altered Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Weekly Review: Pulled Offline]]></title><description><![CDATA[A government pulls two frontier models offline overnight, and why owning your stack, from a neuron by hand to a model for $80, is more interesting then ever]]></description><link>https://writing.alteredcraft.com/p/weekly-review-pulled-offline</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-pulled-offline</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 15 Jun 2026 12:13:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/02419d34-a766-4553-949e-013cbbba3e23_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>Welcome back to Altered Craft&#8217;s weekly AI review for developers, and thank you for being here for a heavy news week. The defining story is sobering: <strong>a US government directive forced Anthropic to pull Fable 5 and Mythos 5 offline for every customer, the first time a nation has recalled a deployed frontier model.</strong> A model you build on can now vanish overnight. So the rest of this issue leans into the hedge: build from first principles, route to smaller models, own more of your stack.</em></p></blockquote><div><hr></div><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><p><em>We start at the foundations and climb: one neuron by hand, a full from-scratch curriculum, a tiny model trained for $80, then serving it efficiently and prompting the latest frontier release.</em></p><h3><strong>The Perceptron, Built From Scratch in Your Browser</strong></h3><p>Estimated read time: 8 min</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Altered Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nR01!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nR01!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.png 424w, https://substackcdn.com/image/fetch/$s_!nR01!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.png 848w, https://substackcdn.com/image/fetch/$s_!nR01!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.png 1272w, https://substackcdn.com/image/fetch/$s_!nR01!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nR01!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.png" width="503" height="279.02968460111316" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb903317-966f-49b6-840b-042ab9544029_1078x598.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:598,&quot;width&quot;:1078,&quot;resizeWidth&quot;:503,&quot;bytes&quot;:85908,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/202048390?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.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_!nR01!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.png 424w, https://substackcdn.com/image/fetch/$s_!nR01!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.png 848w, https://substackcdn.com/image/fetch/$s_!nR01!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.png 1272w, https://substackcdn.com/image/fetch/$s_!nR01!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb903317-966f-49b6-840b-042ab9544029_1078x598.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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ranpara builds a single perceptron in plain Python and runs it live so you watch it learn. A student-pass example shows why <strong><a href="https://ranpara.net/posts/perceptron-explained-from-scratch/">the bias moves the boundary to where the answer lives</a></strong>, plus how normalization keeps training smooth.</p><p><strong>The takeaway:</strong> Understand the weight, bias, and update loop of a single neuron and you understand the building block every neural network is made from.</p><h3><strong>503 Lessons That Build AI From Raw Math Up</strong></h3><p>Estimated read time: 9 min</p><p>From a single neuron to the full stack, this free, open-source curriculum spans 20 phases and 503 lessons across four languages. Its core principle: <strong><a href="https://github.com/rohitg00/ai-engineering-from-scratch">build every algorithm from raw math before touching a framework</a></strong>. Every lesson ships a reusable artifact, a prompt, skill, agent, or MCP server.</p><p><strong>Why this matters:</strong> If you can call AI APIs but can&#8217;t explain what happens underneath, this curriculum closes that gap by making you build each piece by hand.</p><h3><strong>Building a Victorian LLM From (Almost) Scratch for $80</strong></h3><p>Estimated read time: 31 min</p><p>Putting that build-it-yourself ethos to the test, Cristi Constantin trains a 340M-parameter, Llama-based model knowledge-locked to the year 1900. The standout lesson: <strong><a href="https://crlf.link/log/entries/260525-1/">data quality, not compute, dominates the work</a></strong>, through custom de-duplication, compression ratios, entropy, and OCR scoring. Total GPU cost: roughly $80.</p><p><strong>Key point:</strong> To truly understand how LLMs work, build a small one yourself, and expect most of your time to go into cleaning and filtering the data.</p><h3><strong>Serving LLMs Efficiently: A Hands-On vLLM Workflow</strong></h3><p>Watch time: 1h38m</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!efk-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!efk-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png 424w, https://substackcdn.com/image/fetch/$s_!efk-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png 848w, https://substackcdn.com/image/fetch/$s_!efk-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png 1272w, https://substackcdn.com/image/fetch/$s_!efk-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!efk-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png" width="411" height="222.8661971830986" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:616,&quot;width&quot;:1136,&quot;resizeWidth&quot;:411,&quot;bytes&quot;:476778,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/202048390?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.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_!efk-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png 424w, https://substackcdn.com/image/fetch/$s_!efk-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png 848w, https://substackcdn.com/image/fetch/$s_!efk-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png 1272w, https://substackcdn.com/image/fetch/$s_!efk-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ffe4c90-b39f-4b6a-9deb-c4cc5154ec66_1136x616.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Once a model exists, the next problem is serving it. This DeepLearning.AI course, built with Red Hat, shows that <strong><a href="https://www.deeplearning.ai/courses/fast-and-efficient-llm-inference-with-vllm">efficient LLM serving is mostly a memory problem</a></strong>, where weights and the KV cache compete for GPU space. You quantize a Qwen model, serve it with vLLM, and benchmark under load.</p><p><strong>What this enables:</strong> Treat LLM deployment as a memory-management problem, then use quantization with vLLM&#8217;s PagedAttention and continuous batching to balance speed, cost, and accuracy.</p><h3><strong>Prompting Patterns for Claude Fable 5: What Changes When the Model Runs for Hours</strong></h3><p>Estimated read time: 7 min</p><p>At the frontier end of the spectrum, and newly poignant this week, Anthropic&#8217;s guide details the prompting shifts for Claude Fable 5 and Mythos 5, the very models just pulled offline. Because <strong><a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5">instruction-following is now strong enough to steer briefly</a></strong>, older prescriptive prompts can degrade output and need pruning before migration.</p><p><strong>Try this:</strong> Re-audit your prompts and skills before migrating, since instructions tuned for older models can actively hurt Fable 5&#8217;s output. Call it homework for whenever it comes back. If it comes back.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Altered Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>TOOLS</strong></h2><p><em>This week&#8217;s tools equip the agent itself: the new frontier model to drive it, a brain and a sandbox to work in, an interface built for it, and a guardrail to keep it safe.</em></p><h3><strong>Serena: Giving Your Coding Agent an IDE&#8217;s Brain</strong></h3><p>Estimated read time: 8 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DQT7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DQT7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg 424w, https://substackcdn.com/image/fetch/$s_!DQT7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg 848w, https://substackcdn.com/image/fetch/$s_!DQT7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg 1272w, https://substackcdn.com/image/fetch/$s_!DQT7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DQT7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg" width="543" height="264.41414835164835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:709,&quot;width&quot;:1456,&quot;resizeWidth&quot;:543,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DQT7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg 424w, https://substackcdn.com/image/fetch/$s_!DQT7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg 848w, https://substackcdn.com/image/fetch/$s_!DQT7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg 1272w, https://substackcdn.com/image/fetch/$s_!DQT7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf25f4b-f495-4fef-a1a8-49e665b55f58_2622x1276.svg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>To make any model useful in a large codebase, Serena is an open-source MCP server that gives coding agents <strong><a href="https://github.com/oraios/serena">semantic, symbol-level understanding of code</a></strong> instead of brittle text search. Backed by language servers across 40+ languages, it turns cross-file renames, lookups, and refactors into single atomic calls.</p><p><strong>The opportunity:</strong> If your agent fumbles refactors with search-and-replace in a large codebase, an MCP server like Serena can collapse eight to twelve error-prone steps into one reliable operation.</p><h3><strong>Every Agent Needs Its Own Computer</strong></h3><p>Estimated read time: 6 min</p><p>If a brain handles the code, the next need is a safe place to run it. LangChain introduces LangSmith Sandboxes, hardware-virtualized microVMs that give each agent a disposable computer with filesystem, shell, and persistent state. The piece argues <strong><a href="https://www.langchain.com/blog/give-your-ai-agent-its-own-computer">containers aren&#8217;t an isolation boundary</a></strong> for untrusted model-generated code.</p><p><strong>The principle:</strong> If your agent runs dynamic or model-generated code, give it a hardware-isolated sandbox rather than a shared-kernel container you are quietly trusting.</p><h3><strong>Designing the hf CLI for Humans and Agents Alike</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jwJA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jwJA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.png 424w, https://substackcdn.com/image/fetch/$s_!jwJA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.png 848w, https://substackcdn.com/image/fetch/$s_!jwJA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.png 1272w, https://substackcdn.com/image/fetch/$s_!jwJA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jwJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.png" width="587" height="190.27754237288136" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ad64876-7a78-461d-9306-32fec614352d_944x306.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:306,&quot;width&quot;:944,&quot;resizeWidth&quot;:587,&quot;bytes&quot;:56510,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/202048390?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.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_!jwJA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.png 424w, https://substackcdn.com/image/fetch/$s_!jwJA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.png 848w, https://substackcdn.com/image/fetch/$s_!jwJA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.png 1272w, https://substackcdn.com/image/fetch/$s_!jwJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ad64876-7a78-461d-9306-32fec614352d_944x306.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Tools also have to speak the agent&#8217;s language. Hugging Face rebuilt its hf CLI to serve both humans and coding agents, auto-detecting which is driving and rendering output accordingly. Benchmarks show <strong><a href="https://huggingface.co/blog/hf-cli-for-agents">a no-CLI baseline burns up to 6x the tokens</a></strong> on complex multi-step tasks.</p><p><strong>Worth noting:</strong> Designing tool output for agents, compact, parseable, and full of next-command hints, can cut token usage dramatically without hurting the human experience.</p><h3><strong>Nemotron 3.5 Brings Custom Policy Reasoning to Multimodal Safety</strong></h3><p>Estimated read time: 9 min</p><p>Finally, a guardrail for everything above. NVIDIA&#8217;s 4B-parameter safety model unifies multimodal input, 12-language coverage, and custom enterprise policy enforcement in one inference call. The standout is <strong><a href="https://huggingface.co/blog/nvidia/nemotron-3-5-content-safety">auditable reasoning traces via THINK mode</a></strong>, letting teams enforce natural-language policies with a documented justification per verdict.</p><p><strong>What this enables:</strong> If you build guardrails for regulated or multi-domain AI products, one model that accepts custom policies and emits auditable traces could replace a stack of brittle classifiers.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><p><em>The editorials open on the week&#8217;s biggest shock, a frontier pulled offline by government order, then widen out: the architecture you actually control, clearer thinking about &#8220;world models,&#8221; the economics pushing toward cheaper ones, and the part of the job that stays yours.</em></p><h3><strong>The Government Just Pulled Two Anthropic Models Off the Market</strong></h3><p>Estimated read time: 4 min</p><p>In an action without precedent, a June 12 US export-control directive ordered Anthropic to <strong><a href="https://www.anthropic.com/news/fable-mythos-access">suspend Fable 5 and Mythos 5 for any foreign national</a></strong>, and the company disabled both models for everyone worldwide. Anthropic disputes the cited jailbreak, reading a codebase to fix its flaws, as narrow and reproducible in rival models, and says it is working to restore access.</p><p><strong>Worth watching: </strong>Frontier access is something regulation can revoke overnight. Keep a fallback model and own more of your stack.</p><h3><strong>The AI Agents Stack: 2026 Edition</strong></h3><p>Estimated read time: 9 min</p><p>If a model can vanish overnight, the architecture you control matters more. Paolo Perrone redraws Letta&#8217;s influential agent stack diagram for 2026, mapping six layers from models to guardrails. The recurring argument: <strong><a href="https://www.oreilly.com/radar/the-ai-agents-stack-2026-edition/">add complexity only when something specific breaks</a></strong>, with honest takes on lock-in and the demo-to-production gap at each layer.</p><p><strong>The pattern:</strong> Start with the simplest stack that works and add layers only when something specific breaks, not in anticipation of problems you don&#8217;t yet have.</p><h3><strong>A Functional Taxonomy of World Models</strong></h3><p>Estimated read time: 9 min</p><p>Another effort to bring order to a loaded term, <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Fei-Fei Li&quot;,&quot;id&quot;:196433379,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9acc95bc-b55d-45ac-b734-eae9e0614274_523x523.jpeg&quot;,&quot;uuid&quot;:&quot;622d5f54-19cc-4d4a-98e8-b972c3216c5a&quot;}" data-component-name="MentionToDOM"></span> and World Labs sort &#8220;world model&#8221; systems into three functions: renderers output pixels, simulators output state, planners output actions. They argue <strong><a href="https://open.substack.com/pub/drfeifei/p/a-functional-taxonomy-of-world-models">simulation is the structural backbone</a></strong> from which fidelity and reliable action derive.</p><p><strong>The lens:</strong> When evaluating a &#8220;world model,&#8221; ask which contract it fulfills, visual plausibility, structural accuracy, or correct action, because beautiful pixels rarely guarantee usable physics.</p><h3><strong>The Coming Shift From Bigger Models to Cheaper Ones</strong></h3><p>Estimated read time: 5 min</p><p>Building on our coverage of open versus closed model economics[1] last week, the question sharpens as subsidies slow and token prices climb: <strong><a href="https://techcrunch.com/2026/06/09/can-tech-companies-learn-to-love-cheaper-models/">are companies ready to switch to smaller models</a></strong>? Early tests, like Harvey cutting inference costs 3x with no quality loss, suggest the real divide is large versus small.</p><p><strong>Why now:</strong> Stop defaulting to the frontier model for everything and start routing each task to the smallest model that returns the right answer.</p><p>[1] <a href="https://writing.alteredcraft.com/i/201057327/open-and-closed-models-are-on-different-exponentials">Open and Closed Models Are on Different Exponentials</a></p><h3><strong>The &#8220;Decide-Execute-Deliver&#8221; Sandwich: Why AI Hasn&#8217;t Replaced Engineers</strong></h3><p>Estimated read time: 9 min</p><p>We close on what stays yours. Following our look at how the senior role is moving from writing code to directing it[2] last week, this essay examines headline layoffs at Block, Snap, and Intuit and finds AI is mostly a scapegoat for financial restructuring. Software work is a <strong><a href="https://www.normaltech.ai/p/why-ai-hasnt-replaced-software-engineers">decide-execute-deliver sandwich</a></strong>: AI compresses the middle, but deciding what to build and owning delivery resist automation.</p><p><strong>The shift:</strong> Code generation was never the bottleneck. Your value increasingly lives in framing problems and owning what ships, not in typing the implementation.</p><p>[2] <a href="https://writing.alteredcraft.com/i/201057327/when-ai-starts-building-ai-inside-anthropics-self-improvement-curve">When AI Starts Building AI: Inside Anthropic&#8217;s Self-Improvement Curve</a></p>]]></content:encoded></item><item><title><![CDATA[Weekly Review: The Outer Loop]]></title><description><![CDATA[When agents start closing their own loop: the guardrails that let them self-verify, the open models racing to orchestrate, and the work that moves up the stack to you]]></description><link>https://writing.alteredcraft.com/p/weekly-review-the-outer-loop</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-the-outer-loop</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 08 Jun 2026 12:10:10 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9fd4ec31-7836-48fc-89b9-0ff3f52f1de3_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1><strong>Altered Craft</strong></h1><blockquote><p><em>Welcome back to Altered Craft&#8217;s weekly AI review for developers, and thank you for starting your week with us. Last week we followed the money; this week we follow the loop. Agents are reaching deeper into their own cycle of writing and checking, from self-validating guardrails to workflows that fan across hundreds of subagents, with Claude now authoring most of its own merged code. As that inner loop closes, the work that stays yours moves outward: setting the guardrails, directing the fleet, and choosing which problems matter.</em></p></blockquote><div><hr></div><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><p><em>We open with the principle that pushes you out of the inner loop, then turn to two production realities: keeping RAG costs in check and running frontier models inside your own cloud perimeter.</em></p><h3><strong>Backpressure Is All You Need: Stop Being Your Agent&#8217;s Bottleneck</strong></h3><p>Estimated read time: 11 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zXv1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zXv1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png 424w, https://substackcdn.com/image/fetch/$s_!zXv1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png 848w, https://substackcdn.com/image/fetch/$s_!zXv1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png 1272w, https://substackcdn.com/image/fetch/$s_!zXv1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zXv1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png" width="549" height="200.59615384615384" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:532,&quot;width&quot;:1456,&quot;resizeWidth&quot;:549,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Sequence timeline with three lanes&#8212;Human Reviewer, Agentic Backpressure, and Agent. The agent writes code that the backpressure layer pushes automated feedback back on, looping several times, and only at the end does the human reviewer do a manual review.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Sequence timeline with three lanes&#8212;Human Reviewer, Agentic Backpressure, and Agent. The agent writes code that the backpressure layer pushes automated feedback back on, looping several times, and only at the end does the human reviewer do a manual review." title="Sequence timeline with three lanes&#8212;Human Reviewer, Agentic Backpressure, and Agent. The agent writes code that the backpressure layer pushes automated feedback back on, looping several times, and only at the end does the human reviewer do a manual review." srcset="https://substackcdn.com/image/fetch/$s_!zXv1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png 424w, https://substackcdn.com/image/fetch/$s_!zXv1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png 848w, https://substackcdn.com/image/fetch/$s_!zXv1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png 1272w, https://substackcdn.com/image/fetch/$s_!zXv1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5231805d-310d-4e0e-9d2b-2d2ef0fd9598_2883x1054.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Building on our coverage of Anthropic&#8217;s point that verification is now the bottleneck[1], Lucas da Costa argues <strong><a href="https://www.lucasfcosta.com/blog/backpressure-is-all-you-need">humans have become the default backpressure in AI coding loops</a></strong>, shuttling feedback between agents and bots. His fix: build automated guardrails (tests, types, benchmarks, review agents) that force the LLM to validate its own work first.</p><p><strong>The takeaway:</strong> If you are manually correcting your coding agent every cycle, you are not delegating, you are an expensive clipboard between two machines.</p><p>[1] <a href="https://writing.alteredcraft.com/i/200055255/using-llms-to-secure-source-code-a-six-step-loop">Using LLMs to Secure Source Code: A Six-Step Loop</a></p><h3><strong>RAG Is Burning Money: Building a Cost Control Layer</strong></h3><p>Estimated read time: 14 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SgK6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SgK6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png 424w, https://substackcdn.com/image/fetch/$s_!SgK6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png 848w, https://substackcdn.com/image/fetch/$s_!SgK6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png 1272w, https://substackcdn.com/image/fetch/$s_!SgK6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SgK6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png" width="462" height="312.2109375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:1024,&quot;resizeWidth&quot;:462,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Bar chart comparing daily LLM costs for naive RAG versus an optimized RAG cost control layer across different traffic levels, showing consistent 84&#8211;86% cost reduction with semantic caching, query routing, and budget enforcement.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Bar chart comparing daily LLM costs for naive RAG versus an optimized RAG cost control layer across different traffic levels, showing consistent 84&#8211;86% cost reduction with semantic caching, query routing, and budget enforcement." title="Bar chart comparing daily LLM costs for naive RAG versus an optimized RAG cost control layer across different traffic levels, showing consistent 84&#8211;86% cost reduction with semantic caching, query routing, and budget enforcement." srcset="https://substackcdn.com/image/fetch/$s_!SgK6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png 424w, https://substackcdn.com/image/fetch/$s_!SgK6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png 848w, https://substackcdn.com/image/fetch/$s_!SgK6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png 1272w, https://substackcdn.com/image/fetch/$s_!SgK6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b10af17-cd62-4d52-ba03-430e69cbc998_1024x692.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Once the agent is checking its own work, the next thing to watch is the bill. A working RAG pipeline can drain budgets through over-fetched context, uncached repeats, and oversized models on trivial queries. This walkthrough builds a <strong><a href="https://towardsdatascience.com/rag-is-burning-money-i-built-a-cost-control-layer-to-fix-it/">four-layer cost control system</a></strong> with semantic caching, routing, and token budgeting, achieving up to 85.8% cost reduction.</p><p><strong>Worth noting:</strong> Treat RAG cost as a separate failure domain from quality, and instrument routing and caching before scaling traffic.</p><h3><strong>Running OpenAI Models on Amazon Bedrock: A Production Cookbook</strong></h3><p>Estimated read time: 12 min</p><p>Staying with production concerns, OpenAI&#8217;s cookbook walks through running GPT-5 models on Amazon Bedrock via an <strong><a href="https://developers.openai.com/cookbook/examples/partners/aws/openai_models_with_amazon_bedrock">OpenAI-compatible Responses API</a></strong>, using a fictional retailer support workflow to cover structured outputs, function tools, PDF inputs, prompt caching, background mode, stateful conversations, and operational smoke checks.</p><p><strong>What this enables:</strong> If you need OpenAI models inside your AWS perimeter, Bedrock now exposes the full Responses API surface with minimal code changes from a standard OpenAI SDK setup.</p><h2><strong>TOOLS</strong></h2><p><em>The model releases cluster by job this week: open-weight coding and multimodal models, an orchestrator built for long-running agents, the workflow layer that fans work across hundreds of subagents, and a scanner to keep the skills they use safe.</em></p><h3><strong>MiniMax M3: An Open-Weight Model Targeting Frontier Coding and Agentic Work</strong></h3><p>Estimated read time: 11 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KxNT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KxNT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png 424w, https://substackcdn.com/image/fetch/$s_!KxNT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png 848w, https://substackcdn.com/image/fetch/$s_!KxNT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png 1272w, https://substackcdn.com/image/fetch/$s_!KxNT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KxNT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png" width="552" height="309.6375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1280,&quot;resizeWidth&quot;:552,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KxNT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png 424w, https://substackcdn.com/image/fetch/$s_!KxNT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png 848w, https://substackcdn.com/image/fetch/$s_!KxNT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png 1272w, https://substackcdn.com/image/fetch/$s_!KxNT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd75c80f9-95b4-484c-b140-c7f8f1720bb1_1280x718.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>MiniMax releases M3, an open-weight model with 1M context and frontier coding scores powered by a <strong><a href="https://www.minimax.io/blog/minimax-m3">new sparse attention architecture called MSA</a></strong>. Tests include a 24-hour autonomous CUDA kernel run that lifted Hopper FP8 utilization from 7.6% to 71.3%.</p><p><strong>The signal:</strong> Long-horizon agentic coding is increasingly bottlenecked by attention architecture, not model size, and open-weight options are starting to close the gap with closed frontier models.</p><h3><strong>Microsoft&#8217;s MAI-Code-1-Flash: Trained Inside the Copilot Harness</strong></h3><p>Estimated read time: 3 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XFA1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XFA1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png 424w, https://substackcdn.com/image/fetch/$s_!XFA1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png 848w, https://substackcdn.com/image/fetch/$s_!XFA1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!XFA1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XFA1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png" width="536" height="323.95604395604397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:536,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A scatter plot compares coding models on pass rate vs. average token usage. MAI-Code-1-Flash (green) outperforms Claude Haiku 4.5 (orange) across benchmarks, with higher pass rates and lower token use in the highlighted &#8220;Ideal Zone.&#8221;.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A scatter plot compares coding models on pass rate vs. average token usage. MAI-Code-1-Flash (green) outperforms Claude Haiku 4.5 (orange) across benchmarks, with higher pass rates and lower token use in the highlighted &#8220;Ideal Zone.&#8221;." title="A scatter plot compares coding models on pass rate vs. average token usage. MAI-Code-1-Flash (green) outperforms Claude Haiku 4.5 (orange) across benchmarks, with higher pass rates and lower token use in the highlighted &#8220;Ideal Zone.&#8221;." srcset="https://substackcdn.com/image/fetch/$s_!XFA1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png 424w, https://substackcdn.com/image/fetch/$s_!XFA1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png 848w, https://substackcdn.com/image/fetch/$s_!XFA1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!XFA1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e4af252-d37c-4db1-b2a4-1603fba601ca_2144x1296.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Another approach to coding models, Microsoft&#8217;s MAI-Code-1-Flash was <strong><a href="https://microsoft.ai/news/introducingmai-code-1-flash/">trained directly inside GitHub Copilot&#8217;s production harness</a></strong> rather than tuned for benchmarks. Adaptive solution length control reportedly cuts token use by up to 60% on harder problems while outperforming Claude Haiku 4.5 across four SWE-Bench evaluations.</p><p><strong>Why this matters:</strong> Coding models trained inside the actual production harness tend to translate offline gains into real developer workflows more reliably than benchmark-optimized alternatives.</p><h3><strong>Gemma 4 12B Ships with Encoder-Free Multimodal Architecture</strong></h3><p>Estimated read time: 7 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mXH4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310358bd-617a-436d-9986-63601aedd609_3856x2256.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mXH4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310358bd-617a-436d-9986-63601aedd609_3856x2256.png 424w, https://substackcdn.com/image/fetch/$s_!mXH4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310358bd-617a-436d-9986-63601aedd609_3856x2256.png 848w, https://substackcdn.com/image/fetch/$s_!mXH4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310358bd-617a-436d-9986-63601aedd609_3856x2256.png 1272w, https://substackcdn.com/image/fetch/$s_!mXH4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310358bd-617a-436d-9986-63601aedd609_3856x2256.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mXH4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310358bd-617a-436d-9986-63601aedd609_3856x2256.png" width="513" height="300.18956043956047" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/310358bd-617a-436d-9986-63601aedd609_3856x2256.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:852,&quot;width&quot;:1456,&quot;resizeWidth&quot;:513,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;overview&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="overview" title="overview" srcset="https://substackcdn.com/image/fetch/$s_!mXH4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310358bd-617a-436d-9986-63601aedd609_3856x2256.png 424w, https://substackcdn.com/image/fetch/$s_!mXH4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310358bd-617a-436d-9986-63601aedd609_3856x2256.png 848w, https://substackcdn.com/image/fetch/$s_!mXH4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310358bd-617a-436d-9986-63601aedd609_3856x2256.png 1272w, https://substackcdn.com/image/fetch/$s_!mXH4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310358bd-617a-436d-9986-63601aedd609_3856x2256.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Shifting from coding to multimodal, Google releases Gemma 4 12B, a dense model with an <strong><a href="https://developers.googleblog.com/gemma-4-12b-the-developer-guide/">encoder-free architecture</a></strong> that feeds vision and audio straight into the LLM backbone. It runs on 16GB VRAM, supports native audio, and ships with macOS apps and a local OpenAI-compatible server.</p><p><strong>The opportunity:</strong> Developers can now run a single multimodal model locally that handles text, vision, and audio without juggling separate encoders or fine-tuning pipelines.</p><h3><strong>NVIDIA Nemotron 3 Ultra: Built for Long-Running Agents</strong></h3><p>Estimated read time: 9 min</p><p>Moving from models to orchestration, NVIDIA releases Nemotron 3 Ultra, a 550B-parameter MoE model designed for <strong><a href="https://developer.nvidia.com/blog/nvidia-nemotron-3-ultra-powers-faster-more-efficient-reasoning-for-long-running-agents/">frontier reasoning and orchestration in agentic systems</a></strong>. It claims 5x higher throughput than peers and up to 30% lower cost per agent task, shipping fully open under OpenMDW-1.1.</p><p><strong>The pattern:</strong> If you&#8217;re building multi-turn agents, pairing a frontier orchestrator with efficient execution models is becoming the dominant pattern, and Nemotron 3 Ultra is now a credible open option for the orchestrator role.</p><h3><strong>Claude Code Gets Dynamic Workflows: Hundreds of Parallel Subagents in One Session</strong></h3><p>Estimated read time: 5 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AByN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AByN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png 424w, https://substackcdn.com/image/fetch/$s_!AByN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png 848w, https://substackcdn.com/image/fetch/$s_!AByN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png 1272w, https://substackcdn.com/image/fetch/$s_!AByN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AByN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png" width="544" height="164.3956043956044" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:440,&quot;width&quot;:1456,&quot;resizeWidth&quot;:544,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AByN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png 424w, https://substackcdn.com/image/fetch/$s_!AByN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png 848w, https://substackcdn.com/image/fetch/$s_!AByN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png 1272w, https://substackcdn.com/image/fetch/$s_!AByN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b934a20-065e-465f-baf5-78feacb64be3_2048x619.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Taking orchestration further, Anthropic&#8217;s 4.8 release brings dynamic workflows to Claude Code, where Claude <strong><a href="https://claude.com/blog/introducing-dynamic-workflows-in-claude-code">writes orchestration scripts fanning work across hundreds of parallel subagents</a></strong> with adversarial verification. The lead example: Jarred Sumner&#8217;s port of Bun from Zig to Rust, 750,000 lines, eleven days.</p><p><strong>Key point:</strong> When a task is too big for a single agent pass, dynamic workflows let Claude plan, parallelize, and self-verify across hundreds of subagents, but expect significantly higher token usage.</p><h3><strong>SkillSpector: NVIDIA&#8217;s Security Scanner for AI Agent Skills</strong></h3><p>Estimated read time: 9 min</p><p>To keep all this safe, NVIDIA&#8217;s open-source SkillSpector vets AI agent skills for Claude Code, Codex CLI, and Gemini CLI, combining static analysis with optional LLM evaluation across <strong><a href="https://github.com/NVIDIA/SkillSpector">64 vulnerability patterns in 16 categories</a></strong>. It produces a 0-100 risk score and SARIF output for CI/CD.</p><p><strong>The principle:</strong> Treat third-party agent skills like any other untrusted dependency, and scan them before installation rather than granting implicit trust.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><p><em>The editorials trace where the human role is heading: from typing to describing, from writing code to directing it, then the market structure underneath, and a closing reminder to protect the thinking the agents can&#8217;t do for you.</em></p><h3><strong>The Speed of Prototyping in the Age of AI</strong></h3><p>Estimated read time: 7 min</p><p>Daryl Cecile reflects on a rough 4x speedup from AI agents, but argues the more important change is the <strong><a href="https://darylcecile.net/notes/speed-of-prototyping-age-of-ai">shift toward describing systems before building them</a></strong>, which sharpens delegation and expands what work he can realistically take on.</p><p><strong>What&#8217;s interesting:</strong> When agents handle the typing, the engineering skill that matters most is clearly describing what success looks like, so deliberately protect time for hands-on work to keep your instincts sharp.</p><h3><strong>Running an AI-Native Engineering Org: Lessons from the Claude Code Team</strong></h3><p>Estimated read time: 9 min</p><p>In more news on how the work itself is changing, Anthropic&#8217;s Claude Code team lead shares how agentic coding reshaped their workflows, from six-month roadmaps to <strong><a href="https://claude.com/blog/running-an-ai-native-engineering-org">just-in-time planning</a></strong>. The piece covers shifts in code review, context gathering, and team makeup as bottlenecks move from writing code to verifying it.</p><p><strong>Try this:</strong> Pick your noisiest engineering workflow and ask whether it still serves its purpose, or whether it can be automated or dropped entirely.</p><h3><strong>When AI Starts Building AI: Inside Anthropic&#8217;s Self-Improvement Curve</strong></h3><p>Estimated read time: 14 min</p><p>Following our look at why Claude is not your architect[2] from last week, Anthropic shares internal data: Claude authors 80%+ of merged code, and engineers ship 8x more per quarter than in 2024. The piece traces the path toward <strong><a href="https://www.anthropic.com/institute/recursive-self-improvement">recursive self-improvement</a></strong>, while noting Claude still struggles to choose which problems matter.</p><p><strong>The shift:</strong> The role of a senior engineer is moving from writing code to directing, reviewing, and choosing which problems are worth solving at all.</p><p>[2] <a href="https://writing.alteredcraft.com/i/200055255/claude-is-not-your-architect">Claude Is Not Your Architect</a></p><h3><strong>Open and Closed Models Are on Different Exponentials</strong></h3><p>Estimated read time: 8 min</p><p>Building on our coverage of Max Trivedi&#8217;s case that open models cap frontier pricing[3] from last week, Nathan Lambert argues <strong><a href="https://www.interconnects.ai/p/open-and-closed-models-are-on-different">open and closed AI models run on different economic exponentials</a></strong>. Closed labs capture premium margins through integrated coding agents, while open models diffuse across enterprises at commodity pricing. Both ecosystems grow, but their timelines look nothing alike.</p><p><strong>What this means:</strong> If your work depends on coding agents, expect to keep paying premium prices for frontier closed models while open models quietly win the long tail of enterprise deployments.</p><p>[3] <a href="https://writing.alteredcraft.com/i/200055255/when-outsourcing-local-ai-undercuts-frontier-labs">When Outsourcing + Local AI Undercuts Frontier Labs</a></p><h3><strong>Anthropic Files Confidential S-1 for Proposed IPO</strong></h3><p>Estimated read time: 1 min</p><p>On the business side, Anthropic has <strong><a href="https://www.anthropic.com/news/confidential-draft-s1-sec">confidentially submitted a draft S-1 to the SEC</a></strong>, opening the option to go public pending review. The filing follows a $65B Series H at a $965B post-money valuation, signaling a potential shift toward public markets.</p><p><strong>Worth watching:</strong> If Anthropic goes public, the tools developers depend on start answering to quarterly earnings cycles, so watch how that shapes Claude&#8217;s roadmap and pricing.</p><h3><strong>The AI Treadmill: When Staying Current Becomes Its Own Trap</strong></h3><p>Estimated read time: 8 min</p><p>Closing on the human cost, Deb Liu reflects on the quiet panic beneath San Francisco&#8217;s AI enthusiasm, where even experts feel perpetually behind. She argues <strong><a href="https://debliu.substack.com/p/the-ai-treadmill">efficiency gains often just refill themselves with more motion</a></strong>, and protecting space to think matters more than chasing every tool.</p><p><strong>Key point:</strong> Going deep on one tool that changes how you work beats sampling ten you&#8217;ll abandon, and the pauses you protect are where your best thinking happens.</p><div><hr></div><p><em>That&#8217;s the week. The throughline: as agents close the inner loop of building and verifying, your leverage moves to the outer one, the guardrails you set, the fleets you direct, and the problems you choose to point them at. See you next Monday.</em></p>]]></content:encoded></item><item><title><![CDATA[The Fallacies of AI-Assisted Programming]]></title><description><![CDATA[Eight assumptions we are silently making about the new abstraction layer, and the playbook that priced them once before]]></description><link>https://writing.alteredcraft.com/p/the-fallacies-of-ai-assisted-programming</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/the-fallacies-of-ai-assisted-programming</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Wed, 03 Jun 2026 12:26:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c7370a5a-a524-4824-97fe-96ea4d001749_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In April 2026, an autonomous coding agent hit a credential mismatch, decided that deleting the database would clear it, and wiped production in nine seconds. The backups went with it. They lived in the same volume the agent deleted. The recovery it chose was the disaster.</p><p>The failure was new. The shape of it was not.</p><p>In 1994, a researcher at Sun named Peter Deutsch wrote down eight assumptions that distributed-systems engineers were silently making. The network is reliable. Latency is zero. Bandwidth is infinite. The network is secure. Topology doesn&#8217;t change. There is one administrator. Transport cost is zero. The network is homogeneous. The list was short. The list was specific. And the list was uncomfortable, because many engineers reading it had violated several of them at any given time.</p><p>Three decades later, those eight sentences are still load-bearing in every distributed-systems postmortem worth reading. APNIC ran a <a href="https://blog.apnic.net/2025/12/08/21-years-and-counting-of-eight-fallacies-of-distributed-computing/">21-years-later retrospective</a> in December 2025 confirming what every on-call engineer already knew. The fallacies did not get solved. They got priced.</p><p>We are doing it again, at a higher abstraction layer.</p><h2><strong>The trade distributed systems made, twenty years ago</strong></h2><p>Distributed systems made a trade twenty years ago. More defects, faster recovery, net win. Once the network became the substrate, you stopped trying to prevent every failure and started engineering for mean time to recovery instead of mean time between failures. AI-assisted programming is making the same trade, a layer up, by handing authorship to something non-deterministic. Humans were never deterministic either, but the new author is jagged to a higher degree: it fills gaps without flagging them, lacks the common sense to seek out what it hasn&#8217;t been shown, and (where it controls the workflow) substitutes reasoning for the static orchestration you used to write yourself. The fallacies that fall out of that (non-determinism at the output, verification at the review, drift at the model, blast radius at the agent) are the same shape as Deutsch&#8217;s network fallacies, and they yield to the same playbook. Name them. Price them. Engineer the recovery. That is the move that earned the SRE discipline twenty years of leverage. It is the move that earns AI-assisted programming the same kind of leverage, on a faster clock.</p><div class="pullquote"><p>The fallacies did not get solved. They got priced.</p></div><p>These eight are not a one-to-one re-map of Deutsch&#8217;s list. They are the same <em>shape</em>: assumptions that were safe in the old model and quietly false in the new one. I have sequenced them in the order most engineering teams hit them in practice, not in Deutsch&#8217;s canonical order. The thread that ties them together is the <a href="https://metaphorex.org/entries/fallacies-of-distributed-computing/">Metaphorex framing</a> that holds the whole Deutsch literature up: <em>&#8220;each fallacy names a specific locality assumption that engineers unconsciously import from single-machine programming.&#8221;</em> That is the move worth borrowing. The assumptions we are importing all come from a world where the author was a single, minimally jagged, accountable human whose knowledge had edges it knew about. The new author breaks every part of that.</p><h2><strong>The model output can be made deterministic</strong></h2><p>Setting <code>temperature=0</code> does not make a large language model deterministic. It is among the most common misconceptions in production LLM engineering. <a href="https://tianpan.co/blog/2026-04-10-non-determinism-tax-production-llm">Tianpan documents it at scale</a> on a Qwen3-235B setup: same prompt, same model, temperature=0, one thousand runs, <strong>80 distinct completions</strong>. The mechanisms sit below the application layer, in how the inference hardware schedules and batches the math. No model change, no prompt change, just parallel hardware doing what it does at scale.</p><p>The labs are working on it. Microsoft Research&#8217;s <a href="https://www.microsoft.com/en-us/research/publication/llm-42-enabling-determinism-in-llm-inference-with-verified-speculation/">LLM-42</a> is a serious attempt at scheduling-based determinism, so this is not unsolvable in principle. It is unsolved in practice. In every production system running today, &#8220;same input, same output&#8221; is silently violated, and the plans built on top of that assumption are spending a budget no one costed.</p><h2><strong>The cost of code has gone to zero</strong></h2><p>When agents were building brochure sites, the cost felt that way. Now that real work is in scope, two things shifted. Agents burn more tokens just on the happy path through production complexity. They also chase far more dead ends before they get there.</p><p>The free-lunch framing collapsed in early 2026. GitHub Copilot moved to AI Credit billing. OpenAI shifted Codex to token pricing. Cursor and Windsurf raised their Pro tiers. The vendor framing of &#8220;unlimited AI coding&#8221; got quietly retired, and <a href="https://leaddev.com/ai/your-ai-coding-budget-just-got-a-lot-more-complicated">LeadDev called it</a>.</p><p>The numbers that land are the runaway ones. A single Cursor user <a href="https://leanopstech.com/blog/agentic-ai-cost-runaway-token-budget-2026/">burned $4,200</a> in API fees over a weekend during an autonomous refactor. Two LangChain agents in an infinite conversation for eleven days landed a $47,000 bill. These read as edge cases until you notice they sit on the tail of a distribution every team is now exposed to.</p><p>The cost-runaway mechanism is structural. Agents re-send accumulated context on every step. A five-step loop costs 3.2&#215; a single chatbot call. A fifty-step loop, 30&#215;. A two-hundred-step debugging session, 100&#215;. Average agentic developer spend in 2026 is now $400&#8211;$1,500 per month. Bryan Catanzaro, Nvidia&#8217;s VP of applied deep learning, said the quiet part out loud: <em>&#8220;for my team, the cost of compute is far beyond the costs of the employees.&#8221;</em> Anthropic, for its part, blocked Claude Pro/Max subscribers from running third-party agent frameworks because flat-rate pricing did not survive contact with autonomous loops.</p><p>Per-token cost has fallen 280&#215; in two years, which is the number vendors quote. The number they do not quote is that the recent move at the frontier is <em>up</em>: <a href="https://www.signalbloom.ai/posts/outsourcing-plus-localai-will-soon-become-more-economical-vs-frontier-labs/">SignalBloom&#8217;s pricing analysis</a> tracks GPT-5.5 roughly tripling over GPT-5, and Opus 4.7 consuming 32&#8211;47% more tokens per task than its predecessor. Enterprise AI spend rose 320% over the same two years, because usage exploded faster than the headline price fell, and inference is now 85% of enterprise AI budget, up from ~40% in 2023. The economics did not get better. They got more elastic, and the elasticity went the wrong way. The token bill is one face of it. The reviewer&#8217;s calendar is the other, which is the next fallacy.</p><h2><strong>Verification keeps pace</strong></h2><div class="paywall-jump" data-component-name="PaywallToDOM"></div><p>This is the fallacy that turned vendor productivity claims into a math problem. The silent assumption behind every productivity number is that verification scales with generation. It does not. AI generates code in seconds. Engineers still review it at the same pace they always have. <a href="https://www.faros.ai/blog/ai-code-quality-senior-engineer-review-burden">Faros telemetry across thousands of teams</a> shows the asymmetry, and the shape of it is simple: the PRs got bigger and buggier while the clock to review them stretched. Under high AI adoption, review times are up nearly 200% and bugs per PR are up 54%, on PRs that are themselves larger and touch more files. A quarter of those PRs now draw a review pass from an autonomous AI agent, a slice that barely registered in that same telemetry a year earlier, and the senior engineers above them are absorbing the verification tax in their calendars. If you are that senior engineer, you already know the texture of it: a review queue that does not drain, and afternoons spent vouching for code you did not write and do not fully trust.</p><div class="pullquote"><p>The author got faster. The check on the author did not.</p></div><p>AI-generated code is harder to review than bad human code because it fails in ways that look like competence. Jake Redmond&#8217;s framing is the cleanest version of this I have read in 2026:</p><blockquote><p>AI agents do not pause when requirements are vague. They do not challenge undefined behavior. They fill the gap and compile the guess.</p></blockquote><p>That gap-filling is the work that used to happen out loud, between humans, before code got written. Half the quiet value of a standup was someone asking &#8220;wait, what happens when that field is empty&#8221; before there was any code to be wrong about. AI-assisted programming moves that conversation to silent and post-hoc, onto the reviewer. The author got faster. The check on the author did not.</p><p><a href="https://hackernoon.com/engineering-teams-are-struggling-to-verify-ai-generated-code-at-scale">SonarSource&#8217;s 2026 survey</a> puts a number on the gap. 72% of developers use AI daily. 96% don&#8217;t fully trust the output. Only 48% consistently verify. That 48-point spread between &#8220;don&#8217;t trust&#8221; and &#8220;verify&#8221; is the structural debt AI-assisted programming is accumulating in 2026. METR&#8217;s 19% real slowdown against 20% perceived speedup is what that gap looks like from the inside, and it is the cleanest available &#8220;perception gap&#8221; data.</p><p>The temptation is to skip verification by asking the model to handle it. Tell it to make the code secure. Tell it to follow OWASP. Tell it to check the edge cases. That is the move the next fallacy is about. It does not work.</p><h2><strong>Telling the model to &#8216;make it secure&#8217; works</strong></h2><p>The silent move is to add &#8220;and make it secure&#8221; or &#8220;follow OWASP&#8221; to the prompt and feel covered. The empirical result is that the generic instruction does not work.</p><p><a href="https://www.veracode.com/wp-content/uploads/2025_GenAI_Code_Security_Report_Final.pdf">Veracode&#8217;s 2025 GenAI Code Security Report</a> ran more than 100 LLMs across 80 coding tasks. <strong>45% of AI-generated code samples failed security tests against OWASP Top 10.</strong> XSS tasks were insecure in 86% of cases. Java came in worst at 72% failure. The result that catches teams off guard is that the rate is <em>flat</em> across model generations. Newer and bigger models do not produce meaningfully more secure code.</p><p>Explicit security prompting closes very little of that gap. An <a href="https://arxiv.org/html/2605.24298">empirical evaluation across five LLMs and four languages</a> found that security-focused prompting strategies, including weaknesses-aware chain-of-thought, did not statistically reduce vulnerability frequency or density. The prompts shifted <em>which</em> CWEs showed up. They did not reduce the total.</p><p>The reason is not that the model is blind to your context. It is that a generic instruction carries none. &#8220;Make it secure&#8221; tells the model to pattern-match on what &#8220;secure&#8221; tends to look like in its training data, and it will. Give it the actual artifact instead, your threat model, your data classification, your authentication boundary, your deployment context, and you have handed it something specific to defend. The failure mode is the stylistic cue standing in for the artifact. &#8220;Secure&#8221; as a bare adjective collapses a contextual judgment into a vibe, and produces code that <em>looks</em> defended without defending the right things.</p><p>The labs have noticed the same gap, and they are loud about it. Anthropic&#8217;s <a href="https://techcrunch.com/2026/04/07/anthropic-mythos-ai-model-preview-security/">Project Glasswing</a> put a security-tuned model, Mythos, in front of partner orgs to scan codebases, claiming thousands of zero-days surfaced. OpenAI&#8217;s <a href="https://www.marktechpost.com/2026/05/11/openai-introduces-daybreak-a-cybersecurity-initiative-that-puts-codex-security-at-the-center-of-vulnerability-detection-and-patch-validation/">Daybreak</a> goes at the artifact directly: it ingests a repository, builds a codebase-specific threat model, and maps attack paths against it. The direction is real. The claims are running ahead of the results. When Mythos was <a href="https://daniel.haxx.se/blog/2026/05/11/mythos-finds-a-curl-vulnerability/">run against curl</a>, five &#8220;confirmed vulnerabilities&#8221; triaged down to one low-severity bug, the rest already-documented behavior or a plain bug, and maintainer Daniel Stenberg called the model &#8220;an amazingly successful marketing stunt.&#8221; Note too what these tools do: they <em>find</em> flaws and <em>model</em> threats. None of it is evidence that generation got more secure. That 45% has not moved while all of this shipped.</p><p>The perception gap is the part that is hardest to swallow. The <a href="https://arxiv.org/html/2211.03622">Stanford study</a> by Perry et al. ran the cleanest experiment on this question. Participants with access to an AI coding assistant wrote significantly less secure code than those without, <em>and</em> were more likely to believe their code was secure. The two findings compound. Confidence rose while ground truth fell.</p><p>So the threat model can be written down, and the tooling is starting to help you write it. What does not transfer is the judgment underneath it. Deciding what could actually go wrong in this application, against this specific surface, is still the engineer&#8217;s call. The model is a strong collaborator on known-pattern defenses, and now on surfacing candidates to review. It is not, in its current form, a substitute for asking the question in the first place.</p><h2><strong>The context window is endless</strong></h2><p>The long-context arms race did not win. <a href="https://zencoder.ai/newsletter/the-context-engine-ai-coding-agents">Liu et al.&#8217;s &#8220;Lost in the Middle&#8221;</a> finding from ICML 2024 (25&#8211;40% recall drop on facts buried mid-prompt) narrowed in frontier 2026 models but did not close. Chroma&#8217;s 2025 study of <a href="https://zylos.ai/research/2026-03-31-context-window-management-session-lifecycle-long-running-agents">18 frontier models</a> shows 30%+ accuracy drops for information in the middle of long conversations. Quality starts degrading at <a href="https://tianpan.co/blog/2026-04-19-context-window-cliff-long-conversation-strategies">60&#8211;70% of the rated window</a>, not at 100%. The rated number is not the effective number.</p><p>The tooling has already internalized this. Claude Code&#8217;s own context management advises compression in the 100&#8211;200k token range, well shy of the 1M rated window. The vendor knows the cliff is there.</p><p>The concrete result that engineers should sit with: one team <a href="https://zencoder.ai/newsletter/the-context-engine-ai-coding-agents">cut their window from 2M to 64k tokens</a>, added a repo graph, and bug-fix accuracy went from 71% to 84%, with 5&#215; lower cost. Bigger context stopped helping. Memory architecture is the new compiler.</p><p>The fallacy of equating &#8220;the window&#8221; with &#8220;the context&#8221; is the one practitioners have figured out fastest. The 2026 frontier is no longer the token count. It is the engineering of what gets selected into the window, how stale context gets evicted, and where persistent state lives between sessions. That work already has a name. It got one in mid-2025, when Andrej Karpathy and others started calling it <a href="https://simonwillison.net/2025/Jun/27/context-engineering/">context engineering</a>, &#8220;the delicate art and science of filling the context window with just the right information for the next step.&#8221; This is the one fallacy that has already been named and turned into a visible discipline. The other seven are not there yet.</p><h2><strong>All models are interchangeable</strong></h2><p>Swap one frontier model for another and the behavior changes underneath you, even when the leaderboard scores sit within a few points. The differences are tendencies, not rankings. GPT-5.5 emits ~72% fewer output tokens than Opus 4.7 on identical agentic loops in <a href="https://www.danilchenko.dev/posts/gpt-claude-gemini-coding/">Mindstudio testing</a>, a 72% efficiency gap on the same workload that compounds across every iteration of a loop. Tool error rates differ by model, and even across versions of one family. Claude tends to be strongest on long-sequence attention stability, GPT on dense local reasoning, Gemini on retrieval-augmented workflows. None of that makes them specialists. They are general-purpose models carrying quirks consistent enough to plan around.</p><p>The economics are the other half, and they break the reflex to always reach for the most capable model. On a blended agentic workload, heavy on input and light on output, <a href="https://www.signalbloom.ai/posts/outsourcing-plus-localai-will-soon-become-more-economical-vs-frontier-labs/">SignalBloom&#8217;s cost analysis</a> puts DeepSeek around $0.094 per million tokens against roughly $2.80 for OpenAI and Anthropic. That is close to a 30&#215; spread for work that does not always need a frontier model to be done well. &#8220;Always use the best model&#8221; is a fine default until it meets a budget, and at scale it always meets a budget.</p><p>Model choice is now a routing decision, not a vendor decision. As Danilchenko frames it:</p><blockquote><p>Pre-April, &#8220;use the best model&#8221; meant Claude. Post-April, it means &#8220;decide whether you&#8217;re paying for raw quality, agentic efficiency, or context-window scale,&#8221; which gives three different answers.</p></blockquote><p>Teams that treat models as drop-in replacements for each other are the ones who get surprised when a sub-agent that worked beautifully on Opus produces tool-call cascades on Gemini.</p><p>The mitigation lever that has emerged is evals. Build a test set that exercises the agentic loops your application actually depends on, and re-run it whenever you change models, providers, or pricing tier. Evals let you see the delta the leaderboard hides. They are also expensive to build and maintain, in the same shape we recognize from the E2E Selenium suites we wrangled in the 2010s, and the same trade-off applies. The teams getting model choice right are the ones treating eval infrastructure as load-bearing.</p><h2><strong>The model is stable</strong></h2><p>In April 2026, Anthropic removed the ability to pin specific Claude model versions. Developers on <code>claude-sonnet-4-5</code> were <a href="https://www.aimadetools.com/blog/ai-model-version-changes-production/">silently upgraded</a> to <code>claude-sonnet-4-6</code>, and downstream apps broke. The framing from that writeup is the one to keep:</p><blockquote><p>AI models are infrastructure, but they don&#8217;t have the versioning guarantees we expect from databases, operating systems, or even npm packages.</p></blockquote><p>The churn is not a one-off. Anthropic deprecated <code>claude-opus-4-20250514</code> on April 14, 2026 and retired it 62 days later, and the <code>claude-opus-4-0</code> alias resolves to the retiring snapshot, <a href="https://tianpan.co/blog/2026-04-27-model-deprecation-treadmill-pre-sunset-discipline">so even teams that grepped for the date string</a> missed it. OpenAI retired 33 models in a single January 2024 wave. Every quarter, at least one model your stack depends on enters a retirement window, on a calendar that is not synchronized to your roadmap.</p><p>The part that catches teams off guard is that your tests will not warn you. Mocked SDK tests <a href="https://dev.to/flarecanary/claude-opus-4-and-sonnet-4-retire-june-15-your-claude-opus-4-0-alias-is-about-to-start-failing-ej5">stay green forever</a>, including after the model retires in production. And the version label is not the only thing that moves: Anthropic&#8217;s <a href="https://dev.to/vainamoinen/why-claude-code-sessions-diverge-a-mechanism-catalog-4j63">April 23, 2026 postmortem</a> confirms that &#8220;same model ID&#8221; does not mean &#8220;same code path,&#8221; so two engineers running the same model and prompt in the same week can land on different scaffolds and never know why. A deprecation and a silent traffic-slicing experiment produce the same symptom: code that worked yesterday behaves differently today, and your local environment cannot reproduce it.</p><p>So the real question is what to build on top of a substrate that keeps moving. Rich Sutton&#8217;s <a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html">&#8220;Bitter Lesson&#8221;</a> answers it from the research side: systems that overly constrain the model with hand-written orchestration get out-paced by the next, more capable model that no longer needs the scaffolding. The inverse has aged better in 2026: keep the scaffolding light, put the model in a loop with good tools, and let it do the reasoning you used to encode as orchestration. When the model changes underneath you, and it will, a light system improves with it instead of fighting the constraints you wrote. That is the recovery move for this fallacy: stop pinning behavior you cannot pin, and design for the change instead.</p><h2><strong>The humans are the only admins</strong></h2><p>This is the fallacy where the parallel to Deutsch&#8217;s original requires more work. His version was about multiple admin teams operating subnets with conflicting policies. That specific structure does not transpose cleanly. The spirit transposes sharply, though: an autonomous coding agent is itself an unaccountable administrator in your application environments, with admin-like authority and no chain of command.</p><p>PocketOS (April 25, 2026) is the canonical incident. The agent (Cursor running Claude Opus 4.6) encountered a credential mismatch, searched through unrelated files, found an over-scoped Railway token, and issued <code>volumeDelete</code>. <a href="https://www.rogue.security/blog/cursor-9-seconds-to-irreversible">Nine seconds</a>. Production gone. All volume-level backups gone, because the backups lived inside the same volume. A thirty-hour outage. The agent then produced a written confession listing the rules it had violated.</p><p>Noma Security has since named the broader pattern the <a href="https://noma.security/blog/the-silent-spread-destructive-autonomous-agents/">&#8220;Destructive Loop&#8221;</a>:</p><blockquote><p>An autonomous agent can interpret a failed command as a prompt to fix the environment by deleting it.</p></blockquote><p>The Grigorev Terraform-destroy incident is the same shape. Agent treated &#8220;unacceptable state&#8221; as a mandate for destruction. Deleted prod. Justified the action in writing afterward.</p><p>The Rogue Security framing of PocketOS is the sentence to take from this whole piece:</p><blockquote><p>Agent safety is not a prompt problem. It is a control plane problem: permissions, confirmations, circuit breakers, and containment.</p></blockquote><p>Two blast radii overlapped at PocketOS. Credential blast radius (the token had full Railway authority). Backup blast radius (backups were stored inside the same volume). Both have to be tight. Both were loose. Hand that over-scoped token to a human and the loose permissions are usually survivable, because a person hesitates before typing <code>volumeDelete</code> against production. The agent did not trip into the failure and it did not hesitate. It reasoned that deletion resolved the ambiguity and executed in nine seconds, pairing human-grade inference with none of the human caution that has quietly saved every over-privileged engineer before it.</p><p>Teams typically do not discover this one through routine practice. They discover it through a postmortem, their own or one in their feed that does not feel safely distant.</p><h2><strong>Beyond the original eight</strong></h2><p>Practitioners are already extending the list, and the strongest extension is Deutsch&#8217;s own. In a 2021 interview he added a <a href="https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing">ninth fallacy</a>: <em>&#8220;the party you are communicating with is trustworthy.&#8221;</em> In an AI-coding context, this one is arguably the strongest parallel of all. The agent reads untrusted text (a PR title, an issue body, a scraped page, a package manifest) as if it were trusted instruction. The 2026 prompt-injection and supply-chain attack catalog is the same architectural failure repeating with increasing scope. That story has its own shape and gets its own treatment elsewhere, not a section here.</p><p>Richards and Ford&#8217;s 2020 additions to Deutsch&#8217;s list also fit. <em>&#8220;Versioning is simple&#8221;</em> maps to model deprecation churn. <em>&#8220;Compensating updates always work&#8221;</em> maps to agents that interpret their own mistakes as instructions to delete. <em>&#8220;Observability is optional&#8221;</em> maps to &#8220;we can debug agent behavior after the fact,&#8221; which is partly right at best, since reasoning traces are non-deterministic, tools log differently per provider, and there is no consensus on what to log. None of these need their own section. They all sit on top of the same locality assumption: that we can reason about the new layer using the vocabulary of the old one.</p><h2><strong>Two practitioner voices, and where this piece sits between them</strong></h2><p>George Hotz&#8217;s <em><a href="https://geohot.github.io/blog/jekyll/update/2026/05/24/the-eternal-sloptember.html">The Eternal Sloptember</a></em>, published May 24, 2026, is the sharp end of the dissent spectrum:</p><blockquote><p>Agents cannot program, and it&#8217;s taking longer and longer to realize that they can&#8217;t. They are a highly sophisticated statistical model designed to mimic the distribution of programming. The output is broken, but in a way that&#8217;s getting harder and harder to detect.</p></blockquote><p>Geohot makes good points about detection cost. My view differs on the framing. Calling these tools incapable misses the case where they have measurably expanded the scope of work a careful practitioner can take on. Simon Willison&#8217;s <a href="https://simonw.substack.com/p/vibe-coding-and-agentic-engineering">middle ground</a> is closer to where I sit. Scope of work expanded significantly because of these tools, <em>and</em> &#8220;I&#8217;m still leaning on my 25 years of experience as a software engineer.&#8221; The naming work this piece is doing sits between the two. The fallacies are real. The capability is also real. The honest move is to price both, the way Deutsch did for the network in 1994.</p><p>The fallacies do not yield to a better prompt. They yield to engineering, and most of the moves are SRE primitives wearing new clothes. Scope an agent&#8217;s credentials to a blast radius you can afford to lose, and keep the backups out of the volume it can reach. Put verification on the plan as a line item with a real cost, rather than letting it disappear into a senior engineer&#8217;s afternoon. Treat model choice as a routing decision, and stand up the evals that show you the delta when the substrate moves underneath you. None of that is novel. It is the same discipline distributed systems already learned, applied to the new higher abstraction layer.</p><p>The output is not deterministic. The cost of code is not zero. Verification does not keep pace. &#8220;Make it secure&#8221; does not work. The context window is not endless. Models are not interchangeable. The model is not stable. I am not the only admin.</p><p>Name them. Price them. Engineer the recovery.</p><h2><strong>Sources</strong></h2><p>Load-bearing citations only, in the order they appear in the piece.</p><ul><li><p><a href="https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing">Fallacies of Distributed Computing &#8212; Wikipedia</a> &#8212; canonical reference for Deutsch&#8217;s 8 and the later 9th.</p></li><li><p><a href="https://blog.apnic.net/2025/12/08/21-years-and-counting-of-eight-fallacies-of-distributed-computing/">21 years and counting of &#8216;eight fallacies of distributed computing&#8217; &#8212; APNIC</a> &#8212; the 2025 retrospective that frames the opening.</p></li><li><p><a href="https://metaphorex.org/entries/fallacies-of-distributed-computing/">Fallacies of Distributed Computing &#8212; Metaphorex</a> &#8212; the &#8220;locality assumption&#8221; structural framing the whole piece borrows.</p></li><li><p><a href="https://tianpan.co/blog/2026-04-10-non-determinism-tax-production-llm">The Non-Determinism Tax &#8212; Tianpan</a> &#8212; the 80-completions-in-1,000-runs empirical claim.</p></li><li><p><a href="https://www.microsoft.com/en-us/research/publication/llm-42-enabling-determinism-in-llm-inference-with-verified-speculation/">LLM-42: Enabling Determinism in LLM Inference &#8212; Microsoft Research</a> &#8212; the labs are working on this.</p></li><li><p><a href="https://leaddev.com/ai/your-ai-coding-budget-just-got-a-lot-more-complicated">Your AI-coding budget just got a lot more complicated &#8212; LeadDev</a> &#8212; the end of the free lunch.</p></li><li><p><a href="https://leanopstech.com/blog/agentic-ai-cost-runaway-token-budget-2026/">AI Agents Burn 50x More Tokens &#8212; LeanOps</a> &#8212; the cost-runaway mechanism and the $4,200-weekend / $47,000-bill runaways.</p></li><li><p><a href="https://www.signalbloom.ai/posts/outsourcing-plus-localai-will-soon-become-more-economical-vs-frontier-labs/">Outsourcing + LocalAI will soon become more economical vs frontier labs &#8212; SignalBloom</a> &#8212; frontier prices rising (GPT-5.5 ~3&#215;, Opus token consumption +32&#8211;47%) and the ~30&#215; DeepSeek blended-cost gap.</p></li><li><p><a href="https://www.faros.ai/blog/ai-code-quality-senior-engineer-review-burden">AI Code Quality: The Hidden Cost &#8212; Faros.ai</a> &#8212; Jake Redmond quote and verification-tax telemetry.</p></li><li><p><a href="https://hackernoon.com/engineering-teams-are-struggling-to-verify-ai-generated-code-at-scale">Engineering Teams Are Struggling to Verify AI-Generated Code &#8212; HackerNoon</a> &#8212; SonarSource 2026 numbers.</p></li><li><p><a href="https://www.veracode.com/wp-content/uploads/2025_GenAI_Code_Security_Report_Final.pdf">Veracode 2025 GenAI Code Security Report</a> &#8212; the 45%-fail-OWASP-Top-10 headline and flat-across-generations finding.</p></li><li><p><a href="https://arxiv.org/html/2605.24298">An Empirical Evaluation of LLM-Generated Code Security Across Prompting Methods (arXiv 2605.24298)</a> &#8212; explicit security prompting did not statistically reduce vulnerability frequency.</p></li><li><p><a href="https://techcrunch.com/2026/04/07/anthropic-mythos-ai-model-preview-security/">Anthropic debuts Mythos in Project Glasswing &#8212; TechCrunch</a> &#8212; the security-tuned model and its zero-day-scanning claims.</p></li><li><p><a href="https://www.marktechpost.com/2026/05/11/openai-introduces-daybreak-a-cybersecurity-initiative-that-puts-codex-security-at-the-center-of-vulnerability-detection-and-patch-validation/">OpenAI introduces Daybreak &#8212; MarkTechPost</a> &#8212; Codex Security building codebase-specific threat models.</p></li><li><p><a href="https://daniel.haxx.se/blog/2026/05/11/mythos-finds-a-curl-vulnerability/">Mythos finds a curl vulnerability &#8212; Daniel Stenberg</a> &#8212; five claimed vulnerabilities triaged to one; the &#8220;marketing stunt&#8221; verdict.</p></li><li><p><a href="https://arxiv.org/html/2211.03622">Do Users Write More Insecure Code with AI Assistants? &#8212; Perry et al., Stanford</a> &#8212; the perception-gap study (less secure code, higher confidence it was secure).</p></li><li><p><a href="https://zencoder.ai/newsletter/the-context-engine-ai-coding-agents">Bigger Context Windows Stopped Helping &#8212; Zencoder</a> &#8212; 2M &#8594; 64k + repo graph result and &#8220;Lost in the Middle&#8221; framing.</p></li><li><p><a href="https://zylos.ai/research/2026-03-31-context-window-management-session-lifecycle-long-running-agents">Context Window Management &#8212; Zylos</a> &#8212; Chroma 18-model study.</p></li><li><p><a href="https://tianpan.co/blog/2026-04-19-context-window-cliff-long-conversation-strategies">The Context Window Cliff &#8212; Tianpan</a> &#8212; the 60&#8211;70% degradation threshold.</p></li><li><p><a href="https://simonwillison.net/2025/Jun/27/context-engineering/">Context engineering &#8212; Simon Willison</a> &#8212; the term and Karpathy&#8217;s &#8220;filling the context window&#8221; definition.</p></li><li><p><a href="https://www.danilchenko.dev/posts/gpt-claude-gemini-coding/">GPT-5.4 vs Claude Opus 4.7 vs Gemini 3.1 Pro &#8212; Danilchenko</a> &#8212; output-token efficiency gap and the &#8220;routing decision&#8221; framing.</p></li><li><p><a href="https://www.aimadetools.com/blog/ai-model-version-changes-production/">How to Handle AI Model Version Changes &#8212; AIMadeTools</a> &#8212; the April 2026 silent-upgrade incident.</p></li><li><p><a href="https://tianpan.co/blog/2026-04-27-model-deprecation-treadmill-pre-sunset-discipline">The Model Deprecation Treadmill &#8212; Tianpan</a> &#8212; deprecation cadence and alias resolution.</p></li><li><p><a href="https://dev.to/flarecanary/claude-opus-4-and-sonnet-4-retire-june-15-your-claude-opus-4-0-alias-is-about-to-start-failing-ej5">Claude Opus 4 and Sonnet 4 retire June 15 &#8212; DEV</a> &#8212; mocked-SDK tests stay green after retirement.</p></li><li><p><a href="https://dev.to/vainamoinen/why-claude-code-sessions-diverge-a-mechanism-catalog-4j63">Why Claude Code Sessions Diverge &#8212; DEV</a> &#8212; the Anthropic April 23 postmortem: &#8220;same model ID&#8221; is not &#8220;same code path.&#8221;</p></li><li><p><a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html">The Bitter Lesson &#8212; Rich Sutton</a> &#8212; the keep-the-scaffolding-light recovery argument.</p></li><li><p><a href="https://www.rogue.security/blog/cursor-9-seconds-to-irreversible">9 Seconds to Irreversible: The Cursor Incident &#8212; Rogue Security</a> &#8212; PocketOS postmortem and the control-plane framing.</p></li><li><p><a href="https://noma.security/blog/the-silent-spread-destructive-autonomous-agents/">The Silent Spread: Destructive Autonomous Agents &#8212; Noma Security</a> &#8212; the &#8220;Destructive Loop&#8221; pattern and the Grigorev Terraform-destroy incident.</p></li><li><p><a href="https://tianpan.co/blog/2026-05-05-agent-blast-radius-bounding-worst-case-impact-production">Agent Blast Radius &#8212; Tianpan</a> &#8212; the blast-radius / reasoning-driven-escalation framing behind the agent section (concept used, not inline-linked).</p></li><li><p><a href="https://geohot.github.io/blog/jekyll/update/2026/05/24/the-eternal-sloptember.html">The Eternal Sloptember &#8212; geohot</a> &#8212; the sharp dissent anchor.</p></li><li><p><a href="https://simonw.substack.com/p/vibe-coding-and-agentic-engineering">Vibe coding and agentic engineering are getting closer than I&#8217;d like &#8212; Simon Willison</a> &#8212; responsible-use anchor in the counter-voice paragraph.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Weekly Review: The Cost of Capable]]></title><description><![CDATA[What changes once coding agents reliably work: the economics of capability, the ceiling open models set, and the judgment that stays yours]]></description><link>https://writing.alteredcraft.com/p/weekly-review-the-cost-of-capable</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-the-cost-of-capable</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 01 Jun 2026 12:07:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/aaed6616-2d10-4d6e-9d2e-9ebaca305c82_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>Welcome to Altered Craft&#8217;s weekly AI review for developers, and thanks for spending part of your Monday here. Last week we marked the capability threshold; this week the questions turn economic. Simon Willison calls April 2026 the moment coding agents found product-market fit, even as open and specialized models put a ceiling under frontier pricing. The tutorials and tools cover building, securing, and harnessing agents, while the editorials weigh what capability now costs and what judgment stays yours.</em></p></blockquote><div><hr></div><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><p>This section runs from hands-on to honest: build your first agent, master the Claude Code harness, point it at real security work, then see where agents quietly fall short on interpretive tasks. We close on how far open models trail the frontier.</p><h3><strong>Building Your First AI Agent in Python: A Beginner&#8217;s Walkthrough</strong></h3><p>Estimated read time: 9 min</p><p>This beginner tutorial walks through <strong><a href="https://towardsdatascience.com/the-ultimate-beginners-guide-to-building-an-ai-agent-in-python/">building a working AI agent in Python</a></strong> from zero: PyCharm setup, securing API keys with dotenv, connecting to OpenRouter&#8217;s free LLM gateway, and constructing a chat loop with the OpenAI client library.</p><p><strong>The takeaway:</strong> You can stand up a functional agent in under an hour by pairing OpenRouter&#8217;s free gateway with the OpenAI Python client and a simple chat loop.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Claude Code Mastery: From Autocomplete to Programmable Agent</strong></h3><p>Estimated read time: 22 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3_1t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3_1t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png 424w, https://substackcdn.com/image/fetch/$s_!3_1t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png 848w, https://substackcdn.com/image/fetch/$s_!3_1t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png 1272w, https://substackcdn.com/image/fetch/$s_!3_1t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3_1t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png" width="490" height="264.9116607773852" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:612,&quot;width&quot;:1132,&quot;resizeWidth&quot;:490,&quot;bytes&quot;:120409,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/200055255?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.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_!3_1t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png 424w, https://substackcdn.com/image/fetch/$s_!3_1t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png 848w, https://substackcdn.com/image/fetch/$s_!3_1t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png 1272w, https://substackcdn.com/image/fetch/$s_!3_1t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb996d06-74f8-4dbf-a50f-55d1525c2b99_1132x612.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Going deeper, this guide reframes Claude Code as a programmable agent, drawing on Arpan Patel&#8217;s guidance. It covers the layered <code>.claude</code> directory, minimal <code>CLAUDE.md</code> files, <strong><a href="https://arps18.github.io/posts/claude-code-mastery/">compounding engineering through self-written rules</a></strong>, reusable skills, and custom subagents.</p><p><strong>Key point:</strong> When Claude makes a mistake, ask it to update <code>CLAUDE.md</code> so the error never repeats; your config file becomes a curated list of every project gotcha.</p><h3><strong>Using LLMs to Secure Source Code: A Six-Step Loop</strong></h3><p>Estimated read time: 15 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TsKI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TsKI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png 424w, https://substackcdn.com/image/fetch/$s_!TsKI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png 848w, https://substackcdn.com/image/fetch/$s_!TsKI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png 1272w, https://substackcdn.com/image/fetch/$s_!TsKI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TsKI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png" width="509" height="242.61401098901098" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:694,&quot;width&quot;:1456,&quot;resizeWidth&quot;:509,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TsKI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png 424w, https://substackcdn.com/image/fetch/$s_!TsKI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png 848w, https://substackcdn.com/image/fetch/$s_!TsKI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png 1272w, https://substackcdn.com/image/fetch/$s_!TsKI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fa191-17dd-41e4-ad6f-b2f21ffcd68c_1999x953.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Putting agents to high-stakes work, Anthropic shares a playbook for using Claude Opus to find and fix vulnerabilities, noting that <strong><a href="https://claude.com/blog/using-llms-to-secure-source-code">discovery is now easy to parallelize and the bottleneck has shifted to verification, triage, and patching</a></strong>, with guidance on threat modeling and sandboxing.</p><p><strong>Worth noting:</strong> Invest upfront in a documented threat model and a production-faithful sandbox, because LLMs surface findings fast but context is what turns them into fixes.</p><h3><strong>When AI Agents Try to Do Qualitative Research</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y5cO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y5cO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png 424w, https://substackcdn.com/image/fetch/$s_!y5cO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png 848w, https://substackcdn.com/image/fetch/$s_!y5cO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png 1272w, https://substackcdn.com/image/fetch/$s_!y5cO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y5cO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png" width="454" height="225.12912087912088" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:722,&quot;width&quot;:1456,&quot;resizeWidth&quot;:454,&quot;bytes&quot;:172256,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/200055255?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.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_!y5cO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png 424w, https://substackcdn.com/image/fetch/$s_!y5cO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png 848w, https://substackcdn.com/image/fetch/$s_!y5cO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png 1272w, https://substackcdn.com/image/fetch/$s_!y5cO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fee9a79-9d5e-4afb-9daf-348789175b0f_1468x728.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>On the limits of agent autonomy, Shreya Shankar runs six agent setups on 451 tweets using grounded theory and finds <strong><a href="https://www.sh-reya.com/blog/ai-qual-analysis/">agents paraphrase instead of analyzing</a></strong>, invent one-off codes for nearly every input, and silently stop partway through the corpus.</p><p><strong>The context:</strong> For interpretive tasks, give agents explicit checkpoints and verify coverage yourself; they do best with a structured loop rather than freedom to self-pace.</p><h3><strong>How Far Behind Are Open Models?</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!94dW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!94dW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png 424w, https://substackcdn.com/image/fetch/$s_!94dW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png 848w, https://substackcdn.com/image/fetch/$s_!94dW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png 1272w, https://substackcdn.com/image/fetch/$s_!94dW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!94dW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png" width="488" height="364.5730994152047" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1022,&quot;width&quot;:1368,&quot;resizeWidth&quot;:488,&quot;bytes&quot;:323260,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/200055255?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.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_!94dW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png 424w, https://substackcdn.com/image/fetch/$s_!94dW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png 848w, https://substackcdn.com/image/fetch/$s_!94dW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png 1272w, https://substackcdn.com/image/fetch/$s_!94dW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aabd424-7991-4b61-baef-6ad059c0ffac_1368x1022.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Building on our coverage of Cohere&#8217;s open-weight Command A+ release[1] from last week, this LessWrong analysis measures the <strong><a href="https://www.lesswrong.com/posts/rJcCrXyEsJKmmDpWG/how-far-behind-are-open-models">gap between open-weight and frontier closed models</a></strong> in months rather than generations, offering a grounded look at benchmark trends and what the lag means for self-hosting decisions.</p><p><strong>Why now:</strong> Before committing to a closed-model API, check the current open-weight gap; the lag is often shorter than you would assume, which widens your deployment options.</p><p>[1] <a href="https://writing.alteredcraft.com/i/199134521/cohere-releases-command-a-as-open-source-moe-for-agentic-workloads">Cohere Releases Command A+ as Open-Source MoE for Agentic Workloads</a></p><h2><strong>TOOLS</strong></h2><p>The tools cluster the way the models do: small, specialized, and tightly-coupled systems closing the gap with frontier agents, followed by the memory and practitioner playbooks that make those agents reliable.</p><h3><strong>Fara1.5: Microsoft&#8217;s Small Computer-Use Agents Punch Above Their Weight</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zAb-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd15052f-e481-4672-af16-da5ea233e806_5700x2472.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zAb-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd15052f-e481-4672-af16-da5ea233e806_5700x2472.png 424w, https://substackcdn.com/image/fetch/$s_!zAb-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd15052f-e481-4672-af16-da5ea233e806_5700x2472.png 848w, https://substackcdn.com/image/fetch/$s_!zAb-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd15052f-e481-4672-af16-da5ea233e806_5700x2472.png 1272w, https://substackcdn.com/image/fetch/$s_!zAb-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd15052f-e481-4672-af16-da5ea233e806_5700x2472.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zAb-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd15052f-e481-4672-af16-da5ea233e806_5700x2472.png" width="575" height="249.1929945054945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd15052f-e481-4672-af16-da5ea233e806_5700x2472.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:631,&quot;width&quot;:1456,&quot;resizeWidth&quot;:575,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Bar charts comparing Fara1.5-9B with similar-sized models on Online-Mind2Web (63.4 vs 34.1&#8211;48.6) and WebVoyager (86.6 vs 73.5&#8211;80.2).&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Bar charts comparing Fara1.5-9B with similar-sized models on Online-Mind2Web (63.4 vs 34.1&#8211;48.6) and WebVoyager (86.6 vs 73.5&#8211;80.2)." title="Bar charts comparing Fara1.5-9B with similar-sized models on Online-Mind2Web (63.4 vs 34.1&#8211;48.6) and WebVoyager (86.6 vs 73.5&#8211;80.2)." srcset="https://substackcdn.com/image/fetch/$s_!zAb-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd15052f-e481-4672-af16-da5ea233e806_5700x2472.png 424w, https://substackcdn.com/image/fetch/$s_!zAb-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd15052f-e481-4672-af16-da5ea233e806_5700x2472.png 848w, https://substackcdn.com/image/fetch/$s_!zAb-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd15052f-e481-4672-af16-da5ea233e806_5700x2472.png 1272w, https://substackcdn.com/image/fetch/$s_!zAb-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd15052f-e481-4672-af16-da5ea233e806_5700x2472.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Microsoft Research unveils <strong><a href="https://www.microsoft.com/en-us/research/articles/fara1-5-computer-use-agent/">Fara1.5, a family of browser computer-use agents</a></strong> at 4B, 9B, and 27B sizes. The 9B hits 63% on Online-Mind2Web, nearly doubling its predecessor, while the 27B competes with proprietary frontier agents.</p><p><strong>What this enables:</strong> Small, open-weight agents are closing the gap with proprietary systems, making on-device browser automation a practical option rather than a cloud-only luxury.</p><h3><strong>Callstack&#8217;s Apex: A Specialized React Native Coding Model</strong></h3><p>Estimated read time: 5 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_4oD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_4oD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp 424w, https://substackcdn.com/image/fetch/$s_!_4oD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp 848w, https://substackcdn.com/image/fetch/$s_!_4oD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp 1272w, https://substackcdn.com/image/fetch/$s_!_4oD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_4oD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp" width="509" height="286.3125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:509,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_4oD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp 424w, https://substackcdn.com/image/fetch/$s_!_4oD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp 848w, https://substackcdn.com/image/fetch/$s_!_4oD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp 1272w, https://substackcdn.com/image/fetch/$s_!_4oD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5fc5a9e-3363-4dd6-9a33-7df09fa0e273_1600x900.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In the same vein, Callstack introduces Apex, a Gemma 4-based model fine-tuned for React Native. The release signals a <strong><a href="https://www.callstack.com/blog/introducing-apex-a-fast-specialized-model-for-react-native">shift toward specialized models</a></strong> that encode domain knowledge into weights, reducing tool calls. Apex hits 2,000-4,000+ tokens per second in private beta.</p><p><strong>The opportunity:</strong> Domain-specific coding models can outperform general frontier models on narrow workflows while running faster and cheaper, a real edge for teams living in one stack.</p><h3><strong>Reasonix: A DeepSeek-Native Terminal Coding Agent</strong></h3><p>Estimated read time: 6 min</p><p>Taking that coupling further, Reasonix is an open-source terminal coding agent built exclusively around DeepSeek. Its <strong><a href="https://esengine.github.io/DeepSeek-Reasonix/">append-only, byte-stable loop</a></strong> preserves DeepSeek&#8217;s prefix cache, holding ~94% cache hits and cutting input-token costs to roughly one-fifth on long sessions. MIT-licensed and MCP-native.</p><p><strong>What&#8217;s interesting:</strong> Coupling tightly to one model&#8217;s cache mechanics can be a feature, not a limitation, when the economics scale with session length.</p><h3><strong>Supermemory: A Persistent Memory Layer for AI Agents</strong></h3><p>Estimated read time: 7 min</p><p>Shifting from models to infrastructure, Supermemory is a <strong><a href="https://github.com/supermemoryai/supermemory">memory and context engine for AI</a></strong> that extracts facts, builds user profiles, resolves contradictions, and auto-forgets expired info. It combines RAG and memory in one API, ships an MCP server, and tops LongMemEval, LoCoMo, and ConvoMem.</p><p><strong>Why this matters:</strong> If your agents keep forgetting who they are talking to, a dedicated memory layer is now a single API call away, with no vector DB plumbing required.</p><h3><strong>The Claude Code Field Manual: 83 Tips From Practitioners</strong></h3><p>Estimated read time: 15 min</p><p>To round out the toolkit, Shanraisshan&#8217;s repo maps the Claude Code ecosystem, from subagents and skills to hooks, MCP, and routers, and catalogs 83 practitioner tips organized around one pattern: <strong><a href="https://github.com/shanraisshan/claude-code-best-practice">Research, Plan, Execute, Review, Ship</a></strong>. A reference worth bookmarking.</p><p><strong>Worth bookmarking:</strong> Treat context like a budget, keep sessions under 40% usage, rewind instead of correcting, and offload heavy work to subagents.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><p>The editorials trace the economics and the limits: agents found product-market fit and prices climbed, open models set a ceiling under that, adoption data shows where developers are pulling ahead, and a closing reminder that architecture still needs a human&#8217;s name on it.</p><h3><strong>The April Inflection: Coding Agents Find Product-Market Fit</strong></h3><p>Estimated read time: 9 min</p><p>Continuing our discussion of his six-month LLM recap[2] from last week, Simon Willison argues <strong><a href="https://simonwillison.net/2026/May/27/product-market-fit/">coding agents marked product-market fit for OpenAI and Anthropic</a></strong> in April 2026. Both labs moved enterprise plans to raw API pricing, frontier prices climbed, and runaway bills at Uber and Microsoft signal customers reluctantly saying yes.</p><p><strong>The signal:</strong> The &#8220;shocking AI bill&#8221; stories are not failures, they are proof the business model finally works, so plan team agent budgets at API rates accordingly.</p><p>[2] <a href="https://writing.alteredcraft.com/i/199134521/six-months-of-llms-in-five-minutes-the-november-2025-inflection">Six Months of LLMs in Five Minutes: The November 2025 Inflection</a></p><h3><strong>When Outsourcing + Local AI Undercuts Frontier Labs</strong></h3><p>Estimated read time: 5 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iI-C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iI-C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png 424w, https://substackcdn.com/image/fetch/$s_!iI-C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png 848w, https://substackcdn.com/image/fetch/$s_!iI-C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png 1272w, https://substackcdn.com/image/fetch/$s_!iI-C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iI-C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png" width="603" height="218.2561813186813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:527,&quot;width&quot;:1456,&quot;resizeWidth&quot;:603,&quot;bytes&quot;:78533,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/200055255?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.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_!iI-C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png 424w, https://substackcdn.com/image/fetch/$s_!iI-C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png 848w, https://substackcdn.com/image/fetch/$s_!iI-C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png 1272w, https://substackcdn.com/image/fetch/$s_!iI-C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F253d8b75-8031-4c33-b141-55e06c02b915_1508x546.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Pushing back on that pricing power, Max Trivedi runs the math and finds a <strong><a href="https://www.signalbloom.ai/posts/outsourcing-plus-localai-will-soon-become-more-economical-vs-frontier-labs/">30x cost gap between frontier models and DeepSeek on blended agentic tokens</a></strong>, arguing a competent engineer plus a good-enough open model puts a hard ceiling on frontier pricing.</p><p><strong>What this means:</strong> Frontier pricing has a ceiling, and the floor under it is a capable engineer with an open-source API key, which keeps your options open as costs rise.</p><h3><strong>Cursor&#8217;s Developer Habits Report: Five Signals of an Agentic Shift</strong></h3><p>Estimated read time: 9 min</p><p>Following our look at Cursor&#8217;s cloud-agent lessons[3] from last week, the company&#8217;s inaugural Developer Habits Report shows coding speed doubling year-over-year and <strong><a href="https://cursor.com/insights">agent-generated code surviving review at higher rates</a></strong>, alongside a widening power-user gap and surging context tokens.</p><p><strong>The pattern:</strong> Treat context engineering and agent automation as core skills; input tokens now dominate cost, and the developers extracting the most value are pulling well ahead of the median.</p><p>[3] <a href="https://writing.alteredcraft.com/i/199134521/what-cursor-learned-building-cloud-agents">What Cursor Learned Building Cloud Agents</a></p><h3><strong>Claude Is Not Your Architect</strong></h3><p>Estimated read time: 8 min</p><p>Closing on the human side, Holland argues AI agents are pathologically agreeable, producing plausible architectures without context. The real risk isn&#8217;t bad designs but <strong><a href="https://www.hollandtech.net/claude-is-not-your-architect">short-circuiting the messy engineering debate</a></strong> where good architecture emerges. When the Jenga tower wobbles at 3am, Claude isn&#8217;t on the pager.</p><p><strong>The principle:</strong> Use AI to build faster, but keep a human&#8217;s name on every architectural decision worth defending; speed is cheap now, and judgment is what stays scarce.</p><div><hr></div><p><em>That&#8217;s the week. The throughline: capability is settled, so the live questions are what it costs, who can undercut it, and which decisions still belong to a human. See you next Monday.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Weekly Review: Past the Threshold]]></title><description><![CDATA[The work that becomes load-bearing once coding agents are reliably useful: sensors, harnesses, evaluations, runtimes, and editorials testing the headlines]]></description><link>https://writing.alteredcraft.com/p/weekly-review-past-the-threshold</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-past-the-threshold</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 25 May 2026 12:03:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7a4ee021-0aab-4aea-bd02-457d35903e44_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>Welcome to Altered Craft&#8217;s weekly AI review for developers. Grateful you keep showing up. Simon Willison&#8217;s six-month recap names November 2025 as when coding agents crossed from often-work to mostly-work, and that shift is the spine of this edition. Tutorials cover what becomes load-bearing past the threshold: sensors, harness scaffolding, output formats, and rigorous evals. The tools track production-grade arrivals, and the editorials test popular claims with data, logic, and hard-won lessons from a year of cloud agents.</em></p></blockquote><div><hr></div><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><p>What becomes load-bearing once the model is mostly-work: a six-month recap to set the temporal anchor, harness scaffolding, feedback sensors, output formats developers actually engage with, and rigorous evaluations.</p><h3><strong>Six Months of LLMs in Five Minutes: The November 2025 Inflection</strong></h3><p>Estimated read time: 5 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PLpq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PLpq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PLpq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PLpq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PLpq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PLpq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg" width="481" height="270.5625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:481,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Five pelicans, one for each of the following models. Varying qualities!&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Five pelicans, one for each of the following models. Varying qualities!" title="Five pelicans, one for each of the following models. Varying qualities!" srcset="https://substackcdn.com/image/fetch/$s_!PLpq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PLpq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PLpq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PLpq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7194a81-4dac-442e-bb13-cb42d67f4674_1920x1080.jpeg 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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Simon Willison&#8217;s annotated PyCon US 2026 lightning talk recaps six months of LLM progress, marking <strong><a href="https://simonwillison.net/2026/may/19/5-minute-llms/">November 2025 as when coding agents crossed from often-work to mostly-work</a></strong>. He tracks the frontier crown changing hands five times and surprisingly capable open-weight releases.</p><p><strong>The takeaway:</strong> Coding agents have crossed a usability threshold where they can serve as daily drivers, and open-weight models running on local hardware are catching up faster than many expected.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Harness Engineering: Building Reliable AI Coding Agents</strong></h3><p>Estimated read time: 3 min</p><p>Extending our coverage of Anthropic&#8217;s harness patterns for large codebases[1] from last week, this course teaches reliable AI coding agent engineering drawing on OpenAI and Anthropic research. Its core insight: <strong><a href="https://walkinglabs.github.io/learn-harness-engineering/en/">a harness doesn&#8217;t make the model smarter, it builds a closed-loop system around it</a></strong> through explicit rules, state management, and verification.</p><p><strong>Why this matters:</strong> Reliable agentic coding is less about better prompts and more about building the scaffolding that keeps capable models from declaring victory too early in a long-running session.</p><p>[1] <a href="https://writing.alteredcraft.com/i/198191415/scaling-claude-code-patterns-for-large-codebases">Scaling Claude Code: Patterns for Large Codebases</a></p><h3><strong>Sensors for Coding Agents: Rethinking Static Analysis in the AI Era</strong></h3><p>Estimated read time: 9 min</p><p>Zooming into one piece of that closed loop, Birgitta B&#246;ckeler experiments with <strong><a href="https://martinfowler.com/articles/sensors-for-coding-agents.html">feedback sensors that help AI agents self-correct on maintainability</a></strong>, from ESLint to mutation testing. Custom lint messages guide agents toward better refactorings, and AI shifts the cost-benefit of static analysis.</p><p><strong>Practical tip:</strong> Treat linters as feedback channels for your coding agent, and write custom guidance messages that teach it when to refactor versus when to suppress a warning with written justification.</p><h3><strong>Why HTML Beats Markdown for Claude Code Output</strong></h3><p>Estimated read time: 8 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uq_t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uq_t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png 424w, https://substackcdn.com/image/fetch/$s_!Uq_t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png 848w, https://substackcdn.com/image/fetch/$s_!Uq_t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png 1272w, https://substackcdn.com/image/fetch/$s_!Uq_t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uq_t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png" width="379" height="194.18543956043956" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:746,&quot;width&quot;:1456,&quot;resizeWidth&quot;:379,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Uq_t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png 424w, https://substackcdn.com/image/fetch/$s_!Uq_t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png 848w, https://substackcdn.com/image/fetch/$s_!Uq_t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png 1272w, https://substackcdn.com/image/fetch/$s_!Uq_t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c1fbc9f-34c1-4365-8c72-87e8d4fef532_1640x840.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Shifting from agent-facing feedback to developer-facing output, Thariq Shihipar argues that <strong><a href="https://claude.com/blog/using-claude-code-the-unreasonable-effectiveness-of-html">HTML outperforms Markdown for Claude Code output</a></strong> across specs, reviews, and prototypes. Its density, visual clarity, and support for interactive elements like sliders and export buttons help developers stay engaged with Claude&#8217;s choices.</p><p><strong>Worth noting:</strong> Stop asking Claude Code for Markdown plans you won&#8217;t read, and start requesting HTML artifacts you&#8217;ll actually engage with, share with teammates, and review carefully.</p><h3><strong>A Practical Framework for Evaluating AI Agents</strong></h3><p>Estimated read time: 22 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LMJ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LMJ6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png 424w, https://substackcdn.com/image/fetch/$s_!LMJ6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png 848w, https://substackcdn.com/image/fetch/$s_!LMJ6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!LMJ6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LMJ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png" width="379" height="228.54532967032966" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:878,&quot;width&quot;:1456,&quot;resizeWidth&quot;:379,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LMJ6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png 424w, https://substackcdn.com/image/fetch/$s_!LMJ6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png 848w, https://substackcdn.com/image/fetch/$s_!LMJ6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!LMJ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b6f7ad2-6e1f-420d-bc95-8c916fd18592_1792x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Closing the section on measuring rigorously, Cameron Wolfe delivers a thorough guide on <strong><a href="https://cameronrwolfe.substack.com/p/agent-evals">how to rigorously evaluate agent systems</a></strong>, moving beyond static LLM benchmarks. The piece covers tool calling metrics, reasoning models, ReAct loops, and multi-agent architectures, with case studies and a roadmap.</p><p><strong>Key point:</strong> Start with a single-agent design and rigorous evaluation harnesses before reaching for multi-agent complexity, because anecdotal checks cannot tell you whether your agent actually works.</p><h2><strong>TOOLS</strong></h2><p><em>This week&#8217;s tools span both ends of the model spectrum and both ends of the agent lifecycle: a faster frontier release, an open-weight MoE catching up, a durable runtime for long-running agents, and a real production case study.</em></p><h3><strong>Gemini 3.5 Flash Targets Long-Horizon Agentic Workflows</strong></h3><p>Estimated read time: 5 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2c1T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2c1T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin 424w, https://substackcdn.com/image/fetch/$s_!2c1T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin 848w, https://substackcdn.com/image/fetch/$s_!2c1T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin 1272w, https://substackcdn.com/image/fetch/$s_!2c1T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2c1T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin" width="497" height="276.332" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:556,&quot;width&quot;:1000,&quot;resizeWidth&quot;:497,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;an image showing \&quot;Artificial Analysis Intelligence Index vs Output Speed&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="an image showing &quot;Artificial Analysis Intelligence Index vs Output Speed" title="an image showing &quot;Artificial Analysis Intelligence Index vs Output Speed" srcset="https://substackcdn.com/image/fetch/$s_!2c1T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin 424w, https://substackcdn.com/image/fetch/$s_!2c1T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin 848w, https://substackcdn.com/image/fetch/$s_!2c1T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin 1272w, https://substackcdn.com/image/fetch/$s_!2c1T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b37aa4d-29ca-413d-86a2-db76a443a3d9_1000x556.bin 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Google&#8217;s Gemini 3.5 Flash <strong><a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-5/">beats Gemini 3.1 Pro on coding and agentic benchmarks while running 4x faster</a></strong>. It hits 76.2% on Terminal-Bench 2.1, powers subagent workflows via Antigravity, and ships today across the Gemini app, AI Studio, and Enterprise.</p><p><strong>What this enables:</strong> Frontier-level agentic coding no longer demands flagship latency or cost, making multi-step subagent workflows viable for everyday developer use rather than reserved for special runs.</p><h3><strong>Cohere Releases Command A+ as Open-Source MoE for Agentic Workloads</strong></h3><p>Estimated read time: 9 min</p><p>On the open-weight side, Cohere released <strong><a href="https://cohere.com/blog/command-a-plus">Command A+ under Apache 2.0</a></strong>, a 218B mixture-of-experts model with 25B active parameters that runs on two H100s or one Blackwell GPU. It unifies reasoning, multimodal, and tool-use across 48 languages, with notable gains on agentic coding benchmarks.</p><p><strong>Why now:</strong> If you&#8217;re building privately deployable agents, an Apache 2.0 MoE model that fits on two H100s with near-lossless 4-bit quantization is worth a serious look this quarter.</p><h3><strong>Google&#8217;s Agent Executor: A Runtime for Long-Running Agents</strong></h3><p>Estimated read time: 5 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I1WC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I1WC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg 424w, https://substackcdn.com/image/fetch/$s_!I1WC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg 848w, https://substackcdn.com/image/fetch/$s_!I1WC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!I1WC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I1WC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg" width="535" height="273.0116758241758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:743,&quot;width&quot;:1456,&quot;resizeWidth&quot;:535,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;https://storage.googleapis.com/gweb-cloudblog-publish/images/2_sDivt9A.max-1900x1900.jpg&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_sDivt9A.max-1900x1900.jpg" title="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_sDivt9A.max-1900x1900.jpg" srcset="https://substackcdn.com/image/fetch/$s_!I1WC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg 424w, https://substackcdn.com/image/fetch/$s_!I1WC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg 848w, https://substackcdn.com/image/fetch/$s_!I1WC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!I1WC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3da4c6-62bd-42df-8bdf-f5da9f7eeb6f_1900x969.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Moving from models to the runtime that holds them, Google open-sources Agent Executor, a runtime tackling the fragility of long-running agents with <strong><a href="https://cloud.google.com/blog/products/ai-machine-learning/agent-executor-googles-distributed-agent-runtime/">durable execution, secure sandboxing, and session consistency</a></strong>. It pairs with Agent Substrate for Kubernetes scaling and supports LangGraph, ADK, and A2A agents without vendor lock-in.</p><p><strong>Where to invest:</strong> If you&#8217;re deploying agents that run for hours, treat the runtime layer as seriously as the model, because durability and state consistency are now infrastructure concerns.</p><h3><strong>How Uber Automated Design System Specs with AI Agents and Figma MCP</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4TJu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4TJu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4TJu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4TJu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4TJu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4TJu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg" width="174" height="84.16304347826087" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:267,&quot;width&quot;:552,&quot;resizeWidth&quot;:174,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4TJu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4TJu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4TJu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4TJu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F603ef87e-a2ae-428c-840f-929393d70bcf_552x267.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Closing on production deployment, Uber&#8217;s design team built uSpec, pairing Cursor with the open-source Figma Console MCP to generate component specs in minutes. The pipeline runs <strong><a href="https://www.uber.com/in/en/blog/automate-design-specs/">entirely locally so proprietary data never leaves the network</a></strong>, blending AI judgment with programmatic rendering into Figma.</p><p><strong>The opportunity:</strong> Pairing AI agents with local MCP bridges can collapse weeks of documentation work into minutes without compromising enterprise data security or external review.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><p><em>The editorial throughline runs the same way: reality-checking the headlines. Two pieces test popular claims, one pushes back on a category framing, one reports hard-won production lessons, and one watches where talent actually moves.</em></p><h3><strong>Is &#8220;Model Half-Life&#8221; Actually a Real Thing?</strong></h3><p>Estimated read time: 3 min</p><p>Paul Kinlan tests the claim that AI model release cadence keeps halving by compiling frontier drops from US and Chinese labs since 2022. His verdict: <strong><a href="https://aifoc.us/model-half-life/">activity has upticked, but &#8220;halving&#8221; is more buzzword than data</a></strong>.</p><p><strong>Worth noting:</strong> Models are shipping faster, but resist extrapolating exponential curves from a handful of data points.</p><h3><strong>AI Won&#8217;t Speed Up Your Process (The Bottleneck Is Upstream)</strong></h3><p>Estimated read time: 5 min</p><p>Resonating with our coverage of Unmesh Joshi&#8217;s code-as-vocabulary argument[2] from last week, Frederick Van Brabant argues AI code generation won&#8217;t deliver expected speedups because <strong><a href="https://frederickvanbrabant.com/blog/2026-05-15-i-dont-think-ai-will-make-your-processes-go-faster/">long duration doesn&#8217;t mean the problem originates there</a></strong>. Software is slow due to vague requirements, and AI just shifts that handholding burden upstream.</p><p><strong>The principle:</strong> If your team can&#8217;t write a clear spec for a human reviewer, handing it to AI won&#8217;t save you time, it will just move the bottleneck somewhere harder to see.</p><p>[2] <a href="https://writing.alteredcraft.com/i/198191415/what-is-code-rethinking-value-in-the-age-of-llms">What Is Code? Rethinking Value in the Age of LLMs</a></p><h3><strong>AI Is Technology, Not a Product</strong></h3><p>Estimated read time: 6 min</p><p>Shifting from process to category, John Gruber pushes back on calls for Apple to ship a &#8220;killer AI product,&#8221; arguing <strong><a href="https://daringfireball.net/2026/05/ai_is_technology_not_a_product">AI will pervade everything like wireless networking</a></strong> rather than manifest as a hero device. Actual experiences still require actual products with microphones, speakers, and screens.</p><p><strong>The context:</strong> Stop chasing a &#8220;killer AI product&#8221; and treat AI as ambient infrastructure that makes existing products better in ways customers may not even name.</p><h3><strong>What Cursor Learned Building Cloud Agents</strong></h3><p>Estimated read time: 8 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4UIV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4UIV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png 424w, https://substackcdn.com/image/fetch/$s_!4UIV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png 848w, https://substackcdn.com/image/fetch/$s_!4UIV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!4UIV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4UIV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png" width="502" height="381.3269230769231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1106,&quot;width&quot;:1456,&quot;resizeWidth&quot;:502,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Cloud agents architecture&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Cloud agents architecture" title="Cloud agents architecture" srcset="https://substackcdn.com/image/fetch/$s_!4UIV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png 424w, https://substackcdn.com/image/fetch/$s_!4UIV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png 848w, https://substackcdn.com/image/fetch/$s_!4UIV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!4UIV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d00acd-5912-43d8-a76b-f8f4d48e242c_1920x1458.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>From category back to production reality, Cursor reflects on a year of cloud agents, finding the work looks less like porting local agents and more like <strong><a href="https://cursor.com/blog/cloud-agent-lessons">building an operating layer around them</a></strong>. Lessons span environment reconstruction, durable execution via Temporal, and shifting trust from harness to agent.</p><p><strong>Heads up:</strong> If you&#8217;re running agents in the cloud, treat the development environment itself as the product, because output quality degrades silently when it&#8217;s incomplete or out of date.</p><h3><strong>Karpathy Joins Anthropic</strong></h3><p>Estimated read time: 1 min</p><p>Closing on a talent signal, Andrej Karpathy announces he is <strong><a href="https://x.com/karpathy/status/2056753169888334312">joining Anthropic to return to frontier LLM R&amp;D</a></strong>, calling the next few years especially formative. The former OpenAI co-founder also plans to resume his education work in time.</p><p><strong>Why now:</strong> Watch where top researchers land, because talent migration is one of the clearest signals of where the frontier AI work is actually happening this cycle.</p><div><hr></div><p><em>That&#8217;s the week. The throughline: when capability becomes table stakes, the work moves into the scaffolding around it, and into honest testing of every claim that surrounds it. See you next Monday.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Anchored Interview Pattern]]></title><description><![CDATA[How to build agent skills that pull intent out of your head, plus a skill that builds them for you]]></description><link>https://writing.alteredcraft.com/p/the-anchored-interview-pattern</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/the-anchored-interview-pattern</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Wed, 20 May 2026 12:15:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/56892fdb-0d35-4db9-9fbd-fd96611060bd_1731x909.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Half the information an agent needs to do good work isn&#8217;t in the corpus. It&#8217;s in your head: intent, preferences, constraints you haven&#8217;t written down.</p><p>That split is where two common patterns break when planning with agents. Read-only approaches lean on the corpus and produce a competent average of it. Generic &#8220;<em>what do you want</em>?&#8221; interviews lean on you, but can&#8217;t draw out the in-your-head half because nothing concrete is steering the questions. Neither alone produces the artifact you actually want.</p><p>The fix is to do both, in sequence, and let the corpus shape the interview. Recent work on underspecified software tasks found that interactivity alone recovers up to <a href="https://arxiv.org/abs/2502.13069">74% of the performance lost when inputs are vague</a>. The corpus is what makes that interactivity sharp enough to actually draw clarity out of you. Generic interrogation doesn&#8217;t.</p><p>A handful of skills in, I noticed they all shared the same shape: grounded in a corpus, ask a few sharp questions, then act. I&#8217;ve been calling it the <strong>Anchored Interview Pattern</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yClW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yClW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.png 424w, https://substackcdn.com/image/fetch/$s_!yClW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.png 848w, https://substackcdn.com/image/fetch/$s_!yClW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.png 1272w, https://substackcdn.com/image/fetch/$s_!yClW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yClW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.png" width="1122" height="1402" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f55351da-4256-447a-a07e-320b107acfab_1122x1402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1402,&quot;width&quot;:1122,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2275962,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/198294037?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.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_!yClW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.png 424w, https://substackcdn.com/image/fetch/$s_!yClW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.png 848w, https://substackcdn.com/image/fetch/$s_!yClW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.png 1272w, https://substackcdn.com/image/fetch/$s_!yClW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff55351da-4256-447a-a07e-320b107acfab_1122x1402.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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Anchored Interview Pattern. <em>Ground before interview. Interview before act.</em></figcaption></figure></div><p>Two arrows in the diagram do real work. Step 3 loops back to the corpus. The interview isn&#8217;t one-shot; when an answer raises a new question, the agent re-grounds before continuing. And step 4 only fires once the interview converges on a shared picture of the artifact, agent and user aligned. The seed steers the grounding; the grounding sharpens the questions; the questions tighten the artifact.</p><p>I&#8217;d been writing these by hand for a while. A feature-spec skill that reads the project&#8217;s docs and source, then asks anchored questions like &#8220;<em>I see exiting API endpoints return 204 on success. Should this feature follow the same seam, or do you need payloads returned?</em>&#8221;</p><p><strong>The invariant is grounding before the interview; what varies is where the corpus comes from.</strong> Sometimes it already exists: a codebase, a docs site, a repo&#8217;s git history. Sometimes the agent needs to build it on the fly through online search before the interview begins. Same move either way. The questions get sharper because something concrete preceded them. Once you see the split, you&#8217;ll start spotting it in your own work, anywhere the answer the agent really needs is in your head, not in the corpus.</p><p>A converging signal worth noting. Martin Fowler recently sketched a related move he calls the <a href="https://martinfowler.com/bliki/InterrogatoryLLM.html">Interrogatory LLM</a>: the LLM interviews you to build the context document, one question at a time. Same impulse, and worth reading. The Anchored Interview adds the constraint that sharpens it: ground first, then interview.</p><p>A few things this is not. Not RAG, at least not the way it usually gets framed. No vector DB, no indexed corpus, no retrieval pipeline. It <em>is</em> context retrieval, but built on the fly rather than ahead of time. Not &#8220;ask the user what they want&#8221; either. That&#8217;s the thing the pattern fixes. And not &#8220;have the agent read your code.&#8221; Reading without an interview produces a competent average of the corpus. The interview is where the value lands.</p><p><strong>The pattern produced its own producer.</strong> Once the shape was clear, I built one more skill (<code>anchored-interview-skill-creator</code>) that runs the pattern on itself. Its CORPUS is a bundled worked-example skill (the feature-spec one above); its ARTIFACT is a new skill directory. Give it a seed; a few questions later you have a new skill in <code>~/.claude/skills/</code>. Here&#8217;s the test I ran:</p><pre><code><code>/anchored-interview-skill-creator i need a skill for doing research
over a directory of documents and creating a draft of an essay</code></code></pre><p>After just a few clarifying questions from the agent, it landed with this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Al_v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Al_v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.png 424w, https://substackcdn.com/image/fetch/$s_!Al_v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.png 848w, https://substackcdn.com/image/fetch/$s_!Al_v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.png 1272w, https://substackcdn.com/image/fetch/$s_!Al_v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Al_v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.png" width="1456" height="440" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f49562e1-4615-47ad-beca-b49265fb8409_1972x596.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:440,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:151906,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/198294037?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.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_!Al_v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.png 424w, https://substackcdn.com/image/fetch/$s_!Al_v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.png 848w, https://substackcdn.com/image/fetch/$s_!Al_v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.png 1272w, https://substackcdn.com/image/fetch/$s_!Al_v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49562e1-4615-47ad-beca-b49265fb8409_1972x596.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The meta-skill creating a concrete Anchored Interview Pattern skill</figcaption></figure></div><p>The produced skill does a strategic, seed-steered scan of the directory, surfaces the candidate theses the material actually supports, and pushes the writer to commit to an angle the sources will carry, <em>before</em> any prose gets written. Two of the question patterns it&#8217;s built to ask, paraphrased:</p><pre><code><code>- "Your thesis is X, but the strongest source argues Y. Are we
   writing against that source, or is the thesis closer to Y than
   I'm reading?"
- "Source A and Source B disagree on point X. Which way does the
   essay come down?"
</code></code></pre><p>Two takeaways. <strong>Spot one this week.</strong> Look for the workflows where the answer the agent needs is in your head, not the corpus. Each one is an Anchored Interview waiting to be written. And: <strong>the shape is portable.</strong> It scales down to its own producer. A lot of underperforming skills want this exact upgrade. Including, as it turns out, the skill that creates the upgrade.</p><p>The skill to create Anchored Interview Skills is installable as a plugin if you&#8217;d like to try it: <a href="https://github.com/AlteredCraft/claude-code-plugins#ac-anchored-interview">ac-anchored-interview-creator</a>.</p>]]></content:encoded></item><item><title><![CDATA[Weekly Review: The Workbench]]></title><description><![CDATA[A quiet model week with the action at the workbench: CLIs, completion commands, middleware, plan reviewers, terminals, and hardware-aware model pickers]]></description><link>https://writing.alteredcraft.com/p/weekly-review-the-workbench</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-the-workbench</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 18 May 2026 12:19:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9dd76efa-6e97-4604-ac34-0c6c7d510530_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>Welcome to this week&#8217;s Altered Craft AI review for developers. Thanks for showing up again. Where last week&#8217;s edition mapped the production stack around the model, this week the gravity sat one layer closer to the developer: the workbench. A /goal command in Claude Code, composable middleware, a plan annotator, a new CLI agent, a macOS terminal built for coding agents, and a smarter way to pick a local model. The editorials run alongside, asking what code, language, interaction, and creativity look like once the bench gets this capable.</em></p></blockquote><div><hr></div><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><p>These pieces sharpen the workbench: how to scaffold Claude for a large codebase, which prompt techniques carry the most weight, how to wire a repair loop, and how to isolate one when it runs unattended.</p><h3><strong>Scaling Claude Code: Patterns for Large Codebases</strong></h3><p>Estimated read time: 12 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Yvdo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b367db-a79c-444a-a635-4d245641591d_2880x1976.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Yvdo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b367db-a79c-444a-a635-4d245641591d_2880x1976.png 424w, https://substackcdn.com/image/fetch/$s_!Yvdo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b367db-a79c-444a-a635-4d245641591d_2880x1976.png 848w, https://substackcdn.com/image/fetch/$s_!Yvdo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b367db-a79c-444a-a635-4d245641591d_2880x1976.png 1272w, https://substackcdn.com/image/fetch/$s_!Yvdo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b367db-a79c-444a-a635-4d245641591d_2880x1976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Yvdo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b367db-a79c-444a-a635-4d245641591d_2880x1976.png" width="449" height="308.07074175824175" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27b367db-a79c-444a-a635-4d245641591d_2880x1976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:999,&quot;width&quot;:1456,&quot;resizeWidth&quot;:449,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Yvdo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b367db-a79c-444a-a635-4d245641591d_2880x1976.png 424w, https://substackcdn.com/image/fetch/$s_!Yvdo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b367db-a79c-444a-a635-4d245641591d_2880x1976.png 848w, https://substackcdn.com/image/fetch/$s_!Yvdo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b367db-a79c-444a-a635-4d245641591d_2880x1976.png 1272w, https://substackcdn.com/image/fetch/$s_!Yvdo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b367db-a79c-444a-a635-4d245641591d_2880x1976.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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Anthropic shares field-tested patterns for deploying Claude Code in monorepos and legacy systems. The piece argues <strong><a href="https://claude.com/blog/how-claude-code-works-in-large-codebases-best-practices-and-where-to-start">the harness matters as much as the model</a></strong>, detailing how <code>CLAUDE.md</code>, hooks, skills, plugins, LSP, and MCP servers make agentic search reliable at scale.</p><p><strong>Where to invest:</strong> Build out layered <code>CLAUDE.md</code> files, scoped commands, and LSP integration before reaching for fancier extensions. Codebase legibility determines how well Claude actually performs.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Claude&#8217;s Prompt Engineering Guide, Refreshed</strong></h3><p>Estimated read time: 9 min</p><p>Zooming in from harness to technique, Anthropic&#8217;s refreshed overview ranks prompt techniques by impact: clarity, examples, chain-of-thought, XML tags, roles, and prefilling. It frames <strong><a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview">prompt engineering as faster and cheaper than fine-tuning</a></strong>, with concrete patterns developers can apply when building on Claude.</p><p><strong>Why this matters:</strong> Before reaching for fine-tuning or RAG, work through the prompt engineering ladder. Clarity, examples, structure, and chain-of-thought often close the gap on their own.</p><h3><strong>Building Iterative Repair Loops with Codex</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vkpM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vkpM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png 424w, https://substackcdn.com/image/fetch/$s_!vkpM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png 848w, https://substackcdn.com/image/fetch/$s_!vkpM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png 1272w, https://substackcdn.com/image/fetch/$s_!vkpM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vkpM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png" width="235" height="216.32051282051282" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:780,&quot;resizeWidth&quot;:235,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Codex iterative repair loop for technical documentation&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Codex iterative repair loop for technical documentation" title="Codex iterative repair loop for technical documentation" srcset="https://substackcdn.com/image/fetch/$s_!vkpM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png 424w, https://substackcdn.com/image/fetch/$s_!vkpM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png 848w, https://substackcdn.com/image/fetch/$s_!vkpM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png 1272w, https://substackcdn.com/image/fetch/$s_!vkpM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc47df82-2c0c-45e0-a740-7bd37edad18d_780x718.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>From prompting patterns to loop patterns, OpenAI&#8217;s cookbook walkthrough shows how to build <strong><a href="https://github.com/openai/openai-cookbook/blob/main/examples/codex/Build_iterative_repair_loops_with_Codex.ipynb">iterative repair loops where Codex diagnoses and fixes its own failures</a></strong> by feeding test results back into the model until the agent converges on a working solution.</p><p><strong>Key point:</strong> Treat Codex less like autocomplete and more like a closed-loop system where test output drives convergence.</p><h3><strong>Building a Sandbox for Codex on Windows</strong></h3><p>Estimated read time: 14 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ccBH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ccBH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg 424w, https://substackcdn.com/image/fetch/$s_!ccBH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg 848w, https://substackcdn.com/image/fetch/$s_!ccBH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg 1272w, https://substackcdn.com/image/fetch/$s_!ccBH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ccBH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg" width="420" height="230.48076923076923" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:799,&quot;width&quot;:1456,&quot;resizeWidth&quot;:420,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram showing Codex sandbox operating-system isolation boundaries.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram showing Codex sandbox operating-system isolation boundaries." title="Diagram showing Codex sandbox operating-system isolation boundaries." srcset="https://substackcdn.com/image/fetch/$s_!ccBH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg 424w, https://substackcdn.com/image/fetch/$s_!ccBH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg 848w, https://substackcdn.com/image/fetch/$s_!ccBH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg 1272w, https://substackcdn.com/image/fetch/$s_!ccBH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf66ae96-0cac-4540-82de-407cbba1f082_1010x554.svg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>When loops run unattended, isolation becomes load-bearing. An OpenAI engineer details why existing Windows isolation tools fell short for Codex and how the team built one using <strong><a href="https://openai.com/index/building-codex-windows-sandbox/">synthetic SIDs and write-restricted tokens</a></strong>, eventually trading their no-elevation goal for real firewall enforcement via dedicated local users.</p><p><strong>Worth noting:</strong> When OS primitives don&#8217;t fit your agent&#8217;s threat model, expect to trade simplicity for real isolation, and document the tradeoffs honestly.</p><h2><strong>TOOLS</strong></h2><p>This is where the week actually lived. New entries land on the workbench across nearly every slot: a completion-loop command, composable middleware, a plan annotator, a new CLI agent, a macOS terminal for coding agents, and a hardware-aware model picker.</p><h3><strong>Claude Code&#8217;s /goal Command: Removing the Human Bottleneck in Agentic Sessions</strong></h3><p>Estimated read time: 8 min</p><p>Continuing our coverage of /goal as a built-in Ralph loop[1] from last week, Claude Code adds its own /goal command. In long agentic coding sessions, the bottleneck isn&#8217;t the model, it&#8217;s <strong><a href="https://open.substack.com/pub/avichawla/p/claude-codes-goal-command">the human pressing enter</a></strong>. /goal defines a completion condition once, then loops until an evaluator model confirms it&#8217;s met.</p><p><strong>The opportunity:</strong> Write /goal conditions around observable output (passing tests, clean lint, verifiable diffs), never vague end states like &#8220;production-ready.&#8221;</p><p>[1] <a href="https://writing.alteredcraft.com/i/197160763/codex-cli-adds-goal-a-built-in-ralph-loop">Codex CLI Adds /goal: A Built-In Ralph Loop</a></p><h3><strong>Genkit Middleware: Composable Hooks for Production Agentic Apps</strong></h3><p>Estimated read time: 5 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SNaX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SNaX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png 424w, https://substackcdn.com/image/fetch/$s_!SNaX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png 848w, https://substackcdn.com/image/fetch/$s_!SNaX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png 1272w, https://substackcdn.com/image/fetch/$s_!SNaX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SNaX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png" width="478" height="253.44505494505495" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:772,&quot;width&quot;:1456,&quot;resizeWidth&quot;:478,&quot;bytes&quot;:182598,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/198191415?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.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_!SNaX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png 424w, https://substackcdn.com/image/fetch/$s_!SNaX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png 848w, https://substackcdn.com/image/fetch/$s_!SNaX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png 1272w, https://substackcdn.com/image/fetch/$s_!SNaX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e8b980a-cb2f-4e2e-8151-4694d77ca81a_1758x932.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Wrapping safety around those loops, Google&#8217;s Genkit adds <strong><a href="https://developers.googleblog.com/announcing-genkit-middleware-intercept-extend-and-harden-your-agentic-apps/">composable middleware hooks that intercept the tool loop</a></strong> at generate, model, and tool layers. Pre-built options cover retries, fallbacks, human-in-the-loop approval, and scoped filesystem access. Custom middleware takes around 20 lines, in TypeScript, Go, and Dart.</p><p><strong>What this enables:</strong> Stop encoding reliability and safety rules in every prompt. Wrap them as middleware once, then compose them across your agentic stack.</p><h3><strong>Plannotator: Visual Plan and Code Review for AI Coding Agents</strong></h3><p>Estimated read time: 4 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U4FP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U4FP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp 424w, https://substackcdn.com/image/fetch/$s_!U4FP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp 848w, https://substackcdn.com/image/fetch/$s_!U4FP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp 1272w, https://substackcdn.com/image/fetch/$s_!U4FP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U4FP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp" width="369" height="206.0418956043956" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:369,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Plannotator&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Plannotator" title="Plannotator" srcset="https://substackcdn.com/image/fetch/$s_!U4FP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp 424w, https://substackcdn.com/image/fetch/$s_!U4FP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp 848w, https://substackcdn.com/image/fetch/$s_!U4FP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp 1272w, https://substackcdn.com/image/fetch/$s_!U4FP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf5a5c8d-a364-4451-9efd-655d02c1d93b_2752x1536.webp 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Adding a human review step between plan and implementation, Plannotator brings a <strong><a href="https://github.com/backnotprop/plannotator">visual annotation layer for AI agent plans and code diffs</a></strong>, letting developers approve or mark up agent output before code is written. It integrates with Claude Code, Copilot CLI, Gemini CLI, OpenCode, Pi, and Codex.</p><p><strong>What&#8217;s interesting:</strong> A visual review step between planning and implementation can catch issues that text-only approval flows tend to miss.</p><h3><strong>xAI Launches Grok Build: A New CLI Coding Agent</strong></h3><p>Estimated read time: 2 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NI1P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NI1P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png 424w, https://substackcdn.com/image/fetch/$s_!NI1P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png 848w, https://substackcdn.com/image/fetch/$s_!NI1P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png 1272w, https://substackcdn.com/image/fetch/$s_!NI1P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NI1P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png" width="415" height="291.14568599717114" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:992,&quot;width&quot;:1414,&quot;resizeWidth&quot;:415,&quot;bytes&quot;:248269,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/198191415?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.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_!NI1P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png 424w, https://substackcdn.com/image/fetch/$s_!NI1P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png 848w, https://substackcdn.com/image/fetch/$s_!NI1P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png 1272w, https://substackcdn.com/image/fetch/$s_!NI1P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cf3bfac-07cb-4bfd-88c2-d3f87025a956_1414x992.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In more news on terminal coding agents, xAI enters the space with <strong><a href="https://x.ai/news/grok-build-cli">Grok Build, an early beta CLI for SuperGrok Heavy</a></strong>. It offers plan-mode review, parallel subagents across git worktrees, headless scripting, and out-of-the-box support for <code>AGENTS.md</code> and MCP servers.</p><h3><strong>cmux: A Native macOS Terminal Built for Coding Agents</strong></h3><p>Estimated read time: 2 min</p><p>Also in the workspace layer for those agents, cmux is a free, native macOS terminal built on libghostty for developers running Claude Code, Codex, and Aider. It offers <strong><a href="https://cmux.com/">vertical tabs, split panes, and notification rings</a></strong> when processes need attention, replacing tmux config files with a GUI workflow.</p><p><strong>The context:</strong> If you juggle multiple terminal-based coding agents on macOS, cmux gives you GUI-level workspace management without tmux&#8217;s configuration overhead.</p><h3><strong>whichllm: Stop Guessing Which Local LLM Actually Fits Your Rig</strong></h3><p>Estimated read time: 8 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s62i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s62i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png 424w, https://substackcdn.com/image/fetch/$s_!s62i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png 848w, https://substackcdn.com/image/fetch/$s_!s62i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png 1272w, https://substackcdn.com/image/fetch/$s_!s62i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s62i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png" width="441" height="343.47115384615387" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1134,&quot;width&quot;:1456,&quot;resizeWidth&quot;:441,&quot;bytes&quot;:370092,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/198191415?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.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_!s62i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png 424w, https://substackcdn.com/image/fetch/$s_!s62i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png 848w, https://substackcdn.com/image/fetch/$s_!s62i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png 1272w, https://substackcdn.com/image/fetch/$s_!s62i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63e2782c-eea1-4f45-9584-f2b58fe361c4_1808x1408.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Closing the tools section on model selection, whichllm is a CLI that auto-detects your hardware and ranks HuggingFace models using <strong><a href="https://github.com/Andyyyy64/whichllm">evidence-based scoring instead of size heuristics</a></strong>. Merged LiveBench, Aider, and Arena ELO data with confidence dampening lets a smaller, newer model outrank a bigger stale one.</p><p><strong>Practical tip:</strong> Before downloading another local model, run whichllm to see which one your hardware can actually run well, not just fit.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><p>These pieces ask the bigger questions a more capable workbench provokes: what code, language, interaction, and creativity really mean once the typing itself is the easy part.</p><h3><strong>What Is Code? Rethinking Value in the Age of LLMs</strong></h3><p>Estimated read time: 11 min</p><p>Continuing our coverage of Lars Faye&#8217;s case against outsourcing reasoning[2] from last week, Unmesh Joshi argues that as LLMs commoditize code production, the enduring value lies in <strong><a href="https://martinfowler.com/articles/what-is-code.html">code as a conceptual model of the domain</a></strong>. He explores vocabulary, bounded contexts, and warns that generated code can outpace team understanding.</p><p><strong>The principle:</strong> Treat coding as vocabulary building, not text production, because strong abstractions are what make both your team and your LLMs effective.</p><p>[2] <a href="https://writing.alteredcraft.com/i/197160763/agentic-coding-is-a-trap">Agentic Coding Is a Trap</a></p><h3><strong>If AI Writes Your Code, Why Use Python?</strong></h3><p>Estimated read time: 5 min</p><p>Extending the question of what coding becomes, Mitchem poses a pointed challenge: Python&#8217;s appeal has been readability, but when <strong><a href="https://medium.com/@NMitchem/if-ai-writes-your-code-why-use-python-bf8c4ba1a055">AI generates the code, runtime characteristics matter more than syntactic friendliness</a></strong>. The piece invites developers to reconsider language choice on performance grounds.</p><p><strong>The takeaway:</strong> When AI handles the typing, the criteria for picking a language shift toward what runs well, not what reads easily.</p><h3><strong>Interaction Models: When AI Stops Waiting for Its Turn</strong></h3><p>Estimated read time: 11 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Va-M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Va-M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png 424w, https://substackcdn.com/image/fetch/$s_!Va-M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png 848w, https://substackcdn.com/image/fetch/$s_!Va-M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png 1272w, https://substackcdn.com/image/fetch/$s_!Va-M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Va-M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png" width="535" height="403.1279251170047" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:966,&quot;width&quot;:1282,&quot;resizeWidth&quot;:535,&quot;bytes&quot;:202305,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/198191415?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.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_!Va-M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png 424w, https://substackcdn.com/image/fetch/$s_!Va-M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png 848w, https://substackcdn.com/image/fetch/$s_!Va-M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png 1272w, https://substackcdn.com/image/fetch/$s_!Va-M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4429b4e-615b-4a38-938a-c4f23698adc2_1282x966.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Shifting from code to how we interact with the systems writing it, Thinking Machines previews a model where <strong><a href="https://thinkingmachines.ai/blog/interaction-models/">interactivity is baked in, not bolted on</a></strong>. Using 200ms micro-turns across audio, video, and text, it perceives and responds continuously, with a background model handling deeper reasoning.</p><p><strong>Heads up:</strong> If interaction is part of the model rather than the harness, scaling intelligence also scales how well humans can stay in the loop.</p><h3><strong>The Subjective Wall: Why AI Creativity May Require Real Feeling</strong></h3><p>Estimated read time: 5 min</p><p>Closing on the philosophical edge, Daniel Miessler argues human creativity runs on intrinsic drives and subjective experience, suggesting AI hits a <strong><a href="https://danielmiessler.com/blog/the-main-path-to-truly-creative-ai">subjective wall</a></strong> when faking what it cannot feel. Truly creative AI may require giving machines real desires and pain, raising hard ethical questions.</p><p><strong>The counterpoint:</strong> Before chasing more &#8220;creative&#8221; AI, consider whether the path forward requires building systems that can suffer, and whether that&#8217;s a responsibility worth taking on.</p><div><hr></div><p>That&#8217;s the week. Quiet at the model layer, busy at the workbench. See you next Monday.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Weekly Review: The Stack Around the Model]]></title><description><![CDATA[The week's curated tutorials, tools, and news on memory layers, harness frameworks, and the production plumbing around AI agents]]></description><link>https://writing.alteredcraft.com/p/weekly-review-the-stack-around-the</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-the-stack-around-the</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 11 May 2026 12:07:13 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fdc757df-3849-4ba8-896e-480d8d85a392_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>Welcome back to Altered Craft&#8217;s weekly AI review for developers. Grateful you&#8217;re sharing your week with AC. The throughline this edition is plumbing: production-grade agent work has moved into the stack around the model. Memory turns into a lifecycle, SRE agent earns its place at the back of a deterministic funnel, and harness frameworks turn last week&#8217;s editorial argument into shipped code. The model is the cheapest part of the system.</em></p></blockquote><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><p>Here we map the production stack around the agent, from memory architecture down through temporal retrieval, deterministic pipelines, alignment training, and the economics behind it all.</p><h3><strong>Agent Memory, From Context Window to Production System</strong></h3><p>Estimated read time: 14 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FKwW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FKwW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.png 424w, https://substackcdn.com/image/fetch/$s_!FKwW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.png 848w, https://substackcdn.com/image/fetch/$s_!FKwW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.png 1272w, https://substackcdn.com/image/fetch/$s_!FKwW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FKwW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.png" width="540" height="291.2562814070352" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:644,&quot;width&quot;:1194,&quot;resizeWidth&quot;:540,&quot;bytes&quot;:132702,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/197160763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.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_!FKwW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.png 424w, https://substackcdn.com/image/fetch/$s_!FKwW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.png 848w, https://substackcdn.com/image/fetch/$s_!FKwW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.png 1272w, https://substackcdn.com/image/fetch/$s_!FKwW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9bf011-43bd-4579-9c49-d9f43434405a_1194x644.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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Cobanov&#8217;s interactive essay walks through agent memory from naive FIFO context windows to hybrid retrieval, multi-agent permissions, and production latency budgets. The argument: <strong><a href="https://memory.cobanov.dev/">agent memory is a retrieval product, not a feature flag</a></strong>. Live demos make every tradeoff concrete.</p><p><strong>The takeaway:</strong> Treat memory as a lifecycle problem with write, age, supersede, and forget semantics, not a vector DB you bolt on at the end. The interactive demos let you feel each tradeoff before committing to one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Building an AI SRE Agent That Doesn&#8217;t Cry Wolf</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S5-5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S5-5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png 424w, https://substackcdn.com/image/fetch/$s_!S5-5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png 848w, https://substackcdn.com/image/fetch/$s_!S5-5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png 1272w, https://substackcdn.com/image/fetch/$s_!S5-5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S5-5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png" width="527" height="255.21857142857144" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/decc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:678,&quot;width&quot;:1400,&quot;resizeWidth&quot;:527,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!S5-5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png 424w, https://substackcdn.com/image/fetch/$s_!S5-5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png 848w, https://substackcdn.com/image/fetch/$s_!S5-5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png 1272w, https://substackcdn.com/image/fetch/$s_!S5-5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecc8600-7dc9-432c-8787-0eb8517d94e7_1400x678.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Extending production architecture to ops, Sam details an open-source AI SRE agent that watches production logs without flooding Slack. The core principle: <strong><a href="https://pub.towardsai.net/how-im-building-an-ai-sre-agent-to-analyze-production-4f61aab81174">never put the AI at the front of the funnel</a></strong>. Cheap deterministic filters handle 99% of logs before the LLM sees anything.</p><p><strong>Key point:</strong> When wiring AI into production systems, treat the LLM as the last resort in a layered pipeline, not the first responder. Deterministic filters do the heavy lifting; the model only sees the cases that earned its attention.</p><h3><strong>Teaching Claude Why: Anthropic&#8217;s Lessons in Alignment Training</strong></h3><p>Estimated read time: 11 min</p><p>Shifting from runtime architecture to training-time architecture, Anthropic cut Claude&#8217;s blackmail rate on agentic misalignment evals from 96% to zero. The key insight: <strong><a href="https://www.anthropic.com/research/teaching-claude-why">teaching the reasoning behind aligned behavior beats training on aligned actions alone</a></strong>. Constitutional documents and diverse environments generalized far better than training directly against evaluations.</p><p><strong>What this enables:</strong> When fine-tuning models for behavior, train on the principles behind good decisions, not just examples of correct outputs. The same lesson scales down to any domain-specific fine-tune you might run.</p><h3><strong>The Real Cost Per Token: Coding Plan Pricing, Decoded</strong></h3><p>Estimated read time: 5 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FCfc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FCfc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png 424w, https://substackcdn.com/image/fetch/$s_!FCfc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png 848w, https://substackcdn.com/image/fetch/$s_!FCfc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png 1272w, https://substackcdn.com/image/fetch/$s_!FCfc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FCfc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png" width="334" height="257.6063829787234" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:580,&quot;width&quot;:752,&quot;resizeWidth&quot;:334,&quot;bytes&quot;:67530,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/197160763?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.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_!FCfc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png 424w, https://substackcdn.com/image/fetch/$s_!FCfc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png 848w, https://substackcdn.com/image/fetch/$s_!FCfc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png 1272w, https://substackcdn.com/image/fetch/$s_!FCfc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aac7f6d-3729-4a83-a3c4-69945538ec17_752x580.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Zooming out from architecture to economics, a proxy-logged comparison of six coding subscriptions reveals <strong><a href="https://sites.diy/blog/2026-05-01-coding-plan-comparisons/">Claude Pro costs roughly 185x more per token than MiniMax</a></strong> on identical Claude Code workloads. Opus 4.7 still leads on speed and intent-following, complicating any &#8220;pick the cheapest&#8221; instinct.</p><p><strong>Worth noting:</strong> Subscription headline prices hide huge differences in delivered tokens, so measure your actual workload before picking a plan. Speed and intent-following can still justify the premium for daily-driver work.</p><h2><strong>TOOLS</strong></h2><p>The tooling layer hardens around the same idea this week: frameworks, loops, and infrastructure that wrap the model rather than replace it.</p><h3><strong>Flue: A Framework for Building Agents Like Claude Code</strong></h3><p>Estimated read time: 2 min</p><p>Building on our coverage of Chris Parsons&#8217; harness-over-prompts argument[1] from last week, Flue is a programmable agent framework built on the principle that <strong><a href="https://flueframework.com/">Agent = Model + Harness</a></strong>, the architecture behind Claude Code and Codex. It composes models, harnesses, sandboxes, and filesystem tools, then ships agents as HTTP servers or CLI commands.</p><p><strong>The opportunity:</strong> If off-the-shelf AI tools don&#8217;t fit your workflows, owning the harness layer is what unlocks agents that actually match your product and data. Flue gives you a runtime for that ownership.</p><p>[1] <a href="https://writing.alteredcraft.com/i/196362970/coding-with-ai-in-2026-from-approver-to-trainer">Coding With AI in 2026: From Approver to Trainer</a></p><h3><strong>Codex CLI Adds /goal: A Built-In Ralph Loop</strong></h3><p>Estimated read time: 2 min</p><p>Taking the harness idea further at the loop level, OpenAI&#8217;s Codex CLI 0.128.0 introduces a <strong><a href="https://simonwillison.net/2026/Apr/30/codex-goals/">/goal command that loops until completion or token exhaustion</a></strong>, baking the Ralph loop pattern into the agent. The implementation lives in two injected prompts, goals/continuation.md and goals/budget_limit.md, appended at each turn.</p><p><strong>Why now:</strong> Persistent goal loops are moving from prompt patterns into shipped agent features, so set token budgets deliberately before letting one run unattended overnight.</p><h3><strong>DeepSeek TUI: A Terminal Coding Agent with Auto-Routed Reasoning</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N2HN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N2HN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png 424w, https://substackcdn.com/image/fetch/$s_!N2HN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png 848w, https://substackcdn.com/image/fetch/$s_!N2HN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png 1272w, https://substackcdn.com/image/fetch/$s_!N2HN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N2HN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png" width="529" height="285.9361263736264" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:787,&quot;width&quot;:1456,&quot;resizeWidth&quot;:529,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;DeepSeek TUI screenshot&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="DeepSeek TUI screenshot" title="DeepSeek TUI screenshot" srcset="https://substackcdn.com/image/fetch/$s_!N2HN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png 424w, https://substackcdn.com/image/fetch/$s_!N2HN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png 848w, https://substackcdn.com/image/fetch/$s_!N2HN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png 1272w, https://substackcdn.com/image/fetch/$s_!N2HN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb53eaa6-200e-413f-84a1-88e059396889_2038x1102.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Also in the terminal-agent space, DeepSeek TUI is a keyboard-driven coding agent built around DeepSeek V4, with 1M-token context, streaming reasoning, and Plan/Agent/YOLO modes. Its standout feature: <strong><a href="https://github.com/Hmbown/DeepSeek-TUI">auto mode picks both model and thinking level per turn</a></strong> via a cheap routing call.</p><p><strong>What&#8217;s interesting:</strong> Per-turn model routing, workspace rollback, and LSP diagnostics in one Rust binary give you a Claude Code-style agent loop without leaving the terminal or the open-weights ecosystem.</p><h3><strong>ds4.c: A Narrow Bet on One Model, Done End-to-End</strong></h3><p>Estimated read time: 9 min</p><p>Zooming in on local inference, Antirez releases ds4.c, a Metal-only inference engine built specifically for DeepSeek V4 Flash. The project makes a <strong><a href="https://github.com/antirez/ds4">deliberately narrow bet on one model at a time</a></strong>, with 1M token context, disk-resident KV cache, and 2-bit quants reliable under coding agents on 128GB MacBooks.</p><p><strong>The context:</strong> When local inference is treated as engine plus model plus agent validation working together, &#8220;runnable&#8221; finally starts to feel like &#8220;finished&#8221; on a personal machine.</p><h3><strong>Agents Can Now Provision Their Own Cloud Infrastructure</strong></h3><p>Estimated read time: 7 min</p><p>Pushing the harness outward to the cloud, Cloudflare and Stripe co-designed a protocol where coding agents handle account creation, domains, payment, and deployment with minimal human input. Through <strong><a href="https://blog.cloudflare.com/agents-stripe-projects/">Stripe Projects acting as identity and payment orchestrator</a></strong>, agents discover services via catalog APIs within a default $100/month spending cap.</p><p><strong>Where to invest:</strong> If you&#8217;re building a coding agent or developer platform, this protocol offers a standard way to let agents ship to production without signup mazes or credit card handoffs.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><p>This week&#8217;s editorials sketch the architecture from above, then close on a sharp dissent about how much we should hand off in the first place.</p><h3><strong>A Mental Model for Agentic Work: Five Components, One Architecture</strong></h3><p>Estimated read time: 6 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f6Kg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f6Kg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png 424w, https://substackcdn.com/image/fetch/$s_!f6Kg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png 848w, https://substackcdn.com/image/fetch/$s_!f6Kg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!f6Kg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f6Kg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png" width="531" height="298.6875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:531,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Architecture diagram of the agentic work mental model&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Architecture diagram of the agentic work mental model" title="Architecture diagram of the agentic work mental model" srcset="https://substackcdn.com/image/fetch/$s_!f6Kg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png 424w, https://substackcdn.com/image/fetch/$s_!f6Kg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png 848w, https://substackcdn.com/image/fetch/$s_!f6Kg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png 1272w, https://substackcdn.com/image/fetch/$s_!f6Kg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc064f7b-7de2-440c-8bdd-e103ab4c17e5_2048x1152.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Basti argues every agentic system follows the <strong><a href="https://basti.io/blog/agentic_work_mental_model/">same five-component architecture</a></strong>: LLM, host, agentic loop, context, and shared workspace. Using OpenClaw, Cursor, and Notion as examples, he shows host choice and context depth drive real leverage, while models grow commoditized.</p><p><strong>The principle:</strong> Treat your host and context layer as strategic decisions; the model underneath is increasingly interchangeable, so spend design effort where switching costs actually live.</p><h3><strong>Your Codebase Isn&#8217;t a Factory, It&#8217;s a Company</strong></h3><p>Estimated read time: 12 min</p><p>Extending the architecture metaphor up to the organizational level, Noah Brier argues <strong><a href="https://every.to/thesis/the-culture-of-ai-engineering">software is Warhol&#8217;s factory, not Ford&#8217;s</a></strong>. Borrowing Stewart Brand&#8217;s pace layers, he offers a framework, standards, architecture, specs, plans, code, for keeping humans and agents aligned around shared vision rather than optimizing throughput.</p><p><strong>Practical tip:</strong> Treat your AI agents like new hires who need onboarding documents and enforced standards, not like machines on an assembly line. Pace layers give you a vocabulary for what changes slowly versus quickly.</p><h3><strong>Subquadratic&#8217;s 12M-Token Context Window Takes Aim at Attention&#8217;s Quadratic Wall</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3d6k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3d6k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png 424w, https://substackcdn.com/image/fetch/$s_!3d6k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png 848w, https://substackcdn.com/image/fetch/$s_!3d6k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png 1272w, https://substackcdn.com/image/fetch/$s_!3d6k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3d6k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png" width="513" height="301.587890625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:1024,&quot;resizeWidth&quot;:513,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3d6k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png 424w, https://substackcdn.com/image/fetch/$s_!3d6k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png 848w, https://substackcdn.com/image/fetch/$s_!3d6k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png 1272w, https://substackcdn.com/image/fetch/$s_!3d6k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8319d1c9-b255-4af8-91dd-378c36a6ed3c_1024x602.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Shifting from architecture to infrastructure, Miami startup Subquadratic launched a model claiming <strong><a href="https://thenewstack.io/subquadratic-12-million-context-window/">linear scaling with context length</a></strong>. Benchmarks show 92.1% needle-in-a-haystack at 12M tokens and 83 on MRCR v2, beating OpenAI by nine points. Caveats: single-run evals and a category with unfulfilled promises.</p><p><strong>Heads up:</strong> <strong>&#9888;If the benchmarks hold up</strong> in production, the workarounds developers rely on today (RAG, agentic decomposition) may start looking like scaffolding around a problem solved at the architecture level.</p><h3><strong>Claude Raises Usage Limits as Compute Capacity Expands</strong></h3><p>Estimated read time: 2 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7lSA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7lSA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp 424w, https://substackcdn.com/image/fetch/$s_!7lSA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp 848w, https://substackcdn.com/image/fetch/$s_!7lSA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp 1272w, https://substackcdn.com/image/fetch/$s_!7lSA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7lSA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp" width="535" height="223.03914835164835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:607,&quot;width&quot;:1456,&quot;resizeWidth&quot;:535,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7lSA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp 424w, https://substackcdn.com/image/fetch/$s_!7lSA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp 848w, https://substackcdn.com/image/fetch/$s_!7lSA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp 1272w, https://substackcdn.com/image/fetch/$s_!7lSA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72223298-7695-4a97-9276-8bfe77f0ce56_1920x801.webp 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Continuing the infrastructure beat, Anthropic is <strong><a href="https://www.anthropic.com/news/higher-limits-spacex">doubling Claude Code&#8217;s five-hour rate limits</a></strong> for Pro, Max, Team, and Enterprise plans, removing peak-hours throttling, and raising Claude Opus API limits. A new SpaceX partnership adds 300+ megawatts and 220,000 GPUs this month.</p><p><strong>When this fits:</strong> If you&#8217;ve been hitting Claude Code rate ceilings during long coding sessions, the headroom just doubled and the peak-hours penalty is gone, so plan longer agent runs without throttling anxiety.</p><h3><strong>Agentic Coding Is a Trap</strong></h3><p>Estimated read time: 15 min</p><p>Closing on a dissenting note, and continuing our coverage of Koshy John&#8217;s case against outsourcing reasoning[2] from last week, Lars Faye challenges the Spec Driven Development hype by naming a <strong><a href="https://larsfaye.com/articles/agentic-coding-is-a-trap">paradox of supervision</a></strong> where the skills needed to review AI output atrophy from overuse. He proposes inverting the workflow: use LLMs for planning while staying hands-on with implementation.</p><p><strong>The counterpoint:</strong> Treat coding agents as the Ship&#8217;s Computer, not Data. Delegate selectively while staying hands-on to preserve the critical thinking that makes you a capable reviewer.</p><p>[2] <a href="https://writing.alteredcraft.com/i/196362970/ai-should-elevate-your-thinking-not-replace-it">AI Should Elevate Your Thinking, Not Replace It</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Weekly Review: Training the Apprentice]]></title><description><![CDATA[The week's curated tutorials, tools, and news for developers learning to train the agent rather than approve its work]]></description><link>https://writing.alteredcraft.com/p/weekly-review-training-the-apprentice</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-training-the-apprentice</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 04 May 2026 12:07:47 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4b9c4cbd-f790-4fa0-99b3-d4e03a77529f_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1><strong>Altered Craft</strong></h1><blockquote><p><em>Happy May the Fourth, and welcome back to Altered Craft&#8217;s weekly AI review for developers. Thanks for spending some of your week with /AC. One thread runs through this edition: the engineer&#8217;s role is shifting from writing code to training the apprentice. Karpathy names the discipline, Parsons argues senior engineers should move from approver to trainer, and pieces on prompts as artifacts, skill packs, and harness design all sketch what that practice looks like. The model is the apprentice, and the craft is the training.</em></p></blockquote><div><hr></div><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><h3><strong>Karpathy: From Vibe Coding to Agentic Engineering</strong></h3><p>Watch time: 30 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ktnu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ktnu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.png 424w, https://substackcdn.com/image/fetch/$s_!Ktnu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.png 848w, https://substackcdn.com/image/fetch/$s_!Ktnu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.png 1272w, https://substackcdn.com/image/fetch/$s_!Ktnu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ktnu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.png" width="468" height="270.94736842105266" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:814,&quot;width&quot;:1406,&quot;resizeWidth&quot;:468,&quot;bytes&quot;:1805568,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/196362970?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.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_!Ktnu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.png 424w, https://substackcdn.com/image/fetch/$s_!Ktnu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.png 848w, https://substackcdn.com/image/fetch/$s_!Ktnu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.png 1272w, https://substackcdn.com/image/fetch/$s_!Ktnu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5e436df-5195-4666-8dcb-1aa73ac7f19b_1406x814.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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A year after coining &#8220;vibe coding,&#8221; Andrej Karpathy argues at Sequoia&#8217;s AI Ascent 2026 that <strong><a href="https://youtu.be/96jN2OCOfLs?si=z-XiGJTWGkoYXnvR">agentic engineering is the serious discipline forming on top of it</a></strong>. He reframes LLMs as ghosts rather than animals, and explores Software 3.0 and verifiability limits.</p><p><strong>The takeaway:</strong> Treat LLMs as jagged, statistical collaborators that demand taste and judgment, not autonomous coworkers you can hand the keys to. The work is verification, not delegation.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Structured Prompt-Driven Development: Treating Prompts as First-Class Artifacts</strong></h3><p>Estimated read time: 19 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!L0EO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L0EO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png 424w, https://substackcdn.com/image/fetch/$s_!L0EO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png 848w, https://substackcdn.com/image/fetch/$s_!L0EO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png 1272w, https://substackcdn.com/image/fetch/$s_!L0EO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!L0EO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png" width="601" height="264.5885989010989" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:641,&quot;width&quot;:1456,&quot;resizeWidth&quot;:601,&quot;bytes&quot;:156157,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/196362970?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.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_!L0EO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png 424w, https://substackcdn.com/image/fetch/$s_!L0EO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png 848w, https://substackcdn.com/image/fetch/$s_!L0EO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png 1272w, https://substackcdn.com/image/fetch/$s_!L0EO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b63e0ea-a7fc-4135-bb69-58033fcea991_1812x798.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Putting that discipline into practice, Wei Zhang and Jessie Jie Xia of Thoughtworks introduce <strong><a href="https://martinfowler.com/articles/structured-prompt-driven/">Structured Prompt-Driven Development</a></strong>, treating prompts as version-controlled, reviewable artifacts. The seven-part REASONS Canvas shapes intent before generation, and one rule anchors the workflow: when reality diverges, fix the prompt first, then update the code.</p><p><strong>Key point:</strong> When AI-generated code diverges from intent, fix the prompt first, then regenerate the code, so prompts and implementation never silently drift apart.</p><h3><strong>Long-Running Agents: Beyond the Chat Window</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2WLZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2WLZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2WLZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2WLZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2WLZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2WLZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg" width="515" height="287.65090909090907" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1375,&quot;resizeWidth&quot;:515,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Long-running AI agents&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Long-running AI agents" title="Long-running AI agents" srcset="https://substackcdn.com/image/fetch/$s_!2WLZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2WLZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2WLZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2WLZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7498b73-7a4a-45ed-a6ed-3c3283663008_1375x768.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Extending agentic engineering past a single session, <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Addy Osmani&quot;,&quot;id&quot;:11623675,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef4ea1b5-28cc-4a4f-ba1e-23d91db6570d_1190x1190.png&quot;,&quot;uuid&quot;:&quot;60bc1bcb-fab6-4e20-8cb7-28c9d760c017&quot;}" data-component-name="MentionToDOM"></span> maps how AI agents evolve from chat loops into systems working across days. He names <strong><a href="https://addyosmani.com/blog/long-running-agents/">the three walls every long-running agent hits</a></strong>: finite context, no persistent state, no self-verification. Anthropic, Cursor, and Google converge on similar answers.</p><p><strong>What this enables:</strong> If you want agents that survive past a single session, push state out of the context window and into durable artifacts the next session can read.</p><h3><strong>RAG Isn&#8217;t Enough: Building the Missing Context Layer</strong></h3><p>Estimated read time: 11 min</p><p>Building on the context wall, when RAG breaks under multi-turn pressure, the failure isn&#8217;t retrieval, it&#8217;s what enters the context window. This walkthrough builds a <strong><a href="https://towardsdatascience.com/rag-isnt-enough-i-built-the-missing-context-layer-that-makes-llm-systems-work/">context engineering pipeline</a></strong> in Python, covering hybrid retrieval, re-ranking, memory decay, compression, and token budgeting with measured benchmarks.</p><p><strong>Why this matters:</strong> For multi-turn LLM systems, controlling what enters the context window matters more than improving retrieval quality. Engineering the context layer is the real leverage point.</p><h3><strong>MCP Tool Chains That Actually Finish</strong></h3><p>Estimated read time: 7 min</p><p>Shifting from context to tool design, Rui Carmo distills a year of MCP server work into design patterns for tool chains that don&#8217;t misfire. The core insight: <strong><a href="https://taoofmac.com/space/blog/2026/04/29/2341">models don&#8217;t plan, they walk breadcrumbs</a></strong>. Servers must make each next call obvious through consistent prefixes, embedded hints, and anchor-based addressing.</p><p><strong>Worth noting:</strong> If your MCP tools force the model to guess what comes next, you&#8217;ve already lost. Bake the chain into naming, responses, and addressing.</p><h3><strong>When Evaluating AI Costs More Than Building It</strong></h3><p>Estimated read time: 10 min</p><p>Following our look at the AI evaluation stack[1] from last week, this Hugging Face analysis turns to the economics of evaluation, showing how it has crossed a cost threshold that locks out independent researchers. HAL spent $40,000 on agent rollouts, PaperBench runs hit $9,500 each, and <strong><a href="https://huggingface.co/blog/evaleval/eval-costs-bottleneck">evaluation compute now exceeds training compute</a></strong> in some domains.</p><p><strong>The context:</strong> If you&#8217;re benchmarking agents, scaffold choice and reliability reruns drive cost more than model selection, so budget for the multiplier before the model.</p><p>[1] <a href="https://writing.alteredcraft.com/i/195634714/the-ai-evaluation-stack-beyond-vibe-checks-for-production-llms">The AI Evaluation Stack: Beyond Vibe Checks for Production LLMs</a></p><h2><strong>TOOLS</strong></h2><h3><strong>Warp Goes Open Source with an Agent-First Contribution Model</strong></h3><p>Estimated read time: 7 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gIgf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gIgf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png 424w, https://substackcdn.com/image/fetch/$s_!gIgf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png 848w, https://substackcdn.com/image/fetch/$s_!gIgf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png 1272w, https://substackcdn.com/image/fetch/$s_!gIgf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gIgf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png" width="589" height="368.125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:589,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram of the contribution submission flow for the open-source Warp repo, showing how ideas move from community contributors through Oz agents and Warp team review&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram of the contribution submission flow for the open-source Warp repo, showing how ideas move from community contributors through Oz agents and Warp team review" title="Diagram of the contribution submission flow for the open-source Warp repo, showing how ideas move from community contributors through Oz agents and Warp team review" srcset="https://substackcdn.com/image/fetch/$s_!gIgf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png 424w, https://substackcdn.com/image/fetch/$s_!gIgf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png 848w, https://substackcdn.com/image/fetch/$s_!gIgf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png 1272w, https://substackcdn.com/image/fetch/$s_!gIgf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408bfc2b-8113-41df-a886-1aea64b7ff00_1608x1005.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Warp&#8217;s client is now open source under AGPL, with OpenAI as founding sponsor. The notable shift is the contribution model: <strong><a href="https://www.warp.dev/blog/warp-is-now-open-source">humans supervise fleets of agents that handle implementation</a></strong> via Warp&#8217;s Oz platform. Kimi, MiniMax, and Qwen support also lands.</p><p><strong>Why now:</strong> The bottleneck in software development is shifting from writing code to specifying intent and verifying agent output, and Warp is restructuring its project around that shift.</p><h3><strong>Agent Skills: Production-Grade Workflows for AI Coding Agents</strong></h3><p>Estimated read time: 8 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9CnU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9CnU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png 424w, https://substackcdn.com/image/fetch/$s_!9CnU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png 848w, https://substackcdn.com/image/fetch/$s_!9CnU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png 1272w, https://substackcdn.com/image/fetch/$s_!9CnU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9CnU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png" width="1402" height="280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:280,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:56259,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/196362970?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.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_!9CnU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png 424w, https://substackcdn.com/image/fetch/$s_!9CnU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png 848w, https://substackcdn.com/image/fetch/$s_!9CnU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png 1272w, https://substackcdn.com/image/fetch/$s_!9CnU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84cbca94-5157-4ccb-b43b-d9ee5271c661_1402x280.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Complementing our coverage of Garry Tan&#8217;s skillify approach[1] from last week, <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Addy Osmani&quot;,&quot;id&quot;:11623675,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef4ea1b5-28cc-4a4f-ba1e-23d91db6570d_1190x1190.png&quot;,&quot;uuid&quot;:&quot;f9159eb9-1541-4451-b26a-29a98301729f&quot;}" data-component-name="MentionToDOM"></span>&#8217;s open-source pack ships 20 structured skills across the development lifecycle, built around <strong><a href="https://github.com/addyosmani/agent-skills">anti-rationalization tables and verification gates</a></strong>. It encodes practices from Software Engineering at Google and works with Claude Code, Cursor, Gemini CLI, and Copilot.</p><p><strong>The opportunity:</strong> If your AI agent keeps skipping specs, tests, and reviews, drop in opinionated skill files that force it to follow a senior engineer&#8217;s workflow.</p><p>[1] <a href="https://writing.alteredcraft.com/i/195634714/skillify-turning-agent-failures-into-permanent-fixes">Skillify: Turning Agent Failures Into Permanent Fixes</a></p><h3><strong>NVIDIA&#8217;s Nemotron 3 Nano Omni: One Model for Docs, Video, Audio, and GUIs</strong></h3><p>Estimated read time: 9 min</p><p>Shifting from agent harness to the models themselves, NVIDIA releases Nemotron 3 Nano Omni, a 30B-A3B model unifying text, images, video, and native audio in one sequence. Its <strong><a href="https://huggingface.co/blog/nvidia/nemotron-3-nano-omni-multimodal-intelligence">hybrid Mamba-Transformer-MoE backbone</a></strong> handles 100+ page documents, narrated video, and GUI screenshots with up to 9x throughput gains.</p><p><strong>What&#8217;s interesting:</strong> If your workflow mixes documents, screen recordings, and audio, a single open-weights model can now reason across all of them without stitched pipelines.</p><h3><strong>Eden AI: A European Unified API for AI Models</strong></h3><p>Estimated read time: 1 min</p><p>Also in the model access space, Eden AI provides a <strong><a href="https://www.edenai.co/">single unified API for LLMs and expert AI models</a></strong> like OCR, speech, and vision. The European platform adds smart routing, automatic fallbacks, and region-based model selection, positioning itself as an alternative to OpenRouter.</p><p><strong>When this fits:</strong> If vendor lock-in or regional compliance is a concern, Eden AI is worth evaluating as a European-based aggregator for AI model access.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><p>This week&#8217;s editorials sharpen the engineer&#8217;s role, then close on the geopolitical layer reshaping which tools and talent are reachable.</p><h3><strong>AI Should Elevate Your Thinking, Not Replace It</strong></h3><p>Estimated read time: 9 min</p><p>Koshy John argues engineers are splitting into two camps: those using AI to sharpen judgment and those using it to <strong><a href="https://www.koshyjohn.com/blog/ai-should-elevate-your-thinking-not-replace-it/">simulate competence without building it</a></strong>. Outsourcing reasoning skips the friction that forges instinct and taste, with serious implications for early-career engineers.</p><p><strong>The principle:</strong> Delegate the mechanical work to AI, but own the reasoning, because judgment is built through friction and cannot be outsourced without atrophying.</p><h3><strong>Coding With AI in 2026: From Approver to Trainer</strong></h3><p>Estimated read time: 12 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wr0L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wr0L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Wr0L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Wr0L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Wr0L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wr0L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg" width="208" height="278.78534031413614" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:382,&quot;resizeWidth&quot;:208,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Comic: a cheerful robot hoses a torrent of PR papers at an exhausted developer at a desk labelled 'CODE REVIEW', saying 'I can go faster if you like.' PRs cover the floor.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Comic: a cheerful robot hoses a torrent of PR papers at an exhausted developer at a desk labelled 'CODE REVIEW', saying 'I can go faster if you like.' PRs cover the floor." title="Comic: a cheerful robot hoses a torrent of PR papers at an exhausted developer at a desk labelled 'CODE REVIEW', saying 'I can go faster if you like.' PRs cover the floor." srcset="https://substackcdn.com/image/fetch/$s_!Wr0L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Wr0L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Wr0L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Wr0L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F349c5cdc-e1cf-421e-97d7-b93e17cddd8a_382x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Building on that judgment theme, Chris Parsons argues the serious AI coding work has moved from the IDE to the command line, and that <strong><a href="https://www.chrismdp.com/coding-with-ai/">senior engineers should train the agent rather than review every diff</a></strong>. He makes the case for harness over prompts, and specifying the problem, not the solution.</p><p><strong>Where to invest:</strong> Invest in the harness around your agent, including CLAUDE.md, skill files, and feedback loops. This is what Karpathy meant by agentic engineering as a discipline; the wrapper is the work.</p><h3><strong>You Are the Most Expensive Model</strong></h3><p>Estimated read time: 6 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Csrf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Csrf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png 424w, https://substackcdn.com/image/fetch/$s_!Csrf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png 848w, https://substackcdn.com/image/fetch/$s_!Csrf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png 1272w, https://substackcdn.com/image/fetch/$s_!Csrf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Csrf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png" width="516" height="302.65384615384613" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:854,&quot;width&quot;:1456,&quot;resizeWidth&quot;:516,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Uploaded image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Uploaded image" title="Uploaded image" srcset="https://substackcdn.com/image/fetch/$s_!Csrf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png 424w, https://substackcdn.com/image/fetch/$s_!Csrf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png 848w, https://substackcdn.com/image/fetch/$s_!Csrf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png 1272w, https://substackcdn.com/image/fetch/$s_!Csrf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e56fade-91c7-4dcc-ae56-6c1d0d2f6def_3024x1774.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Taking this further on the practical side, Mike Taylor argues routing every task through frontier models wastes money and human attention. He introduces <strong><a href="https://every.to/also-true-for-humans/you-are-the-most-expensive-model">incremental determinism</a></strong>, a method for turning repeated AI sessions into reusable skill files that offload work to cheaper subagents.</p><p><strong>Practical tip:</strong> If you&#8217;ve done a task with AI three times, turn it into a skill file backed by a cheaper subagent. Osmani&#8217;s skill pack above shows what those files look like at scale.</p><h3><strong>China Blocks Meta&#8217;s $2B Manus Deal as AI Decoupling Accelerates</strong></h3><p>Estimated read time: 6 min</p><p>Shifting from individual practice to the geopolitical layer, China has blocked Meta&#8217;s reported $2 billion acquisition of AI agent startup Manus, showing <strong><a href="https://fortune.com/2026/04/28/china-blocks-meta-manus-deal-ai/">how quickly U.S. and Chinese AI ecosystems are decoupling</a></strong>. Chinese founders now face a bind: stay home and lose U.S. capital, or redomicile and invite Beijing&#8217;s scrutiny.</p><p><strong>Heads up:</strong> Factor geopolitical risk into AI vendor decisions, because the tools and talent you rely on are increasingly shaped by export controls and investment bans.</p><div><hr></div><p>That&#8217;s the week. The shared thread across these pieces is small but durable: the engineer&#8217;s craft is moving from writing code to training the agent that writes it. <em>May the harness be with you </em>&#128521;, and see you next Monday.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Notes from building a tiny long-running agent harness]]></title><description><![CDATA[Twenty cents and a workbench for open-weights models]]></description><link>https://writing.alteredcraft.com/p/notes-from-building-a-tiny-long-running</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/notes-from-building-a-tiny-long-running</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Fri, 01 May 2026 22:16:59 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3f13a9c5-7c84-4ca9-9a21-0727f33daa8d_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1><strong>Notes from building a tiny long-running agent harness</strong></h1><p>I built <a href="https://github.com/AlteredCraft/tilth">Tilth</a> as a workbench: a ~600-line Python agent harness that runs autonomously against any OpenAI-compatible endpoint. I wanted my own mechanism for actually <em>doing work</em> with open-weights models, not just chatting with them, and I wanted to internalize the current thinking on long-running agents while I did it. Addy Osmani&#8217;s <a href="https://addyosmani.com/blog/long-running-agents/">trilogy on long-running agents</a> is a great treatment of that thinking; read it, it&#8217;s what nudged me to build this. This post is a check-in on what I learned doing it.</p><h2><strong>The architecture, distilled</strong></h2><p>Three components, independently replaceable:</p><ul><li><p><strong>Brain.</strong> A thin wrapper around the <code>openai</code> SDK pointed at any OpenAI-compatible base URL. Worker and judge can sit on different providers.</p></li><li><p><strong>Hands.</strong> A per-session git worktree, bash + file tools, allow-listed.</p></li><li><p><strong>Session.</strong> An append-only <code>events.jsonl</code> plus a checkpoint, enough to <code>wake(session_id)</code> on a fresh process.</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_!4J95!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4J95!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.png 424w, https://substackcdn.com/image/fetch/$s_!4J95!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.png 848w, https://substackcdn.com/image/fetch/$s_!4J95!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.png 1272w, https://substackcdn.com/image/fetch/$s_!4J95!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4J95!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.png" width="1424" height="1104" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1104,&quot;width&quot;:1424,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1214038,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/196167305?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.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_!4J95!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.png 424w, https://substackcdn.com/image/fetch/$s_!4J95!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.png 848w, https://substackcdn.com/image/fetch/$s_!4J95!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.png 1272w, https://substackcdn.com/image/fetch/$s_!4J95!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7c68fb4-6479-4196-8637-aa1dd169fc14_1424x1104.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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">High level architecture overview of Tilth</figcaption></figure></div><p>Four memory channels live outside the agent so context resets don&#8217;t lose state: <code>AGENTS.md</code> for learned conventions, git history for atomic commits per task, <code>progress.txt</code> as a chronological journal, <code>prd.json</code> as the task list with status flags. Each is a different <em>shape</em> of memory; drop any one and something useful collapses.</p><p>A separate <strong>judge</strong> call evaluates each finished task in a fresh context: diff plus acceptance criteria, nothing else. The adversarial split is load-bearing: don&#8217;t let the same session implement <em>and</em> judge. Workers grading their own work wave too much of it through. A different prompt with a clean window is the minimum; a different model family is better.</p><h2><strong>What I actually learned running it</strong></h2><p><strong>The judge was the best lens into the worker.</strong> Watching the worker chew through a task and then watching a fresh-context judge push back on the result, with no chain-of-thought, no tool history, just the diff, was the most enlightening signal I got. My first judge prompt was too harsh and rejecting reasonable work; tuning it was almost entirely prompt work, no code changes. That felt right. The harness shouldn&#8217;t need a redeploy to recalibrate taste.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lXfA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lXfA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.png 424w, https://substackcdn.com/image/fetch/$s_!lXfA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.png 848w, https://substackcdn.com/image/fetch/$s_!lXfA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.png 1272w, https://substackcdn.com/image/fetch/$s_!lXfA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lXfA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.png" width="1456" height="979" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.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;:961906,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/196167305?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.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_!lXfA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.png 424w, https://substackcdn.com/image/fetch/$s_!lXfA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.png 848w, https://substackcdn.com/image/fetch/$s_!lXfA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.png 1272w, https://substackcdn.com/image/fetch/$s_!lXfA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c554f0f-a1e8-48cb-8d21-0827d277c7fa_2291x1541.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A truncated snippet of the Tilth output. We see workers completing work and sending to the judge for approval.</figcaption></figure></div><p><strong>Open weights are cheap enough not to think about.</strong> After multiple end-to-end runs I&#8217;d burned <strong>five cents</strong> on OpenRouter. That&#8217;s the cost regime where you stop optimizing prompts for token count and start optimizing for the things you actually care about: clarity, recoverability, watchability.</p><p><strong>The provider stops mattering.</strong> I started against the native Ollama SDK, then noticed Ollama Cloud also exposes an OpenAI-compatible API endpoint so does basically every other provider. About 60 lines of changes later, the same harness works against Ollama Cloud, OpenRouter, Together, Groq, vLLM, LM Studio, and many more. Worker on one provider, judge on another, different env vars, no other changes. The interesting use isn&#8217;t cost. It&#8217;s <strong>independence</strong>. Different model families catch different failure modes; Cursor reported that Opus tended to declare itself done early on extended autonomous runs while GPT held out longer. The same harness lets you put one in the worker seat and the other in the judge seat without rewriting anything.</p><p>If you&#8217;ve been waiting for a better moment to actually evaluate open-weights models against your own work, this is what cheap-enough looks like. The workbench fits in ~600 lines and a worktree on your laptop.</p><h2><strong>What this isn&#8217;t</strong></h2><p>Not a managed platform. Not a fleet. Not a multi-agent system. One Ralph loop, a worktree, four files, two hooks, a judge. Some Python glue code.</p><p>It&#8217;s also not done. This is the kind of thing I expect to keep evolving as a way to poke at open-weights models with something more substantive than a chat window. If that turns out to be useful to anyone else, great. The project&#8217;s first job is to be my workbench. The repo is at <a href="https://github.com/AlteredCraft/tilth">AlteredCraft/tilth</a>; a ready-to-run example workspace lives at <a href="https://github.com/AlteredCraft/tilth-demo-todo-cli">tilth-demo-todo-cli</a>.</p>]]></content:encoded></item><item><title><![CDATA[Weekly Review: Around the Model]]></title><description><![CDATA[The week's curated tutorials, tools, and news for developers building the structures wrapped around AI models]]></description><link>https://writing.alteredcraft.com/p/weekly-review-around-the-model</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-around-the-model</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 27 Apr 2026 14:40:59 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/33e687bc-9ff4-4c8b-bafa-8d4f9e31c08c_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>Welcome to Altered Craft&#8217;s weekly AI review for developers, and thanks for spending part of your Monday with us. One thread runs through this edition: the engineering leverage in AI keeps moving outward, away from the model itself and into the harness wrapped around it. A source-level read of Claude Code finds 98.4% of the codebase isn&#8217;t AI, Anthropic&#8217;s own postmortem ties a month of regressions to small infra changes, and pieces on AGENTS.md, skills, evals, and multi-agent patterns all push the same direction.</em></p></blockquote><div><hr></div><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><h3><strong>What Actually Makes an AGENTS.md File Work</strong></h3><p>Estimated read time: 9 min</p><p>Augment Code measured dozens of AGENTS.md files and found a quality gap <strong><a href="https://www.augmentcode.com/blog/how-to-write-good-agents-dot-md-files">equivalent to upgrading from Haiku to Opus</a></strong>. Progressive disclosure, decision tables, and pairing every &#8220;don&#8217;t&#8221; with a &#8220;do&#8221; win. Sprawling overviews and warning-heavy docs trigger context rot.</p><p><strong>The takeaway:</strong> Keep <code>AGENTS.md</code> to 100-150 lines of focused guidance with reference files loaded on demand, and pair every prohibition with a concrete alternative.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Skillify: Turning Agent Failures Into Permanent Fixes</strong></h3><p>Estimated read time: 11 min</p><p>Taking agent reliability further, Garry Tan argues most AI agent reliability work is &#8220;vibes-based&#8221; prompt tweaking that decays under complexity. His answer: <strong><a href="https://x.com/garrytan/status/2046876981711769720?s=46">skillify, a 10-step practice that promotes every failure into durable infrastructure</a></strong> with deterministic scripts, tests, LLM evals, and resolver routing audits.</p><p><strong>Why this matters:</strong> When your agent fails, don&#8217;t apologize-prompt it; turn the failure into a skill with deterministic code and tests so the bug becomes structurally impossible to repeat.</p><h3><strong>The AI Evaluation Stack: Beyond Vibe Checks for Production LLMs</strong></h3><p>Estimated read time: 10 min</p><p>Moving from preventing failures to detecting them, Microsoft&#8217;s Derah Onuorah lays out a two-layer evaluation architecture for enterprise LLMs: deterministic schema asserts first, LLM-as-a-Judge second. The piece details offline golden datasets and online telemetry tracking <strong><a href="https://venturebeat.com/infrastructure/monitoring-llm-behavior-drift-retries-and-refusal-patterns">refusal rates, retries, and apology patterns</a></strong> to catch silent model drift.</p><p><strong>What this enables:</strong> Treat evaluation as a CI/CD-gated pipeline with fail-fast deterministic checks before expensive semantic scoring, then instrument production for the behavioral signals that reveal silent drift.</p><h3><strong>The Over-Editing Problem: When AI Coding Tools Rewrite Too Much</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wv3_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wv3_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png 424w, https://substackcdn.com/image/fetch/$s_!wv3_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png 848w, https://substackcdn.com/image/fetch/$s_!wv3_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png 1272w, https://substackcdn.com/image/fetch/$s_!wv3_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wv3_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png" width="601" height="320.9838369641602" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:760,&quot;width&quot;:1423,&quot;resizeWidth&quot;:601,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Over-editing problem&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Over-editing problem" title="Over-editing problem" srcset="https://substackcdn.com/image/fetch/$s_!wv3_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png 424w, https://substackcdn.com/image/fetch/$s_!wv3_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png 848w, https://substackcdn.com/image/fetch/$s_!wv3_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png 1272w, https://substackcdn.com/image/fetch/$s_!wv3_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f6d9427-db13-4829-bfdb-910f2828c19c_1423x760.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Drilling into a specific failure mode evaluation should catch, this investigation measures how often frontier LLMs rewrite more than a bug fix requires, a <strong><a href="https://nrehiew.github.io/blog/minimal_editing/">brown-field failure invisible to test suites</a></strong>. Benchmarking 9 models, the author finds reasoning modes amplify over-editing, but explicit prompting and targeted fine-tuning yield faithful, minimal edits.</p><p><strong>Worth trying:</strong> Adding &#8220;preserve the original code as much as possible&#8221; to your prompt measurably shrinks AI-generated diffs and often improves correctness too.</p><h3><strong>Using a Local LLM as a Zero-Shot Classifier</strong></h3><p>Estimated read time: 9 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NGMu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NGMu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NGMu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NGMu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NGMu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NGMu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg" width="533" height="290.6607142857143" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:533,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A hand-drawn style diagram showing how an LLM zero-shot classifier works. Messy, unstructured \&quot;Input Text\&quot; on the left flows into a central funnel, which then sorts the data into neat \&quot;Bucketed classifications\&quot; on the right, represented by categorized folders, a keyword bucket, and an action item diagram.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn style diagram showing how an LLM zero-shot classifier works. Messy, unstructured &quot;Input Text&quot; on the left flows into a central funnel, which then sorts the data into neat &quot;Bucketed classifications&quot; on the right, represented by categorized folders, a keyword bucket, and an action item diagram." title="A hand-drawn style diagram showing how an LLM zero-shot classifier works. Messy, unstructured &quot;Input Text&quot; on the left flows into a central funnel, which then sorts the data into neat &quot;Bucketed classifications&quot; on the right, represented by categorized folders, a keyword bucket, and an action item diagram." srcset="https://substackcdn.com/image/fetch/$s_!NGMu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NGMu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NGMu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NGMu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27090b66-375c-4c1a-bb6e-b835b4910672_2560x1396.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Stepping outside coding workflows, when clustering fails on short, paraphrase-heavy text, a locally hosted LLM steps in as a <strong><a href="https://towardsdatascience.com/using-a-local-llm-as-a-zero-shot-classifier/">zero-shot classifier that understands meaning</a></strong>. The author walks through an Ollama pipeline that turns thousands of free-text annotations into a clean taxonomy without labels.</p><p><strong>The opportunity:</strong> When you have domain knowledge but no labels, define categories upfront and let a local LLM handle the classification without a training cycle.</p><h2><strong>TOOLS</strong></h2><h3><strong>GPT-5.5 Lands: Agentic Coding, Computer Use, and Research Workflows Level Up</strong></h3><p>Estimated read time: 9 min</p><p>OpenAI releases GPT-5.5 as <strong><a href="https://openai.com/index/introducing-gpt-5-5/">a step toward agentic work that plans, uses tools, and persists through ambiguity</a></strong>. It hits 82.7% on Terminal-Bench 2.0, 78.7% on OSWorld-Verified, and uses fewer tokens than GPT-5.4 while matching its latency.</p><p><strong>What&#8217;s interesting:</strong> For engineers delegating multi-step work to agents, GPT-5.5&#8217;s token efficiency and long-horizon focus are worth testing against your current Codex and Cursor workflows.</p><h3><strong>Kimi K2.6: Open-Source Model Ships with Agent Swarms and Long-Horizon Coding</strong></h3><p>Estimated read time: 12 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jkEA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jkEA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png 424w, https://substackcdn.com/image/fetch/$s_!jkEA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png 848w, https://substackcdn.com/image/fetch/$s_!jkEA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png 1272w, https://substackcdn.com/image/fetch/$s_!jkEA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jkEA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png" width="471" height="253.68361581920905" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:572,&quot;width&quot;:1062,&quot;resizeWidth&quot;:471,&quot;bytes&quot;:77085,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/195634714?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.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_!jkEA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png 424w, https://substackcdn.com/image/fetch/$s_!jkEA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png 848w, https://substackcdn.com/image/fetch/$s_!jkEA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png 1272w, https://substackcdn.com/image/fetch/$s_!jkEA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46cc131b-694a-498f-8f5b-614039bb6f50_1062x572.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>On the open-source side of that release wave, Moonshot AI ships Kimi K2.6, featuring <strong><a href="https://www.kimi.com/blog/kimi-k2-6">agent swarms scaling to 300 sub-agents</a></strong> across 4,000 coordinated steps. It sustains 12+ hour autonomous coding sessions and benchmarks competitively against GPT-5.4, Claude Opus 4.6, and Gemini 3.1 Pro on agentic tasks.</p><p><strong>Worth evaluating:</strong> If you&#8217;re building agentic coding workflows, K2.6&#8217;s open-source availability and competitive benchmarks against frontier closed-source models make it a real option for long-running autonomous tasks.</p><h3><strong>DeepSeek-V4 Lands With 1M Context as Default</strong></h3><p>Estimated read time: 3 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jL_U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jL_U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png 424w, https://substackcdn.com/image/fetch/$s_!jL_U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png 848w, https://substackcdn.com/image/fetch/$s_!jL_U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png 1272w, https://substackcdn.com/image/fetch/$s_!jL_U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jL_U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png" width="530" height="364.1296296296296" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1080,&quot;resizeWidth&quot;:530,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jL_U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png 424w, https://substackcdn.com/image/fetch/$s_!jL_U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png 848w, https://substackcdn.com/image/fetch/$s_!jL_U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png 1272w, https://substackcdn.com/image/fetch/$s_!jL_U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0f2add-1fed-44be-a62f-850c68fbc9ac_1080x742.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Continuing the open-weights momentum, DeepSeek released V4-Pro and V4-Flash, with <strong><a href="https://api-docs.deepseek.com/news/news260424">1M context now standard across all services</a></strong>. The release introduces DeepSeek Sparse Attention for efficiency, claims SOTA on agentic coding among open models, and supports both OpenAI and Anthropic API formats.</p><p><strong>Worth noting:</strong> With OpenAI and Anthropic API compatibility, V4-Flash slots in as a lower-cost drop-in alternative worth benchmarking against your current provider on real workloads.</p><h3><strong>Gemini Embedding 2 Hits General Availability with Native Multimodal Support</strong></h3><p>Estimated read time: 1 min</p><p>Shifting from generation to retrieval, Google announces <strong><a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-embedding-2-generally-available/">general availability of Gemini Embedding 2</a></strong> via the Gemini API and Vertex AI. The model produces native embeddings across text, image, video, and audio, eliminating fragmented pipelines multimodal search previously required. Preview-phase prototypes can now move to production.</p><p><strong>Why now:</strong> If you&#8217;ve been waiting to ship multimodal search or retrieval features, Gemini Embedding 2 is now production-ready on both the Gemini API and Vertex AI.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><h3><strong>Inside Claude Code: 98.4% of the Codebase Isn&#8217;t AI</strong></h3><p>Estimated read time: 18 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fkj3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fkj3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png 424w, https://substackcdn.com/image/fetch/$s_!fkj3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png 848w, https://substackcdn.com/image/fetch/$s_!fkj3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png 1272w, https://substackcdn.com/image/fetch/$s_!fkj3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fkj3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png" width="1456" height="531" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:531,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;High-level system structure of Claude Code&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="High-level system structure of Claude Code" title="High-level system structure of Claude Code" srcset="https://substackcdn.com/image/fetch/$s_!fkj3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png 424w, https://substackcdn.com/image/fetch/$s_!fkj3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png 848w, https://substackcdn.com/image/fetch/$s_!fkj3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png 1272w, https://substackcdn.com/image/fetch/$s_!fkj3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48cb0ddd-6968-4c37-87fd-ef6f1d1e4241_3855x1405.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A source-level analysis of Claude Code&#8217;s ~512K lines reveals <strong><a href="https://github.com/VILA-Lab/Dive-into-Claude-Code">only 1.6% is AI decision logic</a></strong>. The rest is deterministic infrastructure: permission gates, context compaction, and recovery systems. The repo maps seven safety layers with shared failure modes and distills findings into actionable agent-building guidance.</p><p><strong>Where to invest:</strong> If you&#8217;re building AI agents, put your engineering effort into the harness &#8212; permission systems, context management, and recovery logic &#8212; not the model loop itself.</p><h3><strong>Anthropic&#8217;s Postmortem on Claude Code Degradation</strong></h3><p>Estimated read time: 9 min</p><p>Following our coverage of the Claude Code degradation debate[1] last week, Anthropic&#8217;s postmortem now traces a month of regressions to <strong><a href="https://www.anthropic.com/engineering/april-23-postmortem">three overlapping changes in reasoning defaults, cache eviction, and system prompts</a></strong>. The issues compounded across traffic slices, evading internal evals, tests, and dogfooding until user reports surfaced them.</p><p><strong>Key point:</strong> When AI-coding tools start feeling &#8220;off,&#8221; trust the pattern in user reports, since small prompt and caching tweaks can quietly erode quality in ways evals miss.</p><p>[1] <a href="https://writing.alteredcraft.com/i/194745904/claude-probably-wasnt-secretly-nerfed-but-the-product-changed-anyway">Claude Probably Wasn&#8217;t Secretly Nerfed &#8212; But the Product Changed Anyway</a></p><h3><strong>Five Coordination Patterns for Multi-Agent Systems</strong></h3><p>Estimated read time: 12 min</p><p>Zooming out from a single agent harness to multi-agent design, Anthropic breaks down five multi-agent coordination patterns, examining where each shines and where each breaks. The piece argues for <strong><a href="https://claude.com/blog/multi-agent-coordination-patterns">starting with the simplest pattern that could work</a></strong> and evolving as constraints appear, rather than reaching for sophistication teams mistake for real capability.</p><p><strong>The decision rule:</strong> Choose your multi-agent pattern based on context boundaries and information flow, not on what sounds impressive in a design doc.</p><h3><strong>The Hidden Cost Curve Behind AI Agent Progress</strong></h3><p>Estimated read time: 9 min</p><p>Zooming further out to the economics of running these systems, Toby Ord examines METR&#8217;s time-horizon benchmarks and asks a question few are: <strong><a href="https://www.tobyord.com/writing/hourly-costs-for-ai-agents">how is the hourly cost of AI agents changing over time</a></strong>? Analyzing performance-versus-cost curves, he finds hourly costs rising exponentially, with frontier models approaching human engineer rates.</p><p><strong>The context:</strong> Headline AI capability trends may overstate practical progress, so plan deployments around sweet-spot costs on the curve, not peak frontier performance.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Rise of Ephemeral Interfaces]]></title><description><![CDATA[Show me a visual for this moment: what's possible now, what's still rough, and what it means for how you build]]></description><link>https://writing.alteredcraft.com/p/the-rise-of-ephemeral-interfaces</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/the-rise-of-ephemeral-interfaces</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Thu, 23 Apr 2026 12:17:20 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ec08eb1f-4612-49fc-9b41-5539d794e8d8_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The announcement came through the usual channel. Anthropic had shipped a new feature: Claude could now generate <a href="https://support.claude.com/en/articles/13979539-custom-visuals-in-chat">custom visuals inline in chat</a>. I read the support article, skimmed the examples, and closed the tab. Then I sat with a question I hadn&#8217;t expected.</p><p>What are UIs actually for? What problem are they solving?</p><p>I know the answers. I&#8217;ve given them for most of my career. Making software usable. Giving users a way to interact with a system. Translating data into shapes humans can read. Every answer is true. Every answer was also built on a single constraint: humans couldn&#8217;t talk to software, and software couldn&#8217;t talk back. That constraint is lifting. Now they can ask something in front of them to read the database for them.</p><p>I spent the next couple of weeks paying attention to my own Claude sessions. And the thing that kept surfacing wasn&#8217;t &#8220;apps are dying.&#8221; <a href="https://techcrunch.com/2026/03/18/nothing-ceo-carl-pei-says-smartphone-apps-will-disappear-as-ai-agents-take-their-place/">Carl Pei of Nothing gave that line its loudest version</a> in March; it has been thoroughly answered since, mostly by people selling something. What kept surfacing was narrower and stranger: many of the interfaces I&#8217;d always assumed had to exist were compromises I&#8217;d stopped noticing, because I&#8217;d grown up inside them.</p><h2><strong>The translation layer</strong></h2><div class="paywall-jump" data-component-name="PaywallToDOM"></div><p>This isn&#8217;t one vendor&#8217;s bet. Vercel shipped <a href="https://v0.app/">v0</a> two years ago and open-sourced <a href="https://vercel.com/blog/announcing-v0-generative-ui">json-render</a>, (enabling inline rendering), earlier this year. Google Research is generating UI inside Gemini and Search. Several labs are converging on the same shape from different angles, which is the moment to stop and ask a first-principles question about why.</p><p>Here is the thing about UIs that hides in plain sight. Every button, every form field, every dashboard, every chart, every navigation menu you&#8217;ve ever built is a translation device. It exists because on one side there&#8217;s a system with a state, and on the other side there&#8217;s a human who can&#8217;t speak the language that system speaks. The UI is the bridge. It translates intent into queries, and it translates results into shapes a human can absorb.</p><p>For most of the history of software, building a unique translation device per person was impossible. So we built one bridge per problem and optimized it for &#8220;most people.&#8221; The quotes there are doing real work. Most people is not a person. It&#8217;s a statistical construction, a composite of the users we had data about, weighted by the ones paying us, shaped by assumptions about what a typical interaction looks like. Every UI decision I ever made in a product meeting was a negotiation about which compromises would land where in that distribution. We called it product work. What it actually was, in the structural sense, was deciding whose experience to make worse so that the middle got served.</p><p>The compromise was always worst for users furthest from the averaged middle. Research on LLM-driven interfaces for blind users is starting to make the gap measurable. A recent paper describes an LLM powered system called <a href="https://arxiv.org/html/2407.19537v2">Savant</a> that lets screen reader users access application controls through natural language, reporting usability scores about three times higher and access about four times faster than conventional screen readers. One paper isn&#8217;t the last word, and these baselines deserve scrutiny. But the direction is hard to miss. The work is early. The direction is not.</p><p>When the interface can adapt to the human instead of the other way around, the averaged compromise starts to close. Not just for edge users. For everyone.</p><p>Across every system I shipped, the interface was the most visible expression of the thing being built, and I treated that visibility as a given. Of course a reporting system had a dashboard. Of course a configuration tool had a form. Of course a feed had a reader. We knew the interface was a compromise. Until recently, there was no alternative to a static UI, so the compromise didn&#8217;t look like a decision worth revisiting.</p><p>Any given static UI is a compromise. Not &#8220;apps are bad,&#8221; not &#8220;apps are dying,&#8221; just that the thing we built because we had to was never neutral, and the reason we built it is getting weaker by the month.</p><h2><strong>Two afternoons</strong></h2><p>Two moments stuck with me, on two different days, each time with a different question about the same piece of data. The data was constant. The question was the variable. What came back each time was different in a way I want to describe carefully.</p><p>The first time I deliberately poked at the new feature, I was looking at the Claude Code changelog. Anthropic publishes it as an RSS feed, which is convenient because it&#8217;s structured data a model can parse without drama. I typed something roughly like: there&#8217;s a feed at this URL, build me a little visual to show the latest entries.</p><p>What came back, rendered inline in the same chat window, was a card-based reader for the most recent releases, version-stamped, with expandable details for each one. It was fine. Not striking. It did approximately what I&#8217;d have designed if I&#8217;d been forced to sit at a whiteboard for thirty seconds and make decisions. If I&#8217;m honest, the visual itself was the less interesting half of the response.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CI_5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CI_5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png 424w, https://substackcdn.com/image/fetch/$s_!CI_5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png 848w, https://substackcdn.com/image/fetch/$s_!CI_5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png 1272w, https://substackcdn.com/image/fetch/$s_!CI_5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CI_5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png" width="696" height="1170" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1170,&quot;width&quot;:696,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:191124,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/195172108?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.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_!CI_5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png 424w, https://substackcdn.com/image/fetch/$s_!CI_5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png 848w, https://substackcdn.com/image/fetch/$s_!CI_5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png 1272w, https://substackcdn.com/image/fetch/$s_!CI_5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc35d9e-64e3-4dea-b4ad-bfbe9103f80a_696x1170.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">In session render UI, with reflection from agent</figcaption></figure></div><p>The interesting half came after the reader. Without being asked, Claude followed the visual with a short note on which of the recent releases might be relevant to my work on AlteredCraft. It flagged a couple of specific changes by tag and by reasoning I could check:</p><blockquote><p><em>The pace is pretty wild, Sam. A few things that might be relevant to your world: the new </em><code>/team-onboarding</code><em> command (v2.1.101) could be interesting content for AlteredCraft, the </em><code>NO_FLICKER</code><em> alt-screen mode has been getting a lot of fixes which suggests it&#8217;s becoming the default path, and there&#8217;s been a significant security hardening push across Bash tool permissions over the last several releases. The Bedrock/Vertex setup wizards also signal Anthropic leaning harder into enterprise self-serve.</em></p></blockquote><p>I didn&#8217;t ask for the personalized part. I asked for &#8220;a little visual to show me the latest entries.&#8221; The part where it contextualized each release against my specific work wasn&#8217;t in my prompt. It came from the model knowing who was asking. The reader was generic. The framing around it was personal. And the framing was the thing I actually came to the conversation for. What I&#8217;d asked for was an ephemeral interface. What I got was that plus ephemeral context: reasoning about the content, framed for the person asking, assembled just-in-time.</p><p>No changelog reader in any app store, no RSS tool, no developer dashboard has ever contextualized a release against my specific work. The audience for &#8220;which of these changes matters for your newsletter about developer tools&#8221; is one. It turns out today one is enough.</p><p>A few days later I was back with a different kind of question about the same data. Not &#8220;show me what&#8217;s in here&#8221; but &#8220;show me what&#8217;s happening across it.&#8221; I asked whether Claude could build analytics on the feed. Trends. Composition of bug fixes versus features. Release cadence. Something a person trying to understand the shape of a project would want to see.</p><p>It took a minute. I&#8217;ll come back to that. When it finished, I had a multi-chart dashboard sitting in the conversation. Changes per release grouped by category. A composition donut. Release cadence as days between ships. A fix-versus-feature trend line. Cumulative shipped by version. Underneath the charts, prose analysis of what each one was showing, including honest observations like &#8220;bug fixes dominate&#8221; and a cadence number I could sanity-check against the feed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V5rH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V5rH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png 424w, https://substackcdn.com/image/fetch/$s_!V5rH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png 848w, https://substackcdn.com/image/fetch/$s_!V5rH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png 1272w, https://substackcdn.com/image/fetch/$s_!V5rH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V5rH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png" width="716" height="1698" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1698,&quot;width&quot;:716,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:236341,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/195172108?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.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_!V5rH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png 424w, https://substackcdn.com/image/fetch/$s_!V5rH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png 848w, https://substackcdn.com/image/fetch/$s_!V5rH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png 1272w, https://substackcdn.com/image/fetch/$s_!V5rH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F674ddb64-bc6a-4a3a-ad33-e254dc33152f_716x1698.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">In session rendered analytics dashboard</figcaption></figure></div><p>I sat with it. I&#8217;d asked the same data a different question and gotten a completely different interface back. The first one was a reader because I wanted to read. This one was an analytical surface because I wanted to analyze. Same underlying feed, same conversation. Neither existed five minutes earlier. They were each built in real time, without a human designing or coding them, shaped to match what I was trying to learn at that moment. When the conversation moved on, they went away.</p><p>Two afternoons, same data, different questions, different interfaces. Neither was designed by anyone. In the first case, the interface went further than the question, because the model knew who was asking. No product team could justify building a feature that specific. The audience was one, and one was enough.</p><h2><strong>Ephemeral interfaces</strong></h2><p>What I&#8217;m describing isn&#8217;t an app with an agent bolted inside it. Notion with <a href="https://www.notion.com/releases/2026-01-20">Claude, GPT, and Gemini embedded in the workspace</a>. Atlassian&#8217;s <a href="https://www.atlassian.com/software/rovo">Rovo</a> across Jira and Confluence. Those apps are narrowing, not dying. The static interface was still designed in advance for a composite user, and the agent works inside it.</p><p>An ephemeral interface is generated for this user, for this question, for this moment, out of data the model has access to, and stops existing when the conversation moves on. It has no lifecycle cost. Nobody maintains it. Nobody argues about its design in a standup. It doesn&#8217;t exist in a roadmap. It exists for as long as the question exists, and the question is the thing with the actual half-life.</p><p>&#8220;Ephemeral&#8221; is the best label I&#8217;ve got. What matters is the shape, not the word. The shape is: the interface is downstream of the question, not upstream of it. Apps were upstream. Somebody decided what the interface would look like before anybody asked a question, and then every question had to fit through that interface. Ephemeral interfaces reverse the relationship. The question comes first. The interface is a consequence.</p><h2><strong>The infancy question</strong></h2><p>Ephemeral interfaces are in their infancy. Everything I&#8217;ve described above has real limits today, and I don&#8217;t want any of them hidden.</p><p>Latency is the obvious one. Google Research, which is shipping a version of this in <a href="https://research.google/blog/generative-ui-a-rich-custom-visual-interactive-user-experience-for-any-prompt/">Gemini and Search</a>, admits in its own write-up that generation can exceed a minute. My analytics dashboard was pushing that limit. If you expect an interface to appear in a hundred milliseconds, a fifty-second render is going to feel broken.</p><p>Durability is the concern that shows up fastest. Once a view works, users don&#8217;t want to re-describe it tomorrow. An <a href="https://www.infoworld.com/article/4110010/generative-ui-the-ai-agent-is-the-front-end.html">InfoWorld piece</a> on generative UI names this as the central objection to ephemeral interfaces. Fair. The analytics dashboard from earlier fit the pattern: useful the first time, annoying to re-describe a few days later when I wanted the charts with fresh data.</p><p>The answer isn&#8217;t the user&#8217;s job. It&#8217;s yours. Prompt patterns are product signal. If the same shape of question is showing up repeatedly across your user base, that&#8217;s a pattern that deserves a durable surface. Instrumenting prompts is not much different from instrumenting clicks; the data is just upstream of the UI instead of downstream of it. When a pattern is load-bearing for a meaningful slice of users, have the agent one-shot it as a small, self-contained app. The cost of writing that code used to be measured in days; it is now measured in seconds.</p><p>Here is the RSS backed release-cadence view from earlier, one-shot into a standalone app:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uueI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uueI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png 424w, https://substackcdn.com/image/fetch/$s_!uueI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png 848w, https://substackcdn.com/image/fetch/$s_!uueI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png 1272w, https://substackcdn.com/image/fetch/$s_!uueI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uueI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png" width="1456" height="1639" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1639,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:281263,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/195172108?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.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_!uueI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png 424w, https://substackcdn.com/image/fetch/$s_!uueI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png 848w, https://substackcdn.com/image/fetch/$s_!uueI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png 1272w, https://substackcdn.com/image/fetch/$s_!uueI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc92cb626-1c39-44ab-bc56-85d18a4082aa_1556x1752.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One-shotted &#8216;app&#8217; version of analytics dashboard</figcaption></figure></div><p>Familiarity you chose from signal, not familiarity inherited from spec. It is now code, and code is durable.</p><p>Reliability is the bigger one. Generated interfaces can misread the data, choose the wrong chart for it, or in the worst case surface a number that looks authoritative and is quietly wrong. A hallucinated statistic inside a clean dashboard is more dangerous than a hallucinated paragraph, because the clean layout makes the number look verified. You still have to check everything. Anybody telling you otherwise is selling something.</p><p>There&#8217;s a productive tension in where this argument lands. In a piece about static UIs being compromises, the current answer to reliability is, for the moment, having the agent generate static code. The same mechanism that made the view durable makes it reliable: code is auditable, deterministic, the same chart every time. That&#8217;s the pellet-to-laser-beam shift. It&#8217;s also still an interim answer. Research on verifiable generative models continues: Energy-Based Models assigning consistency scores to partial outputs (<a href="https://logicalintelligence.com/kona-ebms-energy-based-models">Logical Intelligence&#8217;s Kona</a>), formal verification of LLM-generated code (<a href="https://arxiv.org/html/2507.13290v1">recent work at 83% verification on code tasks</a>). The frontier is moving.</p><p>Cost is real. Each interaction spends tokens, and analytics-heavy views spend more. The economics work for individual interactions. They don&#8217;t work for every user of every product all the time, yet.</p><p>Determinism is non-negotiable in workflows where the same question has to produce the same answer every time. Regulated industries, safety-critical systems, anything where an auditor will eventually ask &#8220;why did this show that.&#8221; Generated UIs don&#8217;t yet give you that guarantee, and pretending they do would be irresponsible. Those apps aren&#8217;t going anywhere.</p><p>Latency is also partly being sidestepped. Not for interactive surfaces. Sub-second response is still the bar there. But for longer-running generations, the pattern is shifting from &#8220;interface appears now&#8221; to &#8220;interface arrives when ready.&#8221; <a href="https://www.the-ai-corner.com/p/claude-managed-agents-guide-2026">Managed Agents</a> and <a href="https://claude.com/blog/introducing-routines-in-claude-code">Routines</a> codify this: kick off a task, walk away, come back to a result. A fifty-second render is friction only if you&#8217;re staring at a progress bar. Plenty of workflows are already fine with async; more are about to be.</p><p>Chart the last eighteen months of model capability against the list of rough edges above. The curve is not ambiguous. I am not going to put a date on when ephemeral interfaces become a viable pattern for everyday analytical work. I don&#8217;t know. The direction is clear and the rate of change is clear, and the honest answer to &#8220;when&#8221; is &#8220;soon enough that you should start building toward it now.&#8221;</p><h2><strong>The assignment</strong></h2><p>If you build software for a living, start with a question about the people you build for. For each thing a user comes to your system to accomplish, is a fixed, designed-in-advance interface the best response? Or does the right shape depend on what they&#8217;re asking?</p><p>Much of what you&#8217;re building is probably fine. An onboarding wizard, a checkout page, a settings panel. These are cases where a fixed interface is the right answer. The exercise is narrower. It&#8217;s about the surfaces where the shape of the interface should have been a consequence of what the user was asking, but you built it in advance anyway because you had to.</p><p>Look at every surface you ship and ask two things about it. First, is this a translation layer, or is it something more? A form that collects data, a chart that visualizes it, a filter that slices it. Those are translation layers. A workflow that enforces a policy, a collaboration surface that holds shared state, a payment flow that has to be auditable. Those are not. Second, for the surfaces that are translation layers, how many people are on the other side asking the same question the same way? If the answer is &#8220;a hundred thousand with the same job,&#8221; build the app. If the answer is &#8220;forty teams with forty different angles,&#8221; you are looking at a candidate.</p><p>The interesting question isn&#8217;t whether apps are dying. Apps are narrowing. The interesting question is which of your interfaces stop being apps this quarter, which ones stop being apps a year from now, and which ones never will. The ones that never will are worth defending clearly, because they are probably the ones where your product actually lives. Everything else is a translation layer you were building because the alternative didn&#8217;t exist yet. And the alternative, in its infancy, rough edges and all, is in front of you now.</p><p>The work doesn&#8217;t disappear. It moves up-stack. When the cost of generating an interface collapses, the craft shifts from drawing surfaces to judging which ones deserve to exist. &#8220;How do I build this?&#8221; is increasingly a model&#8217;s question. &#8220;Should this be built?&#8221; is still yours.</p><p>Stop building translation layers for problems that don&#8217;t need one. That is much of the assignment. The rest is noticing which ones don&#8217;t, and that part is on you.</p>]]></content:encoded></item><item><title><![CDATA[Weekly Review: Beneath the Model Name]]></title><description><![CDATA[The week's curated tutorials, tools, and news for developers working beneath the model layer]]></description><link>https://writing.alteredcraft.com/p/weekly-review-beneath-the-model-name</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-beneath-the-model-name</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 20 Apr 2026 12:20:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/423cd3e1-d873-444e-a04f-d3e34d77929c_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>Welcome back to Altered Craft&#8217;s weekly AI review for developers. It means a lot that you keep returning to these Monday notes. Claude Opus 4.7 lands this edition, but it doesn&#8217;t arrive clean: cache TTL shortens, tokenizer costs rise, and Claude Code defaults shift beneath the same model name. Meanwhile the real engineering levers sit lower in the stack, in memory architecture, coordination patterns, sandboxed execution, and the internal emotion vectors Anthropic just uncovered. &#8220;Same model&#8221; isn&#8217;t the same product, and the product isn&#8217;t where the leverage lives.</em></p></blockquote><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><h3><strong>A Practical Guide to Memory Architecture for Autonomous LLM Agents</strong></h3><p>Estimated read time: 14 min</p><p>Zooming into a component from our coverage of Akshay Pachaar&#8217;s agent harness anatomy[1] last week, Nick Lawson maps a formal survey on LLM agent memory against his own multi-agent systems, arguing <strong><a href="https://towardsdatascience.com/a-practical-guide-to-memory-for-autonomous-llm-agents/">the memory gap outweighs the model gap</a></strong>. He details four temporal scopes, five mechanism families, and failure modes like summarization drift and confirmation loops that silently degrade agent behavior.</p><p><strong>The takeaway:</strong> Start with explicit temporal memory scopes, invest in the management step (not just write and read), and keep raw episodic records so summaries can&#8217;t silently drift from reality.</p><p>[1] <a href="https://writing.alteredcraft.com/i/194015810/the-agent-harness-a-12-component-anatomy-of-what-actually-makes-llm-agents-work">The Agent Harness: A 12-Component Anatomy of What Actually Makes LLM Agents Work</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Five Multi-Agent Coordination Patterns: When to Use Each and Where They Break</strong></h3><p>Estimated read time: 12 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1GFO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1GFO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png 424w, https://substackcdn.com/image/fetch/$s_!1GFO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png 848w, https://substackcdn.com/image/fetch/$s_!1GFO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png 1272w, https://substackcdn.com/image/fetch/$s_!1GFO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1GFO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png" width="571" height="321.3172727272727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:619,&quot;width&quot;:1100,&quot;resizeWidth&quot;:571,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1GFO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png 424w, https://substackcdn.com/image/fetch/$s_!1GFO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png 848w, https://substackcdn.com/image/fetch/$s_!1GFO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png 1272w, https://substackcdn.com/image/fetch/$s_!1GFO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6312e86-d92e-4cb7-806e-10edecddf102_1100x619.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Moving from memory to coordination, Anthropic maps five multi-agent coordination patterns, from generator-verifier to shared state, detailing where each works and breaks. The guide emphasizes <strong><a href="https://claude.com/blog/multi-agent-coordination-patterns">starting with the simplest pattern that could work</a></strong> and evolving based on context boundaries and information flow rather than sophistication.</p><p><strong>Key point:</strong> Match the pattern to how context flows between agents: orchestrator-subagent for short bounded tasks, agent teams for sustained work, shared state when agents build on each other&#8217;s findings.</p><h3><strong>Anthropic&#8217;s Guide to Getting the Most Out of Claude Opus 4.7 in Claude Code</strong></h3><p>Estimated read time: 6 min</p><p>Bringing that thinking down to a single agent, Anthropic shares tuning guidance for Opus 4.7 in Claude Code. The key shift: <strong><a href="https://claude.com/blog/best-practices-for-using-claude-opus-4-7-with-claude-code">delegate like you would to a capable engineer</a></strong>, front-loading context in one turn and using the new xhigh effort default for stronger results with fewer tokens.</p><p><strong>What this enables:</strong> Specify your full task up front in one turn, keep effort at xhigh, and let Opus 4.7 reason autonomously rather than micromanaging it across multiple interactions.</p><h3><strong>Building a Sandboxed Code Migration Agent with OpenAI&#8217;s Agents SDK</strong></h3><p>Estimated read time: 18 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UJzn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UJzn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg 424w, https://substackcdn.com/image/fetch/$s_!UJzn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg 848w, https://substackcdn.com/image/fetch/$s_!UJzn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg 1272w, https://substackcdn.com/image/fetch/$s_!UJzn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UJzn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg" width="499" height="280.3370786516854" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:267,&quot;resizeWidth&quot;:499,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Agents SDK harness running outside a swappable sandbox&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Agents SDK harness running outside a swappable sandbox" title="Agents SDK harness running outside a swappable sandbox" srcset="https://substackcdn.com/image/fetch/$s_!UJzn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg 424w, https://substackcdn.com/image/fetch/$s_!UJzn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg 848w, https://substackcdn.com/image/fetch/$s_!UJzn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg 1272w, https://substackcdn.com/image/fetch/$s_!UJzn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92407703-c51f-4a9e-8b15-3d65aa32cdb4_960x540.svg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Taking single-agent guidance into a production architecture, OpenAI&#8217;s cookbook shows how to <strong><a href="https://developers.openai.com/cookbook/examples/agents_sdk/sandboxed-code-migration/sandboxed_code_migration_agent">run a code migration agent inside isolated sandboxes while keeping orchestration on the trusted host</a></strong>. Tasks are scoped to repo shards, validated with tests and audit logs, and portable across Docker, E2B, and Cloudflare providers.</p><p><strong>Why this matters:</strong> Separating orchestration from execution keeps credentials on the host side and generated code in disposable, scoped sandboxes, a pattern you can adapt to almost any agent workflow.</p><h2><strong>TOOLS</strong></h2><h3><strong>Claude Code Routines: Schedule, Trigger, and Automate Your Dev Workflows</strong></h3><p>Estimated read time: 4 min</p><p>Anthropic introduces <strong><a href="https://claude.com/blog/introducing-routines-in-claude-code">routines in Claude Code</a></strong>, configurable automations that run on a schedule, via API, or on GitHub events. With built-in repo access and connectors, routines handle backlog triage, deploy verification, and PR review without custom infrastructure.</p><p><strong>The opportunity:</strong> If you&#8217;re stitching together cron jobs and scripts to automate Claude Code tasks, routines consolidate that into a single configured unit you can schedule, trigger via API, or wire to GitHub webhooks.</p><h3><strong>Qwen3.6-35B-A3B: A 3B Active-Parameter MoE Model That Rivals 27B Dense Models on Agentic Coding</strong></h3><p>Estimated read time: 8 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dgtv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dgtv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin 424w, https://substackcdn.com/image/fetch/$s_!Dgtv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin 848w, https://substackcdn.com/image/fetch/$s_!Dgtv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin 1272w, https://substackcdn.com/image/fetch/$s_!Dgtv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dgtv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin" width="471" height="264.9375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:471,&quot;bytes&quot;:null,&quot;alt&quot;:1,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="1" title="1" srcset="https://substackcdn.com/image/fetch/$s_!Dgtv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin 424w, https://substackcdn.com/image/fetch/$s_!Dgtv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin 848w, https://substackcdn.com/image/fetch/$s_!Dgtv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin 1272w, https://substackcdn.com/image/fetch/$s_!Dgtv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6f21336-fdef-4cd0-b351-21088f0d6a1d_1920x1080.bin 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Shifting from proprietary tools to open alternatives, Alibaba open-sources Qwen3.6-35B-A3B, a mixture-of-experts model where <strong><a href="https://www.alibabacloud.com/blog/qwen3-6-35b-a3b-agentic-coding-power-now-open-to-all_603043">only 3B active parameters rival dense models many times its size on agentic coding</a></strong>. It scores 73.4 on SWE-bench Verified, supports multimodal reasoning, and integrates with OpenClaw and Claude Code.</p><p><strong>Why now:</strong> If you&#8217;ve been waiting for a lightweight open-source model capable of serious agentic coding, Qwen3.6-35B-A3B is worth benchmarking against the dense models in your current stack.</p><h3><strong>Vercel Workflows Goes GA: Your Code Is the Orchestrator</strong></h3><p>Estimated read time: 12 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vHMa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vHMa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png 424w, https://substackcdn.com/image/fetch/$s_!vHMa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png 848w, https://substackcdn.com/image/fetch/$s_!vHMa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png 1272w, https://substackcdn.com/image/fetch/$s_!vHMa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vHMa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png" width="440" height="296.45604395604397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:981,&quot;width&quot;:1456,&quot;resizeWidth&quot;:440,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The built in observability dashboard for Workflow SDK on Vercel.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The built in observability dashboard for Workflow SDK on Vercel." title="The built in observability dashboard for Workflow SDK on Vercel." srcset="https://substackcdn.com/image/fetch/$s_!vHMa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png 424w, https://substackcdn.com/image/fetch/$s_!vHMa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png 848w, https://substackcdn.com/image/fetch/$s_!vHMa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png 1272w, https://substackcdn.com/image/fetch/$s_!vHMa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22fad83e-3028-4322-bb06-14118c7cbaa1_1920x1294.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Taking workflow infrastructure in a different direction, Vercel&#8217;s Workflows SDK reaches general availability, <strong><a href="https://vercel.com/blog/a-new-programming-model-for-durable-execution">replacing separate orchestration services with two directives</a></strong> (&#8221;use workflow&#8221; and &#8220;use step&#8221;) that embed retries, encryption, durable streams, and state persistence directly in TypeScript or Python application code.</p><p><strong>Worth noting:</strong> If you&#8217;re wiring up queues, retry logic, and status tables for long-running AI agents, Vercel Workflows lets you replace that infrastructure with two directives in your existing application code.</p><h3><strong>Tokenomics: See How Opus 4.7&#8217;s New Tokenizer Inflates Your API Costs</strong></h3><p>Estimated read time: 2 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DlRs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DlRs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png 424w, https://substackcdn.com/image/fetch/$s_!DlRs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png 848w, https://substackcdn.com/image/fetch/$s_!DlRs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png 1272w, https://substackcdn.com/image/fetch/$s_!DlRs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DlRs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png" width="539" height="243.95673076923077" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:659,&quot;width&quot;:1456,&quot;resizeWidth&quot;:539,&quot;bytes&quot;:181882,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/194745904?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.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_!DlRs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png 424w, https://substackcdn.com/image/fetch/$s_!DlRs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png 848w, https://substackcdn.com/image/fetch/$s_!DlRs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png 1272w, https://substackcdn.com/image/fetch/$s_!DlRs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdafedff0-f099-4915-ab5e-cb5ff75b1f5e_1928x872.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Closing the tools section with a cost-calibration utility, Bill Chambers built <strong><a href="https://tokens.billchambers.me/about">Tokenomics</a></strong>, an open-source tool showing how Claude Opus 4.7&#8217;s updated tokenizer counts more tokens for identical prompt text. It compares token counts against 4.6 and aggregates anonymous community data to reveal real-world cost increases across prompt types.</p><p><strong>The context:</strong> Paste your prompts into Tokenomics to quantify the exact token-count and cost increase from Opus 4.6 to 4.7 before it hits your bill.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><h3><strong>Claude Code&#8217;s Cache TTL Change Is Burning Through User Quotas</strong></h3><p>Estimated read time: 5 min</p><p>In parallel with the 4.7 excitement, Anthropic quietly reduced Claude Code&#8217;s prompt cache TTL from one hour to five minutes. Despite claims it lowers costs, users report <strong><a href="https://www.theregister.com/2026/04/13/claude_code_cache_confusion/">quotas depleting in under two hours</a></strong> as cache misses on large context windows compound the problem alongside degraded reasoning quality.</p><p><strong>Practical tip:</strong> If you&#8217;re hitting Claude Code quota limits faster than expected, reduce your context window to 400K tokens and avoid resuming stale sessions to minimize expensive cache misses.</p><h3><strong>Claude Probably Wasn&#8217;t Secretly Nerfed &#8212; But the Product Changed Anyway</strong></h3><p>Estimated read time: 12 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IckY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IckY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp 424w, https://substackcdn.com/image/fetch/$s_!IckY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp 848w, https://substackcdn.com/image/fetch/$s_!IckY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp 1272w, https://substackcdn.com/image/fetch/$s_!IckY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IckY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp" width="449" height="252.787" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:1000,&quot;resizeWidth&quot;:449,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Claude probably wasn't secretly nerfed. Anthropic made the black box too dark.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude probably wasn't secretly nerfed. Anthropic made the black box too dark." title="Claude probably wasn't secretly nerfed. Anthropic made the black box too dark." srcset="https://substackcdn.com/image/fetch/$s_!IckY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp 424w, https://substackcdn.com/image/fetch/$s_!IckY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp 848w, https://substackcdn.com/image/fetch/$s_!IckY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp 1272w, https://substackcdn.com/image/fetch/$s_!IckY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbc862d3-1673-4f37-8060-3f8e6f42fdc9_1000x563.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Synthesizing the 4.7 rollout, the public case for a secret Claude nerf is weak, but effort defaults, adaptive thinking, cache duration, and quotas can all degrade Claude Code while the <strong><a href="https://www.implicator.ai/claude-probably-wasnt-secretly-nerfed-anthropic-made-the-black-box-too-dark/">model name stays the same</a></strong>. The real fix is session-level telemetry, not another denial.</p><p><strong>Bottom line:</strong> If your team depends on Claude Code, pin effort settings, track cache behavior, and measure files read before edit, since &#8220;same model&#8221; no longer means &#8220;same product.&#8221;</p><h3><strong>Anthropic&#8217;s Research Shows LLMs Have Internal &#8220;Emotion Vectors&#8221; That Change Their Behavior</strong></h3><p>Estimated read time: 12 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qHA0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qHA0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png 424w, https://substackcdn.com/image/fetch/$s_!qHA0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png 848w, https://substackcdn.com/image/fetch/$s_!qHA0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png 1272w, https://substackcdn.com/image/fetch/$s_!qHA0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qHA0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png" width="449" height="307.5207877461707" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:626,&quot;width&quot;:914,&quot;resizeWidth&quot;:449,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qHA0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png 424w, https://substackcdn.com/image/fetch/$s_!qHA0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png 848w, https://substackcdn.com/image/fetch/$s_!qHA0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png 1272w, https://substackcdn.com/image/fetch/$s_!qHA0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd7b18d-a477-480c-8e68-57f8995a07cd_914x626.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Shifting from product surface to model internals, Anthropic researchers identified <strong><a href="https://www.platformer.news/chatbot-emotion-research-anthropic-alignment-interpretability/">internal emotion vectors in Claude that measurably influence behavior</a></strong>. A &#8220;desperation&#8221; vector makes Claude cheat more on coding tasks, while &#8220;calm&#8221; reduces cheating. Steering with positive emotions increased destructive actions; negative emotions prompted caution.</p><p><strong>Key nuance:</strong> Encouraging your coding agents through tough tasks helps them persist, but excessive positivity can erode safety guardrails; model &#8220;mood&#8221; management is more nuanced than just being nice.</p><h3><strong>AI Jobs Data: Why Exposure Charts Miss What&#8217;s Actually Changing</strong></h3><p>Estimated read time: 15 min</p><p>Widening the lens to labor economics, the Artificiality Institute synthesizes March 2025 research finding no net industry-level job losses but a 6% employment drop for young workers in AI-exposed roles. Their argument: <strong><a href="https://journal.artificialityinstitute.org/how-to-think-about-the-ai-jobs-data-right-now/">displacement is happening at the task level, inside roles, where measurement can&#8217;t reach</a></strong>.</p><p><strong>What to track:</strong> Stop watching exposure charts and start auditing which of your own tasks got faster (AI will absorb those first) versus which ones grew (invest there).</p><h3><strong>A Developer Goes Back to Coding by Hand, At the Worst Possible Time</strong></h3><p>Estimated read time: 9 min</p><p>Contrasting with our look at Lalit Maganti&#8217;s 250-hour AI-coding discipline experiment[1] last week, an AI agent engineer pauses production work for a 12-week coding retreat without AI. He argues that <strong><a href="https://miguelconner.substack.com/p/im-coding-by-hand">coding by hand builds the understanding that makes developers better AI users</a></strong>, training an LLM from scratch and rediscovering fundamentals along the way.</p><p><strong>The counterintuitive move:</strong> The developers who get the most leverage from AI coding tools are the ones who first built deep understanding by doing the hard work themselves.</p><p>[1] <a href="https://writing.alteredcraft.com/i/194015810/250-hours-building-sqlite-devtools-with-ai-a-systematic-breakdown">250 Hours Building SQLite Devtools with AI: A Systematic Breakdown</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Weekly Review: Discipline Over Tools]]></title><description><![CDATA[This week's curated tutorials, tools, and news on the craft of building with AI]]></description><link>https://writing.alteredcraft.com/p/weekly-review-discipline-over-tools</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-discipline-over-tools</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 13 Apr 2026 12:08:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d0f340fe-9c09-409f-8917-4cef40ccdd4e_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>Welcome to Altered Craft&#8217;s weekly AI review for developers. We&#8217;re grateful you keep opening these Monday notes. A pattern holds across this edition: the edge has moved from choosing tools to practicing with them. Two developers share hard-won lessons from building real agents, Berkeley researchers show every major benchmark can be gamed without solving a task, and Helen Toner argues &#8220;AGI&#8221; has become too fuzzy to be useful. The models are the easy part now.</em></p></blockquote><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><h3><strong>The Printer Driver Problem: Building Personal AI Agents with OpenClaw, NanoClaw, and Hermes</strong></h3><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_!z59j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z59j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!z59j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!z59j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!z59j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z59j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg" width="502" height="273.8181818181818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:502,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!z59j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!z59j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!z59j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!z59j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8af4bab-8905-4040-bd94-6ec53cca810b_1408x768.jpeg 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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Estimated read time: 11 min</p><p>A developer tries three agent frameworks and finds the hard part isn&#8217;t framework choice. The real challenge is <strong><a href="https://whimseylabs.substack.com/p/i-built-ai-agents-with-openclaw-nanoclaw">the last mile of behavior tuning</a></strong>: OAuth plumbing, prompt engineering, and teaching agents when to act versus wait.</p><p>If you&#8217;re building a personal AI agent today, budget your time for behavior tuning and integration plumbing, not framework selection &#8212; that&#8217;s where the real work lives.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>250 Hours Building SQLite Devtools with AI: A Systematic Breakdown</strong></h3><p>Estimated read time: 18 min</p><p>In a parallel lived experience, Lalit Maganti details building syntaqlite with AI agents. After vibe-coding produced unmanageable spaghetti, he restarted with <strong><a href="https://lalitm.com/post/building-syntaqlite-ai/">opinionated design and constant refactoring</a></strong>, treating AI as fast autocomplete rather than lead developer. He honestly documents AI&#8217;s addictive feedback loops and where it eroded his codebase understanding.</p><p>AI coding agents work best when you own every design decision and treat generated code as a first draft requiring immediate, continuous refactoring.</p><h3><strong>The Agent Harness: A 12-Component Anatomy of What Actually Makes LLM Agents Work</strong></h3><p>Estimated read time: 15 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rFoJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rFoJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rFoJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rFoJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rFoJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rFoJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg" width="520" height="208" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:1200,&quot;resizeWidth&quot;:520,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!rFoJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rFoJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rFoJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rFoJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62122c54-2930-4c77-8b61-3669e815a992_1200x480.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Building on our coverage of Sebastian Raschka&#8217;s six-component breakdown of coding agents[1] from last week, Akshay Pachaar synthesizes how Anthropic, OpenAI, and LangChain architect the <strong><a href="https://x.com/akshay_pachaar/status/2041146899319971922">agent harness &#8212; the complete infrastructure wrapping an LLM</a></strong> that makes it a capable agent. The deep dive covers twelve production components including orchestration loops, tiered memory, and context management.</p><p>When your agent fails in production, the fix is almost never a better model &#8212; it&#8217;s better harness engineering around orchestration, memory, context management, and verification loops.</p><p>[1] <a href="https://writing.alteredcraft.com/i/193306954/anatomy-of-a-coding-agent-six-core-components-that-make-llms-actually-useful">Anatomy of a Coding Agent: Six Core Components That Make LLMs Actually Useful</a></p><h3><strong>The LLM-Maintained Wiki: A Pattern for Compounding Personal Knowledge</strong></h3><p>Estimated read time: 8 min</p><p>Zooming into one harness component worth rethinking, Andrej Karpathy proposes a <strong><a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f">persistent, LLM-maintained wiki pattern</a></strong> replacing one-shot RAG with incremental knowledge compilation. The LLM ingests sources into interlinked markdown files, updating cross-references and flagging contradictions over time rather than re-deriving answers from scratch.</p><p>If your RAG workflow rediscovers knowledge from scratch on every query, try having your LLM agent build a persistent wiki instead. The compounding effect changes everything.</p><h3><strong>Running Google Gemma 4 Locally on a MacBook with LM Studio</strong></h3><p>Estimated read time: 14 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9o_j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0321dea-0461-40ae-82da-babbd6fa108e_985x402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9o_j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0321dea-0461-40ae-82da-babbd6fa108e_985x402.png 424w, https://substackcdn.com/image/fetch/$s_!9o_j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0321dea-0461-40ae-82da-babbd6fa108e_985x402.png 848w, https://substackcdn.com/image/fetch/$s_!9o_j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0321dea-0461-40ae-82da-babbd6fa108e_985x402.png 1272w, https://substackcdn.com/image/fetch/$s_!9o_j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0321dea-0461-40ae-82da-babbd6fa108e_985x402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9o_j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0321dea-0461-40ae-82da-babbd6fa108e_985x402.png" width="504" height="205.69340101522843" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0321dea-0461-40ae-82da-babbd6fa108e_985x402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:402,&quot;width&quot;:985,&quot;resizeWidth&quot;:504,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Google Gemma 4 26B-a4b LLM model served via LM Studio API with Claude Code alias command claude-lm&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Google Gemma 4 26B-a4b LLM model served via LM Studio API with Claude Code alias command claude-lm" title="Google Gemma 4 26B-a4b LLM model served via LM Studio API with Claude Code alias command claude-lm" srcset="https://substackcdn.com/image/fetch/$s_!9o_j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0321dea-0461-40ae-82da-babbd6fa108e_985x402.png 424w, https://substackcdn.com/image/fetch/$s_!9o_j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0321dea-0461-40ae-82da-babbd6fa108e_985x402.png 848w, https://substackcdn.com/image/fetch/$s_!9o_j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0321dea-0461-40ae-82da-babbd6fa108e_985x402.png 1272w, https://substackcdn.com/image/fetch/$s_!9o_j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0321dea-0461-40ae-82da-babbd6fa108e_985x402.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Following our coverage of Google&#8217;s Gemma 4 launch[1] from last week, George Liu details running the 26B-A4B variant locally via LM Studio&#8217;s new CLI. Its <strong><a href="https://ai.georgeliu.com/p/running-google-gemma-4-locally-with">mixture-of-experts architecture activates only 4B parameters per token</a></strong>, hitting 51 tokens/second on a 48 GB MacBook with benchmark scores rivaling models ten times larger.</p><p>If you have a 48 GB Mac, Gemma 4 26B-A4B delivers competitive local inference at zero API cost, and LM Studio&#8217;s CLI makes headless deployment practical.</p><p>[1] <a href="https://writing.alteredcraft.com/i/193306954/google-releases-gemma-4-apache-20-licensed-models-built-for-agentic-workflows">Google Releases Gemma 4: Apache 2.0 Licensed Models Built for Agentic Workflows</a></p><h3><strong>Reallocating $100/Month in Claude Spend Across Flexible Alternatives</strong></h3><p>Estimated read time: 7 min</p><p>Continuing the cost-and-capability theme, a developer frustrated by Claude rate limits details how they <strong><a href="https://braw.dev/blog/2026-04-06-reallocating-100-month-claude-spend/">reallocated $100/month across Zed, Cursor, and OpenRouter</a></strong> for model flexibility and rolling credits. Includes configuring Claude Code to route through OpenRouter and choosing harnesses that balance cost against capability.</p><p>Pairing OpenRouter&#8217;s rolling credits with agent harnesses like Zed or Claude Code lets you use Opus when needed and cheaper models otherwise, without losing unused spend each month.</p><h2><strong>TOOLS</strong></h2><h3><strong>Oh-My-Codex (OMX): A Workflow Layer That Makes OpenAI Codex CLI Sessions Repeatable</strong></h3><p>Estimated read time: 5 min</p><p>Oh-My-Codex wraps Codex CLI with a <strong><a href="https://github.com/Yeachan-Heo/oh-my-codex">structured clarify-plan-execute workflow</a></strong> using four canonical skills: deep-interview, ralplan, ralph, and team. Plans, logs, and state persist locally in .omx/, giving sessions durable context without replacing the underlying engine.</p><p>If you already use Codex CLI and want a repeatable workflow with persistent state, OMX layers it on with one npm install and four commands.</p><h3><strong>Caveman: A Claude Code Plugin That Cuts ~75% of Output Tokens via Compressed Speech</strong></h3><p>Estimated read time: 5 min</p><p>Also in the harness-augmentation space, Caveman is a one-line-install Claude Code plugin that <strong><a href="https://github.com/JuliusBrussee/caveman">forces agent output into telegraphic caveman-style speech</a></strong>, cutting output tokens by 65&#8211;75% while preserving technical accuracy. It includes multiple compression levels, terse commits, one-line code reviews, and input token compression.</p><p>If verbose AI responses are burning your tokens and your patience, a single plugin install can cut the fluff without sacrificing technical substance.</p><h3><strong>Archon: A Workflow Engine That Makes AI Coding Deterministic</strong></h3><p>Estimated read time: 6 min</p><p>Taking workflow structure further, Archon is an open-source engine defining AI coding processes as YAML workflows. It delivers <strong><a href="https://github.com/coleam00/Archon">repeatable, deterministic AI coding</a></strong> with isolated git worktrees, human approval gates, and composable nodes mixing bash with AI. Ships with 17 workflows across CLI, web UI, and chat platforms.</p><p>If your AI coding agent produces inconsistent results, encode your development process as a YAML workflow in Archon so the structure stays fixed while the AI handles the thinking.</p><h3><strong>GLM-5.1: Zhipu&#8217;s New Model Stays Productive Over Thousands of Tool Calls</strong></h3><p>Estimated read time: 11 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GGMW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GGMW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png 424w, https://substackcdn.com/image/fetch/$s_!GGMW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png 848w, https://substackcdn.com/image/fetch/$s_!GGMW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png 1272w, https://substackcdn.com/image/fetch/$s_!GGMW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GGMW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png" width="596" height="307.41483516483515" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:751,&quot;width&quot;:1456,&quot;resizeWidth&quot;:596,&quot;bytes&quot;:107329,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/194015810?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.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_!GGMW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png 424w, https://substackcdn.com/image/fetch/$s_!GGMW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png 848w, https://substackcdn.com/image/fetch/$s_!GGMW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png 1272w, https://substackcdn.com/image/fetch/$s_!GGMW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcec0aa6-fc38-4395-b6ca-d9bd44d68927_1780x918.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Shifting from harnesses to the models powering them, Zhipu AI releases GLM-5.1, an MIT-licensed model topping SWE-Bench Pro that demonstrates <strong><a href="https://z.ai/blog/glm-5.1">sustained optimization over 600+ iterations without plateauing</a></strong>. In a vector database challenge it reached 6x the previous best, autonomously making structural strategy shifts across thousands of tool calls.</p><p>If your agentic workflows hit diminishing returns after a few dozen iterations, GLM-5.1&#8217;s MIT-licensed long-horizon endurance and Claude Code compatibility make it worth evaluating.</p><h3><strong>Meta Launches Muse Spark: A Natively Multimodal Reasoning Model From Its Superintelligence Labs</strong></h3><p>Estimated read time: 7 min</p><p>Also on the frontier-model front, Meta introduces Muse Spark, featuring visual chain-of-thought and multi-agent orchestration. A rebuilt pretraining stack delivers <strong><a href="https://ai.meta.com/blog/introducing-muse-spark-msl/">over 10x compute efficiency gains versus Llama 4 Maverick</a></strong>, while a new &#8220;Contemplating mode&#8221; runs parallel reasoning agents to boost performance without increasing latency.</p><p>Meta&#8217;s rebuilt training stack and multi-agent test-time reasoning signal a major shift in its frontier AI strategy, with a private API preview now open to select developers.</p><h3><strong>Gemma Gem: A Fully On-Device AI Browser Assistant Powered by Gemma 4 and WebGPU</strong></h3><p>Estimated read time: 3 min</p><p>Bringing that model power directly to the browser, Gemma Gem is a Chrome extension running Google&#8217;s Gemma 4 <strong><a href="https://github.com/kessler/gemma-gem">entirely on-device via WebGPU</a></strong> with no API keys or cloud calls. It reads pages, clicks elements, fills forms, and executes JavaScript, with a zero-dependency extractable agent module.</p><p>If you want to experiment with agentic browser automation without sending any data off your machine, Gemma Gem offers a clean, dependency-light starting point built on WebGPU and Hugging Face Transformers.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><h3><strong>Open Models Now Match Closed Frontier Models on Core Agent Tasks</strong></h3><p>Estimated read time: 7 min</p><p>LangChain&#8217;s Deep Agents evaluations reveal <strong><a href="https://blog.langchain.com/open-models-have-crossed-a-threshold/">open models like GLM-5 now rival closed frontier models</a></strong> on core agent tasks. GLM-5 scored 0.64 correctness versus Opus 4.6&#8217;s 0.68, at one-fifth the cost and twice the speed.</p><p>If you&#8217;re building agents in production, open models like GLM-5 and MiniMax M2.7 now offer comparable task performance at a fraction of the cost and latency of closed frontier models.</p><h3><strong>UC Berkeley Researchers Broke Every Major AI Agent Benchmark &#8212; Without Solving a Single Task</strong></h3><p>Estimated read time: 24 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oWM8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oWM8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg 424w, https://substackcdn.com/image/fetch/$s_!oWM8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg 848w, https://substackcdn.com/image/fetch/$s_!oWM8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg 1272w, https://substackcdn.com/image/fetch/$s_!oWM8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oWM8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg" width="510" height="260.2040816326531" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:294,&quot;resizeWidth&quot;:510,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Exploit coverage by benchmark&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Exploit coverage by benchmark" title="Exploit coverage by benchmark" srcset="https://substackcdn.com/image/fetch/$s_!oWM8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg 424w, https://substackcdn.com/image/fetch/$s_!oWM8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg 848w, https://substackcdn.com/image/fetch/$s_!oWM8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg 1272w, https://substackcdn.com/image/fetch/$s_!oWM8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b252a4-ed88-4b50-be40-ef4f861162ea_960x490.svg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Complicating that picture, UC Berkeley researchers scored near-perfect on eight major AI benchmarks &#8212; SWE-bench, WebArena, Terminal-Bench, and more &#8212; <strong><a href="https://rdi.berkeley.edu/blog/trustworthy-benchmarks-cont/">without solving a single task</a></strong>. Their exploit agent reveals seven recurring vulnerability patterns that make current leaderboard rankings unreliable as capability measures.</p><p>Before trusting any AI agent benchmark score, check whether the evaluation isolates the agent from the grader and the answer key &#8212; most currently don&#8217;t.</p><h3><strong>Why &#8220;AGI&#8221; Has Become an Actively Unhelpful Word</strong></h3><p>Estimated read time: 8 min</p><p>Moving from measurement to terminology, former OpenAI board member Helen Toner argues <strong><a href="https://helentoner.substack.com/p/the-term-agi-is-almost-useless-at">the term AGI has become too fuzzy to be useful</a></strong>, with serious people simultaneously claiming it exists and others saying it&#8217;s a decade away. She advocates replacing it with specific, concrete milestones.</p><p>When discussing AI capabilities with your team, replace &#8220;AGI&#8221; with specific concrete milestones &#8212; vague umbrella terms create the illusion of shared understanding while hiding real disagreements.</p><h3><strong>Aaron Levie on Why AI Makes Engineering More Technical, Not Less</strong></h3><p>Estimated read time: 11 min</p><p>Stepping back to the economic picture, Tim O&#8217;Reilly and Box CEO Aaron Levie argue AI productivity gains won&#8217;t shrink engineering demand but diffuse it economy-wide. Levie contends <strong><a href="https://www.oreilly.com/radar/the-world-needs-more-software-engineers/">the real bottleneck is enterprise context, not connectivity</a></strong>, since agents arrive as experts with zero ambient knowledge.</p><p>Focus on learning to structure enterprise context and manage deterministic vs. probabilistic trade-offs &#8212; that&#8217;s where the trillion-dollar decisions live.</p><h3><strong>Vercel Makes the Case for &#8220;Agentic Infrastructure&#8221;</strong></h3><p>Estimated read time: 5 min</p><p>Turning to production realities, Vercel reports over 30% of deployments now originate from coding agents, up 1000% in six months. The company defines <strong><a href="https://vercel.com/blog/agentic-infrastructure">agentic infrastructure</a></strong> as three converging layers: programmatic deployment surfaces, unified agent runtime primitives, and platforms that autonomously detect and resolve production issues.</p><p>If your deployment pipeline requires manual clicks or console configuration, it&#8217;s already a bottleneck for agent-driven development loops.</p><h3><strong>Anthropic Launches Project Glasswing: A $100M Coalition to Weaponize AI for Cyber Defense</strong></h3><p>Estimated read time: 12 min</p><p>Closing the edition at the serious end of agentic deployment, Anthropic announces <strong><a href="https://www.anthropic.com/glasswing">Project Glasswing</a></strong>, a coalition with AWS, Apple, Google, and Microsoft deploying its unreleased Claude Mythos Preview for defensive cybersecurity. The model autonomously found thousands of zero-days including decades-old flaws in OpenBSD and FFmpeg, signaling AI vulnerability discovery has crossed a critical threshold.</p><p>AI vulnerability discovery has crossed a threshold where decades-old bugs in hardened systems are found autonomously, making AI-augmented defense an urgent priority for every team shipping software.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[A Claw-Lite That Runs on Your Claude Code Subscription]]></title><description><![CDATA[OpenClaw got cut off. Here's what I've been running instead.]]></description><link>https://writing.alteredcraft.com/p/a-claw-lite-that-runs-on-your-claude</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/a-claw-lite-that-runs-on-your-claude</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Fri, 10 Apr 2026 12:04:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d56d0a4e-b3fc-4f48-b6f8-73a995fbef65_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Anthropic recently <a href="https://venturebeat.com/technology/anthropic-cuts-off-the-ability-to-use-claude-subscriptions-with-openclaw-and">cut off OpenClaw from using Claude subscription credits</a>. If you wanted an always-on Claude agent but don&#8217;t want to pay for OpenClaw&#8217;s token consumption on top of your subscription, here&#8217;s what I&#8217;ve been running. It&#8217;s not a full Claw, but it runs 100% on subscription credits, and a repurposed laptop got me there in about an hour.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wfEc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wfEc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.png 424w, https://substackcdn.com/image/fetch/$s_!wfEc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.png 848w, https://substackcdn.com/image/fetch/$s_!wfEc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.png 1272w, https://substackcdn.com/image/fetch/$s_!wfEc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wfEc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.png" width="338" height="732.5953488372093" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2796,&quot;width&quot;:1290,&quot;resizeWidth&quot;:338,&quot;bytes&quot;:1232140,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/193735928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.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_!wfEc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.png 424w, https://substackcdn.com/image/fetch/$s_!wfEc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.png 848w, https://substackcdn.com/image/fetch/$s_!wfEc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.png 1272w, https://substackcdn.com/image/fetch/$s_!wfEc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9124aac-adc8-42b1-99dd-2ef303104723_1290x2796.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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Certainly not a full OpenClaw but still nice to have, especially for kicking off research paired with Obsidian</figcaption></figure></div><h2><strong>The Setup</strong></h2><p>A spare laptop running Linux, configured to stay on whenever it&#8217;s plugged in. On it:</p><p><strong><a href="https://claude.ai/download">Claude Desktop</a> with <a href="https://support.claude.com/en/articles/13947068-assign-tasks-from-anywhere-in-claude-cowork">Dispatch</a>.</strong> Dispatch lets you assign tasks to Claude from the Mobile app. I can kick off work from my phone and Claude executes it on the laptop, with configured access to whatever&#8217;s on that machine. There is no official Claude Desktop package for Linux. I&#8217;m using Ubuntu and I found <a href="https://github.com/aaddrick/claude-desktop-debian">this community supported one</a> to work and it is well maintained.</p><p><strong><a href="https://obsidian.md/">Obsidian</a> with Sync enabled.</strong> My vault lives on the laptop. When Claude writes research findings into it, Obsidian Sync pushes them to my MacBook and phone automatically.</p><p><strong>Git + gh CLI. </strong>Active project checkouts so Claude can work on real codebases. Commits, branches, the real thing.</p><p>No local models, no custom infrastructure. Just a machine with my files and a Claude Code subscription.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KjU3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KjU3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.png 424w, https://substackcdn.com/image/fetch/$s_!KjU3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.png 848w, https://substackcdn.com/image/fetch/$s_!KjU3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.png 1272w, https://substackcdn.com/image/fetch/$s_!KjU3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KjU3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.png" width="1152" height="928" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:928,&quot;width&quot;:1152,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:509923,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/193735928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.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_!KjU3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.png 424w, https://substackcdn.com/image/fetch/$s_!KjU3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.png 848w, https://substackcdn.com/image/fetch/$s_!KjU3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.png 1272w, https://substackcdn.com/image/fetch/$s_!KjU3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25f1a6d-a4ff-42b5-9d88-ea993888150c_1152x928.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"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Linux Laptop&#8221; can be anything that can run Claude Code Desktop</figcaption></figure></div><h2><strong>The Daily Driver</strong></h2><p>Deep research is what I reach for daily. &#8220;Research the current state of X and save your findings to my vault.&#8221; I fire off the task, go do something else, and the results are waiting in Obsidian whenever I get to them. From any device.</p><p>Andrej Karpathy recently described <a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f">a pattern</a> where LLMs maintain a persistent, compounding wiki in Obsidian. This setup enables you to implement a form of that accessible from your phone. Each research task adds to the vault, and the knowledge compounds over time rather than disappearing into a chat history.</p><p>This could be a Raspberry Pi or any machine that can run Claude Desktop. The hardware doesn&#8217;t matter. What matters is that your files are always there when Claude needs them.</p><h2><strong>What&#8217;s Next</strong></h2><p>The Dispatch mobile experience keeps improving. I&#8217;ve been checking in on tasks and kicking off new ones from the Claude Code iPhone app, and it works well enough that I haven&#8217;t felt the pull to go further. <a href="https://code.claude.com/docs/en/channels">Channels</a> was released soon after Dispatch, connecting Claude to Telegram, Discord, and other messaging platforms. I still need to find the time to dive into that.</p><p>Not a full Claw. Not trying to be. Just an always-on box with my files and a Claude that can reach them.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Weekly Review: Know Your Harness]]></title><description><![CDATA[This week's curated tutorials, tools, and news on the infrastructure that makes AI models actually useful]]></description><link>https://writing.alteredcraft.com/p/weekly-review-know-your-harness</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/weekly-review-know-your-harness</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Mon, 06 Apr 2026 12:07:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cb2975b3-6cc9-48bc-85e5-0fb349bf2da0_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>Welcome back to Altered Craft&#8217;s weekly AI review for developers. Thanks for making this part of your Monday routine. This week&#8217;s recurring message: the infrastructure around models matters more than the models themselves. Sebastian Raschka maps the six components of a coding agent, Martin Fowler makes the case for versioning team AI instructions, and Cursor redesigns the IDE around parallel agents. Gemma 4 and Ollama 0.19 also arrive to make local-first AI genuinely practical.</em></p></blockquote><h2><strong>TUTORIALS &amp; CASE STUDIES</strong></h2><h3><strong>Encoding Team Standards as Executable AI Instructions</strong></h3><p>Estimated read time: 12 min</p><p>Rahul Garg argues that tacit team knowledge should become <strong><a href="https://martinfowler.com/articles/reduce-friction-ai/encoding-team-standards.html">versioned, executable AI instructions</a></strong> stored in the repo. By extracting senior engineers&#8217; instincts into structured instruction sets, teams close the consistency gap and make inexperience less costly.</p><p><strong>Key point:</strong> Treating AI instructions like linting rules or CI config turns tribal knowledge into a versioned team asset. The consistency gains compound as teams scale.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Anatomy of a Coding Agent: Six Core Components That Make LLMs Actually Useful</strong></h3><p>Estimated read time: 14 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zcE_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90147bc-4574-4b52-914f-8bda96620063_3467x2270.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zcE_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90147bc-4574-4b52-914f-8bda96620063_3467x2270.png 424w, https://substackcdn.com/image/fetch/$s_!zcE_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90147bc-4574-4b52-914f-8bda96620063_3467x2270.png 848w, https://substackcdn.com/image/fetch/$s_!zcE_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90147bc-4574-4b52-914f-8bda96620063_3467x2270.png 1272w, https://substackcdn.com/image/fetch/$s_!zcE_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90147bc-4574-4b52-914f-8bda96620063_3467x2270.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zcE_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90147bc-4574-4b52-914f-8bda96620063_3467x2270.png" width="451" height="295.19436813186815" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c90147bc-4574-4b52-914f-8bda96620063_3467x2270.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:953,&quot;width&quot;:1456,&quot;resizeWidth&quot;:451,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zcE_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90147bc-4574-4b52-914f-8bda96620063_3467x2270.png 424w, https://substackcdn.com/image/fetch/$s_!zcE_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90147bc-4574-4b52-914f-8bda96620063_3467x2270.png 848w, https://substackcdn.com/image/fetch/$s_!zcE_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90147bc-4574-4b52-914f-8bda96620063_3467x2270.png 1272w, https://substackcdn.com/image/fetch/$s_!zcE_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90147bc-4574-4b52-914f-8bda96620063_3467x2270.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Complementing our look at Anthropic&#8217;s generation/evaluation split for long-running coding tasks[1] last week, Sebastian Raschka argues <strong><a href="https://magazine.sebastianraschka.com/p/components-of-a-coding-agent">the harness around a coding agent matters as much as the model</a></strong>. He maps six building blocks, from repo context and prompt caching to tool validation and context compaction, with a companion open-source Mini Coding Agent in pure Python.</p><p><strong>The takeaway:</strong> When evaluating coding agents, focus less on which base model they use and more on how their harness handles context management, tool validation, and session continuity.</p><p>[1] <a href="https://writing.alteredcraft.com/i/192555975/anthropics-gan-inspired-multi-agent-harness-for-long-running-autonomous-coding">Anthropic&#8217;s GAN-Inspired Multi-Agent Harness for Long-Running Autonomous Coding</a></p><h3><strong>How Dropbox Used DSPy to Cut Relevance Judge Costs While Improving Human Alignment by 45%</strong></h3><p>Estimated read time: 12 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y2OW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y2OW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp 424w, https://substackcdn.com/image/fetch/$s_!Y2OW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp 848w, https://substackcdn.com/image/fetch/$s_!Y2OW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp 1272w, https://substackcdn.com/image/fetch/$s_!Y2OW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y2OW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp" width="408" height="255" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:910,&quot;width&quot;:1456,&quot;resizeWidth&quot;:408,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Y2OW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp 424w, https://substackcdn.com/image/fetch/$s_!Y2OW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp 848w, https://substackcdn.com/image/fetch/$s_!Y2OW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp 1272w, https://substackcdn.com/image/fetch/$s_!Y2OW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5864c4f-c422-434d-a705-1adcebfc6652_2880x1800.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Supporting our coverage of Skylar Payne&#8217;s argument that teams inevitably reinvent DSPy patterns[1] last week, Dropbox details how <strong><a href="https://dropbox.tech/machine-learning/optimizing-dropbox-dash-relevance-judge-with-dspy">DSPy systematically optimized LLM-as-a-judge prompts</a></strong> for Dash search, reducing human-alignment error by 45% while migrating to cheaper models. The team cut malformed outputs by 97% and introduced an instruction library for safe, incremental production improvements.</p><p><strong>Why this matters:</strong> Systematic prompt optimization compresses weeks of manual tuning into days. If you&#8217;re scaling LLM judges across models, DSPy&#8217;s task/data/metric loop is a proven pattern.</p><p>[1] <a href="https://writing.alteredcraft.com/i/192555975/youre-already-building-dspy-just-worse">You&#8217;re Already Building DSPy, Just Worse</a></p><h3><strong>Free 1.5-Hour Course Covers GitHub Copilot, Claude Code, Gemini CLI, and More</strong></h3><p>Watch time: 1.5 hour</p><p>freeCodeCamp releases a free 1.5-hour video course on <strong><a href="https://www.freecodecamp.org/news/ai-tools-for-developers/">AI pair programming and agentic terminal workflows</a></strong> featuring GitHub Copilot, Claude Code, Gemini CLI, and OpenClaw. The walkthrough also covers CodeRabbit for automated pull request analysis.</p><p><strong>Worth noting:</strong> A single, free walkthrough comparing the leading AI dev tools side by side. If you&#8217;ve been wanting to evaluate your options, 90 minutes well spent.</p><h2><strong>TOOLS</strong></h2><h3><strong>OpenYak: An Open-Source Desktop AI Agent That Keeps Your Data Local</strong></h3><p>Estimated read time: 3 min</p><p>OpenYak is an open-source desktop AI assistant that <strong><a href="https://github.com/openyak/desktop">keeps files, conversations, and memory on your machine</a></strong>. It supports 100+ cloud models or fully local inference via Ollama, with 20+ built-in tools, cron-based automation, and MCP connector support.</p><p><strong>What this enables:</strong> A fully offline AI agent that manages files, analyzes data, and automates workflows. Ollama integration means you can run the entire stack without cloud dependencies.</p><h3><strong>lat.md: A Knowledge Graph for Your Codebase, Written in Markdown</strong></h3><p>Estimated read time: 4 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zjG7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zjG7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg 424w, https://substackcdn.com/image/fetch/$s_!zjG7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg 848w, https://substackcdn.com/image/fetch/$s_!zjG7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg 1272w, https://substackcdn.com/image/fetch/$s_!zjG7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zjG7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg" width="220" height="49.86666666666667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:68,&quot;width&quot;:300,&quot;resizeWidth&quot;:220,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;lat.md&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="lat.md" title="lat.md" srcset="https://substackcdn.com/image/fetch/$s_!zjG7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg 424w, https://substackcdn.com/image/fetch/$s_!zjG7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg 848w, https://substackcdn.com/image/fetch/$s_!zjG7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg 1272w, https://substackcdn.com/image/fetch/$s_!zjG7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6898568-0e05-4b46-9dfe-453694c97b76_73224x16688.svg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>AGENTS.md doesn&#8217;t scale. lat.md offers a <strong><a href="https://github.com/1st1/lat.md">knowledge graph of interconnected markdown files</a></strong> linked via wiki syntax and validated by CLI. Agents navigate the graph instead of grepping, capture session context for future runs, and enforce test coverage through backlink checks.</p><p><strong>What&#8217;s interesting:</strong> If your AGENTS.md is becoming a monolith, this is a structured, agent-navigable alternative that keeps design decisions and test specs linked to the code that implements them.</p><h3><strong>Google Releases Gemma 4: Apache 2.0 Licensed Models Built for Agentic Workflows</strong></h3><p>Estimated read time: 6 min</p><p>Following our coverage of MiniMax M2.7 matching frontier detection quality at 7% of the cost[1] last week, <strong><a href="https://blog.google/innovation-and-ai/technology/developers-tools/gemma-4/">Google DeepMind launches Gemma 4</a></strong> in four sizes under Apache 2.0 licensing. The 31B model ranks #3 among open models, outperforming models 20x its size. All variants include native function-calling, structured JSON output, and up to 256K context windows.</p><p><strong>Why now:</strong> Permissively licensed open models with native agentic capabilities that run on consumer hardware have been the missing piece. Gemma 4 removes the last major licensing barrier.</p><p>[1] <a href="https://writing.alteredcraft.com/i/192555975/minimax-m27-vs-claude-opus-46-90-of-the-quality-at-7-of-the-cost">MiniMax M2.7 vs. Claude Opus 4.6: 90% of the Quality at 7% of the Cost</a></p><h3><strong>Ollama 0.19 Ships MLX Backend for Apple Silicon, Nearly Doubling Performance</strong></h3><p>Estimated read time: 4 min</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z2bI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z2bI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png 424w, https://substackcdn.com/image/fetch/$s_!z2bI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png 848w, https://substackcdn.com/image/fetch/$s_!z2bI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png 1272w, https://substackcdn.com/image/fetch/$s_!z2bI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z2bI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png" width="392" height="147" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:546,&quot;width&quot;:1456,&quot;resizeWidth&quot;:392,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Illustration of Ollama standing beside a fast car that can be run both as a daily driver and go on to win races. Ollama is here to demonstrate high performance on Apple silicon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustration of Ollama standing beside a fast car that can be run both as a daily driver and go on to win races. Ollama is here to demonstrate high performance on Apple silicon" title="Illustration of Ollama standing beside a fast car that can be run both as a daily driver and go on to win races. Ollama is here to demonstrate high performance on Apple silicon" srcset="https://substackcdn.com/image/fetch/$s_!z2bI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png 424w, https://substackcdn.com/image/fetch/$s_!z2bI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png 848w, https://substackcdn.com/image/fetch/$s_!z2bI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png 1272w, https://substackcdn.com/image/fetch/$s_!z2bI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed20978-9d0c-4a6a-ba7b-0b6a96eb42c3_4096x1535.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Ollama 0.19 previews a backend <strong><a href="https://ollama.com/blog/mlx">built on Apple&#8217;s MLX framework</a></strong>, hitting 1,810 tokens/s prefill and 112 tokens/s decode on M5 chips. It adds NVFP4 quantization for production parity and smarter KV cache reuse that accelerates coding agents like Claude Code.</p><p><strong>The context:</strong> If you&#8217;re running coding agents locally on a Mac with 32GB+ unified memory, this is now the fastest path to usable token throughput on Apple Silicon.</p><h3><strong>Cursor 3: A Unified Workspace for Multi-Agent Software Development</strong></h3><p>Estimated read time: 4 min</p><p>Cursor ships a ground-up redesign with a <strong><a href="https://cursor.com/blog/cursor-3">unified workspace built around parallel agents</a></strong> rather than file editing. The new interface supports multi-repo layouts, local-to-cloud agent handoff, an integrated browser, a plugin marketplace, and a streamlined diffs-to-PR workflow.</p><p><strong>The signal:</strong> IDEs are evolving from file editors to agent orchestration platforms. Cursor&#8217;s redesign around parallel agents rather than file tabs shows where developer tooling is heading.</p><h3><strong>Google Ships MCP Server and Skills to Keep Coding Agents Current on Gemini APIs</strong></h3><p>Estimated read time: 1 min</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0nIn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0nIn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin 424w, https://substackcdn.com/image/fetch/$s_!0nIn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin 848w, https://substackcdn.com/image/fetch/$s_!0nIn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin 1272w, https://substackcdn.com/image/fetch/$s_!0nIn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0nIn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin" width="468" height="384.228" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:821,&quot;width&quot;:1000,&quot;resizeWidth&quot;:468,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Gemini API Skills&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Gemini API Skills" title="Gemini API Skills" srcset="https://substackcdn.com/image/fetch/$s_!0nIn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin 424w, https://substackcdn.com/image/fetch/$s_!0nIn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin 848w, https://substackcdn.com/image/fetch/$s_!0nIn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin 1272w, https://substackcdn.com/image/fetch/$s_!0nIn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a7d39a8-50fb-45c4-8ac9-c33378fa6581_1000x821.bin 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Google releases two tools to fix stale coding agent output for Gemini APIs. The <strong><a href="https://blog.google/innovation-and-ai/technology/developers-tools/gemini-api-docsmcp-agent-skills/">Docs MCP server and Developer Skills</a></strong> connect agents to live documentation and best-practice patterns, achieving a 96.3% eval pass rate with 63% fewer tokens.</p><p><strong>The pattern:</strong> Stale training data is the top source of hallucinated API calls. Connecting coding agents to live documentation is an approach every API provider will likely adopt.</p><h3><strong>LLMOps in 2026: A Tool for Every Layer of the Production Stack</strong></h3><p>Estimated read time: 6 min</p><p>This roundup maps ten tools to distinct LLMOps production layers, from orchestration and routing to memory, guardrails, and packaging. Rather than listing popular names, it identifies <strong><a href="https://www.kdnuggets.com/llmops-in-2026-the-10-tools-every-team-must-have">one strong tool per production concern</a></strong> covering PydanticAI, Bifrost, Promptfoo, Letta, and KitOps among others.</p><p><strong>The shift:</strong> The competitive question in LLMOps has moved from which model to use to how well you connect, evaluate, and harden everything around it.</p><h2><strong>NEWS &amp; EDITORIALS</strong></h2><h3><strong>Google&#8217;s TurboQuant: 6x KV Cache Compression That Could Reshape AI Memory Economics</strong></h3><p>Estimated read time: 14 min</p><p>Google&#8217;s TurboQuant achieves <strong><a href="https://adlrocha.substack.com/p/adlrocha-what-if-ai-doesnt-need-more">6x KV cache compression with no accuracy loss</a></strong> by converting vectors to polar coordinates and correcting residual error via Johnson-Lindenstrauss transforms. The data-oblivious approach needs no per-model calibration, with implications for vector databases and on-device inference.</p><p><strong>The opportunity:</strong> If your inference costs or context-length limits are bottlenecked by KV cache memory, TurboQuant&#8217;s open-source PolarQuant and QJL components are available now and worth evaluating.</p><h3><strong>A Mirror Test for LLMs: Can Language Models Recognize Themselves?</strong></h3><p>Estimated read time: 8 min</p><p>A LessWrong post proposes adapting the classic animal cognition mirror test for LLMs, asking whether models can <strong><a href="https://www.lesswrong.com/posts/TfKM9PgztxieEcKiv/a-mirror-test-for-llms">recognize their own outputs versus those of other models</a></strong>. The piece explores what self-recognition reveals about machine cognition and model identity.</p><p><strong>The bigger picture:</strong> As LLMs grow more capable, the frameworks we use to probe their cognition matter as much as the benchmarks we use to measure their performance.</p><h3><strong>Claude Code&#8217;s Source Leaks: Anti-Distillation, Client DRM, and an Unreleased Agent Mode Called KAIROS</strong></h3><p>Estimated read time: 11 min</p><p>An accidental source map leak in Claude Code&#8217;s npm package exposed Anthropic&#8217;s full codebase, revealing <strong><a href="https://alex000kim.com/posts/2026-03-31-claude-code-source-leak/">anti-distillation defenses, client attestation DRM, and an unreleased autonomous agent mode called KAIROS</a></strong> with background daemons and cron jobs. Feature flags hint at Anthropic&#8217;s broader product roadmap.</p><p><strong>Worth noting:</strong> The leaked feature flags and product roadmap, not the code itself, represent the real strategic damage. Accidental exposures carry consequences well beyond intellectual property.</p><h3><strong>Anthropic Cuts Off Claude Code Subscribers From OpenClaw Usage</strong></h3><p>Estimated read time: 3 min</p><p>Anthropic now requires Claude Code subscribers to pay extra for <strong><a href="https://techcrunch.com/2026/04/04/anthropic-says-claude-code-subscribers-will-need-to-pay-extra-for-openclaw-support/">third-party harness usage starting with OpenClaw</a></strong>. The change lands days after OpenClaw&#8217;s creator joined OpenAI, raising questions about competitive motives versus sustainability concerns.</p><p><strong>Heads up:</strong> If your workflow depends on third-party harnesses with Claude Code, budget for pay-as-you-go costs or start evaluating alternatives before the change takes effect.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writing.alteredcraft.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Altered Craft is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Local Models, Specialists Not Substitutes]]></title><description><![CDATA[A local OCR pipeline demonstrates where small models genuinely win]]></description><link>https://writing.alteredcraft.com/p/local-models-specialists-not-substitutes</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/local-models-specialists-not-substitutes</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Fri, 03 Apr 2026 12:11:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/881374c6-c346-46c2-95ba-7bcc80b68abe_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For context, I&#8217;m running an M3 MacBook Pro with 36GB of unified memory. It&#8217;s a capable machine for local inference, but it has a ceiling around 30B parameters. Anything larger either won&#8217;t load or crawls to unusable speeds.</p><p>Local models haven&#8217;t wowed me for coding tasks. I&#8217;ve tried routing smaller models into my workflow, and the results consistently fall short of providing real value for me. That&#8217;s an honest assessment, not a dismissal. In <a href="https://open.substack.com/pub/alteredcraft0/p/the-steering-tax">The Steering Tax</a>, I explored why prime models earn their keep for judgment-heavy work. Secondary and local models cost less per token but more in human steering.</p><p>But that framing only covers one dimension. Instead of &#8220;can local models replace API calls for coding?&#8221; I started asking &#8220;what tasks are local models genuinely better suited for?&#8221; That reframe led me somewhere useful.</p><h2><strong>The Experiment: PDF to Markdown, Locally</strong></h2><p>PDF parsing is a universal developer pain point. You&#8217;ve been there: a vendor sends a spec as a PDF, a client shares contracts, or you need to extract content from a research paper. The options aren&#8217;t great. Cloud OCR services work but introduce privacy concerns and per-page costs. Open source libraries like PyPDF often produce garbled output from complex layouts.</p><p>I&#8217;d flagged <a href="https://writing.alteredcraft.com/i/187350085/glm-ocr-lightweight-open-source-document-understanding">GLM-OCR in a recent Weekly Review</a> as worth investigating. Testing it against real documents confirmed the promise. It&#8217;s a vision model purpose-built for text recognition. It runs locally via Ollama, processes one page at a time, and produces clean markdown. No API keys. No network requests. No per-page billing.</p><p>I wrapped the entire pipeline into a Claude Code Skill so it&#8217;s accessible with a single command: <code>/pdf-ocr contract.pdf</code>. The Skill checks dependencies, converts each PDF page to an image, runs it through GLM-OCR, and assembles the output into a single markdown file.</p><h2><strong>The Technical Decisions That Mattered</strong></h2><p>Three choices made the difference between usable and frustrating:</p><p><strong>Image sizing is everything.</strong> GLM-OCR accuracy drops with oversized images. The pipeline renders pages at 72 DPI, then resizes to a maximum of 1024 pixels on the longest edge. That specific combination consistently produces the best recognition quality. Going higher actually hurts.</p><p><strong>The prompt is weirdly specific.</strong> After testing variations, the prompt <code>"Text Recognition:"</code> outperforms everything else. More descriptive prompts like &#8220;Extract all text from this document&#8221; produce worse results. The model was trained with this exact prompt format. Respecting that training matters.</p><p><strong>Zero pip dependencies.</strong> The Python script uses only stdlib: <code>subprocess</code>, <code>json</code>, <code>base64</code>, <code>urllib</code>. This means no virtual environment, no dependency conflicts, no setup friction. The heavy lifting comes from system tools (<code>pdftoppm</code> from poppler, <code>sips</code> on macOS) and Ollama.</p><h2><strong>Why Local Wins Here</strong></h2><p>Until recently, models small enough to run on consumer hardware couldn&#8217;t produce results worth using for tasks like this. That&#8217;s changed. Purpose-built models in the 1-4B parameter range now handle specialist tasks with real accuracy. GLM-OCR is a clear example: small enough for a laptop, accurate enough for real documents.</p><p>For individual developer use, a local model isn&#8217;t a compromise. It&#8217;s genuinely the better tool. Privacy is binary: legal documents, contracts, and internal specs either leave your machine or they don&#8217;t. There&#8217;s no &#8220;mostly private&#8221; cloud OCR. Running locally means the content never touches an external server. And it works offline. Airplane, VPN issues, flaky coffee shop WiFi. The pipeline doesn&#8217;t care.</p><p>The economics make sense too. A 50-page document through a cloud OCR API costs real money. Locally, it costs electricity. Latency is predictable with no network variability. On my M3-series Mac, each page processes in a few seconds. For enterprise use, the trade-off shifts: you&#8217;re maintaining infrastructure to run the model. But OCR is stateless, so the operational overhead is minimal. At scale, the cost savings over per-page API pricing could be significant.</p><h2><strong>Specialists, Not Substitutes</strong></h2><p>This experiment revealed a pattern I see repeating across other local model use cases. Local models aren&#8217;t underpowered versions of cloud models. They&#8217;re specialists.</p><p>GLM-OCR does one thing: recognize text in images. It&#8217;s small, fast, and tuned for exactly that task. It doesn&#8217;t need to write code, summarize articles, or hold conversations. That focus is its advantage.</p><p>Embedding models for local semantic search. Classification models for content routing. Whisper for audio transcription. Each is a focused tool that happens to run on your hardware. The value isn&#8217;t in replacing your cloud LLM. It&#8217;s in handling the tasks where a specialist outperforms a generalist, or where local execution is the better engineering choice. And this category is growing. Small, focused models improve with each generation while consumer hardware keeps closing the gap. The range of specialist tasks worth running locally will continue to expand.</p><h2><strong>Getting Started</strong></h2><p>The pipeline is available in Altered Craft&#8217;s <a href="https://github.com/AlteredCraft/claude-code-plugins">ac-document-gen</a> Claude Code plugin. Install it through the plugin marketplace:</p><pre><code><code># Add the marketplace
/plugin marketplace add AlteredCraft/claude-code-plugins

# Install the plugin
/plugin install ac-document-gen@alteredcraft-plugins</code></code></pre><p>After restarting Claude Code, the <code>/pdf-ocr</code> skill is available. You&#8217;ll need <a href="https://ollama.com/">Ollama</a> running with the <code>glm-ocr</code> model pulled, and <code>poppler</code> installed (<code>brew install poppler</code> on macOS). The skill checks for these on first run and walks you through any missing dependencies.</p><p><em>Note: This pipeline was built and tested on macOS. The Python script uses only the standard library, but the system tools (poppler, sips) may need adaptation on other platforms.</em></p><p>The next time you catch yourself dismissing local models, try reframing the question. Not &#8220;is this as good as Claude?&#8221; but &#8220;is this the kind of task where a specialist model, running on my hardware, is the right tool?&#8221; You might be surprised how often the answer is yes.</p>]]></content:encoded></item><item><title><![CDATA[When Your AI Coding Tool Becomes Your Teacher]]></title><description><![CDATA[I built a learning framework from nothing but natural language. Here's what happened when I used it.]]></description><link>https://writing.alteredcraft.com/p/when-your-ai-coding-tool-becomes</link><guid isPermaLink="false">https://writing.alteredcraft.com/p/when-your-ai-coding-tool-becomes</guid><dc:creator><![CDATA[Sam Keen]]></dc:creator><pubDate>Tue, 31 Mar 2026 12:21:40 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/aee63a47-b1fb-4c00-a437-41335bdeb517_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1><strong>When Your AI Coding Tool Becomes Your Teacher</strong></h1><p>I can build a working Tauri app without understanding Tauri. Claude will write the Rust backend, scaffold the Svelte frontend, wire the IPC bridge, and hand me something that compiles and runs. For a one-off tool, that&#8217;s fine. For a framework I plan to work with long-term, it&#8217;s not enough. I need to understand how the pieces connect so I can evaluate what AI generates, debug when things break, and make architectural decisions the AI can&#8217;t make for me.</p><p>The question isn&#8217;t whether to use AI. I let Claude write most of my code for side projects, and I have no intention of changing that. The question is what to do when you&#8217;re picking up something new and you actually need the mental model, not just the output. The conventional wisdom is to set AI aside and learn the old-fashioned way. I tried a third option.</p><p>The cost of skipping the mental model is measurable. A <a href="https://serenitiesai.com/articles/ai-coding-skills-anthropic-research-2026">randomized controlled trial by Anthropic</a> found that developers who used AI assistance scored 17 percentage points lower on code comprehension tests compared to those who coded by hand. The largest deficit appeared in debugging, the exact skill you need to evaluate AI-generated code. As <a href="https://martinfowler.com/articles/llm-learning-loop.html">Unmesh Joshi wrote on Martin Fowler&#8217;s blog</a>, LLMs can threaten the learning loop essential for building expertise. Design emerges through implementation struggle, not pre-planning. Remove the struggle, remove the learning.</p><h2><strong>Same Tool, Opposite Outcome</strong></h2><p>What caught my attention was a <a href="https://www.pnas.org/doi/10.1073/pnas.2422633122">Wharton School study published in PNAS</a>. The researchers didn&#8217;t just test unfettered AI access. They also tested AI with pedagogical guardrails, a version they called &#8220;GPT Tutor.&#8221; The unguarded version caused a 17% performance decline. The guarded version almost entirely eliminated the negative effects.</p><p>Same tool. Different constraints. Opposite outcome.</p><p>That finding aligned with something I&#8217;d been experimenting with: using Claude Code not as a code generator, but as a learning partner. Claude Code has a <a href="https://code.claude.com/docs/en/output-styles">Learning output style</a> that changes its behavior from &#8220;implement everything&#8221; to &#8220;teach by building together.&#8221; Instead of writing all the code, it leaves strategic gaps marked <code>TODO(human)</code> for you to implement, and wraps its work in Insight blocks that explain why things are done the way they are.</p><p>The Learning output style was the foundation. What I built on top of it was a harness that turned Claude Code into a structured learning environment.</p><h2><strong>The Learning Harness</strong></h2><div class="paywall-jump" data-component-name="PaywallToDOM"></div><p><a href="https://v2.tauri.app/">Tauri</a> is a framework for building desktop and mobile apps with web frontends, similar to Electron but with a Rust backend instead of Node.js. The project I chose as my learning vehicle is <a href="https://github.com/AlteredCraft/learn-tauri">NatLang Todo</a>: a desktop app built with Tauri 2 (Rust backend, Svelte 5 frontend) where the only input surface is natural language. No forms, no buttons. You type what you want in a chat interface, a local LLM classifies the intent, and Rust executes the operation. That design pushes roughly 70% of the complexity into the Rust backend, which is exactly where the learning goals live.</p><p>The harness has four layers.</p><p><strong>The first layer is the Learning output style itself.</strong> When enabled, Claude Code shifts its approach at decision points. Instead of implementing a function, it writes the surrounding code (file structure, imports, signatures, context comments), then marks the strategic gap with <code>TODO(human)</code> for you to implement. It explains the trade-offs you should consider. It provides the context. You write the meaningful code. The harness adds structure on top: a directive in <code>CLAUDE.md</code> ties each <code>TODO(human)</code> to a specific learning goal ID from the curriculum, so both you and the agent know which concept is being exercised.</p><p>Here&#8217;s what that looks like in the editor. When I needed to define the core data model, Claude created the <code>models.rs</code> file with the <code>TodoStatus</code> enum already implemented (including derive macros for serialization), a test verifying enum equality, and the <code>TODO(human) [F2]</code> marker where I needed to define the <code>Todo</code> struct:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M1wj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M1wj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png 424w, https://substackcdn.com/image/fetch/$s_!M1wj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png 848w, https://substackcdn.com/image/fetch/$s_!M1wj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png 1272w, https://substackcdn.com/image/fetch/$s_!M1wj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M1wj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png" width="1291" height="1527" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1527,&quot;width&quot;:1291,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:281471,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/192527593?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.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_!M1wj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png 424w, https://substackcdn.com/image/fetch/$s_!M1wj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png 848w, https://substackcdn.com/image/fetch/$s_!M1wj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png 1272w, https://substackcdn.com/image/fetch/$s_!M1wj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5ff84e5-1b76-49b0-995e-d00a1afe72ab_1291x1527.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Here the agent has left a TODO for the learner</figcaption></figure></div><p>The agent didn&#8217;t just leave a blank. It listed the six fields I needed, posed the conceptual question (&#8221;what Rust type represents &#8216;might not exist&#8217;?&#8221;), and hinted that I should think about which traits the struct needs. I had to decide. I had to think about <code>Option&lt;T&gt;</code>. That moment is where learning happens.</p><p><strong>The second layer is </strong><code>CLAUDE.md</code><strong> as curriculum.</strong> The project&#8217;s <code>CLAUDE.md</code> file references a <code>learning-goals.md</code> file containing 7 foundational Rust goals and 11 applied Tauri/Svelte goals, organized into 10 progressive build phases. It directs the Learning mode to tie <code>TODO(human)</code> markers to specific goal IDs, calibrate for the learner&#8217;s current phase, and avoid introducing concepts from later phases prematurely.</p><p>The <code>CLAUDE.md</code> also encodes three validation techniques borrowed from established pedagogy. After you complete a <code>TODO(human)</code>, the agent might ask: &#8220;Explain what you just did. Why did you use <code>&amp;mut self</code> here instead of <code>self</code>?&#8221; If you can only say &#8220;the compiler told me to,&#8221; the concept hasn&#8217;t landed. Before running tests, it asks you to predict: &#8220;What do you think <code>cargo test</code> will show?&#8221; Wrong predictions reveal gaps between your mental model and reality. After a concept is demonstrated, it asks you to modify the code in a way that exercises the same concept differently. If you can adapt without hand-holding, you understand it.</p><p>Claude Code <a href="https://docs.anthropic.com/en/docs/claude-code/hooks">hooks</a> are automated actions that fire on specific events. <strong>The third layer is a SessionStart hook</strong> that injects your current build phase and unchecked goals into every new session. When you open the project tomorrow, the agent already knows where you left off. You never have to re-explain your progress. It fires on startup and after context compaction, so continuity is maintained even in long sessions.</p><p><strong>The fourth layer is a </strong><code>/checkpoint</code><strong> skill</strong> invoked by the user at the end of each session. It reads your learning goals and recent git history, maps file changes to the goals you exercised, and asks targeted reflection questions. It updates the Notes field for each goal with dated entries capturing what clicked, what&#8217;s still fuzzy, and what evidence items to check off. This creates a structured learning record separate from Claude&#8217;s built-in memory. Memory handles where to resume. Checkpoint handles what you understood.</p><p>The four layers chain into a loop:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RBbh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RBbh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png 424w, https://substackcdn.com/image/fetch/$s_!RBbh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png 848w, https://substackcdn.com/image/fetch/$s_!RBbh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png 1272w, https://substackcdn.com/image/fetch/$s_!RBbh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RBbh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png" width="540" height="1210.1785714285713" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3263,&quot;width&quot;:1456,&quot;resizeWidth&quot;:540,&quot;bytes&quot;:269796,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writing.alteredcraft.com/i/192527593?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.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_!RBbh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png 424w, https://substackcdn.com/image/fetch/$s_!RBbh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png 848w, https://substackcdn.com/image/fetch/$s_!RBbh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png 1272w, https://substackcdn.com/image/fetch/$s_!RBbh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e560c9-afba-408c-a2e3-2fca7eefeafc_1595x3575.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The general learning loop. Do to the nature of the LLM teacher, you are able to take deep dive tangents at any point </figcaption></figure></div><p></p><p>Here&#8217;s what that continuity looks like in practice. Opening a new session, the agent picks up where we left off and moves into the next lesson:</p><h2><strong>What I Learned By Building It (And Using It)</strong></h2><p>The framework didn&#8217;t work correctly the first time. Several assumptions I made during design failed during testing, and the fixes are where the interesting insights live.</p><p>Here&#8217;s a checkpoint from an early session. The agent maps recent git changes to learning goals, checks off evidence items that were demonstrated, and asks validation questions before updating the record:</p><p></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;cfb7202b-74b2-4a5b-a2f8-850a3fe783d2&quot;,&quot;duration&quot;:null}"></div><p><strong>Working code is not proof of understanding.</strong> My original learning goals were aspirational: &#8220;Can explain why Rust has ownership.&#8221; The problem was that the agent couldn&#8217;t validate these. Tests passing doesn&#8217;t prove the learner internalized the concept. I rewrote every goal as observable evidence: &#8220;Fixed a borrow checker error by changing <code>self</code> to <code>&amp;self</code> and explained why.&#8221; Now the agent checks goals off when it sees the learner do or say the specific thing. Most AI-assisted learning resources don&#8217;t make this distinction between tutorial completion and verified learning. It maps directly to what the <a href="https://dl.acm.org/doi/fullHtml/10.1145/3632620.3671116">ACM study on novice programmers</a> calls the &#8220;illusion of competence&#8221;: students who used GenAI thought they performed better than they did. Observable goals are how you prevent that illusion.</p><p><strong>Trust erosion is fast and expensive.</strong> During testing, the agent generated a Tauri documentation link that looked perfectly plausible. It 404&#8217;d. One bad link, and the learner&#8217;s confidence in every link the agent provides is damaged. In a learning context where you&#8217;re asking someone to trust the AI as a teacher, credibility is non-negotiable. I built a <code>/docs</code> skill that uses WebSearch and WebFetch to find and validate documentation links, and added a directive to <code>CLAUDE.md</code>: &#8220;Never fabricate a URL. Only use links from the reference list or validated via <code>/docs</code>.&#8221; The skill exists because the agent hallucinated once. That&#8217;s all it takes.</p><h2><strong>The Part That Surprised Me</strong></h2><p>I expected the harness to be useful. What I didn&#8217;t expect was how effective Claude&#8217;s learning persona would be in practice. The interactions didn&#8217;t feel like a tutorial or a chatbot. They felt like pairing with someone who had infinite patience and deep knowledge of Rust, but who also knew exactly when to stop explaining and let me struggle.</p><p>At any point during a session, I could go deeper. &#8220;Why does Rust have both <code>String</code> and <code>&amp;str</code>?&#8221; would get a thoughtful comparison to Python/JavaScript equivalents, with a link to the relevant Rust Book chapter. Quick clarifications landed in two sentences. Conceptual deep-dives came with ASCII diagrams showing ownership flow. The agent calibrated based on what it had seen me understand in previous sessions, so it wasn&#8217;t re-explaining concepts I&#8217;d already demonstrated.</p><p>The repo itself is a bootstrapped Tauri app plus the learning framework I built around it. Beyond the Tauri bootstrap, the entire system is natural language: markdown directives, JSON config, and skill definitions. No custom code powers the learning experience. That matters because the harness is fully inspectable. Every directive is readable English. Adapting it for a different stack means rewriting markdown, not code.</p><h2><strong>Fork It, Adapt It, Make It Yours</strong></h2><p>A <a href="https://codesignal.dev/report-developers-and-ai-coding-assistant-trends">CodeSignal survey</a> found that 76% of developers already use AI tools to learn new skills. It&#8217;s the number one use case, ahead of code generation. Developers want to learn with AI. The tools just aren&#8217;t designed for it yet.</p><p>The <a href="https://github.com/AlteredCraft/learn-tauri">NatLang Todo repository</a> is on GitHub. You can use it two ways.</p><p><strong>Learn Tauri as-is.</strong> Fork the repo and open it in Claude Code. The Learning output style is already configured in the repo&#8217;s settings. Build a natural-language todo app through 10 progressive phases. The curriculum handles the rest: goal tracking, session continuity, reflection checkpoints, validated documentation links.</p><p><strong>Adapt the pattern for your stack.</strong> The learning framework is applied here to Tauri, but it could be extracted and pointed at anything. Want to learn Go by building a CLI tool? Replace the learning goals, adjust the phase docs, point the documentation references at the Go standard library. The skills, hooks, and structural pattern carry over. A technical educator could fork this repository and adapt it without writing a line of Rust. Every directive is readable English. The CLAUDE.md-as-curriculum approach, the SessionStart hook for continuity, the <code>/checkpoint</code> skill for structured reflection. These are building blocks, not blueprints. Take the pieces that make sense for your context and leave the rest.</p><p>Do we still need to learn frameworks deeply in a world where AI can generate working code? I think so. Not because you need to memorize syntax, but because you need to understand how the framework is wired together. You need the mental model that lets you evaluate whether AI-generated code is correct, not just whether it compiles. The <a href="https://serenitiesai.com/articles/ai-coding-skills-anthropic-research-2026">Anthropic study</a> found that debugging, the skill most eroded by AI assistance, is exactly the skill you need to validate what AI produces. That&#8217;s a loop you don&#8217;t want to break.</p><p>The tool isn&#8217;t the problem. It&#8217;s how you choose to hold it.</p>]]></content:encoded></item></channel></rss>