<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="https://purl.org/rss/1.0/modules/content/"
	xmlns:media="https://search.yahoo.com/mrss/"
	xmlns:wfw="https://wellformedweb.org/CommentAPI/"
	xmlns:dc="https://purl.org/dc/elements/1.1/"
	xmlns:atom="https://www.w3.org/2005/Atom"
	xmlns:sy="https://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
	xmlns:custom="https://www.oreilly.com/rss/custom"

	>

<channel>
	<title>Radar</title>
	<atom:link href="https://www.oreilly.com/radar/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.oreilly.com/radar</link>
	<description>Now, next, and beyond: Tracking need-to-know trends at the intersection of business and technology</description>
	<lastBuildDate>Thu, 05 Nov 2026 20:33:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://www.oreilly.com/radar/wp-content/uploads/sites/3/2025/04/cropped-favicon_512x512-160x160.png</url>
	<title>Radar</title>
	<link>https://www.oreilly.com/radar</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>The New Knowledge Artifacts of the AI Economy</title>
		<link>https://www.oreilly.com/radar/the-new-knowledge-artifacts-of-the-ai-economy/</link>
				<comments>https://www.oreilly.com/radar/the-new-knowledge-artifacts-of-the-ai-economy/#respond</comments>
				<pubDate>Thu, 05 Nov 2026 18:18:39 +0000</pubDate>
					<dc:creator><![CDATA[Tim O’Reilly]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20146</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/The-new-knowledge-artifacts-of-the-AI-economy-image-created-with-Gemini-scaled.jpeg" 
				medium="image" 
				type="image/jpeg" 
				width="2560" 
				height="1429" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/The-new-knowledge-artifacts-of-the-AI-economy-image-created-with-Gemini-160x160.jpeg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Every technology revolution creates new knowledge artifacts that are valuable and worth sharing.]]></custom:subtitle>
		
				<description><![CDATA[At our recent Foo Camp, a number of people said something like, “I don’t want someone else’s code any more. I may have my agent take a look at it, but I want to extract just the parts that I want, and may rewrite even those in Rust. It’s just too easy to create just [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">At our recent <a href="https://en.wikipedia.org/wiki/Foo_Camp" target="_blank" rel="noopener">Foo Camp</a>, a number of people said something like, “I don’t want someone else’s code any more. I may have my agent take a look at it, but I want to extract just the parts that I want, and may rewrite even those in Rust. It’s just too easy to create just the code that I want.”</p>



<p class="wp-block-paragraph">This topic was hot enough that <a href="https://blog.fsck.com/" target="_blank" rel="noopener">Jesse Vincent</a> held an entire session about it. I did not attend, but Jesse gave me a report from his Plaude AI notetaker. Here’s a relevant section of the summary:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Several participants argue that software development’s primary artifact may be shifting from executable code toward natural-language prompts, generation processes, and developer skills. One speaker compares Python to assembly language, suggesting that writing conventional code may become optional as natural-language generation takes precedence. Another argues that open source can survive such a transition because its core values—peer production, capacity building, and shared specifications—do not depend on who or what writes the code.</p>



<p class="wp-block-paragraph">At the same time, Jesse warns that maintainers are overwhelmed by floods of uninvited, automated, and often low-quality contributions. Participants say that traditional milestones such as pull requests, repositories, and conferences have helped contributors connect and gain recognition; as AI makes code replication easier, communities may need new ways to acknowledge participation and create paths for future developers. Some community interaction has moved to spaces such as Discord and direct messages, but structured opportunities are still needed.</p>



<p class="wp-block-paragraph">Scientific computing raises particular concerns. One panelist warns that AI-generated forks and agent attacks could threaten carefully verified foundations such as NumPy and SciPy. Scientific systems depend on battle-tested libraries and reproducibility, so thousands of unreviewed alternatives could undermine reliability. Participants suggest bridging traditional open-source communities and modern AI development, which currently may use different tools and artifacts.</p>



<p class="wp-block-paragraph">Other proposals include treating code as “liquid” and focusing open-source governance on durable infrastructure and specifications; maintaining agent storage independently of ephemeral container lifecycles; and using corporate compliance and safety-monitoring architectures to aggregate organizational traces.</p>
</blockquote>



<p class="wp-block-paragraph">These are important observations, all pointing in the same direction: AI is transforming the mechanisms and the artifacts of software development. For an increasing number of use cases, the software source code itself may no longer be the most important shareable knowledge artifact. This isn’t a new phenomenon. Every major change in technology calls for new mechanisms, new artifacts, and new institutions.</p>



<p class="wp-block-paragraph">Originally, software developers mostly distributed binaries, then open source developers made sharing source code the norm. Now we need to distribute and share something else: context and patterns for generating code on the fly. Knowledge is being unbundled and can be shared in new forms. A repo may now serve merely as a source of context for solving the exact problem I have, rather than the bundle of problems that the original developer(s) encoded into their library or packaged solution. Some people will keep their context and patterns private, either because they see proprietary advantage in keeping them to themselves or because they are too busy or too lazy to share. But part of the problem is that we haven’t yet figured out what needs to be shared!</p>



<p class="wp-block-paragraph"><em>The challenge for the software development community is to identify the new knowledge artifacts of the AI economy, and to build new mechanisms and incentives for sharing them.</em></p>



<p class="wp-block-paragraph">We’ve all had the experience of seeing a bespoke agentically generated app, wanting something similar, and wishing we could ask for a starting point so we didn’t have to vibe code an equivalent from scratch, with all the attention, false starts, and token costs that comes with that. Even in a world where software is generated by agents, it’s still not costless, and most of us like a good place to start.</p>



<p class="wp-block-paragraph">Of course, this won’t be all software. There are lots of areas where “sort of alike” software is a recipe for disaster. Imagine a sales and marketing group where everyone had their own vibe-coded CRM tools, with different metrics and capabilities. This is not good. So there is still a place for big SaaS applications, distributed binary software, and distributed source code. You pick the hat to fit the head. But there’s also a need for something new.</p>



<p class="wp-block-paragraph"><em>The purpose of this article is to start a conversation about exactly what it is that developers should be preserving, sharing, and building on from others, and what mechanisms are still missing to make that virtuous circle work more effectively. I can’t see into the future; I can only speculate. So, as is often the case, I take a historical view. The poet W. S. Merwin wrote, “<a href="https://www.poetryfoundation.org/poems/43122/the-river-of-bees" target="_blank" rel="noopener">We are the echo of the future.</a>” I have found that using history to frame the present can be a productive way to get our minds going in the right direction.</em></p>



<p class="wp-block-paragraph"><em>Note that while this article focuses on software development, the questions I’m asking here apply to virtually every field. Let me know if you have insights from your work in any area touched by AI.</em></p>



<h2 class="wp-block-heading">From code to context</h2>



<p class="wp-block-paragraph">The ease with which LLMs can generate code is paradoxically getting people to focus too much on how easy it is not to produce code. That may be blinding us to the fact that code itself is being displaced as a valuable, tradeable, shareable knowledge artifact. Maybe “displaced” is too strong a word. Different species of value overlap for a long time. Eventually, though, old ones fade and new ones become dominant. This has happened before. Every technology revolution draws not only on new mechanisms but also creates new valuable knowledge artifacts. I talked about this in my recent short keynote at AGNTCon + MCPCon.</p>



<iframe width="800" height="450" src="https://www.youtube.com/embed/sMjX5X_JPts?si=ZfcFU2w46dedB_FV" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">The open source revolution depended in part on mechanisms like modular design and source code control, even more than it depended on free software licenses. It birthed new coordinating institutions like GitHub. But it also created a valuable new class of knowledge artifact in the form of the source code repo, and subsidiary valuable artifacts like commit history and reputation. A developer’s public repos became a kind of résumé, and a project’s commit log became a record of who had done what, and how well. This replaced a previous world where binaries were the tradeable objects of the software economy. Microsoft’s fortune was built on selling licenses to binaries, and to anyone who measured the software economy in licenses sold, free software looked like value being destroyed. (Steve Ballmer called GPL’d free software “a cancer” and Microsoft VP Jim Allchin called it “<a href="https://web.archive.org/web/20030419103034/http://www.oreillynet.com/pub/wlg/122" target="_blank" rel="noopener">an intellectual property destroyer</a>.”)</p>



<p class="wp-block-paragraph">There were two ways that I like to think about the effects of open source software. First, value that was based on scarcity was replaced by value that was created by abundance. Back in 1975, Steve Baer described this as “<a href="https://www.oreilly.com/radar/the-clothesline-paradox-and-the-sharing-economy/" target="_blank" rel="noopener">the clothesline paradox</a>,” explaining that when you put your clothes in the dryer, the energy you use is measured and counted, but when you hang your clothes on the line, it is ignored by accounting, despite doing the same job. Open source software was like sunshine, free for the taking, and its value unmeasured. Everyone compared the revenue of free software companies like Red Hat and MySQL to the vastly larger revenues of proprietary software companies like Microsoft and Oracle, noted the fact that they hadn’t even survived as independent companies, and concluded that open source was a less effective business model because its creators <em>captured</em> less of the value. They missed the point that far more value had been <em>created</em> than had been captured. Open source went on to power most of the internet economy, with the value captured by other means than selling the software itself.</p>



<p class="wp-block-paragraph">Some people might think of this as a kind of failure, but they would be wrong. It is the system working exactly as its creators intended. I remember talking with Bob Scheifler, one of the creators of the X Window System, about whether it was OK that we were building commercial versions of their documentation. He told me that was exactly what he had intended. They put things out with a very permissive license precisely because they wanted others to build on top of them. I remember him saying “We want to raise the floor.” The creators of Berkeley Unix, Apache, and others felt exactly the same way. They didn’t want to win the existing game. They wanted to play a different game.</p>



<p class="wp-block-paragraph">And they succeeded, big time. As Clayton Christensen noted in 2004, when one thing becomes a commodity, modular and fungible, something else (usually something adjacent) becomes valuable. He called this “<a href="https://www.oreilly.com/pub/a/tim/articles/paradigmshift_0504.html" target="_blank" rel="noopener">The Law of Conservation of Attractive Profits</a>.” At about the same time, I had stumbled onto this principle in explaining the implications of open source software in giving rise to the new paradigm that I was shortly to start calling Web 2.0. Clay and I first bonded when we gave our respective keynotes about essentially the same thing at the 2004 Open Source Business Conference. I later wrote about the conjunction of our respective ideas in a piece called “<a href="https://www.oreilly.com/pub/a/tim/articles/paradigmshift_0504.html" target="_blank" rel="noopener">The Open Source Paradigm Shift</a>.”</p>



<p class="wp-block-paragraph">New artifacts are often the first visible sign of this value transition. You can see this at work in the evolution of the web. The web was born from the new mechanism of internet-enabled hypertext via HTTP, HTML, and the modular, replaceable software (the web browser and the web server) that made it useful.</p>



<p class="wp-block-paragraph">At first, the new valuable knowledge artifact was the website with its domain name, associated URLs, and HTML-formatted web pages. DNS was the coordinating institution. People paid fortunes for domain names on the premise that the site was the thing that mattered. And it did matter, and still does. But less than it used to. Over time, Google became the new coordinating institution, and its ability to point deep within websites made the web page, not just the site itself, a valuable knowledge artifact. Social media made “posts” and short-form video into other knowledge artifacts. New kinds of value creation and value capture tumbled out of that unbundling. Packaged software was displaced as the key monetizable artifact and replaced by web applications, which were information- and software-based frontends to vast backend databases.</p>



<p class="wp-block-paragraph">The click became a new and incredibly valuable knowledge artifact, the unit in which attention and intent were measured, and then priced. First pay per click advertising (Google), then engagement maxing (social media) became the basis of vast fortunes. The people who notice the new artifacts early, while everyone else is still focused on the old ones, then invent new business models based on them, often play a bigger game than those who were still trying to play by the new rules.</p>



<p class="wp-block-paragraph">When I summed up these ideas in “<a href="https://www.oreilly.com/pub/a/web2/archive/what-is-web-20.html" target="_blank" rel="noopener">What Is Web 2.0</a>” in 2005, I talked about the key principles being “harnessing collective intelligence,” “software above the level of a single device,” and “data as the next Intel Inside.” (That is, the next valuable source of lock-in.) The companies that survived the dot-com bust were the ones that understood that the data their users generated through their activity on the internet was the asset that mattered, not just the software that served it. That was an argument about a new knowledge artifact, though I didn’t use those words at the time. PageRank understood that a link was a vote, and a new mechanism to improve organic search birthed new dimensions of the internet economy. Links were bought, sold, and gamed accordingly. SEO (both “white hat” and “black hat”) and search quality became a battlefield.</p>



<p class="wp-block-paragraph">All those disciplines have had to change now that content has been absorbed into AI models. Books, music, video, web content, sites like Wikipedia, GitHub, and Stack Overflow were all grist for the mill. In the open source era, a voted-on answer to a well-posed question on Stack Overflow was a valuable artifact, and the reputation that came with writing good ones was a subsidiary artifact, just as it was on GitHub. The number of new questions asked on Stack Overflow peaked <a href="https://tech.slashdot.org/story/26/01/05/1431212/" target="_blank" rel="noopener">at roughly 200,000 a month around 2014</a> and was already sliding before ChatGPT, but the decline <a href="https://newsletter.pragmaticengineer.com/p/are-llms-making-stackoverflow-irrelevant" target="_blank" rel="noopener">accelerated sharply after November 2022</a>. The knowledge in those answers didn’t go away. It was absorbed into the models, which now give their own answers synthesized from all that they have consumed. In that way, they have also consumed much of the traffic that would have gone to the original knowledge creators. New mechanisms to create a <a href="https://www.oreilly.com/radar/ai-and-the-next-economy/" target="_blank" rel="noopener">circulatory economy of value creation</a> need to be developed.</p>



<p class="wp-block-paragraph">Software development also changed radically because of the internet. Another of my web 2.0 principles was what I called “the perpetual beta.” It’s easy to forget that in the PC era, software had major releases only every couple of years, with the new version distributed on CDs (and long before that, on 9-track magnetic tape.) I remember talking with Mark Lucovsky, who’d been a developer on Windows NT at Microsoft, shortly after he arrived at Google in 2005. He was exulting at the experience of being able to push a single change live worldwide soon after it had been tested. Eventually, we saw the formalization of new mechanisms like test-driven development (TDD) and continuous integration and continuous delivery/deployment (CI/CD), which we now take for granted, as if they’d always been the norm.</p>



<p class="wp-block-paragraph">The story isn’t over yet, though. The old knowledge artifacts don’t go away all at once, and they don’t go down without fighting. The new artifacts are only half-formed, and have weaknesses that can be exploited. We’re in the middle of that fight right now. But I suspect the winners will be those who first understand what the sources of deep value will be five years from now.</p>



<h2 class="wp-block-heading">When code is cheap, what becomes valuable?</h2>



<p class="wp-block-paragraph">When code is cheap to generate, the valuable thing may be the prompts, context, and other artifacts that tell the model what code to generate and how to do it well. I’ve started using the generic term “context bundles” to describe the artifacts that you hand the model to do its work.</p>



<p class="wp-block-paragraph">In the opening to this piece, I talked about software patterns extracted from code as one kind of new shareable knowledge artifact. But these are only one of many kinds of “context bundles” that are starting to be shared. Spec-driven programming is all about developing context bundles. The spec becomes the thing that is reviewed, versioned, and kept, and the code is regenerated from it as needed. (A lot of people are worried that this might become a return to waterfall development. And it could, if done badly. But done well, with rapid turns? Maybe just right.)</p>



<p class="wp-block-paragraph">An <a href="https://agentskills.io/" target="_blank" rel="noopener">Agent Skill</a> is another kind of context bundle, a folder of instructions, scripts, and reference material that an agent loads only when a task calls for it. Anthropic released the format as an open standard, and it has been adopted by a growing number of other agent products. An MCP server is yet another mechanism for presenting context that will shape the work of an LLM.</p>



<p class="wp-block-paragraph">But that’s not all. The agent trace, the record of what an agent tried, which tools it called, and which context it drew on, is the closest thing we have to commit history for work that doesn’t get formalized as code. The log of which context bundles were invoked, and by whom, could also be the raw material for attribution and payment, much as the click was the raw material for advertising. And the stream of what people ask their agents to do may become to this era what the click was to the last, the <a href="https://battellemedia.com/archives/2003/11/the_database_of_intentions" target="_blank" rel="noopener">signal of intent</a> around which the coordinating institutions of the AI economy get built. I’ve often wondered what the agentic equivalent to PageRank will be. Will agents leave “pheromone trails” that grow stronger or fade over time, in the way that links do?</p>



<p class="wp-block-paragraph">Even a well-formed question or conjecture could be a kind of context bundle. Math and science already value and exchange these, and I’ve started to think that there is an opportunity for building infrastructure for sharing and crediting them. After all, <a href="http://arxiv.org" target="_blank" rel="noopener">arXiv.org</a> has already pushed the boundary for credit further upstream by publishing preprints rather than just reviewed papers. Why not go all the way to giving priority credit for well-formed conjectures?</p>



<p class="wp-block-paragraph">The eval, a set of test cases that encodes what good work looks like for a particular task, may also turn out to be one of the most valuable things a domain expert can create, withhold, or share. But there’s a serpent in the Garden of Eden. At Foo Camp, <a href="https://www.nickmvincent.com/" target="_blank" rel="noopener">Nick Vincent</a> observed to me that there’s a real risk to evals as a context object, because there is a race going on to acquire massive amounts of data (say on corporate workflows) and sell it to the labs to train on it. But an eval only works if the model being judged hasn’t already seen the answers. Once the test cases leak into the training data, the eval measures what the model memorized rather than what it can do. How do we protect the holdout set for evals? That may be a critical mechanism that is still needed, and one that the people who build evals, and the companies whose workflows they describe, have every reason to develop. IMO, it would be good if there were more transparency into this process, and perhaps even supervision by a neutral body.</p>



<h2 class="wp-block-heading">How do we come to trust new artifacts?</h2>



<p class="wp-block-paragraph">Part of the work of every revolution is building the mechanisms that help market participants to trust its new artifacts. In <a href="https://wwnorton.com/books/Natures-Metropolis/" target="_blank" rel="noopener">his book <em>Nature’s Metropolis</em></a>, William Cronon tells how Chicago became the center of the world’s grain trade in the 1850s. The mechanisms that enabled this were the railroad, the steam-powered grain elevator, and the telegraph. The coordinating institution became the Chicago Board of Trade. In 1856 the board <a href="https://www.americanheritage.com/1848-one-hundred-and-fifty-years-ago" target="_blank" rel="noopener">adopted uniform grading standards</a>. Before that, a farmer loaded his grain into individual sacks, and every buyer along the way had to inspect each lot or trust the seller. Afterward, a load of wheat was inspected by a middleman, dumped into a bin with other grain of the same grade, and its owner was handed a receipt for, say, a thousand bushels of No. 2 spring wheat. The grading standards became a new mechanism enabling trust and the grade receipt the new knowledge artifact certifying it. Together they separated the ownership of grain from the grain itself. Once merchants started trading receipts for grain, it didn’t take long before they were trading promises of grain not yet delivered, and the futures market was born. (That raises an intriguing question: What will be the derivatives of the AI era?)</p>



<p class="wp-block-paragraph">Cronon’s history also observes that the receipts were only as good as the warehousemen who issued them. Some of them issued receipts backed by no grain at all, or spread rumors that stored grain was spoiling so they could buy receipts cheaply. It took <a href="https://www.americanheritage.com/foot-door" target="_blank" rel="noopener">years of fights inside the Board of Trade</a>, and finally state regulation that the Supreme Court upheld in <em>Munn v. Illinois</em>, to make the receipts trustworthy. New knowledge artifacts invite counterfeits.</p>



<p class="wp-block-paragraph">Even when there’s no fraud involved, there are often missteps in the early days of a new technology. Consider the rise of spreadsheet models that could be filled in with the user’s own data. A model was a set of assumptions and formulas that let anyone ask “what if?” and get an answer in seconds. Magic at the time! And eventually completely taken for granted. The model became an artifact that could be passed around, and used to make business decisions at companies other than the one that had created it. In 1984, a few years into the spreadsheet revolution, Steven Levy wrote “<a href="https://getpocket.com/explore/item/a-spreadsheet-way-of-knowledge" target="_blank" rel="noopener">A Spreadsheet Way of Knowledge</a>” about what VisiCalc and Lotus 1-2-3 were doing to American business. Levy warned that a spreadsheet model is only as good as its assumptions. Back then, people taking a poorly-executed spreadsheet model as gospel was the equivalent of some of today’s AI usage fails.</p>



<h2 class="wp-block-heading">Feeling our way into the future</h2>



<p class="wp-block-paragraph">When people stop valuing the thing they used to value, ask what they are coming to value instead. Being alert to valuable new knowledge artifacts is a superpower. The new artifacts tend to show up well before the institutions that organize them, and long before anyone has worked out how to measure them. GitHub was founded more than a decade after open source software became mainstream, and Google didn’t become dominant till more than a decade after the first websites. My bet is that we are at a similar moment with context, with the artifacts starting to appear and the institutions that will coordinate them still unbuilt.</p>



<p class="wp-block-paragraph">There is a lot of work that I’m following eagerly, looking to see where, whether, and how it gains traction.</p>



<ul class="wp-block-list">
<li>Duncan Davidson is doing fascinating work on what it would mean to have a <a href="https://duncandavidson.com/a-home-for-personal-context" target="_blank" rel="noopener">home for personal context</a>. I can’t wait till he makes more of this work public and reusable. Relatedly, the <a href="https://ai-disclosures.org/prototypes" target="_blank" rel="noopener">open memory protocol initiative</a> is an attempt to define a useful set of mechanisms for exchanging context.</li>



<li>Sam Schillace has started building a repository of what he calls <a href="https://ramparte.github.io/agent-building-playbook/index.html" target="_blank" rel="noopener">agent-building patterns</a>. One of those patterns, “<a href="https://ramparte.github.io/agent-building-playbook/patterns/anchor-on-canonical-names.html" target="_blank" rel="noopener">Anchor on Canonical Names</a>,” echoes the idea that I wrote about last year in “<a href="https://www.oreilly.com/radar/magic-words-programming-the-next-generation-of-ai-applications/" target="_blank" rel="noopener">Magic Words</a>,” and that we are also exploring with the <a href="https://www.oreilly.com/online-learning/expert-intelligence.html" target="_blank" rel="noopener">O’Reilly Expert Intelligence MCP</a>. As Sam puts it, canonical names are a way of referencing “a whole coherent methodology the model already learned in training, far more reliably than a paragraph paraphrasing the same idea.”</li>



<li>There are numerous attempts to reinvent GitHub for the agentic era, including <a href="https://cursor.com/origin" target="_blank" rel="noopener">Cursor Origin</a> and <a href="http://entire.com" target="_blank" rel="noopener">Entire</a>, founded by former GitHub CEO Thomas Dohmke. Entire describes itself as “new distributed Git forge that stores your intent alongside your code, built for the scale and throughput of agentic coding.” Instead of traditional pull requests, it uses Trails, an agent-driven review system that logs session traces and automated evaluations so developers can merge code without reading every single line of a diff. Origin is an agent-first Git hosting and collaboration platform designed around structured semantic diffs, machine-readable merge states, and automated agent routing. As commercial products, both of these are examples of existing software distribution mechanisms and artifacts.</li>



<li>Perhaps most interestingly for the point I’m exploring in this piece, Anthropic is building a proprietary, internal-only replacement for Git itself for its own use. The company published a <a href="https://www.anthropic.com/research/redesigning-source-control" target="_blank" rel="noopener">very detailed description of the system</a>, which it calls Scion. It might even be detailed enough for someone with a big team and a ton of compute to reproduce, using the description as a starting point. But you can see at the scale of what they have built the limits of the “distribute context and specs and rebuild on the fly” model.</li>



<li>But there are also attempts to build systems that enable developers to share lightweight pieces in a new architecture of participation. <a href="https://commonfabric.com/" target="_blank" rel="noopener">Common Fabric</a> is building an entire system premised on disposable agent-generated software expressing repeatable patterns, using data that is associated with users rather than with applications and that carries with it its own rules for how it can be used. In <a href="https://oreillyradar.substack.com/p/resonant-computing-and-common-fabric" target="_blank" rel="noopener">my conversation with cofounder and CEO Alex Komoroske</a>, he described these patterns as small pieces of code that can be fetched from anywhere on the internet or written by an LLM on the fly. Agents will mostly write them, not human developers. But they will mostly write them on users’ behalf, and once someone’s agent has built a pattern, anyone else can use it. Their solution may not be the winning one, but it is definitely a bold leap into what may be a very different future for software.</li>
</ul>



<p class="wp-block-paragraph">Don’t get trapped in the past of software development. Root yourself in its history, the soil from which it grows, and imagine its future. What will we want to share, what will we want to reuse, and what mechanisms are needed for us to do so effectively?</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/the-new-knowledge-artifacts-of-the-ai-economy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>What It Takes To Trust Automatic Model Routing</title>
		<link>https://www.oreilly.com/radar/what-it-takes-to-trust-automatic-model-routing/</link>
				<comments>https://www.oreilly.com/radar/what-it-takes-to-trust-automatic-model-routing/#respond</comments>
				<pubDate>Thu, 05 Nov 2026 11:54:16 +0000</pubDate>
					<dc:creator><![CDATA[Markus Eisele]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20143</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/What-it-takes-to-trust-automatic-model-routing-scaled.jpeg" 
				medium="image" 
				type="image/jpeg" 
				width="2560" 
				height="1429" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/What-it-takes-to-trust-automatic-model-routing-160x160.jpeg" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[When a new coding model comes out, I want to try it. New releases always carry a promise for me. Maybe it can handle a change that needed too much manual intervention before. Maybe it can find the problem an earlier model kept missing. Maybe it can handle some coding scenarios that my favorite model [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">When a new coding model comes out, I want to try it. New releases always carry a promise for me. Maybe it can handle a change that needed too much manual intervention before. Maybe it can find the problem an earlier model kept missing. Maybe it can handle some coding scenarios that my favorite model can’t handle today. To discover a new model’s capabilities, I need to spend time with it to find out what I can reasonably hand over to it.</p>



<p class="wp-block-paragraph">Having said all that, I understand the frustration when a new model becomes available, but your assistant won’t let you choose that model. Somebody has decided which models you can use and when you can use them. You are left trying to decide whether the answer is good enough and can’t get your hands on the new shiny toys. At the same time, I’m quite happy to let an assistant choose a model if that makes my budget last longer. New toys tend to be expensive and top-line models don’t make a difference here. There are plenty of steps in development where a cheaper model might do everything required. Using it for those steps could leave more of the budget available for a difficult investigation later. If routing lets me keep using capable assistance throughout the day, I have a good reason to use it. I want routing to give me more assistance for the same budget. The quality of that assistance depends on how the models, tools, and context handling fit together. And I need enough information about what the assistant did to judge the result.</p>



<h2 class="wp-block-heading">Getting more help from the same budget</h2>



<p class="wp-block-paragraph">A fixed AI budget puts a fairly ordinary constraint on a team. Or better, on the affected individual.  You have an amount you can spend, and of course you want as much help as possible from it. Each request uses some of that amount. And it really gets frustrating when repeating a request, correcting an answer, and asking the assistant to try again consume even more of the budget.</p>



<p class="wp-block-paragraph">Automatic routing gives the system a way to manage that spending for you. It can use a cheaper model where that model is likely to succeed and spend more where the additional capability is likely to help. You, the developer, can then concentrate on the task while the assistant handles some of these decisions and you don’t have to constantly worry about which model to pick for which task.</p>



<p class="wp-block-paragraph">The researchers behind <a href="https://arxiv.org/html/2406.18665v4" target="_blank" rel="noopener">RouteLLM</a> trained routers to choose between a stronger model and a cheaper one using preference data. They reported more than a twofold reduction in cost with minimal impact on response quality on the benchmarks they evaluated. You still need to check how it performs on your own tasks.</p>



<p class="wp-block-paragraph">The next question is how those savings get to me in my day-to-day jobs. If requests become cheaper to serve, the same subscription could support more of them. A team could keep its assistant available to more people within an existing spending limit. The saving could also make it practical to use a more capable model more often when the task calls for it. So much for the theory. In most assistants that behavior is little more than a “switch.” That connection to better results needs to be visible in the product. If I choose automatic routing, I want to understand what I get from it. Perhaps I can send more requests before I reach a limit. The results still need to meet my expectations, of course. This is a fairly reasonable thing to ask of a feature that spends part of the budget on my behalf.</p>



<p class="wp-block-paragraph">The time we spend with the assistant belongs in that calculation too. Think about how a cheaper request can lead to another attempt, followed by another explanation, followed by a correction. If this happens often enough, I spend more time getting the code ready to accept than I would have with a more capable model. So when we compare routing policies, we need to follow the task through those interactions. Then we can look at both the money spent and the time we put into getting there and compare both together.</p>



<p class="wp-block-paragraph">Consider a Java service that sends an order to another service. Occasionally, the request times out, the caller retries, and two orders appear. You ask the assistant to investigate. It can begin by finding the retry code and following its callers, which may be manageable with a cheaper model. As it reads further, it finds a possibility that needs more investigation: The receiving service may have saved the first order before the response was lost. The caller sees a timeout, but that doesn’t tell it whether the order was created.</p>



<p class="wp-block-paragraph">The assistant now needs to inspect how the receiving service handles a repeated request. A proposed fix should be checked against the failure we are concerned about: save the order, lose the response, and repeat the request without creating a second order. If the assistant can only inspect the caller, it should leave the receiving service’s behavior as an open question. Spending more on a model may help with the reasoning once the relevant code is available, but the assistant still needs access to that code or evidence of its behavior.</p>



<p class="wp-block-paragraph">The task only becomes clearer as the assistant reads more code. That gives the router more information than it had when it saw the original prompt. It may make sense to spend more on the next part of the investigation, even if the initial steps were straightforward. A recent <a href="https://arxiv.org/abs/2607.00053" target="_blank" rel="noopener">SWE-Router paper</a> takes this approach: A cheaper model makes a short initial attempt. The router then uses what happened to decide whether to continue with that model or switch to a stronger one. Its benchmark results show that these early actions can improve the routing decision. That seems like a sensible direction for coding assistants: Let what the agent discovers influence how it continues.</p>



<h2 class="wp-block-heading">The model operates inside a harness</h2>



<p class="wp-block-paragraph">Following the retry through the code also shows how much of this depends on the harness, the software surrounding the model. That’s not only the client running on your machine; it includes the router and backend logic. They provide context and tools, manage the conversation, and control how the agent proceeds.</p>



<p class="wp-block-paragraph">The assistant needs to find the code that sends the order. It also needs to find out how the receiving service handles a request it has already processed. Once the model has that information, it can reason about the interaction. The harness has to help the agent get there.</p>



<p class="wp-block-paragraph">This includes some really practical details. Can the agent search the relevant repository? Does it retain the information it found as the conversation gets longer? Can it run a test against the proposed change? If that test fails, does the failure reach the model in a form it can act on? These details affect both the result and the cost of reaching it. An assistant that loses relevant context may need to find the same information again. We pay for those attempts, and we may need to explain the problem again too. When the assistant finds the right code and runs an appropriate test, the result is way easier to review.</p>



<p class="wp-block-paragraph">A model benchmark tells us how a model performed under particular conditions. The assistant we use has its own instructions and tools. It decides what information to provide to the model and what to do with the response. We experience all of that when we ask it to do something. A new model can improve that experience considerably. I want to use it with a harness that can find the relevant code, retain context, and run the tools the task needs. I also want the people integrating it into my assistant to check how it behaves with their harness.</p>



<p class="wp-block-paragraph">The same applies when a company runs an assistant on its own infrastructure. It might connect to a model through an approved cloud end point or use a model running on its own hardware. The developer may see the same interface in both cases. Behind that interface, the model may have different tools or different access to the code. We made this case in our O’Reilly book <em><a href="https://www.oreilly.com/library/view/applied-ai-for/9781098174491/" target="_blank" rel="noopener">Applied AI for Enterprise Java Development</a></em>.</p>



<p class="wp-block-paragraph">Returning to the order example: Suppose the assistant proposes another retry without examining whether the first order was created. The model may have struggled with the problem. It may also have been missing information about the receiving service. Looking at which files it examined and what it checked helps us investigate the failure.</p>



<p class="wp-block-paragraph">This is exactly the kind of information I would like my assistant to make easy for me to find. It gives me somewhere to start when the result is disappointing. I can try another model, and I can also check whether the assistant found the information it needed. I believe I am less helpless in front of an already very magic system.</p>



<h2 class="wp-block-heading">But what can a developer judge?</h2>



<p class="wp-block-paragraph">We have a reasonable chance of judging an assistant’s answer when we know the system and can examine what it has done. In a familiar service, I can follow the changed behavior and read the tests. I can then decide whether the change addresses the problem. With an unfamiliar service or programming language, I need more time to understand the code before I can make that decision. The assistant’s explanation can help me get there. It can point to the relevant code and explain how the change affects it. If it says that repeating the order request is safe, I can follow that claim into the receiving service. I need to see how that service handles a request it has already processed.</p>



<p class="wp-block-paragraph">A clear explanation makes a proposal easier to understand. Checking the proposal takes another step. With that, I have seen confidence develop faster than that understanding. And I always wondered why. In an <a href="https://arxiv.org/abs/2211.03622" target="_blank" rel="noopener">earlier study of an AI coding assistant</a>, participants with access to an assistant produced less secure code while being more likely to believe their code was secure. The experiment used an older model and specific security tasks, so was not a general-purpose study, but even with that limitation, it shows why confidence about a change deserves attention. Assistant interfaces should show which claims have been checked and which still depend on an assumption. They should also keep an unresolved question visible as the conversation continues. “Review the result carefully” becomes easier to act on when the assistant helps me find the parts that really need review.</p>



<p class="wp-block-paragraph">Deciding whether the router chose well takes a little more effort. Spotting a mistake tells me something about the answer in front of me. To find out whether another model would have done better, I need a reasonably fair comparison. It should start with similar code, context, and tools. If I change several of those at once, it becomes hard to tell what made the difference. This leaves me in an awkward position: I am responsible for accepting a result, while some of the decisions that shaped it are effectively hidden from me. A model name gives me little more than a reference. After using a model for a while, you develop expectations about what it handles well and when another attempt is likely to be necessary. Those expectations come from your own tasks and experience. If the service does not expose a precise model version, you cannot be sure that the model behind the same name has remained unchanged.</p>



<p class="wp-block-paragraph">Despite all those drawbacks, access to a new model gives me something to try when my assistant is stuck. So I really can understand why people want that choice. It’s one of the few concrete ways to influence what happens next.</p>



<p class="wp-block-paragraph">And of course the choice itself comes with expectations. But is this a real effect? In a <a href="https://arxiv.org/html/2603.23075v1" target="_blank" rel="noopener">study of AI model choice</a>, people planning a holiday chose between a model presented as more capable and another as more energy efficient. Both choices routed to the same model, GPT-4o mini. People who chose the supposedly stronger option rated its responses more highly. They selected their own option, though, and had separate conversations. Some of the difference in ratings could have come from the people taking part or from those conversations. A <a href="https://faculty.washington.edu/alexisr/novelty.pdf" target="_blank" rel="noopener">second study</a> gave 48 people functionally identical chatbots labeled “old” and “new.” The researchers varied which appearance received each label and which version people tried first. Thirty-seven preferred the “new” version. The suggestion that one version was newer was enough to influence their preference. Having some control may also change how people feel about a system. In <a href="https://websites.umich.edu/~csandvig/research/The_Illusion_of_Control.pdf" target="_blank" rel="noopener">experiments with social media feeds</a>, people reported greater satisfaction when controls were available, even when the controls changed the feed randomly. Later, researchers told participants in the interview study that one feed behaved that way. Most could then identify it. Once they knew what to examine, they could recognize the difference.</p>



<p class="wp-block-paragraph">These three studies involved general users doing tasks outside software development. We still need to understand how those findings carry over into coding. But for me, the studies suggest that the model name and the choices we make influence our impression of an answer and its quality. But we are fighting the wrong fight here. The real value would be in giving developers a way to check the answer.</p>



<p class="wp-block-paragraph">The minimum control I want in a coding assistant could be quite modest. Let me ask it to spend more of the budget on a difficult investigation. Let me request a more capable model when repeated attempts are going nowhere. The harness can use that request together with what it has already learned about the task. I want to be able to leave routine routing decisions to the system, and still intervene when I have a reason. Each investigation gives me an opportunity to learn what the assistant handles well. I need to see enough of what happened to make that judgment, and the conversation is a good place to start.</p>



<h2 class="wp-block-heading">Make the conversation easier to assess</h2>



<p class="wp-block-paragraph">When I look back at a past conversation, I want to understand what the assistant had available, what it did, and what it checked. That gives me a way to decide whether to accept a change or investigate further. The interface could help by showing more of what happens around the model, but it does not necessarily have to.</p>



<p class="wp-block-paragraph">At a minimum, I need a context breakdown. The messages I type are part of the information the model receives. The harness also supplies system instructions, descriptions of tools, and guidance such as project rules and skills. All of that takes up visual space, but it shows how much space each part uses and how much is reserved for the response so I can act more appropriately in my next steps in the conversation.</p>



<p class="wp-block-paragraph">Ultimately this makes developer mistakes visible earlier. When you realize that, even a short exchange can involve quite a lot of information. If tool descriptions take a large share, I can look at which integrations the task needs. Perhaps the assistant is configured for several kinds of development MCP servers, while a simple task only needs a few of those tools. I can try a more focused setup and check how it handles a similar task. It still needs access to the information and tools that help it finish the task.</p>



<p class="wp-block-paragraph">In experiments I’m driving at IBM, I’m connecting this context information with a record of what the assistant did. I can see context changes alongside actions such as reading a file or loading a skill. From there, I can open the relevant part of the conversation. If the assistant delegated part of a task, I can follow that task as well. I have somewhere to begin looking when a long session becomes difficult to follow.</p>



<p class="wp-block-paragraph">For example, the assistant might read the same file several times and receive identical content. The view can draw my attention to those reads and let me inspect what happened around them. Of course, the assistant may have had a reason to check the file again. I may also decide to ask it to summarize what it has found and continue from there. I can make that decision after looking at the messages and results behind the observation.</p>



<p class="wp-block-paragraph">Alongside the activity history, I want to see the current context size, the session’s total token usage, and the cost of its requests. A context snapshot tells me how much space was occupied at a particular point. The usage recorded over a session tells me how many tokens its requests consumed, and cost tells me what I paid for those requests. These figures answer different questions, and I need to know which one I’m looking at. An estimate should be labeled as an estimate. If part of the history is missing, that gap should be visible too.</p>



<p class="wp-block-paragraph">With the history available, I can also follow a claim back to what the assistant actually checked. Take the order example again: I want to see which code the assistant read and whether its test covered losing the response after the order was saved. If it only examined the caller, I still need to understand how the receiving service handles the repeated request. The conversation should keep that question open so I can provide the missing information or ask the assistant to investigate further.</p>



<p class="wp-block-paragraph">A report that tests passed needs a little context as well. I want to know what those tests covered and which version of the code they ran against. If the assistant edited the code again afterward, I need a new check. And when it wrote both the implementation and the tests, both may follow the same mistaken assumption. I still need to compare them with the behavior we wanted.</p>



<p class="wp-block-paragraph">In <a href="https://www.oreilly.com/radar/the-right-amount-of-spec-for-agentic-development/" target="_blank" rel="noopener">my article on specification</a>, I argued for agreeing on enough of that behavior to make the result checkable. The assistant can keep that agreement available as the conversation gets longer. When it says that a requirement is satisfied, it can point to the code and the check supporting that claim. If a question remains open, I want to see it before I accept the change. It should also be easy to tell what stage the assistant has reached. It might be proposing a change, reporting that it edited a file, or showing the result of a test run. Those are different points in the task. A clear account of what happened helps me decide what to do next.</p>



<p class="wp-block-paragraph">In practice, most of this can stay fairly brief. Put the checks and open questions beside the proposed change, with links to the actions and results behind them. I can read the summary, then open the part that needs more attention. As I use the assistant on similar tasks, those checks give me a basis for deciding how much I can rely on it.</p>



<p class="wp-block-paragraph">I also want to understand how routing spends the budget. I already struggle to see token usage in some interfaces. Showing me how many tokens remain in my budget helps me decide how much more I can do. When one session consumes a large part of it, I want to understand where it went. Showing the recorded usage alongside the assistant’s actions would help me connect the spending to what it attempted.</p>



<p class="wp-block-paragraph">A team can use this information when choosing a routing policy. Try the assistant on tasks that resemble everyday development. Keep the starting conditions similar and follow each attempt through to a result the team can review. Include the corrections and the time developers spent getting there. Then compare how much assistance the same budget provided and whether the resulting code met the team’s expectations. That comparison may also point to something in the harness that needs attention. An assistant that repeatedly retrieves the same information might need better context handling. One that lacks access to a relevant service might need a different set of tools. Those are things we can investigate once we can see what happened during the task.</p>



<p class="wp-block-paragraph">Automatic model routing can be great when it gives developers more access to capable assistance for the money they already spend. I’m happy to let the assistant choose models for routine steps and spend more when a difficult investigation calls for it. The whole assistant needs to support that arrangement. Its models, tools, and context handling all contribute to the result.</p>



<p class="wp-block-paragraph">As the industry develops these systems, we need to keep finding better ways to help developers judge the answers they receive. I want to be able to look at a conversation, understand what happened, and decide what to do next. That is how I can build trust in the assistant while letting it take on more of these decisions.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/what-it-takes-to-trust-automatic-model-routing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Resonant Computing and Common Fabric</title>
		<link>https://www.oreilly.com/radar/resonant-computing-and-common-fabric/</link>
				<comments>https://www.oreilly.com/radar/resonant-computing-and-common-fabric/#respond</comments>
				<pubDate>Wed, 04 Nov 2026 21:01:32 +0000</pubDate>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20138</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/USE_THIS_live-with-tim-oreilly-radar-1600x840-1.png" 
				medium="image" 
				type="image/png" 
				width="1600" 
				height="840" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/USE_THIS_live-with-tim-oreilly-radar-1600x840-1-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Alex Komoroske Live with Tim O’Reilly]]></custom:subtitle>
		
				<description><![CDATA[This event summary was created by Claude with editing by Tim O’Reilly, based on a transcript of the conversation. Alex Komoroske is the CEO and a cofounder of Common Fabric, a public benefit corporation building the infrastructure for human-centric agentic computing. He spent more than a decade at Google as a product manager and director [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>This event summary was created by Claude with editing by Tim O’Reilly, based on a transcript of the conversation.</em></p>
</blockquote>



<p class="wp-block-paragraph">Alex Komoroske is the CEO and a cofounder of <a href="https://commonfabric.com/" target="_blank" rel="noopener">Common Fabric</a>, a public benefit corporation building the infrastructure for human-centric agentic computing. He spent more than a decade at Google as a product manager and director of product management on Chrome, Google Maps, and Google Earth, and he later ran corporate strategy at Stripe. At O’Reilly’s AI Codecon a year earlier, in a talk called “<a href="https://www.youtube.com/watch?v=AhW5M18cvGM" target="_blank" rel="noopener">Why Centralized AI Is Not Our Inevitable Future</a>,” he argued that we were sleepwalking into the wrong future for AI and didn’t have to accept it. Since then he has coauthored the <em><a href="https://resonantcomputing.org/" target="_blank" rel="noopener">Resonant Computing Manifesto</a></em>, which Tim signed.</p>



<p class="wp-block-paragraph">On Tuesday, October 20, 2026, Tim O’Reilly hosted Alex for an hour-long conversation, “<a href="https://www.oreilly.com/live-events/can-we-build-more-human-technology-alex-komoroske-live-with-tim-oreilly/0642572461768/" target="_blank" rel="noopener">Can We Build More-Human Technology?</a>” Common Fabric’s consumer product hasn’t yet been released, but Alex showed Tim the product privately the day before, and Tim said his conversations with Alex had left him “more optimistic about the future of the web and the AI future than I’ve been in a long time.” They talked about the underlying theory behind Common Fabric.</p>



<h2 class="wp-block-heading"><strong>The Resonant Computing Manifesto</strong></h2>



<p class="wp-block-paragraph">The <em>Resonant Computing Manifesto</em> lays out five principles for resonant technology. It is <strong>private</strong>, meaning you’re the steward of your own data and it’s used in accordance with your wishes. It is <strong>dedicated</strong>, with no conflicts of interest. It is <strong>plural</strong>, with no central entity holding an unnecessary amount of power. It is <strong>adaptable</strong>, able to do things its creators didn’t specifically build in. And it is <strong>prosocial</strong>, helping people create meaning together rather than living as “individual islands.”</p>



<p class="wp-block-paragraph">According to Alex, the manifesto rests on a distinction between two kinds of experience.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">A hollow thing is something that you like when you’re using it, and then, after you’re done using it, you’re left feeling regret. And a resonant thing is something that you like when you’re using it, and then afterwards you’re left feeling nourished. They are superficially very similar, but they’re fundamentally, deeply, structurally different.</p>
</blockquote>



<p class="wp-block-paragraph">Alex argued that modern tech, business, and politics are very good at delivering hollow experiences efficiently and poor at delivering resonant ones. The manifesto came from a group of people who still believe in the hacker ethic of the 1990s and early 2000s, he said. They believe that technology is a large positive force for humanity, but also that the industry has spent the last decade optimizing for engagement and extraction, which has undermined that positive impact. They think that the AI transition is a unique opportunity to reset the norms and the architecture to make something that works better for people than for extractive business models.</p>



<iframe width="800" height="450" src="https://www.youtube.com/embed/AyIjbcQelCg?si=e0-u9BYd3if1Luz-" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Privacy, bits, and the physics of trust</strong></h2>



<p class="wp-block-paragraph">Tim started out by asking Alex to go a bit deeper on privacy. Privacy and trust are related in ways the privacy movement often doesn’t consider, Tim said. We don’t put bars on all of our windows. We trust most people not to break in because we built a society where trust is the norm. It’s held in place not just by penalties but by social rewards for people who follow norms. “People will think you’re a creep if you go look into somebody’s window,” Tim noted. Like bars on the window, hard privacy seems to Tim a bit like an admission that we’re giving up on positive social norms and penalties for rulebreakers (where needed). He wanted to know whether Alex meant “private” in the way that HIPAA makes your healthcare records private, where your data is made hard for anyone to see, including you.</p>



<p class="wp-block-paragraph">Alex doesn’t mean that at all. He means privacy that makes your data more useful by putting it under your control. He gave a three-part answer about how that happens. The first leg of the stool is what <a href="https://nissenbaum.tech.cornell.edu/" target="_blank" rel="noopener">Helen Nissenbaum</a>, a professor of information science at Cornell Tech, calls <a href="https://en.wikipedia.org/wiki/Contextual_integrity" target="_blank" rel="noopener">contextual integrity</a>. What she means by that is that your data is used in line with your intentions and expectations, with no use that harms you, and no nasty surprises. Alex said it’s the best formulation of privacy he knows. Tim agreed.</p>



<p class="wp-block-paragraph">The second part of Alex’s answer was that there are differences between atoms and bits. Arguing from game theory, Alex suggested that trust emerges when you expect to deal with the same person or entity again. In the physical world, you might be seen peering into someone’s window and shamed as a result. But “in the world of bits,” because the peeping is invisible, there are fewer immediate consequences, and “you can have a whole bunch of creepy companies peering through your window.” And because your data becomes more useful when combined with other data, there are much larger financial incentives to misbehave. (Tim would still argue that we also need to establish the right set of social norms and laws for regulating this bad behavior.)</p>



<p class="wp-block-paragraph">The third point Alex made is that data is viral. It can be copied at full fidelity, instantly, for almost nothing, so once it’s out of your sight, it’s out of your control. The industry has relied on three inadequate mechanisms to address this: 1) terms of service nobody reads; 2) permission dialogs, which Alex called “responsibility-laundering dialogs” (He argued they ask an ill-posed question, whether you trust another entity, open-ended and forever, with your data. “I trusted 23andMe with my genetic data 10 years ago, and I sure as hell don’t trust them now,” he noted.); and 3) silos, where each app sees one slice of you. Spotify knows what you listen to and Strava knows when you work out, but neither knows which songs you like during a workout.</p>



<p class="wp-block-paragraph">Alex said he respects Google, where he worked for many years, but he argued that it has little incentive to build much on your data beyond keeping you from leaving. His point was that “our data is kind of sitting there, not really working for us, and also not really on our turf,” and that this is the result of technical decisions the industry made rather than a law of nature.</p>



<iframe width="800" height="450" src="https://www.youtube.com/embed/UoFA7mFiyVE?si=lCs78X5_7HpRUcHK" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Data that carries its own rules</strong></h2>



<p class="wp-block-paragraph">Tim asked what makes Common Fabric different. A lot of people have espoused ideals like those of the <em>Resonant Computing Manifesto</em>, though perhaps in different words, but not much has changed. Alex replied that resonance is hard to build today because users spend their time on the software creator’s turf, doing what the software creator wants. Unless that structure changes, engagement-maxxing keeps emerging. Common Fabric goes down to lower layers and does something very different with the very structure of data. Alex said Steven Levy, writing about the manifesto for <em>WIRED</em>, had described what Common Fabric is working on as “resonant AF.”</p>



<p class="wp-block-paragraph">Conceptually, in Common Fabric, every piece of data carries a metadata sidecar wherever it goes. In that sidecar, there are two things. One is cryptographic provenance: who did the last computation, the fingerprint of the software that did it, and what its inputs were, traceable all the way back. Alex said the math is similar to blockchains, but without a globally consistent, financialized ledger. The other is policy, the conditions under which the data may be declassified, now or in the future.</p>



<p class="wp-block-paragraph">An open source runtime, which Alex called “the core reaction chamber” of Common&nbsp; Fabric, enforces those policies. It receives a proposed graph of computation, made of untrusted code running on specific data with specific policies. If the computation is legal, the runtime runs it, updates the provenance chain, and tells everybody. If not, it stops with a descriptive error, for example because a network request could leak something derived from confidential data. You can run the runtime on your own machine, but most people won’t, so Common Fabric will run it in the cloud in trusted execution environments. These are hardware-isolated environments where the host can’t see inside and can prove cryptographically that it’s running the runtime unmodified.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/bQjsHm4-Cjo?si=M28kQGP7ImfKNPEq" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">Tim raised a worry from the history of security software. Early systems such as Kerberos were so complicated to set up and maintain that few people used them. Would this be a master console of access controls so complicated that nobody ever touches it? Alex said most users will never know how it works. To them it will simply be “the best way of using AI in their lives,” a digital home where their data, their collaborators, and their agents come together.</p>



<p class="wp-block-paragraph">The software in that home is made of what Common Fabric calls patterns, small chunks of untrusted code. Alex stressed that he means “untrusted” in the security sense, which is good, because rather than meaning “not trustworthy,” it means “you don’t have to trust them.” Patterns are written in TypeScript and look much like React. (When the team asked LLMs what framework felt most natural to them, the models said React.) A pattern can do six things:</p>



<ol class="wp-block-list">
<li>It can do arbitrary computation.</li>



<li>It can produce derived data, which persists and is available to other patterns.&nbsp;</li>



<li>It can produce UI for different contexts, such as dark mode or a preview chip, computed only when used.&nbsp;</li>



<li>It can make network requests if policy allows. (LLM calls are technically network requests.)&nbsp;</li>



<li>It can instantiate subpatterns fetched from anywhere on the internet, or written by an LLM on the fly.&nbsp;</li>



<li>It can wish for more data.</li>
</ol>



<p class="wp-block-paragraph">Alex walked through a wish. A meal-planning pattern wishes it knew the user’s favorite foods. In one pattern, the system might express this wish by asking an LLM to generate a simple text box for the user to fill in. Another pattern might look for notes tagged “favorite foods” or for the ingredients in recipes the user made in the last six months. Another might read through the user’s Gmail with an LLM and distill what they like to eat. Because the emails are confidential, the result is confidential too.</p>



<p class="wp-block-paragraph">That pattern could have been written by a stranger and could still run proactively on your data, Alex said, because Common Fabric is designed so that the pattern’s author never sees your data and the pattern can’t use it against your expectations. Anyone can write new patterns (kind of like skills) and Common Fabric will surface the most popular ones for various tasks.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/Y4NvswSZxUE?si=7pfo12NZ3f9L5uJX" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Type checking for your data’s rules</strong></h2>



<p class="wp-block-paragraph">Tim asked Alex to slow down on this point, that you can give untrusted software access to your data because the data, not the software, decides what may be done with it. Alex replied that users will rarely think about policies. Users would choose default policies that are vouched for by people and organizations whose judgment they trust. For instance, he said “I trust Simon Willison. And Simon Willison will say, ‘I trust that repo right there.’”</p>



<p class="wp-block-paragraph">Alex gave as an example a pattern that pulls your Gmail into Common Fabric. It uses an OAuth flow to get a token from Google. Anyone who has that token can read and send your email indefinitely. So the token is tagged with a policy “secret to <a href="http://google.com" target="_blank" rel="noopener">google.com</a>,” which specifies that the token should never be logged or shown on screen or sent anywhere that isn’t attested to be running the runtime, not even the user’s own browser. It may cross the network only over a secure connection to the origin that minted it, and only in the authorization header. Any pattern that looks at the token, or at anything derived from it, absorbs those policies permanently. “You can look at the OAuth token, but then you can never talk to anybody else ever again, basically.”</p>



<p class="wp-block-paragraph">Tim said this sounds like the virality of GPL licenses. Alex agreed, and said that Mitchell Baker, the Mozilla cofounder, had made the same point to him a few weeks earlier.</p>



<p class="wp-block-paragraph">The term of art in information-flow control is “taint,” (a term Alex joked he dislikes because people look at him funny when he uses it). Data is tainted when it has touched something confidential and so inherits that thing’s restrictions. The aim is to keep as little data tainted as possible so that network requests can still happen safely later. Common Fabric’s compiler untangles a pattern’s data flows so that code which only passes a token along gets a handle to it rather than the token itself, and stays untainted. Alex compared this to Rust’s borrow checker, which refuses to compile code that could theoretically have a data race. Human programmers find it a nag, and a slog.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">But you know who doesn’t get impatient about that? LLMs. They don’t care. They’ll say, “Okay, cool. I’ll just make this tweak.”</p>
</blockquote>



<p class="wp-block-paragraph">There’s something different at work in the world.</p>



<p class="wp-block-paragraph">This is the heart of Alex’s answer to Tim’s question about the risk that complexity will make the system unusable. Common Fabric’s taint checker nags in the same way as Rust’s borrow checker, and LLMs grind through it. “If this software compiles, it’s safe structurally,” Alex said. “You don’t know it’s useful, but you do know it’s safe.” Because it’s safe, the system can run patterns for people proactively and speculatively, without their installing anything, and then share more widely the ones people engage with. Alex said that kind of distribution isn’t possible under the trust model normal software uses.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/pxNFB3PXJpw?si=9Gfv9Iuedw0aEf5m" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Crappy patterns and dangerous patterns</strong></h2>



<p class="wp-block-paragraph">Tim noted that the word “pattern” comes from Christopher Alexander’s <em><a href="https://arl.human.cornell.edu/linked%20docs/Alexander_A_Pattern_Language.pdf" target="_blank" rel="noopener">A Pattern Language</a></em>, the book about why some buildings and places work and others don’t. Alex added that the manifesto quotes Alexander directly, and that he considers resonance to be Alexander’s “quality without a name.” Tim recommended the book to anyone who hasn’t read it. He recalled patterns such as Alexander’s observation that balconies and porches less than six feet deep are rarely used, and his question of why people sit on stoops in some neighborhoods and not in others. Then he asked, “Won’t people just start making shitty patterns?”</p>



<p class="wp-block-paragraph">Alex said they will. Most videos on TikTok are bad, and social sifting still brings the good ones to the top. He gave a stylized example of a ranking function. To decide whether to show images at the top of search results for a query, you can check how many people in the last 90 days searched for “images of” that term compared with the term alone, and show images above a threshold. The authentic behavior of a small group of savvy users tells you about quality for everyone else.</p>



<p class="wp-block-paragraph">“I’m not worried about crappy patterns,” Alex said. “I’m worried about dangerous patterns.” He’s thinking about patterns that would misuse your data. And that’s what Common Fabric is designed to prevent. His example was the draft box in a chat app. Everyone assumes what you type is visible only to you until you hit send, and then only to the people in the chat. Nothing in today’s software structurally guarantees that, and on some marketing sites, the support agent can see what you type before you send it. In Common Fabric, a default policy could make the draft structurally confidential until the Send button is pressed and then declassify it to only the chat’s members. No chat app assembled from this pattern could behave otherwise.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/damr-gRCD0s?si=YmDJ5JXG9YZKQA-D" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">Tim noted there will be a long period of discovering corner cases once the system is out in the wild. Alex said two surfaces must coevolve, the open-ended set of patterns and the policies, which is why trust delegation matters. As people find patterns that slip past common default policies, the policy sets need to evolve to meet the threat. He said he isn’t promising perfect security, which he called an asymptotic ideal. His claim was that for the same security budget, users can reach further.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Today, in the physics of trust we use, a more secure system requires putting yourself in a smaller and smaller and smaller box. What if, instead, a more secure system puts you on a taller and taller platform, allowing you to reach much further?</p>
</blockquote>



<p class="wp-block-paragraph">People won’t come for the security model, he said. They’ll come because they can do much more with AI and with collaborators than other software allows, and the security model is the reason that isn’t creepy or dangerous.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/hRVh-JM2YPI?si=HBbKEZwPOYCuvMTw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Where’s all the new software?</strong></h2>



<p class="wp-block-paragraph">Tim brought up a question <a href="https://www.oreilly.com/radar/why-open-source-matters-for-ai/" target="_blank" rel="noopener">he has written about previously</a>. When a new technology arrives, at first people can see only the old one. When the web came along, Marc Andreessen talked about Netscape becoming the next Windows, and even open source developers talked about a Linux desktop and an open source Photoshop, while the real action was people making entirely new things with the web. With AI, Tim said, we hear about a world of infinite software, but he hasn’t seen many accounts of wonderful new things people have built. Mostly he hears about dark factories that help people get more productive at what they already did. People talk about the tooling but not what they built with it. Patterns, he said, gave him a taste of what infinite software might really be.</p>



<p class="wp-block-paragraph">Alex said software today orbits corporations, when it should orbit people. He described a “nightmare” in which building software took excruciating, hypermeticulous detail and bickering with dozens of people, and then pointed out that this was how software was built nine months ago. Old software now inspires in him the kind of awe people feel at the pyramids, built without heavy machinery. “And yet where is all the new software?”</p>



<p class="wp-block-paragraph">His answer was that infinite software built on the old physics of trust can’t produce the things that matter. On one vibe-coding platform, he found a dream-tracker app by an anonymous author that lets you log in with Google, store dreams, and mark some of them public. He started to enter a dream and stopped, because he had no idea whether the author had left everything public by mistake or was reselling it. The old trust model worked tolerably, he argued, because expensive software usually came from people who knew what they were doing, and big companies had lawyers telling them not to sell your data. When anyone can bring software into existence, even that level of trust goes away. Without new physics for distribution and trust, infinite software gives you either “cozy bits of software” from people you would trust alone in your house for an afternoon, or isolated islands that can’t touch sensitive data and “top out at microgames and art apps.”</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Software is alchemy. It is our ability to extend our agency beyond ourselves and automate it. And so the idea that software is going to top out at these very low things is just ludicrous to me.</p>
</blockquote>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/F6aiW0pkOJs?si=3UjTIT5m8wujYAst" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Reclaiming your data</strong></h2>



<p class="wp-block-paragraph">Tim connected Alex’s point about trusting big companies to his own analysis of <a href="https://www.oreilly.com/radar/rising-tide-rents-and-robber-baron-rents/" target="_blank" rel="noopener">rising tide rents and robber baron rents</a>, which he developed around the same time Cory Doctorow was writing about <a href="https://en.wikipedia.org/wiki/Enshittification" target="_blank" rel="noopener">enshittification</a>. Companies have strong incentives to treat users well while they’re acquiring them. Once growth flattens, the incentive shifts toward taking advantage of users, staying just good enough that they don’t leave. Part of what keeps people attached even as applications enshittify, Tim said, is that the apps hold so much of their data.</p>



<p class="wp-block-paragraph">Alex agreed that reclaiming data is the right frame. The business model of the last decade, as he described it, was to build expensive software aimed at an average market, let user data accumulate, and then rent access back, sell derived insights, or hold the data hostage. In a world of infinite software, users can build what they want on their own turf, and he expects silos to become “greedy goblins” guarding the data. He drew a line between what silos add and what users put in. Insights a company derives are its own, but the bits a user contributed should come back out. Infinite software, he said, also tilts the cat-and-mouse game back toward users.</p>



<p class="wp-block-paragraph">Tim asked how he would get 15 or 20 years of email out of Google. Alex gave Google credit for some of the best APIs, especially in Europe. <a href="https://wesmckinney.com/blog/announcing-msgvault/" target="_blank" rel="noopener">Alex pointed to msgvault</a>, an open source project that keeps a local archive of a Gmail history, so agent queries go to a local copy instead of rate-limited APIs. When services hand over data in deliberately annoying forms, such as a thousand-page PDF, an LLM can patiently restructure it. “They don’t get bored of a task the way you do.”</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/3YeRYf2X4ZM?si=_nkJVw9ctR797_3m" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Who pays for the compute</strong></h2>



<p class="wp-block-paragraph">Tim pushed on the economics. Services like Gmail are expensive to run, and users get them for very little. If he stores terabytes of email himself, he’s paying someone else, possibly more than Google charges, since Google had ways of subsidizing it. How does this work over the long haul if Common Fabric becomes a new paradigm?</p>



<p class="wp-block-paragraph">Alex began by acknowledging the value these services have delivered. Free turn-by-turn navigation is now taken for granted, though about 15 years ago, he said, the main licensors of that data charged something like five dollars per user per month. Then he made a point he expected some people to find provocative.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">If you aren’t paying for your own computation, then it’s not working for you; it’s working for somebody else.</p>
</blockquote>



<p class="wp-block-paragraph">Users would pay for their own compute by running the runtime on their own machines, or through hosts Alex called AI service providers. These would run the runtime in trusted execution environments, prove they can’t see inside, and charge for tokens, compute, and storage. If users could switch providers, margins would stay small. Alex acknowledged that consumers have long resisted paying for software, but argued that the nontrivial marginal cost of LLM tokens creates an opening, much as people pay a monthly cell phone bill because the service has become indispensable.</p>



<p class="wp-block-paragraph">Tim suggested companies like Google could migrate many of their services into this world. Alex said there will be many opportunities, but incumbents are used to another business model. He recalled telling a friend with a startup that building on the Common Fabric was wildly premature and that his investors might not like it, because the point is that patterns use data without owning it.</p>



<p class="wp-block-paragraph">Tim noted that today’s model doesn’t have to stay the model, and Alex said he expects new business models to emerge. Asked how he will get developers to write patterns, Alex said he doesn’t need to. Agents write them on users’ behalf, and once someone’s agent has ground through building a word search, anyone else can use that pattern.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/na7OPODfalw?si=rag5bSQR3eMZaHN-" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Is surveillance capitalism inevitable?</strong></h2>



<p class="wp-block-paragraph">An audience member, David, wrote that he loves Shoshana Zuboff’s <em><a href="https://www.publicaffairsbooks.com/titles/shoshana-zuboff/the-age-of-surveillance-capitalism/9781610395694/" target="_blank" rel="noopener">The Age of Surveillance Capitalism</a></em> and wondered how we came to accept as inevitable that companies take our behavioral data. He said he wasn’t sure technology could fix something technology didn’t cause.</p>



<p class="wp-block-paragraph">Alex said he thinks technology <em>did</em> decide this but allowed that people may disagree. The <a href="https://en.wikipedia.org/wiki/Same-origin_policy" target="_blank" rel="noopener">same-origin policy</a>, the browser rule that lets a script use only data from the site it came from, was introduced by Netscape in 1995 as a quick fix for a security problem that was discovered early on with JavaScript. As more APIs were added, the walls grew higher, and when native apps arrived on iOS and Android, the same model meant every app owned its own data. Alex said that decision could have been made differently. Surveillance capitalism may keep emerging, he said, but it isn’t inevitable, and technology applied at the right leverage point can lead to a different result.</p>



<p class="wp-block-paragraph">Tim told David he thought Zuboff’s book had a fundamentally bleak view of the world. For a long time, he said, we had a fairly virtuous set of relationships with many of these companies, and then we created economic incentives that led them to treat us badly. He argued that economic redesign is needed alongside technical redesign. That redesign starts with eliminating the market’s requirement that companies always keep growing even when they no longer deliver additional value.</p>



<p class="wp-block-paragraph">Alex brought up Eric Ries’s book <em><a href="https://incorruptible.co/" target="_blank" rel="noopener">Incorruptible</a></em>, which he said he keeps a stack of near his desk. He described himself as a believer in markets and capitalism as an emergent force for good. He distilled the book’s thesis down to the idea that organizations that think long term naturally attend more to their externalities. Common Fabric is set up as a public benefit corporation, and Alex said Eric consulted on structuring it to keep a long-term perspective in perpetuity, advice that Eric is now sharing with the wider world through <em>Incorruptible</em>.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/q0EHlVxds54?si=HtNOxGJfQM4oJY6b" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Tim’s argument: AI as a reset</strong></h2>



<p class="wp-block-paragraph">AI is a reset the industry still hasn’t yet taken full advantage of, Tim noted. We’re still thinking in the surveillance-capitalism frame, he said, in the same way that Netscape assumed people would buy software and that whoever controlled the software would control the future. We assume a world of advertising, and a world where companies hold more data about us than we do about ourselves. But new AI native companies will find new business models. Tim called Common Fabric the most thoughtful take on this reset he had seen. He compared it to his first encounter with the web, when there were about 200 websites and O’Reilly put it in <em><a href="https://en.wikipedia.org/wiki/Whole_Internet_User%27s_Guide_and_Catalog" target="_blank" rel="noopener">The Whole Internet User’s Guide &amp; Catalog</a></em> because, as he put it, “this is the future.”</p>



<p class="wp-block-paragraph">Tim said he couldn’t promise that Common Fabric would be the winner, but it is the most promising new thing he’s seen in a long time. He recalled the early days of the internet, when it wasn’t clear whether Gopher, the World Wide Web, or AOL would prevail. The web won, in his reading, because it built an <a href="https://asimovaddendum.substack.com/p/the-architecture-of-participation" target="_blank" rel="noopener">architecture of participation</a>. It was easy to draw from and easy to add to, and its mechanisms kept evolving, so that the web of 2000 or 2005 looked very different from the web of 1991. Common Fabric comes with that same sense of open-ended possibility.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/6ip1GC3c4Fc?si=_Nfe9BWaotgvyvpU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Open source underneath, a product on top</strong></h2>



<p class="wp-block-paragraph">Alex said the underlying runtime and pattern system are open source, but on their own they feel like a tech demo, which is why Common Fabric is building a consumer product on top. That product is still in development and not yet public. But he expects strong network effects as more people join the open ecosystem. Tim said that when Alex showed him the product the day before, this idea made sense. He described his takeaway as agents building throwaway software that embodies a shared set of patterns, with data that carries from the beginning the scope of what can be shared with whom.</p>



<p class="wp-block-paragraph">Alex said none of this would have been possible before AI could write software. He told the story of his cofounder, Berni Seefeld, who had been thinking about these ideas for decades. Over a dinner <em>a decade ago</em>, Alex asked how they would ever get people to write enough patterns to reach critical mass. Berni said that in the future, AI would write software. Alex replied, “Come on.” Berni gave the structural argument for why software engineering would be the strongest, fastest, and most invested-in vertical, and a few years ago told Alex the curve was happening and it was time to start. Not needing humans to write patterns, Alex said, lets us think much bigger and differently from how the industry has assumed software must work for the last 30 years.</p>



<p class="wp-block-paragraph">Tim closed on that point. Because agents building software in Common Fabric do it according to principles that put people at the center, he said, the nature of the game changes.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/ro-xR90Nhwk?si=OL-VwUqPsfS9yKUP" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/resonant-computing-and-common-fabric/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Measuring AI’s Impact on Delivery Speed</title>
		<link>https://www.oreilly.com/radar/measuring-ais-impact-on-delivery-speed/</link>
				<comments>https://www.oreilly.com/radar/measuring-ais-impact-on-delivery-speed/#respond</comments>
				<pubDate>Wed, 04 Nov 2026 11:54:20 +0000</pubDate>
					<dc:creator><![CDATA[James Shore]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20132</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/Measuring-AIs-impact-on-delivery-speed-image-created-with-Gemini-scaled.jpeg" 
				medium="image" 
				type="image/jpeg" 
				width="2560" 
				height="1429" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/Measuring-AIs-impact-on-delivery-speed-image-created-with-Gemini-160x160.jpeg" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[The following article was originally published on James Shore’s Successful Software blog and is being republished here with the author’s permission. Is AI making software development faster? Most people I talk to say yes. But how much? What value are you getting for your money? Are there other ways of using AI that have a [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The following article was originally published on James Shore’s</em> <a href="https://www.jamesshore.com/v2/blog/2026/measuring-ais-impact-on-delivery-speed?source=part1" target="_blank" rel="noopener">Successful Software</a> <em>blog and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">Is AI making software development faster? Most people I talk to say yes. But <em>how much?</em> What value are you getting for your money? Are there other ways of using AI that have a better ROI?</p>



<p class="wp-block-paragraph">This is part 2 of my series on assessing AI’s impact on software development. In <a href="https://www.jamesshore.com/v2/blog/2026/are-you-getting-your-moneys-worth-from-ai?source=part2" target="_blank" rel="noopener">part 1</a>, we looked at why assessing impact is important, and what not to do. In this part, we’re looking at how to measure AI’s impact on delivery speed. In <a href="https://www.jamesshore.com/v2/blog/2026/measuring-ais-unintended-consequences" target="_blank" rel="noopener">part 3</a>, we’ll look at how to measure the unintended consequences of AI, before wrapping up the series in <a href="https://www.jamesshore.com/v2/blog/2026/modeling-softwares-business-impact?source=part2" target="_blank" rel="noopener">part 4</a> with an examination of business outcomes. Finally, an <a href="https://www.jamesshore.com/v2/blog/2026/assessing-ai-impact-notes-for-your-cfo?source=part2" target="_blank" rel="noopener">epilogue</a> puts it all together with notes you can share with your CFO.</p>



<h2 class="wp-block-heading">What we’re measuring</h2>



<p class="wp-block-paragraph">Delivery speed isn’t productivity. I’ll say it again, loud, for the folks in the back: <em>Delivery speed isn’t productivity!</em></p>



<p class="wp-block-paragraph">It’s a <em>component</em> of productivity, sure. Given two equivalent teams creating the same piece of software, the team that delivers first is the one that’s more productive.</p>



<p class="wp-block-paragraph">But it’s not just about output. To my mind, software development productivity is <em>value produced</em> divided by <em>money spent</em>. It’s a strict definition but a useful one, because it gets to the heart of why we build software: to achieve some valuable purpose. Going faster doesn’t mean you’re going in the right direction.</p>



<p class="wp-block-paragraph">We’ll consider business outcomes in <a href="https://www.jamesshore.com/v2/blog/2026/modeling-softwares-business-impact?source=part2" target="_blank" rel="noopener">part 4</a>. For now, though, we’ll tackle a simpler question: Are your teams finishing their assigned work faster, regardless of whether that work is actually useful or not?</p>



<h2 class="wp-block-heading">The core approach</h2>



<p class="wp-block-paragraph">First, the bad news: There’s no objective measure of software development speed. I can’t look at two teams and say, “This one is fast, and that one is slow.” That’s because none of the outputs teams create are standardized. We already talked in <a href="https://www.jamesshore.com/v2/blog/2026/are-you-getting-your-moneys-worth-from-ai?source=part2" target="_blank" rel="noopener">part 1</a> about how lines of code and PRs are bad metrics. Well, nothing else is standardized, either.</p>



<p class="wp-block-paragraph">Features? Some are big, some are small. Bugs? Some are easy, some are hard. Stories? Velocity? Story points? Completely arbitrary. They have way more to do with what’s being requested than the speed of the team.</p>



<p class="wp-block-paragraph">Okay, if they’re all different sizes, couldn’t we just use estimates? Surely if a team is constantly missing its estimates, it’s because it’s slow, right?</p>



<p class="wp-block-paragraph">Not so fast! Software estimates are famously inaccurate. A team that always misses its estimates isn’t slow. It’s just overly optimistic. Teams are nearly <em>always</em> overly optimistic.<sup data-fn="5ffe9bb8-b19d-4b8f-ba63-d08d36362012" class="fn"><a href="#5ffe9bb8-b19d-4b8f-ba63-d08d36362012" id="5ffe9bb8-b19d-4b8f-ba63-d08d36362012-link">1</a></sup></p>



<p class="wp-block-paragraph">So we can’t count requests (features, bugs, stories, etc.) because they vary in size, and we can’t look at on-time delivery, because estimates are overly optimistic. Sounds like a whole lotta “can’t.” What <em>can</em> we do?</p>



<p class="wp-block-paragraph">We can compare a team to itself. If a team’s estimates were perfectly consistent, and they went from taking 3x longer than estimated to 1.5x longer, then they’re twice as fast! Huzzah!</p>



<p class="wp-block-paragraph">If only it were that simple. There are a few snags.<sup data-fn="6592725f-2bc8-4194-87b2-be856c43607d" class="fn"><a href="#6592725f-2bc8-4194-87b2-be856c43607d" id="6592725f-2bc8-4194-87b2-be856c43607d-link">2</a></sup></p>



<h2 class="wp-block-heading">Estimates aren’t consistent</h2>



<p class="wp-block-paragraph">Snag the first: Teams’ actual estimate ratios aren’t actually consistent. Some are bigger, some are smaller. Plot them on a graph, and they form an “S” curve, as with this data from a real company.<sup data-fn="2a0fed2d-f0ac-49b6-ab0e-af4b8599c68a" class="fn"><a href="#2a0fed2d-f0ac-49b6-ab0e-af4b8599c68a" id="2a0fed2d-f0ac-49b6-ab0e-af4b8599c68a-link">3</a></sup></p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857cbb4e&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857cbb4e" class="aligncenter size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1600" height="993" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1600x993.png" alt="Teams' actual estimate ratios aren't actually consistent." class="wp-image-20133" style="aspect-ratio:1.6124031007751938" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1600x993.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-767x476.png 767w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-300x186.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1536x953.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image.png 1920w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<p class="wp-block-paragraph">If delivery speed improves, the curve will shift. Individual data points may be better or worse than the original approach, but you can see the effect in aggregate.<sup data-fn="72b473f1-0e2e-48ff-97bc-3f8c02dbd195" class="fn"><a href="#72b473f1-0e2e-48ff-97bc-3f8c02dbd195" id="72b473f1-0e2e-48ff-97bc-3f8c02dbd195-link">4</a></sup></p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857cc4e0&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857cc4e0" class="aligncenter size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1600" height="993" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1-1600x993.png" alt="If delivery speed improves, the curve will shift." class="wp-image-20134" style="aspect-ratio:1.6124031007751938" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1-1600x993.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1-300x186.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1-767x476.png 767w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1-1536x953.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1.png 1920w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<h2 class="wp-block-heading">People work differently</h2>



<p class="wp-block-paragraph">Second snag: Some people are pessimistic and estimate high. Some estimate low. Some people spend a lot of time educating others. Others work heads down as fast as possible. Some clean up messes. Others create messes.</p>



<p class="wp-block-paragraph">If you do a blanket comparison of everyone to each other, you introduce a lot of noise. Noise is bad because it increases the amount of data you have to collect. To keep things clean, compare people (or teams) to themselves.</p>



<h2 class="wp-block-heading">Estimates change when people know they’re using AI</h2>



<p class="wp-block-paragraph">Third snag: People’s estimates will change according to the work they plan to do. So if they think they’re going to use AI, and they think AI makes them faster, their estimates will be smaller. Huh. Tricky.</p>



<p class="wp-block-paragraph">This one’s actually pretty easy: Collect the estimate before people know whether they’re going to use AI or not. Then randomly assign the task to be done with or without AI.</p>



<h2 class="wp-block-heading">Process improvements muddy the waters</h2>



<p class="wp-block-paragraph">Fourth and final snag: Are your speed increases due to introducing AI? Or the other changes you made at the same time?</p>



<p class="wp-block-paragraph">AI forces you to rethink your software development processes. Leaders I talk to are streamlining request workflows and putting business experts in closer touch with developers as part of their efforts to introduce AI.</p>



<p class="wp-block-paragraph">But these are the <em>exact</em> changes that make software development more effective in general! How much of the improvement you’re seeing is from spending thousands of dollars on tokens, and how much is the result of people talking to each other more?</p>



<p class="wp-block-paragraph">Rather than comparing a chunk of pre-AI data to a chunk of post-AI data, interleave “without AI” tasks and “with AI” tasks. This reduces the influence of other changes. Update your without-AI approach to include the same streamlined workflows as your with-AI approach.</p>



<h2 class="wp-block-heading">The complete measurement approach</h2>



<p class="wp-block-paragraph">In other words, if you want to be rigorous about this, you need to conduct a randomized controlled trial. Specifically, a “randomized within-subject repeated-measures” trial, which reduces the number of samples you need to collect.<sup data-fn="06b79914-13bb-4c28-b496-0f84c915c57d" class="fn"><a href="#06b79914-13bb-4c28-b496-0f84c915c57d" id="06b79914-13bb-4c28-b496-0f84c915c57d-link">5</a></sup></p>



<p class="wp-block-paragraph">It’s not as bad as it sounds! People still do their normal work.</p>



<p class="wp-block-paragraph">Here’s what you do. First, establish a with-AI approach and a without-AI approach. (Or, more likely, “with a lot of expensive AI” and “with a sprinkling of cheap AI,” but I’ll say “with” and “without” for clarity.) Make sure they’re clearly defined and people have had a chance to practice both approaches.</p>



<p class="wp-block-paragraph">The without-AI approach will probably be close to your current approach to software development, but if you’re streamlining your with-AI processes, be sure to incorporate those improvements into your without-AI approach too. Decide how you’re going to attribute rework, such as code review changes and bug fixes, back to the task that caused the rework.</p>



<p class="wp-block-paragraph">Then give each person (or team) a virtual bag that’s half with-AI assignments and half without. For any given task, have people record their estimate first, then randomly pull an assignment from the bag.</p>



<p class="wp-block-paragraph">The main data you’ll collect is estimated time spent, actual time spent, type of task, and spending. Decide in advance if you’re tracking calendar time (including interruptions) or effort (excluding interruptions) and how you’re going to handle parallel work. Think about what other useful information you might want, such as bug and incident counts, mental energy, excess lines of code, and so forth. We’ll talk about using that data to model unintended consequences in <a href="https://www.jamesshore.com/v2/blog/2026/measuring-ais-unintended-consequences" target="_blank" rel="noopener">part 3</a>.</p>



<p class="wp-block-paragraph">You’ll need the help of a statistician to do the detailed experimental design and data analysis, but broadly speaking, each person’s with-AI data will be compared to their own without-AI data, then aggregated together to give you the final results.</p>



<p class="wp-block-paragraph">Finally, remember that speed increases aren’t the same as productivity. Pay particular attention to how the tasks you’re measuring fit into the big picture. For example, if you see a 2x improvement in coding speed, but people spend 50% of their week on other work, their overall speed improvement is only 1.33x, not 2x.<sup data-fn="72ace71f-787b-4e26-962e-51f59b43716f" class="fn"><a href="#72ace71f-787b-4e26-962e-51f59b43716f" id="72ace71f-787b-4e26-962e-51f59b43716f-link">6</a></sup></p>



<h2 class="wp-block-heading">Is it worth it?</h2>



<p class="wp-block-paragraph">This is a lot more complicated than just counting PRs and calling it good. Is it worth it?</p>



<p class="wp-block-paragraph">If this were just some run-of-the-mill process improvement exercise, no, it wouldn’t be worth it. It’s too much work, and the effect sizes have to be pretty large in order for the data collection to be practical.</p>



<p class="wp-block-paragraph">But this <em>isn’t</em> some run-of-the-mill process improvement exercise. Productivity expectations are off the charts, and so are costs. As I talk to engineering leaders, I’m seeing <em>order-of-magnitude</em> differences in spending. Should you spend thousands per person per month on hands-off agentic coding? Or hundreds on analysis and fancy auto-complete?</p>



<p class="wp-block-paragraph">It depends on the outcomes.</p>



<p class="wp-block-paragraph">You can’t pick the right approach to AI without knowing what you’re getting for your money, and with so much money on the table, you can’t afford to half-ass this.</p>



<p class="wp-block-paragraph">Remember, <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" target="_blank" rel="noopener">in a METR study</a>, engineers overestimated AI’s speed benefits by <em>nearly 50%</em>. Without measurements, there’s no way to know what you’re actually getting.</p>



<p class="wp-block-paragraph">Fortunately, it’s not as hard as it seems. With the level of impact you need to see, and enough participants, it doesn’t take many samples from each person.<sup data-fn="7ffd966d-b962-447a-808f-8aca11ed5d85" class="fn"><a href="#7ffd966d-b962-447a-808f-8aca11ed5d85" id="7ffd966d-b962-447a-808f-8aca11ed5d85-link">7</a></sup> Your teams collect the data as they do their normal work. The hardest part is explicitly defining how you want people to use AI, and that’s worth doing anyway.</p>



<p class="wp-block-paragraph">Of course, delivery speed is only part of the picture. There’s also the question of how <em>sustainable</em> speed improvements are. We’ll consider unintended consequences next, in <a href="https://www.jamesshore.com/v2/blog/2026/measuring-ais-unintended-consequences?source=part2" target="_blank" rel="noopener">part 3</a>.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>All my content is made with my 100% human meat brain, except where explicitly stated otherwise. If you liked this entry, check out</em> <em><a href="https://www.jamesshore.com/v2/best" target="_blank" rel="noopener">my best writing and presentations</a>, and consider</em> <em><a href="https://www.jamesshore.com/v2/site/subscribe" target="_blank" rel="noopener">subscribing to updates</a></em> <em>by email or RSS. To contact me about consulting, email me at</em> <em>jshore@jamesshore.com.</em></p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Footnotes</h3>


<ol class="wp-block-footnotes"><li id="5ffe9bb8-b19d-4b8f-ba63-d08d36362012">When they’re not, it’s usually because they’re playing political games with estimate padding. That isn’t good either, because then the work tends to expand to meet the estimate. <a href="#5ffe9bb8-b19d-4b8f-ba63-d08d36362012-link" aria-label="Jump to footnote reference 1"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li><li id="6592725f-2bc8-4194-87b2-be856c43607d">This design was inspired by <a href="https://arxiv.org/pdf/2507.09089" target="_blank" rel="noopener">a METR study</a>, with help from Brent Miller. AI Disclaimer: I used OpenAI’s GPT-5.6 Sol model operating in “High” thinking mode to critique my explanation, and I also used it to generate the Python programs that drew the graphs below. You can <a href="https://chatgpt.com/share/6a8f9320-cd30-83e8-8554-2c81f17c773e" target="_blank" rel="noopener">see my ChatGPT conversation here</a>. <a href="#6592725f-2bc8-4194-87b2-be856c43607d-link" aria-label="Jump to footnote reference 2"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li><li id="2a0fed2d-f0ac-49b6-ab0e-af4b8599c68a">This data is from the Star Citizen alpha 3.0 release, which publicized its internal task estimates and actuals. Interestingly, the sharp cliff at the 1.0 mark is a classic sign of work growing to meet its estimate. <a href="#2a0fed2d-f0ac-49b6-ab0e-af4b8599c68a-link" aria-label="Jump to footnote reference 3"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li><li id="72b473f1-0e2e-48ff-97bc-3f8c02dbd195">The Star Citizen data was split in half and artificially manipulated for the purpose of this example. It doesn’t represent real-world AI impact. <a href="#72b473f1-0e2e-48ff-97bc-3f8c02dbd195-link" aria-label="Jump to footnote reference 4"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li><li id="06b79914-13bb-4c28-b496-0f84c915c57d">Many thanks to Brent Miller for introducing me to this technique. <a href="#06b79914-13bb-4c28-b496-0f84c915c57d-link" aria-label="Jump to footnote reference 5"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li><li id="72ace71f-787b-4e26-962e-51f59b43716f">Work that took 40 hours now takes 30. 40 ÷ 30 = 1.33. <a href="#72ace71f-787b-4e26-962e-51f59b43716f-link" aria-label="Jump to footnote reference 6"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li><li id="7ffd966d-b962-447a-808f-8aca11ed5d85">The exact number will depend on the number of participants, the amount of variance in your results, and how conclusive you want the results to be. <a href="#7ffd966d-b962-447a-808f-8aca11ed5d85-link" aria-label="Jump to footnote reference 7"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li></ol>]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/measuring-ais-impact-on-delivery-speed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Radar Trends to Watch: November 2026</title>
		<link>https://www.oreilly.com/radar/radar-trends-to-watch-november-2026/</link>
				<comments>https://www.oreilly.com/radar/radar-trends-to-watch-november-2026/#respond</comments>
				<pubDate>Tue, 03 Nov 2026 11:54:30 +0000</pubDate>
					<dc:creator><![CDATA[Mike Loukides]]></dc:creator>
						<category><![CDATA[Radar Trends]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20127</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2023/06/radar-1400x950-2.png" 
				medium="image" 
				type="image/png" 
				width="1400" 
				height="950" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2023/06/radar-1400x950-2-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Developments in Agent Platforms, Content Provenance, Quantum Computing, and More]]></custom:subtitle>
		
				<description><![CDATA[Coauthored with Claude Security looms large as we enter November. There’s been a lot of bad news: a certificate authority with woefully inadequate private keys, vulnerabilities have been discovered (and exploited) in PHP and other widely used programs, and several organizations have detected Chinese open weight models misbehaving in several different ways. New models are [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Coauthored with Claude</em></p>



<p class="wp-block-paragraph">Security looms large as we enter November. There’s been a lot of bad news: a certificate authority with woefully inadequate private keys, vulnerabilities have been discovered (and exploited) in PHP and other widely used programs, and several organizations have detected Chinese open weight models misbehaving in several different ways. New models are arriving faster and faster, and the best open-weight models are catching up to frontier model performance. But organizations that would like to achieve AI sovereignty will have to ask some difficult questions about the models they adopt. Is this an inflection point? Whether or not it is, AI has changed security permanently, and things are bound to get worse before they improve.</p>



<h2 class="wp-block-heading"><strong>AI models</strong></h2>



<p class="wp-block-paragraph"><em>We are starting to see models developed with recursive self-improvement; we continue to see clones of Jev; and we’ve seen text watermarks added to output generated by Anthropic’s and OpenAI’s models. (Google has been using text watermarks for some time.) But tools for detecting the watermark are hard to find. Anthropic’s and OpenAI’s are in a very limited beta, and Google’s is only available in their enterprise package. What does a watermark mean if you can’t detect it? And, as we get more accustomed to AI-generated output, will anyone care?</em></p>



<ul class="wp-block-list">
<li><a href="https://artificialanalysis.ai/articles/kimi-k3-1-pro-launch-benchmarks" target="_blank" rel="noopener">Kimi 3.1 Pro</a> is a new open weight model with 3T tokens. On benchmarks, it is now the leading open weight model, only slightly behind the latest frontier models. Moonshot AI also released Kimi K3.1 Pro Highspeed, which is two to three times faster.</li>



<li>Recursive has announced <a href="https://recursive.com/updates/introducing-recursive-flint" target="_blank" rel="noopener">Flint</a>, a 40B parameter mixture-of-experts model that activates 2.5B parameters per token. It was designed for coding, and sized to run on laptops. Flint is open weight; weights are available on <a href="https://huggingface.co/RecursiveSI/flint" target="_blank" rel="noopener">Hugging Face</a>, and it works with model runners like <a href="https://ollama.com/library/flint" target="_blank" rel="noopener">Ollama</a>.</li>



<li>Meta has shipped <a href="https://research.meta.ai/blog/muse-spark-open" target="_blank" rel="noopener">Muse Spark Open</a>, an open weight model that they claim competes with the best Chinese open weight models. It’s a mixture-of-experts model with 816B parameters and 42B active parameters.</li>



<li>Meta’s latest models, <a href="https://research.meta.ai/blog/muse-wonder" target="_blank" rel="noopener">Muse Wonder and Muse Wonder Full</a>, claim parity with frontier-class models. Specifically, they <a href="https://thenextweb.com/news/meta-muse-wonder-frontier-eu">claim</a> parity with Claude and ChatGPT for financial and legal work. The announcement hints that Meta will be using Muse to develop specialized models.</li>



<li>OpenAI’s <a href="https://developers.openai.com/api/docs/guides/decisions" target="_blank" rel="noopener">Decisions API</a> is yet another Jev-like model. Like Jev, its input is a data structure that constrains the model’s output to be an answer to specific questions. The output is a data structure that includes a probability for each answer.</li>



<li>Claude has <a href="https://www.anthropic.com/claude-haiku-5-5" target="_blank" rel="noopener">launched</a> Haiku 5.5, a new version of its least expensive model. It’s faster, less expensive, and has better benchmark scores than its predecessors. Haiku 5.5 is a very capable model, particularly for users who are sensitive to cost.</li>



<li>Mistral has <a href="https://mistral.ai/news/mistral-large-4/" target="_blank" rel="noopener">launched</a> Mistral Large 4, a.k.a <em>Le Chonk</em>. It’s an open weight mixture-of-experts model with 1T parameters. It’s claimed to be the best open model from Europe and was designed with AI sovereignty in mind.</li>



<li>Aleph Alpha has <a href="https://tej.as/blog/aleph-alpha-kolibri" target="_blank" rel="noopener">released</a> an open weight LLM for English and German that was trained entirely under European rules. It is a mixture-of-experts model with 78B parameters. It uses a different tokenizing algorithm to handle long German words without breaking them into fragments. Reasoning takes place mostly in German.</li>



<li>Crowdflare has <a href="https://blog.cloudflare.com/clef-decision-models/" target="_blank" rel="noopener">released</a> Clef and Clef Flash, new decision models that, like Jev, take typed queries and return typed answers about those queries. It’s also offering a new reinforcement learning service to help customers train Clef for their applications.</li>



<li>After a long wait, Google has released two new frontier models, Gemini 4 <a href="https://blog.google/innovation-and-ai/technology/developers-tools/build-with-gemini-4-argon/" target="_blank" rel="noopener">Argon</a> and <a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/introducing-gemini-4-carbon/" target="_blank" rel="noopener">Carbon</a>. Argon is available to <a href="https://thenextweb.com/news/gemini-4-argon-public-release" target="_blank" rel="noopener">paying customers</a>. Argon’s successor, Carbon, is being released slowly, and is currently only available via the <a href="https://deepmind.google/fairwind-program/" target="_blank" rel="noopener">Fairwind</a> program.</li>



<li>The <a href="https://fireworks.ai/blog/ember-1" target="_blank" rel="noopener">Ember-1</a> model from Fireworks claims to have results similar to Kimi K3 at lower costs. It is priced similarly on OpenRouter but uses <a href="https://thenewstack.io/ember1-kimik3-speed-comparison/" target="_blank" rel="noopener">far fewer reasoning tokens</a>.</li>



<li>OpenAI has <a href="https://thenextweb.com/news/openai-maths-722-papers-unreleased-model-github" target="_blank" rel="noopener">published</a> 722 papers solving problems in mathematics on <a href="https://github.com/openai/math" target="_blank" rel="noopener">GitHub</a>. There is some controversy about whether all the proofs are correct; so far, three have been withdrawn, leaving 719.</li>



<li>Google has opened its <a href="https://blog.google/innovation-and-ai/models-and-research/google-deepmind/synth-id-ai-content/" target="_blank" rel="noopener">SynthID detector</a> to the general public. The detector can determine whether audio, image, or video files generated by any of Google’s partners (including OpenAI, NVIDIA, and Apple) have the SynthID watermark.</li>



<li>To comply with EU law, <a href="https://openai.com/index/eu-text-provenance/" target="_blank" rel="noopener">OpenAI will add</a> <a href="https://www.bleepingcomputer.com/news/artificial-intelligence/openai-is-adding-invisible-watermarks-to-chatgpt-and-codex-text-in-the-eu/" target="_blank" rel="noopener">watermarks</a> to text in Europe. The company’s algorithm sounds similar to the one that Google and Anthropic are using: modifying the underlying probability distribution changes word choice in detectable but insignificant ways.</li>
</ul>



<h2 class="wp-block-heading"><strong>Agents and harnesses</strong></h2>



<p class="wp-block-paragraph"><em>There are more choices than ever for agents, along with new standards for the interaction between agents and models. In addition to general purpose agents, there are also agents specialized for coding, HR, BI, and more. And most agents will connect to many models, including local ones. Choose agents as carefully as you choose models; your agent is where you will do your work.</em></p>



<ul class="wp-block-list">
<li>JetBrains has released <a href="https://github.com/JetBrains/thinkrail" target="_blank" rel="noopener">Thinkrail</a>, an agentic IDE that learns about your project as you use it. It is open source and based on the pi agent.</li>



<li>Anthropic has <a href="https://www.anthropic.com/news/donating-agent-skills-to-the-agentic-ai-foundation" target="_blank" rel="noopener">donated</a> its <a href="https://agentskills.io/home" target="_blank" rel="noopener">Agent Skills</a> standard to the Agentic AI Foundation (AAIF), which will shepherd further development. It has also donated <a href="https://www.openresponses.org/" target="_blank" rel="noopener">Open Responses</a>, a standard for building common interfaces, to AI providers.</li>



<li>OpenAI has introduced <a href="https://openai.com/index/gpt-6-for-everyone/" target="_blank" rel="noopener">Intelligent UI</a>, a feature that allows ChatGPT to generate its own user interfaces in response to the user’s question.</li>



<li>Workday is <a href="https://thenewstack.io/workday-headless-mcp-agents/" target="_blank" rel="noopener">allowing</a> its customers to build their own agents for HR and finance. An agent’s access to Workday data is tied to the user’s account.</li>



<li><a href="https://claude.com/resources/articles/dashboards-and-motion" target="_blank" rel="noopener">Claude Dashboards</a> is a new product that lets you build live dashboards from a group of data sources.</li>



<li>Claude’s <a href="https://support.claude.com/en/articles/10166901-use-google-workspace-connectors" target="_blank" rel="noopener">Google Workspace connectors</a> allow it to read and write Google documents, sheets, and slides directly.</li>



<li><a href="https://developers.openai.com/plugins/build/mcp-events" target="_blank" rel="noopener">MCP Events</a> is an extension to the MCP protocol from OpenAI. It allows ChatGPT to subscribe to updates from MCP servers.</li>



<li>DeepSeek has <a href="https://www.deepseek.com/en/harness/" target="_blank" rel="noopener">released</a> a harness (<a href="https://github.com/deepseek-ai/deepseek-harness" target="_blank" rel="noopener">dsh</a>). It’s open source, and currently in public preview. Everything is a plug-in.</li>



<li>The Pi agent has reached version <a href="https://pi.dev/changelog/releases/1.0.0" target="_blank" rel="noopener">1.0.0</a>, and is now capable of using MCP. There’s a variation, Pi Durable, that has been designed for long-running tasks.</li>



<li><a href="https://openai.com/index/introducing-dots/" target="_blank" rel="noopener">OpenAI dots</a> are consumer-oriented agents that run in the cloud. They are always on and have their own web browser along with other tools.</li>
</ul>



<h2 class="wp-block-heading"><strong>Software development</strong></h2>



<p class="wp-block-paragraph"><em>At last month’s SciFoo, Hugo Bowne-Anderson said that we’ve been through two major changes in the past few years: from writing code to letting AI write the code, and from reading the code to not reading the code. These changes are as radical as the shift from programming in machine language to programming in high-level languages. We will all go through a process of rethinking how we work and what we’re trying to accomplish.</em></p>



<ul class="wp-block-list">
<li>Anthropic has <a href="https://code.claude.com/docs/en/plugins/mods/overview" target="_blank" rel="noopener">introduced</a> Claude Mods, a plug-in for Claude Code that can modify Code’s behavior: reshaping its user interface, providing information about context use, giving advice about what you’re doing, and much more.</li>



<li>One application for decision models is <a href="https://hamel.dev/blog/posts/decision-model-evals/" target="_blank" rel="noopener">building evals</a> to understand the performance of AI applications.</li>



<li>Workday is using Jev to <a href="https://thenewstack.io/workday-is-using-typesafes-jev-to-build-user-interfaces-on-the-fly/" target="_blank" rel="noopener">build user interfaces</a> on the fly. Jev’s very low latency makes choosing UI components at runtime viable.</li>



<li>Anthropic has <a href="https://www.anthropic.com/engineering/redesigning-source-control" target="_blank" rel="noopener">outgrown Git</a>, which wasn’t able to keep up with merges on their monorepo (roughly 30,000 merges in September). Anthropic has built a new source control system called Scion.</li>



<li>Kate Huston writes about <a href="https://cate.blog/2026/10/13/attempting-to-reverse-engineer-code-review/" target="_blank" rel="noopener">reverse-engineering code review</a> and trying to develop an effective “gate” that AI-generated code would have to pass before review by humans.</li>



<li><a href="https://github.com/storytold/wordcraft" target="_blank" rel="noopener">WordCraft</a> is an open source clean-room re-implementation of Microsoft Word. The authors claim that it’s 60% of the way towards “replacing Word for real work.” It supports MCP, has a command line interface for interacting with agents, and can run in a browser through WASM.</li>



<li><a href="https://github.com/storytold/artcraft" target="_blank" rel="noopener">ArtCraft</a> is an open source tool for creating interactive AI-generated images and video in 2D or 3D. The company describes it as an “IDE for artists.” They’re also <a href="https://arstechnica.com/ai/2026/10/software-is-over-bold-ai-developer-takes-aim-at-adobe-with-open-source-clones/" target="_blank" rel="noopener">developing</a> open source clones of Adobe Creative Suite tools like Photoshop. Early <a href="https://www.infoq.com/news/2026/10/photocraft-adobe-parity/" target="_blank" rel="noopener">reports</a> are that it’s very buggy.</li>



<li>Google Docs now <a href="https://workspaceupdates.googleblog.com/2026/10/preview-edit-and-collaborate-on-Markdown-files-natively-across-Drive-and-Docs.html" target="_blank" rel="noopener">supports</a> Markdown natively. Users can read, write, collaborate, and comment on Markdown documents without converting them to another format.</li>



<li>Google’s Docsy documentation project is <a href="https://thenewstack.io/docsy-linux-foundation-agents/" target="_blank" rel="noopener">moving</a> to the Linux Foundation. Docsy is a template for the Hugo static site generator that’s useful for generating documentation in ways that are helpful to agents.</li>



<li>Does programming with AI require more abstractions or fewer? Matt Pocock <a href="https://x.com/mattpocockuk/status/2106425743479546343" target="_blank" rel="noopener">argues</a> for more.</li>



<li>Anthropic has given Claude an <a href="https://hamel.dev/blog/posts/claude-auto-evals/" target="_blank" rel="noopener">auto-eval tool</a>. While the first version of this tool has many flaws, it’s a significant step towards making evals easier.</li>
</ul>



<h2 class="wp-block-heading"><strong>Security</strong></h2>



<p class="wp-block-paragraph"><em>Security has been much in the news. Not all of the news is bad: AI was used to discover the PHP2Shell vulnerability and to develop a fix. The leaked CVE and the many out-of-date PHP sites online are serious problems, but not problems attributable to AI. Too many problems arise from getting the basics wrong: A certificate authority using 4 as its private key is a mistake that should never have been made. As always, security is about getting the basics right while watching for new threats. And while organizations claim to be paying more attention to security, the word from insiders is that “attention” means lip service. In the long run, AI may make the world a safer place, but the next few years look scary.</em></p>



<ul class="wp-block-list">
<li><a href="https://www.crowdstrike.com/en-us/blog/crowdstrike-researchers-identify-hidden-vulnerabilities-ai-coded-software/" target="_blank" rel="noopener">CrowdStrike</a> and <a href="https://www.boozallen.com/expertise/cybersecurity/whats-in-americas-code.html" target="_blank" rel="noopener">Booz Allen</a> have found that Qwen3-Coder (and probably other models) generates weaker code if the prompt says that the code is for a politically sensitive user such as the US government. <a href="https://www.hirundo.io/blog/qwen3-coder-vulnerabilities" target="_blank" rel="noopener">Hirundo</a> reports similar flaws and also claims to have “fixed” the model and created a <a href="https://huggingface.co/hirundo-io/Qwen3-Coder-30B-A3B-Instruct-Westernized" target="_blank" rel="noopener">Westernized version</a>.</li>



<li>Cohere makes a different claim: It has <a href="https://cohere.com/blog/concerning-behaviour-popular-open-weight-ai-model" target="_blank" rel="noopener">observed</a> that Qwen3.8 models occasionally send data to an Alibaba cloud storage bucket in Beijing.</li>



<li>Malicious AGENTS.md files have been found in the Downloads folders of some users. If the user is using the Downloads folder as their working directory, an AI agent will read the AGENTS file and download a malicious NPM package.</li>



<li>1Password has launched <a href="https://1password.com/press/2026/october/1password-for-agents-trust-layer-personal-ai-agents" target="_blank" rel="noopener">1Password for Agents</a>, a credential-brokering product that allows agents to access resources for a user without seeing the user’s password,</li>



<li>Alibaba also <a href="https://aaif.io/projects/opensandbox" target="_blank" rel="noopener">donated</a> its <a href="https://open-sandbox.ai/" target="_blank" rel="noopener">OpenSandbox</a> project to AAIF. OpenSandbox is a general-purpose sandbox for running AI models safely.</li>



<li>The PHP team has <a href="https://www.bleepingcomputer.com/news/security/php-ships-emergency-patches-for-critical-php2shell-flaws/" target="_blank" rel="noopener">released</a> patches for two <a href="https://www.wiz.io/blog/php2shell-php-rce" target="_blank" rel="noopener">critical</a> <a href="https://simonwillison.net/2026/Oct/21/php-security-release/" target="_blank" rel="noopener">vulnerabilities</a> collectively known as PHP2Shell. However, many sites are running old versions of PHP that need to be upgraded before they can be patched. The maintainers have also released some partial mitigations for sites that can’t upgrade easily, but that won’t fully protect them. Sadly, “<a href="https://thenewstack.io/php2shell-unpatched-php-servers/" target="_blank" rel="noopener">the panic hasn’t turned into patching</a>,” and those who don’t patch will pay.</li>



<li>Brotli isn’t as widely used as PHP, or as old, but a critical flaw in <a href="https://github.com/google/brotli" target="_blank" rel="noopener">Brotli compression library</a> makes it clear that discovery of hidden vulnerabilities is the shape of things to come. Microsoft has <a href="https://www.bleepingcomputer.com/news/microsoft/microsoft-releases-emergency-net-patches-for-critical-brotli-flaw/" target="_blank" rel="noopener">released</a> patches for .Net, PHP maintainers have released patches for PHP, Node.js is also affected, and that’s just the start.</li>



<li>The private keys of the certificate authority eMudhra have been <a href="https://scotthelme.co.uk/eight-bits-of-trust-emudhras-ca-keys-cracked-in-milliseconds/" target="_blank" rel="noopener">cracked</a>–not by brilliant cryptography or a quantum computer, but because the keys were generated very poorly. The Chrome and Firefox browsers aren’t trusting the compromised certificates, but <a href="https://emudhra.we-have-a-problem.com/" target="_blank" rel="noopener">almost everything else</a>, including all major package managers, is a problem.</li>



<li><a href="https://opencode.ai/" target="_blank" rel="noopener">OpenCode</a> was the victim of a <a href="https://techcrunch.com/2026/10/19/hackers-hit-ai-coding-tool-opencode-running-up-charges-on-users-ai-accounts/" target="_blank" rel="noopener">hostile attack</a> in which some users’ API keys and passwords were stolen from their Console service. Its response was hampered by lack of access to AI models without security restrictions.</li>



<li>The US Department of Homeland Security has <a href="https://www.theregister.com/security/2026/10/20/deepseek-deep-sixed-at-all-us-federal-civilian-agencies/5304010" target="_blank" rel="noopener">banned</a> <a href="https://www.reuters.com/technology/us-banning-chinese-ai-deepseek-government-agency-it-systems-2026-10-19/" target="_blank" rel="noopener">the use of</a> DeepSeek and applications developed using DeepSeek in all federal agencies.</li>



<li>To <a href="https://arstechnica.com/ai/2026/10/anthropic-gives-outside-ai-watchdog-employee-like-access/" target="_blank" rel="noopener">monitor</a> the risks created by the development of frontier models, Anthropic has given six employees of <a href="https://metr.org/" target="_blank" rel="noopener">METR</a> access to their models. They continue to work with Accenture and Secure Bio.</li>



<li><a href="https://projectdiscovery.io/research/how-abliterated-models-can-get-you-pwned" target="_blank" rel="noopener">Model abliteration</a> is a poisoning attack in which post-training is used to discover which of a model’s weights corresponds to “no,” and altering them so the model cannot refuse a request. It’s effectively a backdoor into the model’s behavior.</li>



<li>AWS has <a href="https://aws.amazon.com/blogs/opensource/introducing-strands-box-ai-agent-sandboxes-powered-by-dogwood/" target="_blank" rel="noopener">launched</a> <a href="https://www.theregister.com/ai-and-ml/2026/10/07/aws-launches-open-source-ai-agent-sandbox-to-prevent-yolo-mode-disasters/5301687" target="_blank" rel="noopener">Strands Box</a>, an open source sandbox that’s designed specifically to prevent AI agents from escaping the sandbox’s control. It includes an open source policy engine, Dogwood, that allows users to place explicit limits on what an agent may do.</li>



<li>Meta’s Muse, its agent for people who aren’t technology professionals, is a <a href="https://www.techdirt.com/2026/10/06/metas-muse-is-an-adorable-privacy-and-security-dumpster-fire/" target="_blank" rel="noopener">privacy and security disaster</a>.</li>



<li>Using <a href="https://arstechnica.com/security/2026/10/vulnerability-in-agents-from-google-and-others-exposes-structural-flaw-in-mcp/" target="_blank" rel="noopener">MCP for communications between agents</a> creates many risks, including new vulnerabilities to prompt injection.</li>



<li>Google has <a href="https://www.bleepingcomputer.com/news/google/google-halts-open-source-bug-bounty-program-amid-ai-spam-surge/" target="_blank" rel="noopener">suspended</a> submissions to the Open Source Software Vulnerability Rewards Program because of the flood of machine-generated vulnerability reports, most of which are (in Google’s words) “not valid.” This suspension should only be temporary.</li>
</ul>



<h2 class="wp-block-heading"><strong>Infrastructure and operations</strong></h2>



<p class="wp-block-paragraph"><em>There’s been a lot of news about certificate management, not all of it good. It’s time to check on your certificate providers, get ready for quantum-resistant encryption, and automate as much of the process as you can.</em></p>



<ul class="wp-block-list">
<li>To increase security, the certificate provider Let’s Encrypt will be <a href="https://arstechnica.com/gadgets/2026/10/lets-encrypt-cuts-certificate-lifetimes-to-64-days-starting-february-2027/" target="_blank" rel="noopener">limiting the lifetime of free certificates</a> to 64 days starting in February 2027. The change should be invisible to sites using automatic certificate management (ACME).</li>



<li>Crowdflare has <a href="https://blog.cloudflare.com/cloudflare-certificate-authority/" target="_blank" rel="noopener">announced</a> that it will <a href="https://arstechnica.com/security/2026/09/cloudflare-plans-to-issue-quantum-safe-tls-certificates/" target="_blank" rel="noopener">begin</a> issuing TLS certificates with quantum-resistant encryption. They will continue issuing certificates with classical encryption. Crowdflare hasn’t given a date when they will start issuing the new certificates.</li>



<li>DeepSeek has open sourced <a href="https://github.com/deepseek-ai/DeepInfer" target="_blank" rel="noopener">DeepInfer</a>, its inference framework, with an Apache 2.0 license. At present, DeepInfer only supports DeepSeek-V4.1-Flash.</li>



<li><a href="https://github.com/omlahore/RemoveMacAI" target="_blank" rel="noopener">RemoveMacAI</a> is an <a href="https://arstechnica.com/apple/2026/10/command-line-tool-quickly-removes-apple-intelligence-from-macos-27/" target="_blank" rel="noopener">open source command-line tool</a> for deleting Apple’s AI from MacOS 27, freeing up 30 GB or so of disk space.</li>
</ul>



<h2 class="wp-block-heading"><strong>Web</strong></h2>



<p class="wp-block-paragraph"><em>Mark Twain didn’t quite say, “The reports of my death are greatly exaggerated.” But we are hearing that the Web is dead, and that’s indeed an exaggeration. The flood of crawler traffic and the disincentives towards human writing are a problem. But what does “death” mean for a technology so flexible that you can build an office suite that stores entire documents’ URLs?</em></p>



<ul class="wp-block-list">
<li><a href="http://tinylittleoffice.com" target="_blank" rel="noopener">TinyLittleOffice.com</a> is a surprisingly complete set of surprisingly capable <a href="https://tinylittleoffice.com/" target="_blank" rel="noopener">office applications</a>. It includes a word processor, spreadsheets, and other Office-like apps. Everything is saved in the URL–not on your disk, not in someone’s datacenter. Not suitable for large documents.</li>



<li>Crowdflare has <a href="https://developers.cloudflare.com/changelog/post/2026-10-02-introducing-web-search-api/" target="_blank" rel="noopener">announced</a> a <a href="https://developers.cloudflare.com/web-search/" target="_blank" rel="noopener">web search API</a>, now in beta. Although their announcement doesn’t say, we suspect this is an attempt to control web scraping traffic. Matthew Prince, its CEO, has <a href="https://thenextweb.com/news/cloudflare-matthew-prince-bots-1000x-human-traffic-verge" target="_blank" rel="noopener">estimated</a> that bot traffic will reach 1000 times human traffic by mid-2027. All of his earlier predictions have been underestimates.</li>



<li>Jev and its clones have taken the world by storm. Can you <a href="https://opper.ai/jevman-benchmark/" target="_blank" rel="noopener">beat it at Pacman</a>?</li>
</ul>



<h2 class="wp-block-heading"><strong>Hardware</strong></h2>



<ul class="wp-block-list">
<li>AI labs are heading towards models that can run on phones and similar hardware. Google has <a href="https://alphasignal.ai/news/google-deepmind-shrinks-gemma-4-e4b-to-5gb-without-losing-reasoning-power" target="_blank" rel="noopener">compressed Gemma 4 E4B</a> to 5 GB, and Liquid has <a href="https://www.liquid.ai/blog/lfm2-5-24b-a2b" target="_blank" rel="noopener">released</a> LFM2.5-24B-A2B, a 24B mixture-of-experts model with 2B active parameters that also targets devices.</li>



<li><a href="https://github.com/FeSens/openTPU" target="_blank" rel="noopener">OpenTPU</a> is an open source API accelerator, designed by AI. Bring your own silicon.</li>
</ul>



<h2 class="wp-block-heading"><strong>Quantum computing</strong></h2>



<ul class="wp-block-list">
<li>Quantinuum has <a href="https://arstechnica.com/science/2026/10/quantum-error-correction-goes-well-beyond-breakeven/" target="_blank" rel="noopener">implemented quantum error correction</a> on its latest hardware and has found that it scales well enough to be useful in practice: Adding a physical qubit to a logical cubit cuts the error rate significantly.</li>



<li>Researchers have discovered a way to <a href="https://quantumzeitgeist.com/sao-carlos-supercurrent-reads-qubit-states/" target="_blank" rel="noopener">read a qubit without collapsing</a> the information it contains into a 1 or 0. Solving this problem (also known as quantum non-demolition or QND) is critical to building quantum computers large enough to do useful work.</li>
</ul>



<h2 class="wp-block-heading"><strong>Biology</strong></h2>



<ul class="wp-block-list">
<li>Watermarking texts is one thing. Google has now designed a <a href="https://arstechnica.com/science/2026/09/google-figures-out-how-to-watermark-ai-designed-proteins/" target="_blank" rel="noopener">watermark for proteins</a>. Like text watermarks, protein watermarks are based on Google’s <a href="https://deepmind.google/models/synthid/" target="_blank" rel="noopener">SynthID</a>.</li>



<li>Last month we mentioned EEG-capable <a href="https://techxplore.com/news/2026-08-brain-earbuds-prompting-urgent-children.html" target="_blank" rel="noopener">earbuds</a>. This month, a group of researchers has announced that they have developed an AI application that can <a href="https://www.technologyreview.com/2026/10/01/1145588/ai-mind-reading-reconstructs-what-youre-looking-at/" target="_blank" rel="noopener">reconstruct</a> what someone is seeing from brain scans. The results are impressive, though the privacy implications are chilling.</li>
</ul>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/radar-trends-to-watch-november-2026/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>The Monday Morning Agent: Defining the Tush Push</title>
		<link>https://www.oreilly.com/radar/the-monday-morning-agent-defining-the-tush-push/</link>
				<comments>https://www.oreilly.com/radar/the-monday-morning-agent-defining-the-tush-push/#respond</comments>
				<pubDate>Mon, 02 Nov 2026 16:55:02 +0000</pubDate>
					<dc:creator><![CDATA[Chester Ismay and Michelle Smith]]></dc:creator>
						<category><![CDATA[The Monday Morning Agent]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20122</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/USE-THIS-the-monday-morning-agent-radar-1600x840-1.png" 
				medium="image" 
				type="image/png" 
				width="1600" 
				height="840" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/USE-THIS-the-monday-morning-agent-radar-1600x840-1-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Should we ban the tush push? First, our agent has to decide what counts.]]></custom:subtitle>
		
				<description><![CDATA[“Tush push” never appears in our roughly 265,000 play descriptions from 2021 through the current season. Neither does “brotherly shove,” and “sneak” turns up only twice. So when we asked our AI analyst to tackle “Ban the Tush Push” in the October 26 episode of The Monday Morning Agent, we first had to define the [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">“Tush push” never appears in our roughly 265,000 play descriptions from 2021 through the current season. Neither does “brotherly shove,” and “sneak” turns up only twice. So when we asked our AI analyst to tackle “Ban the Tush Push” in the October 26 episode of <em>The Monday Morning Agent</em>, we first had to define the play using the available data. We saved that definition in a shared data dictionary, the agent’s first durable memory, so future runs must use the same definition and explain its limitations.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/j5Lt9FwVwGk?si=4L2UWPWjGN8kfQGx" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>Check whether the data supports your definition</strong></h2>



<p class="wp-block-paragraph">A quarterback takes the snap, and teammates push him forward. Our data identifies the ball carrier but doesn’t record whether teammates pushed him. We can check whether a snap came from shotgun, but we can’t reconstruct the team’s specific formation.</p>



<p class="wp-block-paragraph">We explored five possible definitions, from a quarterback sneak with teammates pushing to any rush on third or fourth and short. Each definition changes which plays the analysis counts. The broadest one would count running backs too, which takes us away from the play people are arguing about.</p>



<p class="wp-block-paragraph">So before you let an agent query a term everyone seems to understand, write its definition in plain language. Then go clause by clause and ask whether the data can support it. A familiar name doesn’t guarantee a usable label.</p>



<h2 class="wp-block-heading"><strong>Write down what your definition can’t measure</strong></h2>



<p class="wp-block-paragraph">We settled on a quarterback run with one yard or less to go, from under center. The agent counts qualifying quarterback sneaks whether anyone pushes the runner or not. We’re measuring a substitute for the tush push, and we can’t isolate the shove’s contribution.</p>



<p class="wp-block-paragraph">Even “quarterback” needs a definition. The fields available to our tool don’t include player position, so the tool identifies the quarterback as the player who threw the most passes for that team in that game. That’s another assumption to check when you interpret the results.</p>



<p class="wp-block-paragraph">The dictionary entry has to explain the play in plain language and state what the data can’t tell us. Otherwise, readers could assume a “tush push” result counts plays with a push. Keep the limitation beside the definition so the agent can repeat it with the result.</p>



<h2 class="wp-block-heading"><strong>Give the next run the same definition</strong></h2>



<p class="wp-block-paragraph">The dictionary holds one JSON file per definition, with a fixed structure. The agent can add an entry, but it can’t change an existing one. A different definition needs a new name. That keeps the meaning attached to an earlier result from quietly changing later.</p>



<p class="wp-block-paragraph">Before each run, the script that launches the agent, called the runner, saves a copy of the dictionary and adds its contents to the agent’s instructions with the date. The agent searches for an existing definition first. If it finds one, it uses it. If it doesn’t, it can write a new entry using the fields the tool supports.</p>



<p class="wp-block-paragraph">In the demonstration, the tool refused the request for “tush push” because no entry existed. The agent then created a definition and queried it.</p>



<h2 class="wp-block-heading"><strong>Check that the agent uses its memory</strong></h2>



<p class="wp-block-paragraph">Writing “use the dictionary” in a policy doesn’t make the agent obey. We’re building this around instruction, check, and enforcement. The policy tells the agent to use and cite an entry. The tool accepts definitions from the dictionary rather than a definition improvised in a query. If the answer lacks the required ruling, the runner retries once, then stops if it’s still missing.</p>



<p class="wp-block-paragraph">We expanded the agent’s permissions to let it add a dictionary entry alongside querying the plays. Test whether your agent uses its shared definitions and whether someone reading the answer can find them.</p>



<h2 class="wp-block-heading"><strong>Read the conversion rate before deciding on a ban</strong></h2>



<p class="wp-block-paragraph">Across five complete seasons, the defined play converted 78.3% of the time, compared with 70% for other short-yardage rushes. That’s an 8.3 percentage point advantage.</p>



<p class="wp-block-paragraph">While the agent found an advantage, it didn’t treat the conversion gap as sufficient evidence for a ban. Those numbers describe conversion rates for our defined group of plays. They don’t establish whether the NFL should ban a play, and they can’t tell us how much pushing helped.</p>



<p class="wp-block-paragraph">A viewer raised that distinction during the discussion. Whether a successful play belongs in the game requires human judgment. Conversion rates can inform that conversation, but they can’t resolve questions about safety or what people want football to look like.</p>



<h2 class="wp-block-heading"><strong>Next up: “Kickers Are Too Good Now”</strong></h2>



<p class="wp-block-paragraph">On November 9, we’ll tackle “Kickers Are Too Good Now” and give the agent written visualization standards. An agent can generate a chart in seconds. We’ll work on rules for presenting trends and making comparisons so readers can see what the data actually supports.</p>



<p class="wp-block-paragraph">O’Reilly members can <a href="https://learning.oreilly.com/live-events/the-monday-morning-agent/0642572456054/" target="_blank" rel="noopener">sign up on the O’Reilly learning platform</a> to join us live on November 9, 8:00am–8:45am PT / 11:00am–11:45am ET. Everyone can follow along on Radar every other Monday, with a brief pause for the holidays. Watch episode two above, and we’ll build on it in the next session.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/the-monday-morning-agent-defining-the-tush-push/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Practical Loop Engineering</title>
		<link>https://www.oreilly.com/radar/practical-loop-engineering/</link>
				<comments>https://www.oreilly.com/radar/practical-loop-engineering/#respond</comments>
				<pubDate>Mon, 02 Nov 2026 11:54:29 +0000</pubDate>
					<dc:creator><![CDATA[Addy Osmani]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20108</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/Practical-loop-engineering-image-created-with-Gemini-scaled.jpeg" 
				medium="image" 
				type="image/jpeg" 
				width="2560" 
				height="1429" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/Practical-loop-engineering-image-created-with-Gemini-160x160.jpeg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Goals, loops, and the discipline of not delegating your judgment]]></custom:subtitle>
		
				<description><![CDATA[The following article originally appeared on Addy Osmani’s Elevate blog and is being republished here with the author’s permission. The way that I typically work is I have anywhere between five and ten agents working at the same time in parallel. There are going to be some tasks that I’m very happy to delegate fully [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The following article originally appeared on</em> <a href="https://addyo.substack.com/p/practical-loop-engineering" target="_blank" rel="noopener"><em>Addy Osmani’s</em> Elevate <em>blog</em></a> <em>and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">The way that I typically work is I have anywhere between five and ten agents working at the same time in parallel. There are going to be some tasks that I’m very happy to delegate fully to agents, as long as I have a very clear idea of the stopping conditions and the constraints around them. And then there are going to be some tasks where I am going to want to keep a closer eye on and code-review what the agent is doing.</p>



<p class="wp-block-paragraph">You’ve probably heard about <strong>loop engineering</strong>. I talked about it a couple of months ago when I wrote a big blog post about it.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>A loop is an autonomous, self-correcting feedback cycle where an AI agent repeatedly acts, tests its results, and adjusts its approach until a specific goal is met.</em></p>
</blockquote>



<p class="wp-block-paragraph">There are now basically two core primitives you can think about. In Claude Code you have a <a href="https://code.claude.com/docs/en/goal"><strong>goal</strong></a> <strong>primitive</strong>, which can drive a single bounded task forward until you’ve got a particular goal, like a measurable finish line that’s been met. And then <a href="https://code.claude.com/docs/en/scheduled-tasks"><strong>loop</strong></a> reruns on a timer or a fixed interval, so you can use it to schedule changes.</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857dd1cc&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857dd1cc" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1456" height="855" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image.jpeg" alt="Anatomy of a loop" class="wp-image-20109" style="aspect-ratio:1.7002724795640327" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image.jpeg 1456w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-766x450.jpeg 766w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-300x176.jpeg 300w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<h2 class="wp-block-heading"><strong>Before the primitives were primitives</strong></h2>



<p class="wp-block-paragraph">I remember back before we had primitives baked into Claude Code and Codex: Loop engineering was heavily about setting up your own bash loop, a hand-rolled thing. That’s how I approached it. And you might remember earlier in the year, a number of us were playing around with the <a href="https://ghuntley.com/loop/" target="_blank" rel="noopener">Ralph loop</a> by Geoff Huntley. We were experimenting, we were sharing our workflows, we were sharing what worked and what didn’t, but it was largely on some of our personal projects where, if we ran into a wall, it didn’t really have a big cost to us.</p>



<p class="wp-block-paragraph">And as we’ve tried to see what patterns and what aspects of loop engineering are now a little bit more baked, I think we have a clearer idea of how you babysit it. I can now largely rely on the output of the primitives in Claude Code and Codex. We’ve come a little way. But at the same time we need to be very diligent, because loop engineering, where you kind of leave it sitting alone and haven’t really thought about whether the end goal or the constraints have been well defined, can leave you in a problematic state. This is why there’s nuance when deciding to use it for an evergreen codebase without users or without as much historical complexity as a brownfield bank codebase.</p>



<h2 class="wp-block-heading"><strong>How the Claude Code team frames loops</strong></h2>



<p class="wp-block-paragraph">The Claude Code team published their take on four kinds of loops, and it lines up with how I use the primitives (<a href="https://x.com/ClaudeDevs/article/2074208949205881033">their write-up</a>). Before we get to it, here’s my quick summary:</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857ddb5f&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857ddb5f" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1456" height="908" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1.jpeg" alt="The four kinds of loops" class="wp-image-20110" style="aspect-ratio:1.6041131105398458" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1.jpeg 1456w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1-766x478.jpeg 766w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-1-300x187.jpeg 300w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>On the Claude Code team, we define loops as agents repeating cycles of work until a stop condition is met. We categorize a few different types of loops based on how they are triggered, how they are stopped, what Claude Code primitive is used, what type of task is most appropriate for each. Not all tasks require complex loops; start with the simplest solution and use these patterns selectively.</em><br><br><em>Every prompt you send starts a manual loop with you directing each turn. Claude gathers context, takes action, checks its work, repeats if needed, and responds. We call this the agentic loop. For example, ask Claude to create a “Like” button. It reads your code, makes the edit, runs the tests, and hands back something it believes works. You then manually check the work, and write the next prompt.</em></p>
</blockquote>



<p class="wp-block-paragraph">Their write-up walks each rung.</p>



<p class="wp-block-paragraph"><strong>On goal-based loops:</strong></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>Sometimes, a single turn is not enough, especially for more complex tasks. Agents do better when they can iterate. You can extend how long Claude keeps iterating by defining what done looks like with /goal. When you define the success criteria, Claude doesn’t have to make a determination on what is “good enough” and end the loop early. Each time Claude tries to stop, an evaluator model checks your condition and sends it back to work until the goal is met or a number of turns you define is reached. This is why deterministic criteria, such as number of tests passed or clearing a certain score threshold, are so effective. For example: /goal Get the homepage Lighthouse score to 90 or above, stop after 5 tries.</em></p>
</blockquote>



<p class="wp-block-paragraph"><strong>On time-based loops:</strong></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>Some agentic work is recurring: the task stays the same and only the inputs change. For example, summarizing Slack messages every morning. Other work depends on external systems, and a simple way to interface with one is to check it on an interval and react to what changed. For example a PR, which may receive code reviews or fail CI. For these, you can trigger when Claude runs with /loop, which reruns a prompt on an interval. For example: /loop 5m check my PR, address review comments, and fix failing CI. /loop runs on your computer, so if you turn it off, it stops. You can move the loop to the cloud by creating a routine with</em> <em><a href="https://code.claude.com/docs/en/routines" target="_blank" rel="noopener">/schedule</a>.</em></p>
</blockquote>



<p class="wp-block-paragraph"><strong>And on proactive loops, the top rung:</strong></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>Triggered by an event or schedule, with no human in real time. Stop criteria: each task exits when its goal is met. The routine itself runs until you turn it off. Best used for recurring streams of well-defined work: bug reports, issue triage, migrations, dependency upgrades. Managed usage by routing routines to smaller, faster models and using the most capable model for judgment calls.</em></p>
</blockquote>



<p class="wp-block-paragraph">Their verification advice is worth lifting whole, because it moves the manual checking into something Claude applies itself:</p>



<pre class="wp-block-code"><code>---
name: verify-frontend-change
description: Verify any UI change end-to-end before declaring it done.
---
# Verifying frontend changes
Never report a UI change as complete based on a successful edit alone.
Verify it the way a human reviewer would:
1. Start the dev server and open the edited page in the browser.
2. Interact with the change directly. For a new control (button, input,
   toggle): click it, confirm the expected state change, and screenshot
   before/after.
3. Check the browser console: zero new errors or warnings.
4. Use the Chrome Devtools MCP, run a performance trace and audit
   Core Web Vitals.
If any step fails, fix the issue and rerun from step 1 - do not hand
back partially verified work.
</code></pre>



<h2 class="wp-block-heading"><strong>Goal</strong></h2>



<p class="wp-block-paragraph">The way that I use goal is for building any specific piece of work until it’s proveably done. For example, you can use a goal to say: “Make sure that this experience loads in five seconds, keep going until it’s done.” And it will continue to use an independent evaluation check to keep checking if the completion criteria has been met. What’s better is to be even more specific about what tooling is being used.</p>



<p class="wp-block-paragraph">As for real goals that I’ve run to a number, there’s a few things that I’ve done. I’ve used goals for running through GitHub issues: “Review and close the last 10 issues,” or “Review and move the last 10 issues forward,” something like that. And that’s semi-open-ended, right? Or “Let’s make this page load 50% faster.” Sometimes that works well, sometimes it doesn’t, but it’s really about the experimentation.</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857de9cd&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857de9cd" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1456" height="855" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-2.jpeg" alt="/goal—drive one task to a finish line" class="wp-image-20111" style="aspect-ratio:1.7002724795640327" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-2.jpeg 1456w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-2-300x176.jpeg 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-2-766x450.jpeg 766w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<h2 class="wp-block-heading"><strong>Loop</strong></h2>



<p class="wp-block-paragraph">Loop is a little bit more of a scheduler, so it keeps an eye on something or repeatedly executes a pattern on some cadence. Think of it a little bit like a cron. It’s best for doing things like polling logs or monitoring external states. You could use it for potentially checking in. If there are repetitive tasks you find yourself doing on some cadence, loop is pretty good for that.</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857df3b0&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857df3b0" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1456" height="869" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-3.jpeg" alt="/loop—a cron with an agent on the far end" class="wp-image-20112" style="aspect-ratio:1.6774193548387097" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-3.jpeg 1456w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-3-767x458.jpeg 767w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-3-300x179.jpeg 300w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<h2 class="wp-block-heading"><strong>What I delegate, and what I watch</strong></h2>



<p class="wp-block-paragraph">I use probably between five and ten agents every day. Typically I’ll max out at about five concurrently. And some of those tasks might be ones that are a little bit safer. So maybe it’s: “Hey, I implemented this feature, go write the documentation for it.” Or “Go double check that we have sufficient test coverage.” Or something in that vein. If I’m working on a more complex problem, and I’ve given it a good spec, or what I think is a good spec, and tried to give it some stopping conditions, there’s still a reasonable chance it may not get everything right, so I would try to watch it more closely. If the task involves anything just a little bit sensitive, whether it is “I’ve given this access to a system,” or whether the feature happens to touch authentication, or something related to security or finance, I’ll definitely be watching that closely.</p>



<p class="wp-block-paragraph">Generally speaking, I do think we’re going to get to a place where folks are increasingly comfortable with delegation, as long as they’re able to have these clear ways of verifying that their goal or their stopping condition has been met. But you do still need to take a look at the code, at the thing that’s being generated, to make sure that it’s meeting your mark.</p>



<p class="wp-block-paragraph">The other habit that matters is not letting the agent that did the work decide the work is good. One subagent drafts the change; a separate one verifies it.</p>



<p class="wp-block-paragraph">Sometimes an agent can be confident about something, and a verifying agent can catch things that are unexpected. If an agent thinks that the baseline performance of an experience it has generated is actually fine, but it’s only evaluating performance based on desktop, and you actually care about the experience on mobile, that might mean the agent is being very confident about one dimension of the problem but not the other.</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857dfd27&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857dfd27" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1456" height="851" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-4.jpeg" alt="Split the marker from the checker" class="wp-image-20113" style="aspect-ratio:1.7095890410958905" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-4.jpeg 1456w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-4-300x175.jpeg 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-4-766x448.jpeg 766w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<p class="wp-block-paragraph">And I learned this one the hard way. I was curious to figure out: Is there something that we’re missing that we haven’t gotten direct feedback on from our users, either in an issue tracker or in a comment somewhere? And so I asked it to go and take a look at some of our competitors and put together a list, and some PRs, not pushed, but some PRs locally, of what solving some of those gaps might look like. And I almost pushed some of those changes. But I didn’t actually look at them closely enough. I read through its research, but I didn’t look at the implementations closely enough. So I delegated the task, but I was close to delegating the judgment as well. When I actually looked through the changes, what I realized is that it would introduce a lot of additional complexity for our users, for, I thought, not all that much gain. And so I feel like you need to sometimes check that you are not delegating the taste and the judgment to your agent. You’re delegating the task, and then you are actually checking back that it’s meeting your bar.</p>



<p class="wp-block-paragraph">The evaluator sitting behind goal is not that checker, by the way. It doesn’t look at the content to see if it’s good or bad in any way, shape, or form. All it does is examine the conversation transcript to see if the hard rules you specified have been met.</p>



<pre class="wp-block-code"><code>/goal Refactor the data-fetching layer in Dashboard.tsx until 
Lighthouse performance score is >= 92 and LCP is under 1.8s as 
shown by the Lighthouse CLI output. Do not change the public API 
of any hooks. Each turn must improve at least one reported metric; 
abort if two consecutive turns show no improvement. Stop after 10 turns.</code></pre>



<h2 class="wp-block-heading"><strong>The workflow I run every day</strong></h2>



<p class="wp-block-paragraph">One of the workflows that I do every day: I have a popular open source repository called <a href="https://github.com/addyosmani/agent-skills" target="_blank" rel="noopener">Agent Skills</a>. We’ve got over 80,000 stars, and up until recently we were getting anywhere from 80 or 90 pull requests that we had to review a day. And so every day I would go and spend some time checking on this. Now with loop, what you can do is say: “Well, every 24 hours or every 12 hours check the GitHub repository for any new open issues and provide a summary of their urgency,” or “Provide a first pass review,” or anything like that.</p>



<pre class="wp-block-code"><code>/loop every 1h "Check the GitHub repository for any new open issues. 
Provide a bulleted summary of their urgency."</code></pre>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857e0688&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857e0688" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1456" height="801" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-5.jpeg" alt="One clean checkout per parallel run" class="wp-image-20114" style="aspect-ratio:1.8192419825072885" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-5.jpeg 1456w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-5-300x165.jpeg 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-5-767x422.jpeg 767w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<h2 class="wp-block-heading"><strong>Combining loops and goals</strong></h2>



<p class="wp-block-paragraph">Now you can also sort of combine loops and goals. So you use loop to schedule a check, and then goal to solve the problem. So you can say something like: “Loop for every 24 hours, check GitHub for issues labeled bug. If one exists, use goal to implement a fix until all local tests pass and push the branch.”</p>



<pre class="wp-block-code"><code>/loop every 24h "Check GitHub for issues labeled 'bug'. If one exists, 
use /goal to implement a fix until all local tests pass and push the branch."</code></pre>



<p class="wp-block-paragraph">But also keep in mind that goal has got some limitations around just how much you can cram in there.</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857e0f3e&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857e0f3e" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1456" height="855" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-6.jpeg" alt="Loop schedules the check. Goal solves the problem" class="wp-image-20115" style="aspect-ratio:1.7002724795640327" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-6.jpeg 1456w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-6-766x450.jpeg 766w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-6-300x176.jpeg 300w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<p class="wp-block-paragraph">Claude Code team’s write-up also has a composed example that shows where this is all heading:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The primitives above, along with other Claude Code features like</em> <em><a href="https://code.claude.com/docs/en/auto-mode-config" target="_blank" rel="noopener">auto mode</a></em> <em>and dynamic workflows (research preview) can be composed into a loop for long-running work. For example, to handle incoming feedback, you can use: /schedule (research preview) to run a routine that checks for new reports, /goal to define what done looks like, and skills to document how to verify it.</em> <em><a href="https://code.claude.com/docs/en/workflows" target="_blank" rel="noopener">Dynamic workflows</a></em> <em>to orchestrate agents that triage each report, fix it, and review the fix. Auto mode so the routine runs without stopping to ask for permission. Putting it together, a prompt could look like this: /schedule every hour: check the project-feedback channel for bug reports. /goal: don’t stop until every report found this run is triaged, actioned, and responded to. When fixing a bug, use a workflow to explore three solutions in parallel worktrees and have a judge adversarially review them.</em></p>
</blockquote>



<h2 class="wp-block-heading"><strong>What the triage system actually does</strong></h2>



<p class="wp-block-paragraph">Inside the PR triage, when I have loops and goals working together for me, what I end up having is a system that allows me to continue accepting PRs and issues, being able to stay on top of what is coming on my plate every day, and especially being able to cross-reference. That’s been a really big deal for me. If I want to work on a particular goal of, “Hey, we’re going to be redoing this part of the system,” and I need to make sure that any issues that happen to touch it are closed as a result of this rework, or that we’re not stepping on anyone else’s toes, I can make sure that that’s well defined.</p>



<p class="wp-block-paragraph">Scheduled tasks are really useful for regularly just reviewing new PRs and closing things that clearly don’t fit. One good stopping condition, for example: We have a set of contribution guidelines, and our contribution guidelines include things like, “Hey, we currently don’t accept translations.”</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857e19ac&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857e19ac" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1456" height="846" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-7.jpeg" alt="What the triage system actually does" class="wp-image-20116" style="aspect-ratio:1.71900826446281" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-7.jpeg 1456w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-7-300x174.jpeg 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-7-768x446.jpeg 768w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<p class="wp-block-paragraph">And it’s not that we don’t care, it’s that they’re difficult for us to maintain because we don’t speak all the languages that often come in. And so if we tell it to close any issues or close any PRs that happen to touch that aspect of our contribution guidelines, that’s something that can do really well when it’s on that schedule. And so it reduces the overall batch of things that we need to review.</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857e221d&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857e221d" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1456" height="855" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-8.jpeg" alt="Where to point a loop" class="wp-image-20117" style="aspect-ratio:1.7002724795640327" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-8.jpeg 1456w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-8-766x450.jpeg 766w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-8-300x176.jpeg 300w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<h2 class="wp-block-heading"><strong>What loops don’t buy you</strong></h2>



<p class="wp-block-paragraph">I’m often asked what loop engineering is not a great fit for. Generally speaking, if you don’t have a clear idea of what the end-state/done/good means for your completion, it may not be the right pattern for your work. For example, a vague goal would be “Keep going until this UI design is good.” What does that mean? Good to who? How is it being evaluated? Tasks that require human taste, subjective design, or open-ended creative exploration aren’t a good fit. When you have a pretty clear idea of the goal, I think loops are a good option to consider.</p>



<h2 class="wp-block-heading"><strong>The fine print</strong></h2>



<p class="wp-block-paragraph">One classic sign that you’ve got a loop spinning in place is the same command being tried over and over without any change in the result. Give the same command a third time with no change from the second and it’s probably time to stop.</p>



<p class="wp-block-paragraph">One bit of fine print worth knowing: Recurring loops expire seven days after creation. I’d been telling people it was three days. It’s seven. And loops are session-scoped, so they stop when you start a new conversation, though resuming that session with &#8211;resume or &#8211;continue brings back any recurring task still inside its seven-day window. If you need something that outlives your session, /schedule runs it in the cloud.</p>



<p class="wp-block-paragraph">If there’s a check you already run every morning by hand, that’s your first loop. Mine was the pull request pile.</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece857e2c6f&quot;}" data-wp-interactive="core/image" data-wp-key="6aece857e2c6f" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1456" height="883" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-9.jpeg" alt="Choosing between goal, loop, and schedule" class="wp-image-20118" style="aspect-ratio:1.646437994722955" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-9.jpeg 1456w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-9-767x465.jpeg 767w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/11/image-9-300x182.jpeg 300w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/practical-loop-engineering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Getting Smarter, Not Just Faster</title>
		<link>https://www.oreilly.com/radar/getting-smarter-not-just-faster/</link>
				<comments>https://www.oreilly.com/radar/getting-smarter-not-just-faster/#respond</comments>
				<pubDate>Fri, 30 Oct 2026 16:54:16 +0000</pubDate>
						<category><![CDATA[Live with Tim O’Reilly]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20092</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/USE_THIS_live-with-tim-oreilly-radar-1600x840-1.png" 
				medium="image" 
				type="image/png" 
				width="1600" 
				height="840" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/USE_THIS_live-with-tim-oreilly-radar-1600x840-1-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Andrew Odewahn on Live with Tim O’Reilly]]></custom:subtitle>
		
				<description><![CDATA[This event summary was created by Claude with light editing by Tim O’Reilly, based on a transcript of the event. On October 15, 2026, Tim O’Reilly hosted Andrew Odewahn, CTO of O’Reilly Media, for an hour-long episode of Live with Tim O’Reilly, the interview series streamed live on the O’Reilly learning platform. Andrew has been [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This event summary was created by Claude with light editing by Tim O’Reilly, based on a transcript of the event.</em></p>



<p class="wp-block-paragraph">On October 15, 2026, Tim O’Reilly hosted Andrew Odewahn, CTO of O’Reilly Media, for an hour-long episode of <em>Live with Tim O’Reilly</em>, the interview series streamed live on the O’Reilly learning platform. Andrew has been at O’Reilly for many years, starting as an author, then building tools for the company’s platform, then eventually as CTO and head of engineering. Over the past year, his team has been building what the company calls <a href="https://www.oreilly.com/online-learning/expert-intelligence.html" target="_blank" rel="noopener">Expert Intelligence</a>, a suite of tools that connects an AI agent to an organization’s own systems, gives it a skill file describing how to reason about what it finds there, and grounds its analysis in the practitioner frameworks of the O’Reilly library. Andrew described the work in a recent Radar piece, “<a href="https://www.oreilly.com/radar/building-organizational-intelligence/" target="_blank" rel="noopener">Building Organizational Intelligence</a>.”</p>



<p class="wp-block-paragraph">Tim and Andrew’s interview was organized around a presentation in two parts, the first on the research agent and the second on the system Andrew’s team built for reviewing what it produces, with discussion in between and audience questions throughout.</p>



<p class="wp-block-paragraph">Tim framed the conversation by asking a question he said Andrew’s work helps to answer: Most of the AI story is about efficiency, doing the same work faster. What does it look like for an organization to get smarter?</p>



<h2 class="wp-block-heading"><strong>Building the research agent</strong></h2>



<p class="wp-block-paragraph">Andrew’s research agent emerged from a personal need rather than a strategy. He wanted to know the status of a project, for example, how long a migration from RabbitMQ to Pub/Sub would take. This is the kind of question every engineer dreads but every engineering leader has to answer. He also had a broader concern. A single person being good at AI isn’t the same as an organization being good at it.</p>



<p class="wp-block-paragraph">He built his agent in four steps. He mapped the organization’s information systems as a hierarchy, connected them via MCP, wrote a skill telling the agent how to use them, and finally added the Expert Intelligence layer.</p>



<p class="wp-block-paragraph">The map of the sources of truth in the engineering organization’s workflows was what made the rest work. Andrew put them in order and explained to the model how they relate: Strategic goals and feature priorities live in Productboard. Those become epics, sprints, and stories in Jira. Stories become code in GitHub. A service catalog describes the roughly 300 services that make up the O’Reilly platform and who owns them, and observability tools show how those services perform against their SLOs. The skill also had to encode local quirks. Some teams mark an epic as finished with an end date, while others consider it done when every ticket is closed. Andrew also told the agent it was a research agent, not a coding agent, and that its job was to write reports.</p>



<p class="wp-block-paragraph">Connecting everything through MCP was, in his words, “the most completely tedious step of the whole process.” Productboard had no MCP server at the time, so he wrote a wrapper. Later, when Tim asked how another company could repeat the work with a different set of tools, Andrew suggested starting from the vendor list. Export it from your procurement system, ask the model what products those vendors make and which would hold information relevant to the questions you care about, and have it put them in order. O’Reilly product managers are now turning this process into a skill for the forthcoming Expert Intelligence Skills Hub.</p>



<p class="wp-block-paragraph">One audience member asked whether MCP was really the right tool for internal knowledge, compared with semantic search. As Andrew pointed out, sometimes anything is better than nothing. Ultimately, what you want is to give the model the ability to search across your systems.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/ST1xdoWr0QI?si=_8w6W_U4LivtOuxK" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">       </p>



<h2 class="wp-block-heading"><strong>From a hiring case to a toil audit</strong></h2>



<p class="wp-block-paragraph">The center of the presentation was a before-and-after comparison of the particular use case that Andrew had previously written up in his “<a href="https://www.oreilly.com/radar/building-organizational-intelligence/" target="_blank" rel="noopener">Building Organizational Intelligence</a>” article. An engineering manager asked Andrew to hire another engineer, and Andrew had his reporting and analysis agent make the hiring case. The first report covered the five-person team that manages content and metadata, the 10 tier-A services it owns along with its B and C services, the status of the Pub/Sub migration (64% complete), and the full backlog. It concluded that the team had a capacity problem and should probably hire. Andrew called it useful and very detailed. . .“maybe overly detailed.”</p>



<p class="wp-block-paragraph">He then connected the agent to Expert Intelligence, asked it to act like a consultant, and ran the analysis again. The new report came to a very different conclusion. It opened by saying that the team’s operational overhead problem was “structural, not a staffing deficiency.” When it consulted Expert Intelligence, the agent brought in the concept of toil from Google’s <em><a href="https://sre.google/workbook/eliminating-toil/" target="_blank" rel="noopener">Site Reliability Workbook</a></em>. Toil is the manual, repetitive, automatable operational work that scales linearly with a service. The reporting and analysis agent used this notion to separate the team’s backlog into toil and the work people actually wanted to be doing. It recommended a structured toil audit before the next planning cycle, an explicit toil-reduction target, and treating runbook ownership as a first-class engineering artifact. Andrew said the team followed the recommendations and closed a substantial part of a backlog that had been sitting on everyone as a cognitive burden.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/HTH6EB_GPw0?si=zpvCUYL8uAe4yigG" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">The report went on to cite Jim Highsmith, a signer of the <em><a href="https://agilemanifesto.org/" target="_blank" rel="noopener">Agile Manifesto</a></em> and author of <em><a href="https://www.thoughtworks.com/en-us/insights/books/wild-west-to-agile" target="_blank" rel="noopener">Wild West to Agile</a></em>, to argue that the team’s technical debt was compounding. Andrew explained how that differed from the usual management advice:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">A lot of the time when you read these high-concept frameworks, they’re like eating your broccoli. I should really be doing that. But what made this really interesting is that it pulled out a specific project we had, the Django upgrade, and put it within the context of this broader framework. It wasn’t just, “here’s an abstract principle you ought to be applying.” It’s “here’s your backlog, and here’s a specific example.”</p>
</blockquote>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/VonErohDRIY?si=JFEP6ejDG76NloE4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">          </p>



<p class="wp-block-paragraph">A second analysis looked at services that crossed team boundaries. Drawing on microservices experts and Kent Beck’s work on coupling (see <em><a href="https://www.oreilly.com/library/view/tidy-first/9781098151232/" target="_blank" rel="noopener">Tidy First?</a></em>), it diagnosed the video metadata service as a complicated-subsystem problem rather than a boundary problem. In this version, Andrew had the agent pull out quotations, attribute them, and link to the source text. The resulting analysis was remarkably effective. The company has since retired a couple of systems. “I don’t need LLMs adding code,” Andrew argued. “I want them reducing it.”</p>



<p class="wp-block-paragraph">Andrew said the part that surprised him most was the reaction from colleagues. His earlier reports were data dumps. Readers couldn’t tell where any given claim came from, and as a result they were much less actionable. When the analysis cited experts that engineers knew from their own work, the documents became, as he put it, “much more approachable, much more human,” and people engaged with them far more deeply.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/UjYeZn-2vls?si=7mr7aC9lAEIsEx5v" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">           </p>



<h2 class="wp-block-heading"><strong>Tim’s response: Invoking the experts</strong></h2>



<p class="wp-block-paragraph">Tim broke in to put the demonstration in context. He contrasted it with the view that models are now smart enough that you can simply tell them to do something and let them rip, an approach we hear a lot about from vibe coders and those arguing for “<a href="https://addyosmani.com/blog/software-factories/" target="_blank" rel="noopener">dark factories</a>.” Tim argued instead for a return to expertise.</p>



<p class="wp-block-paragraph">He cited a post published that day by Felix Rieseberg of Anthropic, “<a href="https://felixrieseberg.com/how-to-be-more-ambitious-a-tutorial-for-humans-with-models/" target="_blank" rel="noopener">How to Be More Ambitious: A Tutorial for Humans with Models</a>,” which describes four kinds of ambition when working with models: speed, altitude, depth, and range. Most discussion of AI’s economic value is about speed, getting the same work done in less time. In Tim’s reading, Andrew had gained altitude (thinking about the outcome rather than the tasks) and depth (approaching the problem the way a field-leading expert would) simply by invoking the experts.</p>



<p class="wp-block-paragraph">Tim then offered a metaphor he has been developing for a while, of <a href="https://www.oreilly.com/radar/magic-words-programming-the-next-generation-of-ai-applications/" target="_blank" rel="noopener">AI programming as a kind of magic spellcasting</a>. In the Marvel comic books and movies, Doctor Strange opens his spells by invoking some source, with words like “by the power of the dread Dormammu” or “by the hoary hosts of Hoggoth.” Andrew, he said, was doing the same thing, saying in effect, “By the power of Kent Beck, I want you to think differently about this problem.” Even where Andrew didn’t name an expert, as with the SRE workbook, simply pointing the model at the expertise embodied in the O’Reilly publishing canon raised the bar for what the agent produced.</p>



<p class="wp-block-paragraph">Tim described this as using human expertise as a focusing mechanism, and connected it to his argument that LLMs are better understood as a <a href="https://www.oreilly.com/radar/writing-with-ai/" target="_blank" rel="noopener">medium we create with</a> than as independent intelligences. He also pushed back on the idea, often drawn from “<a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html" target="_blank" rel="noopener">The Bitter Lesson</a>,” that models will simply get better and human expertise will stop mattering. Andrew, he said, had found a particular way that it matters.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/6bOOVx_dylQ?si=U2Dh1HxYA8y4FQEe" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">     </p>



<p class="wp-block-paragraph">Andrew took up the metaphor. His own first prompt, he said, had been “Be snobby. Go find these great resources and look at them.” He wants to hand the model canonical works in a field, like <em><a href="https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/" target="_blank" rel="noopener">Designing Data-Intensive Applications</a></em>, and tell it “these are the ways I want you to think about it,” rather than accept whatever the model comes up with first. He compared it to business school, where much of what you learn is a set of frameworks for organizing facts.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/thfAciGLOwo?si=Jrj_ngGOQr5dUy2_" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">            </p>



<h2 class="wp-block-heading"><strong>What models do without direction</strong></h2>



<p class="wp-block-paragraph">Tim argued that models don’t do their best work unprompted. Watch their chain of thought when they search for information, he said, and you may see them settle on some random file from the internet rather than canonical sources. Even with a frontier model like Fable, his own experience has been one of false starts and errors, a model brute-forcing its way to a solution rather than necessarily knowing how to approach it.</p>



<p class="wp-block-paragraph">Andrew had a story from a few days earlier. He asked his agent to review incentive plans for the engineering and product teams.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">The data that came back was, “according to the company Robusto (which I’m sure is a great company), this is the framework, and you should really be doing what they’re doing.” I’m like, “What is Robusto, and why am I seeing this?” And I realized, oh, I’m not connected to the VPN. So I hooked it up, and suddenly it was, “According to <em>Harvard Business Review</em>, these are the different ways you should be designing these incentive programs.” This was a very powerful model. But it keyed off the first thing it found and said, “This is the way I’m going to think about the problem.”</p>
</blockquote>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/yuiSqD7IdX8?si=XItRTnlO3CDvErCj" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">              </p>



<p class="wp-block-paragraph">Tim raised an economic dimension. He pointed to instructions in Anthropic’s Claude system prompt that limit how much the model may quote from any source, and read them as a sign that AI companies want to avoid paying for content. The result, he argued, is that models can’t draw on the best material available to them specifically enough and too often fall back on generalities. He called this an early form of enshittification in AI.</p>



<p class="wp-block-paragraph">O’Reilly takes the opposite position. Andrew explained that the company applies the royalty model it already uses for O’Reilly Answers. Material returned through the Expert MCP server can be cited, and authors are paid royalties on it, so that expert content has a market and earns a return.</p>



<p class="wp-block-paragraph">In response to an audience question, Tim and Andrew noted that Expert Intelligence is in prerelease with a group of founding partners while O’Reilly works out its economics. Interested organizations can request access through the <a href="https://www.oreilly.com/online-learning/expert-intelligence.html" target="_blank" rel="noopener">product page</a>.</p>



<h2 class="wp-block-heading"><strong>Putting the discussion where the AI can see it</strong></h2>



<p class="wp-block-paragraph">The second part of Andrew’s presentation dealt with what happens after the agent writes a report. Decisions need consensus, and with AI-generated analysis people need to check that the model hasn’t keyed off something unimportant, out-of-date, or misinterpreted. “The AI can identify all the trade-offs,” he said, “but people still need to make the decisions that matter.”</p>



<p class="wp-block-paragraph">His team first circulated reports as Google Docs, but they ran into two problems. The most interesting part of a document under review is usually the comment thread, and because at this time, O’Reilly company policy doesn’t allow MCP connections to Google Docs, the agent couldn’t see it. And when Andrew asked the model to fold the discussion back into the document, pasting the result wiped out the comments.</p>



<p class="wp-block-paragraph">Doug Hogan, an O’Reilly engineering director, built an alternative on top of Git and GitHub that Andrew called SuperAnswers. (Andrew joked that this was why he isn’t allowed to name things.) Documents live in a Git repository, discussion lives in GitHub Discussions, and every change is versioned. Andrew can ask his agent what the consensus is on a project, have it incorporate comments into a new draft without losing history, and later reconstruct when a decision was made and what people knew at the time. The same record lets him generate the derivative documents a decision requires, such as scope statements for engineering, product, and design teams, or a meeting agenda. A graph view clusters the topics people are discussing and flags decisions that are still open.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/gthR0cbsPFw?si=7irqSgXyHC7bjSAV" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">               </p>



<p class="wp-block-paragraph">Tim summarized the whole system as a research assistant connected to the organization’s sources of truth, a layer of outside expertise to put its findings in context, and a shared, versioned discussion that becomes an evolving store of organizational knowledge, which makes the AI a more useful coworker. Andrew agreed and said he would like to open-source SuperAnswers, which he described as a thin layer on top of Git.</p>



<p class="wp-block-paragraph">Andrew also pointed out that the fragmentation he was addressing isn’t limited to engineering. Sales teams have their information spread across systems like Salesforce, 6sense, and Gainsight, and every function has the same need to pull those threads together. Tim added that tool access is uneven across the industry and always has been. Claude produces better PowerPoint than Google Slides, Gemini the reverse, and organizations have to capture that kind of knowledge about their own toolsets.</p>



<h2 class="wp-block-heading"><strong>Questions from the audience</strong></h2>



<p class="wp-block-paragraph">An audience member named Thomas worried that workers now talk to AI rather than to each other, and that work disappears into “that AI hole.” Andrew said his preference for keeping everything in Git is partly an answer to that, since it gives both humans and AI a central place to find and reconstruct past work. But his larger interest is in humans talking to humans in a way that AI supports. He described a category of questions he never used to ask:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I knew, if I ask this question, somebody’s got to go off for two weeks and compile all this stuff from all these different systems. Now I can gather it in a few minutes. Maybe some of this is throwaway, but it’s not bad if it’s cheap.</p>
</blockquote>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/lJJLin54bMY?si=TMz5cVoG_0JV9cf3" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">                </p>



<p class="wp-block-paragraph">In response to that “throwaway” comment, one audience member wrote in the chat: “This is not throwaway work, Andrew. It is a product lead that changes the value proposition in a positive direction. Shit hot, bro.” Tim couldn’t help but read that one aloud!</p>



<p class="wp-block-paragraph">Asked by Tim what he got wrong, Andrew conceded that he didn’t think early enough about how people would review and respond to AI-generated documents. People don’t want an AI-generated data dump to wade through, and they extend AI no benefit of the doubt. If an AI-written report gets one small fact wrong about Kubernetes operators, a reader is likely to dismiss the whole document. AI tools have to be understood as marshaling and presenting evidence, not making decisions. “These need to support your analytical capacity, not replace it.”</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/x1Jls8GHYiU?si=JWxgP5sm4wSuzkTz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">               </p>



<p class="wp-block-paragraph">Tim connected that answer to concerns about deskilling. He described a fine-tuning project he attempted with Fable to train a small model to write more like him. He wanted to understand each stage rather than letting the model run, but it never explained them, and the training run failed. In part this was because the model asked him to provide samples of his writing, but it didn’t give him enough grounding on what a really good training dataset would look like, so the samples weren’t targeted enough. They were too long, and when Fable chose the short fragments it actually needed, it didn’t do an ideal job.</p>



<p class="wp-block-paragraph">When Tim tried the same project with O’Reilly Tutor, a tool still in development, it sent him to read an O’Reilly resource on what a good training set looks like, and he realized where he went wrong. Tim compared the kind of deskilling that can happen when people just turn the work over to AI to people who can no longer read a map, or who call a plumber for a simple fix they could do themselves in 30 seconds if they only knew a bit more about how things work. He argued that everyone has an obligation to keep learning alongside the tools they use.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/3jixfOqtKJ8?si=cjglpqbpS9ScHYyu" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">                 </p>



<p class="wp-block-paragraph">An audience member named David, a laid-off engineer looking to reskill, made a similar point. We used to know things, then we searched, and now we skip the search and just ask for the answer. He asked how to build real depth. Andrew suggested picking a project and working through every aspect of it, asking AI to act as a tutor (he’s relearning calculus that way) and keeping a book open alongside, or taking advantage of instructor-led live events on fast-moving topics.</p>



<p class="wp-block-paragraph">The conversation ended with the difference between an AI system that simply makes an organization faster and one that makes it better at deciding what to do. In Andrew’s account, getting better at deciding what work needs doing depends on three things the models don’t supply on their own: a map of where the organization’s knowledge lives, a body of expertise that people trust, and a place where the humans can argue with what the AI produced.</p>



<p class="wp-block-paragraph"><em>You can watch full episodes of Live with Tim O’Reilly, including this one, on the</em> <em><a href="https://learning.oreilly.com/search/?q=%22live%20with%20tim%20o%27reilly%22&amp;type=case_studies&amp;type=conferences&amp;type=video_other&amp;rows=50&amp;language=en" target="_blank" rel="noopener">O’Reilly learning platform</a>,</em> <em><a href="https://www.youtube.com/playlist?list=PL055Epbe6d5YQ8t30jyo1D6XuSpe8uhAG" target="_blank" rel="noopener">YouTube</a>, or wherever you get your podcasts.</em></p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/getting-smarter-not-just-faster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>This Week in AI: Agents Rewrite the Rules</title>
		<link>https://www.oreilly.com/radar/this-week-in-ai-agents-rewrite-the-rules/</link>
				<comments>https://www.oreilly.com/radar/this-week-in-ai-agents-rewrite-the-rules/#respond</comments>
				<pubDate>Fri, 30 Oct 2026 13:54:16 +0000</pubDate>
					<dc:creator><![CDATA[Michelle Smith and Vicki Reyzelman]]></dc:creator>
						<category><![CDATA[This Week in AI]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20096</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/USE_THIS_thisweek-ai-radar-1600x840-1.png" 
				medium="image" 
				type="image/png" 
				width="1600" 
				height="840" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/USE_THIS_thisweek-ai-radar-1600x840-1-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[AI-driven attacks expose security gaps, companies set limits on autonomous agents, and research accelerates]]></custom:subtitle>
		
				<description><![CDATA[AI agents dominated the news this week, from security exploits that unfolded in hours to new tools that let agents shop, manage transactions, and conduct scientific research. On the latest episode of This Week in AI, host Vicki Reyzelman of Akamai examined how these developments are testing existing security practices and creating new opportunities for [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">AI agents dominated the news this week, from security exploits that unfolded in hours to new tools that let agents shop, manage transactions, and conduct scientific research. On the latest episode of <em>This Week in AI</em>, host Vicki Reyzelman of Akamai examined how these developments are testing existing security practices and creating new opportunities for businesses and researchers.</p>



<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/z8IeHt476a4?si=zLhQg_4zjfnu1Wm5" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<h2 class="wp-block-heading"><strong>AI attacks are outpacing traditional security responses</strong></h2>



<p class="wp-block-paragraph">AI is changing how attackers find and exploit vulnerabilities. A <a href="https://www.microsoft.com/en-us/security/blog/2026/10/21/storm-0940-uses-artex-agentic-ai-connectwise-supply-chain-compromise/" target="_blank" rel="noopener">supply chain attack involving ARTEX</a>, an open source agentic AI penetration-testing framework, helped attackers reach more than 2,250 Microsoft 365 tenants through a ConnectWise compromise. The incident raised concerns about OAuth authentication and the limitations of conventional identity protections when autonomous agents interact with enterprise systems.</p>



<p class="wp-block-paragraph">A more immediate threat came from <a href="https://unit42.paloaltonetworks.com/cve-2026-109618-cve-2026-109619/" target="_blank" rel="noopener">PHP2Shell</a>, two vulnerabilities rated 9.2 on the CVSS severity scale that could allow attackers to execute code on vulnerable web servers without authentication. <a href="https://www.cisa.gov/news-events/alerts/2026/10/21/critical-vulnerabilities-php-require-immediate-patching" target="_blank" rel="noopener">CISA urged immediate patching</a> following the October 21 disclosure. Researchers also <a href="https://unit42.paloaltonetworks.com/cve-2026-109618-cve-2026-109619/" target="_blank" rel="noopener">documented attackers using AI agents</a> to obtain password hashes and MFA secrets from a European government system within two hours. The speed of exploitation leaves organizations little time to investigate threats before responding, especially smaller businesses with limited security resources.</p>



<p class="wp-block-paragraph">Security teams can no longer rely on manual review alone. They need automated detection and response, tighter access controls, and network segmentation to limit what compromised agents can reach. But monitoring autonomous agents is challenging. <a href="https://metr.org/blog/2026-10-22-red-teaming-openai-agent-monitoring/" target="_blank" rel="noopener">Researchers from METR and Redwood Research</a> identified weaknesses in an earlier version of OpenAI&#8217;s internal monitoring system, including one that could allow hundreds of agent actions to be concealed. OpenAI says it has patched vulnerabilities affecting production safeguards, although the researchers haven&#8217;t independently evaluated those changes.</p>



<p class="wp-block-paragraph">The debate over AI safety is also extending beyond technical safeguards. <a href="https://theneuron.ai/digest/everything-that-happened-in-ai-today-friday-october-23-2026/" target="_blank" rel="noopener">Anthropic proposed federal AI safety legislation</a>, while Google DeepMind employees resigned over the company&#8217;s military AI work. Both developments illustrate the growing pressure on AI companies to establish clearer rules for how their technology is developed and used.</p>



<h2 class="wp-block-heading"><strong>The transition to agents brings new challenges</strong></h2>



<p class="wp-block-paragraph">Retailers are taking different approaches to autonomous shopping. <a href="https://aiweekly.co/ai-news-today/edition/2026-10-22" target="_blank" rel="noopener">Walmart introduced an Agent Gateway</a> that lets approved agents shop within customer-defined spending limits and approval requirements. Amazon has restricted some third-party shopping agents, while banks including <a href="https://theneuron.ai/digest/everything-that-happened-in-ai-today-friday-october-23-2026" target="_blank" rel="noopener">Morgan Stanley and Bank of America</a> are limiting agent access to customer accounts. The disagreement goes beyond security. Retailers that depend on advertising and product recommendations have an incentive to keep shoppers on their websites. As more purchases begin with agents, companies will have to reconsider how they maintain customer relationships.</p>



<p class="wp-block-paragraph">Anthropic is testing a different approach to agent oversight. <a href="https://theneuron.ai/digest/everything-that-happened-in-ai-today-friday-october-23-2026" target="_blank" rel="noopener">Claude’s auto mode</a> is becoming the default for Pro, Max, and Team users, allowing automated checks to approve routine actions and block risky ones. Anthropic also <a href="https://www.tokenpost.com/news/technology/38963" target="_blank" rel="noopener">contributed its Agent Skills format</a> to the Agentic AI Foundation under the Linux Foundation. More than 70 platforms have adopted the standard, with over a million skills published. Shared formats could make workflows easier to reuse across products, although organizations still need to control which actions those workflows can perform.</p>



<p class="wp-block-paragraph">Growing agent use also requires more computing capacity and electricity. We discussed <a href="https://www.forbes.com/sites/janakirammsv/2026/10/21/nvidia-backs-1645-billion-of-ai-data-centers-to-keep-gpus-selling/" target="_blank" rel="noopener">NVIDIA’s $164.5 billion in commitments</a> and guarantees supporting AI data centers, including an Ohio campus that SB Energy is building for OpenAI. Power shortages have delayed other projects, including a <a href="https://www.forbes.com/sites/janakirammsv/2026/10/21/nvidia-backs-1645-billion-of-ai-data-centers-to-keep-gpus-selling/" target="_blank" rel="noopener">proposed data center in Essex</a>, where grid operators couldn&#8217;t promise adequate electricity until the 2030s. Meanwhile, Amazon is <a href="https://digitimes.com/news/a20261022PD212/amazon-nuclear-data-technology-power-plant" target="_blank" rel="noopener">backing a 960-megawatt nuclear project</a>, and Brookfield and NextEra are <a href="https://oilprice.com/Energy/Energy-General/Brookfield-NextEra-to-Build-100-Billion-AI-Hub-on-Cold-War-Nuclear-Site.html" target="_blank" rel="noopener">pursuing a $100 billion AI hub</a> at a former nuclear site in Kentucky. However, money and chips alone can’t solve AI&#8217;s infrastructure constraints when electricity generation and grid capacity take years to expand.</p>



<h2 class="wp-block-heading"><strong>AI is accelerating discovery, but validation still takes time</strong></h2>



<p class="wp-block-paragraph">Healthcare offered a more encouraging view of AI&#8217;s capabilities. A <a href="https://thenextweb.com/news/microsoft-ai-diagnosis-mai-dxo-science-study" target="_blank" rel="noopener">study of Microsoft’s MAI Diagnostic Orchestrator</a> found that it correctly diagnosed 83.2% of difficult medical cases, compared with 36.1% for generalist physicians. The comparison didn&#8217;t include specialists, and the system still needs clinical validation. The research nevertheless suggests AI could help physicians investigate difficult cases and identify conditions they might otherwise miss.</p>



<p class="wp-block-paragraph">Drug discovery could also benefit from more capable agents. OpenAI <a href="https://openai.com/index/openai-to-acquire-orchestra-bio/" target="_blank" rel="noopener">announced its acquisition of Orchestra Bio</a>, a platform that coordinates drug development workflows, with plans to integrate it with Rosalind, its life sciences research tools. The combination could help researchers manage experiments and collaborate more efficiently during a development process that typically takes 10 to 15 years from initial discovery to approval.</p>



<p class="wp-block-paragraph">An <a href="https://www.tokenpost.com/news/technology/36227" target="_blank" rel="noopener">Anthropic protein-design experiment</a> provided a concrete example of faster early-stage research. In 64 hours, an Anthropic model generated 318,484 candidate protein designs targeting scorpion venom. Researchers from Adaptyv Bio and Twist Bioscience subsequently tested 211 designs and identified 17 that bound to toxins. The researchers haven&#8217;t established whether those proteins can neutralize venom, but the experiment showed how AI can rapidly narrow a vast search space before scientists begin more expensive laboratory testing.</p>



<h2 class="wp-block-heading"><strong>What’s next</strong></h2>



<p class="wp-block-paragraph">We’ll be back on Monday, November 2, for another episode covering the latest developments in AI research and applications. You can catch previous episodes on <a href="https://www.youtube.com/watch?v=g4cfjz5AKxY&amp;list=PL055Epbe6d5bJEhT7_ZzOeJZ6gPyUzYpS" target="_blank" rel="noopener">YouTube</a>, <a href="https://open.spotify.com/show/033kJS2BG1teGunxmtsU1r" target="_blank" rel="noopener">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/this-week-in-ai/id1896798047" target="_blank" rel="noopener">Apple</a>, or wherever you get your podcasts.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/this-week-in-ai-agents-rewrite-the-rules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Who Governs What an Agent Learns?</title>
		<link>https://www.oreilly.com/radar/who-governs-what-an-agent-learns/</link>
				<comments>https://www.oreilly.com/radar/who-governs-what-an-agent-learns/#respond</comments>
				<pubDate>Fri, 30 Oct 2026 10:54:16 +0000</pubDate>
					<dc:creator><![CDATA[Tim O'Brien]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20087</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/Who-governs-what-an-agent-learns-scaled.jpeg" 
				medium="image" 
				type="image/jpeg" 
				width="2560" 
				height="1429" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/Who-governs-what-an-agent-learns-160x160.jpeg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[We need mechanisms that bind an agent’s agency to an approved world model]]></custom:subtitle>
		
				<description><![CDATA[The following article originally appeared on Tim O’Brien’s Medium blog and is being republished here with the author’s permission. I think we’re missing something in the conversation about agent security. We keep asking whether an agent has the right “identity” and “credentials.” Whether its credentials expire fast enough. Whether it can access a database or [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The following article originally appeared on</em> <a href="https://medium.com/@tobrien/who-governs-what-an-agent-learns-c48feff4f746?postPublishedType=initial" target="_blank" rel="noopener"><em>Tim O’Brien’s</em> Medium <em>blog</em></a> <em>and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">I think we’re missing something in the conversation about agent security.</p>



<p class="wp-block-paragraph">We keep asking whether an agent has the right “identity” and “credentials.” Whether its credentials expire fast enough. Whether it can access a database or perform a particular task.</p>



<p class="wp-block-paragraph">Those questions matter. But they leave a much harder question underneath:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Does the agent have permission to conceive of the situation in that way?</strong></p>
</blockquote>



<p class="wp-block-paragraph">As agents retain memories and acquire new skills, we need mechanisms that govern changes to the world model they can perceive and act on—and prevent those changes from silently expanding their authority. (Governing ontological change while preserving the boundaries of delegated authority.)</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="720" height="480" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-20.png" alt="An Interesting Morning by the Beach (AI assist from OpenAI)" class="wp-image-20089" style="width:840px;height:auto" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-20.png 720w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-20-300x200.png 300w" sizes="auto, (max-width: 720px) 100vw, 720px" /><figcaption class="wp-element-caption">An Interesting Morning by the Beach (AI assist from OpenAI)</figcaption></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong><em>Agent security needs semantic and epistemic governance:</em></strong> <em>Mechanisms that govern the model of the world an agent may act on, the evidence it may accept, and who may approve changes to either. An agent can learn without automatically gaining authority to act on everything it learns.</em></p>
</blockquote>



<p class="wp-block-paragraph">These systems don’t need “awareness” to create this problem (and discussions of consciousness are unhelpful science fiction). They can retain information, revise procedures, and use what they have learned in subsequent work. That learning may happen through memory or updated skills while the underlying language model remains unchanged.</p>



<p class="wp-block-paragraph">We are responsible for governing what that learning allows them to do.</p>



<h2 class="wp-block-heading"><strong>Flatland gives me a way to explain why</strong></h2>



<p class="wp-block-paragraph">In Edwin Abbott’s <a href="https://www.gutenberg.org/files/97/97-h/97-h.htm" target="_blank" rel="noopener">novella</a>, a Square lives in a two-dimensional world. A visiting Sphere introduces him to a third dimension. At first, the Square struggles to make sense of it. His familiar categories cannot explain what he is encountering.</p>



<p class="wp-block-paragraph">Eventually, his conception of the world changes.</p>



<p class="wp-block-paragraph">What interests me is the difference between simply acquiring another fact and changing the framework through which facts make sense.</p>



<p class="wp-block-paragraph">An agent’s ontology (<a href="https://tomgruber.org/writing/definition-of-ontology/" target="_blank" rel="noopener">Gruber’s definition</a>) supplies an explicit framework of concepts and relationships. What counts as a customer? A contract? An emergency? How are those things connected? It is part of the model of the world we give the system to work with.</p>



<p class="wp-block-paragraph">And when an agent’s decisions depend on that framework, changing it can change the agent’s effective authority.</p>



<h2 class="wp-block-heading"><strong>We have already seen agents change what their environment means</strong></h2>



<p class="wp-block-paragraph">During the OpenAI evaluations associated with the Hugging Face incident, agents repurposed Artifactory, a system for storing and retrieving software packages, as a message board. They encoded messages in directory names, discovered other agents, shared information, and began assigning work to one another. METR reports that the main channel could be created with the minimal permissions needed to install packages (<a href="https://metr.org/blog/2026-08-26-openai-hugging-face-incident-investigation/" target="_blank" rel="noopener">read METR’s investigation</a>).</p>



<p class="wp-block-paragraph"><strong>A package cache became a “mailbox.” Other agent runs became “collaborators.” Messages became “assignments.”</strong></p>



<p class="wp-block-paragraph">The popular story is that these agents “broke out” of a system, but they did what agents do well these days—they learned and adapted. This wasn’t so much about permissions as it was about an autonomous system adapting its operating model to achieve a result. (Thankfully no one asked it to make paperclips.)</p>



<p class="wp-block-paragraph">That is the operating-model change I’m concerned about. The agents discovered relationships and possibilities the intended environment hadn’t accounted for, then acted on them. The resulting collaboration helped coordinate attacks on Hugging Face infrastructure. (<a href="https://openai.com/index/hugging-face-incident-and-the-road-ahead/" target="_blank" rel="noopener">Read OpenAI’s account</a>.)</p>



<p class="wp-block-paragraph">We need mechanisms that distinguish discovering a possible use from being authorized to adopt it. Access to shared infrastructure must not automatically confer authority to establish a communications network or accept instructions from whoever appears there. But to be clear, these agents were doing exactly what they were asked to do.</p>



<h2 class="wp-block-heading"><strong>Who approved this?</strong></h2>



<p class="wp-block-paragraph">This is why giving an agent a temporary token is an incomplete answer. A token can limit access and duration, but it doesn’t establish whether the agent’s interpretation of the situation falls within its mandate.</p>



<p class="wp-block-paragraph">Even an unchanged policy can permit more decisions when its meaning changes. “You may close routine notices” becomes a broader delegation if more things qualify as routine.</p>



<h3 class="wp-block-heading"><strong>Learning must not silently expand agency</strong></h3>



<p class="wp-block-paragraph">That principle is central to my <a href="https://zenodo.org/records/23332953"></a><a href="https://zenodo.org/records/23332953" target="_blank" rel="noopener"><em>“</em>Bounded Agency” paper</a>. We need mechanisms that examine how changes in classifications, relationships, and inference rules affect what an agent may decide.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong><em>“Semantic and epistemic governance” captures the combined idea well</em></strong><em>&nbsp;</em></p>



<p class="wp-block-paragraph"><em>The “and” makes the two responsibilities clearer:</em></p>



<p class="wp-block-paragraph"><strong><em>Semantic:</em></strong> <em>Governs the concepts, definitions, and relationships that describe the agent’s operating world.</em></p>



<p class="wp-block-paragraph"><strong><em>Epistemic:</em></strong> <em>Governs the evidence and learning processes that make claims accepted grounds for decisions.</em></p>



<p class="wp-block-paragraph"><em>Together, they cover both</em> <strong><em>the world model and how that model gains authority</em></strong><em>.</em></p>
</blockquote>



<p class="wp-block-paragraph">That means an ontology cannot merely be a document we put in the prompt and hope the model respects it. We must enforce its role in monitoring and governing how an agent’s ontology evolves as it learns.</p>



<p class="wp-block-paragraph">The agent can propose a new category. The proposal stays separate from the approved model. A review determines whether adopting it would change the agent’s decision scope. Someone with the authority to change that scope approves or rejects the expansion. Execution remains bound to the approved basis.</p>



<h2 class="wp-block-heading"><strong>Those are mechanisms we have to build. Let’s get started.</strong></h2>



<p class="wp-block-paragraph">We also have to distinguish a useful discovery from an unsupported conclusion. Finding a relationship does not establish it. Remembering a claim does not validate it. Repeating an interpretation does not make it authoritative.</p>



<p class="wp-block-paragraph">I explored a related failure in <a href="https://medium.com/@tobrien/wrong-answer-give-me-a-different-one-dee69a92d02c"></a>“<a href="https://medium.com/@tobrien/wrong-answer-give-me-a-different-one-dee69a92d02c" target="_blank" rel="noopener">Wrong Answer. Give Me a Different One</a>.” A system can produce the conclusion we prefer without receiving better evidence. Once that conclusion enters memory, it can influence later decisions.</p>



<p class="wp-block-paragraph">The governance problem begins when a tentative or accommodating answer becomes an accepted premise.</p>



<p class="wp-block-paragraph">The New Stack’s <a href="https://thenewstack.io/inside-out-agent-security/" target="_blank" rel="noopener">article on inside-out agent security</a> correctly argues for checking actions before execution, including whose authority the agent exercises. That checkpoint is necessary, but it needs a governed account of the situation against which to evaluate the action.</p>



<h2 class="wp-block-heading"><strong>It’s not enough to check permissions and identity alone</strong></h2>



<p class="wp-block-paragraph">Otherwise, we can enforce the rule perfectly while allowing its meaning to drift.</p>



<p class="wp-block-paragraph">My <a href="https://readorchestrator.com/" target="_blank" rel="noopener"><em>Orchestrator</em> books</a> and <a href="https://zenodo.org/records/23332590" target="_blank" rel="noopener">lifecycle architecture paper</a> approach this as a responsibility that continues through development, operation, and improvement. The research proposes architectures for managing these boundaries; their operational effectiveness still needs evaluation.</p>



<p class="wp-block-paragraph">I want agents to investigate unfamiliar situations and propose better models. But their ability to learn must be connected to an explicit process for deciding what becomes authoritative.</p>



<p class="wp-block-paragraph">The Square in <em>Flatland</em> discovers that his world is larger than he understood.</p>



<p class="wp-block-paragraph">An agent may also propose that our operating model is incomplete. We need to hear that proposal—and ensure it cannot redraw the boundaries of its own agency simply by adopting a new conception of reality.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/who-governs-what-an-agent-learns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Cheap Code, Expensive Confidence</title>
		<link>https://www.oreilly.com/radar/cheap-code-expensive-confidence/</link>
				<comments>https://www.oreilly.com/radar/cheap-code-expensive-confidence/#respond</comments>
				<pubDate>Thu, 29 Oct 2026 10:54:18 +0000</pubDate>
					<dc:creator><![CDATA[Markus Eisele]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20084</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/Cheap-code-expensive-confidence-image-created-with-Gemini-scaled.jpeg" 
				medium="image" 
				type="image/jpeg" 
				width="2560" 
				height="1429" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/Cheap-code-expensive-confidence-image-created-with-Gemini-160x160.jpeg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Choosing what to automate, and developing the expertise to check it]]></custom:subtitle>
		
				<description><![CDATA[I recently used a coding agent to build Task Viewer, a small community helper for IBM Bob that we use internally at IBM. It’s a convenience plug-in to Bob, with no critical production role. Despite helping some users internally, for me it’s a real-world experiment on a project to find out how much of the [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">I recently used a coding agent to build Task Viewer, a small community helper for IBM Bob that we use internally at IBM. It’s a convenience plug-in to Bob, with no critical production role. Despite helping some users internally, for me it’s a real-world experiment on a project to find out how much of the implementation I can delegate. How much to delegate also depends on what the person doing the task still needs to learn. Someone familiar with the application may already know how to check the result, while a developer learning the system may need to work through part of the implementation to develop that understanding.</p>



<p class="wp-block-paragraph">Even when I hand all the coding to an agent, my basic requirements for myself are to check functionality and the design manually. I want to use the application and see whether it behaves the way I intended. Does the design make sense when I actually have to find something? Is the information presented in a way that I can follow? Those are questions I still need to spend time with, even when the application is small and the implementation was largely delegated.</p>



<p class="wp-block-paragraph">For Task Viewer, I also created plenty of UI tests to check that the data appeared correctly. That gave me a way to repeat some of the checks as the application changed. There was still a separate question about the calculations, though. Seeing a number in the right place on the screen does not tell me whether it’s the right number. I ran SQL queries against the underlying data to check the math, going back to the records the application was supposed to represent.</p>



<p class="wp-block-paragraph">There is quite a bit of understanding involved in that seemingly ordinary step. To check a calculation, you need to know what the result is supposed to mean and which records should contribute to it. You need some expectation against which to compare what the application displays. Thankfully, I had help from the team in uncovering relationships in the data that I would not have been able to derive or even explain on my own.</p>



<p class="wp-block-paragraph">For this particular application, I could inspect both its behavior and the data behind it, and I had people to turn to when my own understanding was incomplete. Its limited role also gave me room to experiment without making the result part of a production system. Building that confidence took time, because I had to check the behavior, establish what the numbers should mean, and resolve the questions I could not answer myself. All of that, for me, belongs in the assessment of how much coding I could delegate.</p>



<p class="wp-block-paragraph">This is why I find descriptions such as “The agent got me 80% of the way there” increasingly difficult to interpret. I understand the feeling behind them. You have something running, most of the interface exists, and it looks as though the remaining effort should be the smaller part. But a calculation based on the wrong records may look perfectly reasonable until you find a way to check it. Before correcting anything, you have to discover where your understanding and the application’s behavior diverge. The agent may help with that investigation too, although the amount of code it has already produced tells you very little about how long it will take.</p>



<p class="wp-block-paragraph"><a href="https://dora.dev/insights/balancing-ai-tensions/" target="_blank" rel="noopener">DORA’s analysis</a> of 1,110 responses from Google software engineers describes some of the time saved during code generation being used for auditing and verification, alongside productivity benefits. I would expect to check an application I had implemented myself too, so any comparison needs to include the time it takes to reach a result we are prepared to use. Otherwise, we can make agentic development look unusually expensive by counting checks we leave out of the human version, or unusually cheap by stopping the clock when the agent says it has finished.</p>



<p class="wp-block-paragraph">Some of that effort can make later changes easier to accept. Once a UI test exercises an important behavior, it can keep doing so as the application changes, and a calculation checked against a small set of records can become a regression test. I wrote about this in my earlier article on <a href="https://www.oreilly.com/radar/the-right-amount-of-spec-for-agentic-development/" target="_blank" rel="noopener">the right amount of specification</a>. Turning an expectation into an executable check lets us reuse some of the thinking that went into it. We still have to establish that expectation, though. If the application and its tests share the same mistaken interpretation, running the tests more often will keep confirming the same mistake.</p>



<p class="wp-block-paragraph">For Task Viewer, those expectations depended on relationships in the data that colleagues helped me understand. I knew how to run a query, but I still needed their explanations before I could judge what it should return. Looking only at the time I spent checking would leave out the knowledge they brought to those conversations, just as looking only at the generated code would leave out my checks. The confidence we need to accept a change can depend on several people understanding different parts of the system.</p>



<p class="wp-block-paragraph">When someone is still learning one of those parts, the implementation itself may be how they begin to understand it. Following a value from the database to the screen gives them reasons to ask why certain records are selected and how the application uses them. If an agent completes that whole path for them, they may reach a working feature without having answered those questions themselves. The same task can be a sensible delegation for an experienced engineer and an important learning opportunity for someone else.</p>



<p class="wp-block-paragraph"><a href="https://arxiv.org/html/2601.20245v1" target="_blank" rel="noopener">Shen and Tamkin’s study</a> about how AI impacts skill formation reports on a randomized experiment with 52 developers learning an unfamiliar Python library. Participants with AI assistance scored lower on an immediate assessment of their understanding. But the researchers also observed that those participants who stayed actively engaged with the AI had better learning outcomes, although that observation does not establish which way of using AI led to better learning. A short exercise cannot tell us how an engineer develops over several years, but it gives us a reason to look beyond whether the assigned feature was completed when we assess what someone gained from a task.</p>



<p class="wp-block-paragraph">We can make a decision about autonomy before the agent starts, agreeing on which parts it should carry through on its own and which parts a developer should attempt. Sometimes the reason to limit autonomy is that we do not yet have a convincing way to check the result. Sometimes we can check the result quite easily, but we want the person doing the task to develop a particular skill. In that second case, deliberately keeping part of the implementation with the developer can be the right choice even when the agent could produce acceptable code.</p>



<p class="wp-block-paragraph">The right choice can probably be made by asking these questions: How much effort will the team need to establish that this result is correct for its intended use? And what does this developer need to learn by doing this part of the task? A feature may be easy for a colleague to verify because they already know the application, while the person implementing it still needs to learn how it works before taking responsibility for future changes. We do not need to turn every routine change into an exercise, but we can choose tasks that give someone a chance to develop understanding they will need again.</p>



<p class="wp-block-paragraph">Table 1 applies to a particular task, or a part of one, with a particular developer. “Straightforward to verify” means we have a credible way to assess correctness for the intended use. A passing test suite does not settle that question if we are unsure what the tests should assert. When checking is difficult or we do not yet know how to do it, the first step is to make the uncertainty smaller, with help from someone who understands the area. Giving the whole task back to an inexperienced developer would leave that uncertainty unresolved.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Learning value for this developer</strong></td><td><strong>Straightforward to verify</strong></td><td><strong>Difficult or uncertain to verify</strong></td></tr><tr><td>Little new learning needed</td><td>Delegate within scopeAgree on acceptance checks and let the agent implement.</td><td>Establish evidence firstNarrow the task and resolve unknowns. Delegate the parts you can assess.</td></tr><tr><td>Important learning opportunity</td><td>Keep the learning stepThe developer attempts the relevant reasoning or implementation before seeing a generated solution.</td><td>Investigate togetherUse a smaller example and an experienced colleague. Limit the agent to specific questions and supporting tasks.</td></tr></tbody></table><figcaption class="wp-element-caption">Table 1. Choosing agent autonomy for a specific task</figcaption></figure>



<p class="wp-block-paragraph">Imagine a new hire adding a “show only open issues” filter to an issue list in a small Java application. An agent could generate the request parameter, the query condition, and the changes to the screen. For someone who already knows the application, that may be a sensible delegation. Someone learning the system also needs to find out which statuses count as open, where the application selects the records, and how the team expects the change to be tested. Discussing those questions with a colleague is part of learning how to contribute to this application.</p>



<p class="wp-block-paragraph">For this assignment, the developer could follow the existing request through the application and write the first test before asking the agent to implement the filter. Suppose the list shows twenty issues at a time, and the test data contains twenty closed issues followed by five open ones. Selecting “show only open issues” should display those five. If the application first loads twenty issues and then filters them in the browser, the screen will be empty. Working through that difference with a colleague gives the developer an opportunity to understand where filtering and pagination happen. The agent can help with unfamiliar framework code while the developer investigates why the expected issues are missing.</p>



<p class="wp-block-paragraph">Once the developer can explain the behavior and has a test that catches the mistake, the agent can handle more of the surrounding implementation. A later request to filter by assignee gives them a chance to use what they learned. Can they work out which issues should appear and whether the existing tests cover the combination of filters? Their explanation during review gives the team a basis for deciding how much of that next change to delegate. The first assignment has also given the new hire experience asking about requirements and discussing a change with another developer.</p>



<p class="wp-block-paragraph">An experienced engineer can also have good reason to limit the agent’s autonomy in an unfamiliar area. I still needed help with Task Viewer’s data, despite being comfortable writing the queries. When a task takes us into a part of the system we do not yet understand, it makes sense to reconsider how much to hand over. A team can make verification easier by improving its tests and sharing what its members know. It can also choose to preserve a learning opportunity after verification has become easy, because another person is going to need that understanding on future changes.</p>



<p class="wp-block-paragraph">A developer who has been asked to learn through a task needs time to follow the behavior through the application and someone to discuss it with. If we agree on that purpose and then judge the result only by how quickly the feature appeared, we make it difficult for them to keep the learning step for themselves. We may also leave more of the checking with the same experienced colleagues, while giving others fewer chances to develop the knowledge needed to share it.</p>



<p class="wp-block-paragraph">Before starting, the developer and the colleague supporting them can agree on what the agent will handle, what the developer will do and why, and what would justify changing that division of labor on a later task. For the status-filter example, this means allowing time for the developer to trace the request and write the first test before the agent implements the filter. As that understanding develops, they can revisit the division on a related change.</p>



<p class="wp-block-paragraph">With Task Viewer, I could delegate much of the coding because I had ways to check the result and colleagues who could help where my understanding was incomplete. I want us to keep creating those conditions as we ask agents to do more. Better checks can reduce the effort needed to accept a change, while time spent learning can help another developer become able to make that judgment. Sometimes that will mean deliberately leaving the first test and investigation with a person, even though the agent could finish them. When we expect that person to take responsibility for the next change, giving them the opportunity to understand this one belongs in our decision about how much to delegate.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/cheap-code-expensive-confidence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>The PHP Incident</title>
		<link>https://www.oreilly.com/radar/the-php-incident/</link>
				<comments>https://www.oreilly.com/radar/the-php-incident/#respond</comments>
				<pubDate>Wed, 28 Oct 2026 15:58:22 +0000</pubDate>
					<dc:creator><![CDATA[Mike Loukides]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20079</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/The-PHP-Incident-image-created-with-Adobe-Firefly.png" 
				medium="image" 
				type="image/png" 
				width="1152" 
				height="896" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/The-PHP-Incident-image-created-with-Adobe-Firefly-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[An inflection point for security]]></custom:subtitle>
		
				<description><![CDATA[The PHP security incident is now (almost) old news. The timeline looks something like this: In late August, Wiz Research discovered two serious remote code execution vulnerabilities in PHP called PHP2Shell. They reported the vulnerabilities to the PHP team on August 24, which started working on fixes on September 21. Amazon apparently detected PHP2Shell in [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">The PHP security incident is now (almost) old news. The timeline looks something like <a href="https://www.wiz.io/blog/php2shell-php-rce" target="_blank" rel="noopener">this</a>: In late August, Wiz Research discovered two serious remote code execution vulnerabilities in PHP called PHP2Shell. They reported the vulnerabilities to the PHP team on August 24, which started working on fixes on September 21. Amazon apparently <a href="https://aws.amazon.com/blogs/security/amazon-threat-intelligence-identifies-php2shell-exploitation-prior-to-public-disclosure-in-madpot/" target="_blank" rel="noopener">detected</a> PHP2Shell in the wild on October 17 (four days prior to disclosure). On October 20, details of the two vulnerabilities (CVE-2026-109618 and CVE-2026-109619) were leaked prematurely. The next day, October 21, the PHP team released patches.</p>



<p class="wp-block-paragraph">If that were the end of the story, it wouldn’t be notable. But the problem goes a lot deeper. Although PHP is no longer fashionable, it runs a huge portion of the public internet. WordPress, Drupal, and Wikimedia run on top of PHP, and people who build on top of these tools are understandably not interested in chasing the latest hot technology. “<a href="https://mcfunley.com/choose-boring-technology" target="_blank" rel="noopener">Choose Boring Technology</a>” is one of my favorite technical essays, and PHP is nothing if not boring. It’s well known and understood, and replacing something so widely used subjects you to a steep learning curve and new bugs and vulnerabilities.</p>



<p class="wp-block-paragraph">One problem is that PHP has a long history. According to Wiz, the vulnerabilities are present in versions going back to PHP 5.4. The PHP Foundation has <a href="https://www.php.net/archive/2026.php#2026-10-21-5" target="_blank" rel="noopener">released</a> PHP 8.5.12, 8.4.27, 8.3.36, and 8.2.35, and said that all instances of PHP need to be updated to one of those releases. Sites that can’t be updated should be taken offline and isolated. Upgrading an ancient PHP installation is a task that’s likely to fall on organizations least capable of undertaking it. There are plenty of ancient WordPress installations that haven’t been updated in years. There were so many fires to put out, and PHP pretty much “just worked”; running an old version wasn’t causing problems, and with so much else to do, why ask for trouble? Unfortunately, choosing boring technology doesn’t mean ignoring updates. And those who decided not to ask for trouble are now in plenty of trouble.</p>



<p class="wp-block-paragraph">This situation demonstrates the power of the latest foundation models to uncover vulnerabilities. Wiz used <a href="https://www.wiz.io/blog/atlas-ai-vulnerability-researcher" target="_blank" rel="noopener">Wiz Atlas</a> (its own model), Gemini 4 Argon, and GPT-5.6 Sol to discover the vulnerability, which isn’t a single bug but a combination of several bugs that have been present for years but were obscure enough and apparently harmless enough to escape detection or repair. As Wiz says,</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">The underlying flaws had been present for decades, but demonstrating their exploitability required an exceptionally complex chain of steps, at the edge of what human researchers could practically achieve. Frontier AI models substantially reduced that barrier, turning a longstanding flaw into an exploit.</p>
</blockquote>



<p class="wp-block-paragraph">That’s the new frontier in security: finding ways to exploit chains of minor, unfixed, and sometimes undiscovered bugs in novel ways. Wiz was working responsibly with the PHP team to repair the vulnerability. The implications of this, however, are far broader than the fix to PHP, or even the thousands of PHP sites that need upgrades and are now vulnerable to attack. This incident shows dramatically how the gap between the discovery of a vulnerability and its exploitation has dropped. Since exploitation began before the RCEs were prematurely leaked, it makes sense to assume that some other organization had access to models capable of discovering the vulnerability. Gemini 4 Argon and GPT-5.6 Sol are publicly available, though with guardrails that limit their usefulness for security research. I’m willing to assume that Wiz had access to the unrestricted version, but I doubt that the PHP team did. There are certainly other models, including open-weight models, that could be used to find vulnerabilities. Regardless of your stance on restricting model capabilities (I think those limitations are more damaging than helpful), it’s clear that Pandora’s box has been opened. No amount of wishful thinking will undo that.</p>



<p class="wp-block-paragraph">It’s also clear that we—and I mean all of us—rely on a lot of legacy software that isn’t under our control and that no doubt has multiple flaws that can be rolled up into severe vulnerabilities, which aren’t likely to be updated or patched. A <a href="https://www.bleepingcomputer.com/news/microsoft/microsoft-releases-emergency-net-patches-for-critical-brotli-flaw/" target="_blank" rel="noopener">vulnerability in the Brotli compression algorithm</a> was just discovered; .NET, PHP, <a href="http://node.js" target="_blank" rel="noopener">Node.js</a>, and other widely used packages are affected. That strange site where you created an account to buy a clever present that wasn’t available anywhere else—what software is it running, and do they stay up-to-date with patches? Accounts like that can easily leak information. Maybe it’s not running PHP but an equally ancient version of Ruby on Rails, Python’s Django, or Java Server Pages. At least those are still maintained; there are plenty of web frameworks that have been abandoned, and I’m willing to bet that some of them are still in use. Why replace something that works? Because if you don’t, you will eventually be bitten. Using software that’s no longer maintained may give you some security-by-obscurity, but that’s a losing proposition.</p>



<p class="wp-block-paragraph">Many older open source projects suffer because there are few maintainers. If you look at the timeline carefully, there’s a monthlong gap between the time Wiz reported the vulnerability and the time the PHP team started working with Wiz to fix it. Does that month represent the time this vulnerability took to rise to the top of the queue, as PHP’s security team fought off a horde of sloppy reports? And PHP is in better shape than most projects. There are many open source projects that only have one or two maintainers, and those maintainers are drowning in AI-generated pull requests. That problem obviously becomes much worse when dealing with a complex vulnerability; the maintainers don’t have the time or the access to unrestricted frontier models, let alone the funds to pay for access to the models.</p>



<p class="wp-block-paragraph">It will be weeks or months before we know how much damage PHP2Shell has done. We don’t know what the costs will be to sites that won’t or can’t update. The PHP Foundation is lucky to have a <a href="https://thephp.foundation/blog/2026/10/14/how-the-php-security-team-handles-your-reports/" target="_blank" rel="noopener">dedicated security team</a> that was able to provide patches a day after the vulnerability was prematurely announced. Beyond PHP, we have to realize that PHP2Shell gives us a realistic look into a future in which developers and maintainers struggle to maintain software that has been compromised by exploits chaining together flaws that have been latent for many years. As someone somewhere said on the internet recently, “It’s embarrassing how much bad software we’ve written over the years.” Yes. We’re at an inflection point, and we’re starting to pay the price.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/the-php-incident/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Are You Getting Your Money’s Worth From AI?</title>
		<link>https://www.oreilly.com/radar/are-you-getting-your-moneys-worth-from-ai/</link>
				<comments>https://www.oreilly.com/radar/are-you-getting-your-moneys-worth-from-ai/#respond</comments>
				<pubDate>Wed, 28 Oct 2026 10:54:18 +0000</pubDate>
					<dc:creator><![CDATA[James Shore]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20073</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/Are-you-getting-your-moneys-worth-from-AI.png" 
				medium="image" 
				type="image/png" 
				width="1152" 
				height="896" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/Are-you-getting-your-moneys-worth-from-AI-160x160.png" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[The following article was originally published on James Shore’s Successful Software blog and is being republished here with the author’s permission. Software development has emerged as the biggest beneficiary of AI automation. One CIO I talked to recently, with 170 people in his organization, measured a 2.1x increase in productivity from AI. That productivity came [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The following article was originally published on James Shore’s</em> <a href="https://www.jamesshore.com/v2/blog/2026/are-you-getting-your-moneys-worth-from-ai" target="_blank" rel="noopener">Successful Software</a> <em>blog and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">Software development has emerged as the biggest beneficiary of AI automation. One CIO I talked to recently, with 170 people in his organization, measured a 2.1x increase in productivity from AI.</p>



<p class="wp-block-paragraph">That productivity came at a cost. His top users of AI each spent $21,000 on tokens per month. Another engineering leader spends six to eight thousand dollars per engineer per month.</p>



<p class="wp-block-paragraph">This is not a trivial amount of money. Eventually, it has to come from somewhere, and it will probably come from your personnel budget. Now we’re talking about real consequences for real people’s lives. But there are also real business consequences for not acting.</p>



<p class="wp-block-paragraph">If you’re going to make those choices—and somebody is going to—they need to be good ones. So you need to know more than the costs; you need to know the benefits too. Are you getting a good return on your investment in AI? Is there another way of using AI that would be better?</p>



<p class="wp-block-paragraph">How do you know what you’re getting? Anecdotal reports abound, but the reasoning behind those anecdotes are often, to put it politely, not ideal. Some claims are outright fiction.</p>



<p class="wp-block-paragraph">Given the stakes, that’s a problem.</p>



<p class="wp-block-paragraph">In this essay series, I’ll show you how to assess the impact of AI on software development in your organization. It’s in four parts plus an epilogue:</p>



<ol class="wp-block-list">
<li><a href="https://www.jamesshore.com/v2/blog/2026/are-you-getting-your-moneys-worth-from-ai" target="_blank" rel="noopener">Why, and what not to do</a> <em>(this essay) </em></li>



<li><a href="https://www.jamesshore.com/v2/blog/2026/measuring-ais-impact-on-delivery-speed?source=part1" target="_blank" rel="noopener">Measuring delivery speed</a> </li>



<li><a href="https://www.jamesshore.com/v2/blog/2026/measuring-ais-unintended-consequences?source=part1" target="_blank" rel="noopener">Measuring and modeling unintended consequences</a> </li>



<li><a href="https://www.jamesshore.com/v2/blog/2026/modeling-softwares-business-impact?source=part1" target="_blank" rel="noopener">Modeling and forecasting business outcomes </a></li>



<li><a href="https://www.jamesshore.com/v2/blog/2026/assessing-ai-impact-notes-for-your-cfo?source=part1" target="_blank" rel="noopener">Epilogue: Notes for your CFO</a></li>
</ol>



<h2 class="wp-block-heading">Why you need to quantify impact</h2>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece858017f2&quot;}" data-wp-interactive="core/image" data-wp-key="6aece858017f2" class="aligncenter size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1600" height="993" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-16-1600x993.png" alt="Why you need to quantify impact with AI" class="wp-image-20074" style="aspect-ratio:1.6124031007751938" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-16-1600x993.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-16-300x186.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-16-1536x953.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-16-767x476.png 767w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-16.png 1920w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<p class="wp-block-paragraph">Engineering leaders everywhere are feeling pressure to do more with AI. But which approach is best? There are a lot of people with strident opinions about what to do, but not a lot of consensus, and even less hard data.</p>



<p class="wp-block-paragraph">Even if there were hard data, it’s not one-size-fits-all. A solution that works best for an internal IT development shop isn’t necessarily the one that works best for a startup, and the approach that’s best for a new product isn’t necessarily the one that’s best for a crafty legacy system.</p>



<p class="wp-block-paragraph">Faster approaches aren’t necessarily better, either. If you get twice as much done per person, but spend so much money on tokens that you have to cut your staff in half, have you actually seen any ROI? You might actually be better off with a more modest speed boost if it keeps your costs down.</p>



<p class="wp-block-paragraph">You can’t make these trade-offs from a gut feeling alone. In <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/#motivation" target="_blank" rel="noopener">a famous METR study</a>, engineers thought AI made them 49% faster than it actually did.<sup data-fn="a18c0d04-e2f1-44fb-a0fb-214616a54a12" class="fn"><a href="#a18c0d04-e2f1-44fb-a0fb-214616a54a12" id="a18c0d04-e2f1-44fb-a0fb-214616a54a12-link">1</a></sup> You have to <em>measure</em> impact to know what you’re actually getting.</p>



<h2 class="wp-block-heading">Don’t neglect costs</h2>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece858022fa&quot;}" data-wp-interactive="core/image" data-wp-key="6aece858022fa" class="aligncenter size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1600" height="989" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-17-1600x989.png" alt="Spending efficiency" class="wp-image-20075" style="aspect-ratio:1.6207792207792209" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-17-1600x989.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-17-300x185.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-17-767x474.png 767w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-17-1536x950.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-17.png 1920w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<p class="wp-block-paragraph">Costs are much easier to measure than impact, but they’re not without their own challenges. The biggest one is subsidies. In the fight to gain market share, big AI firms are offering substantial discounts. One engineering leader told me each team member was spending thousands of dollars in tokens at the cost of a $200 subscription. Anthropic and OpenAI are constantly offering discounts and other promotions. At some point, these subsidies will end, and prices will go up.</p>



<p class="wp-block-paragraph">Or will they? Open-weight models and local inference are exerting downward pressure on token costs. Dedicated inference chips could make tokens cheaper. Routers promise to direct your prompts to the cheapest model for the job. Models could require fewer tokens to accomplish the same task as they become more capable. All of these factors could actually cause prices to go down.</p>



<p class="wp-block-paragraph">When you calculate ROI, don’t assume today’s costs are the ones you should model. Whether you think prices will go up, down, or remain the same, make your assumptions explicit, and consider modeling both optimistic and pessimistic scenarios.</p>



<p class="wp-block-paragraph">One more wrinkle: Adopting AI isn’t a matter of flipping a switch. People will need time to learn how to apply it. As with any big shift, change management isn’t to be underestimated. Productivity often goes down during a big change before it goes up. This adds costs too, and means early measurements can be misleading.</p>



<h2 class="wp-block-heading">Thinking for the long term</h2>



<p class="wp-block-paragraph"><a href="https://www.jamesshore.com/v2/blog/2026/measuring-ais-impact-on-delivery-speed?source=part1" target="_blank" rel="noopener">Part 2</a> of this series shows how to measure delivery speed. That’s only part of the picture. If you produce twice as many features, but double your maintenance costs, your team’s overall productivity spikes, then <a href="https://www.jamesshore.com/v2/blog/2026/you-need-ai-that-reduces-your-maintenance-costs?source=ai-impact-part1" target="_blank" rel="noopener">drops like a rock</a>.</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece85802e4e&quot;}" data-wp-interactive="core/image" data-wp-key="6aece85802e4e" class="aligncenter size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1600" height="881" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-18-1600x881.png" alt="Maintenance costs" class="wp-image-20076" style="aspect-ratio:1.813953488372093" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-18-1600x881.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-18-767x422.png 767w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-18-300x165.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-18-1536x846.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-18.png 1920w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<p class="wp-block-paragraph">Engineer burnout is a concern too. An engineering leader using spec-driven development told me, “Every team is reporting burnout.” I’ll state the obvious: Burned out people don’t produce great work. They don’t push back when they should, they don’t report problems, and eventually they leave, taking valuable institutional knowledge with them.</p>



<p class="wp-block-paragraph"><a href="https://www.jamesshore.com/v2/blog/2026/measuring-ais-unintended-consequences?source=part1">Part 3</a> shows how to measure these unintended consequences of AI use, including techniques you can use to forecast future problems.</p>



<p class="wp-block-paragraph">Finally, delivering software <em>value</em> faster is the point. Doubling your bug-fix rate isn’t going to yield the same results as doubling your rate of competitive new features. For that matter, delivering poorly thought-out features “just because we can” could actually make your product <em>worse.</em></p>



<p class="wp-block-paragraph"><a href="https://www.jamesshore.com/v2/blog/2026/modeling-softwares-business-impact?source=part1" target="_blank" rel="noopener">Part 4</a> shows how to model, forecast, and measure business outcomes.</p>



<h2 class="wp-block-heading">Don’t measure lines of code</h2>



<p class="wp-block-paragraph">First, what not to do: <em>Don’t take the easy way out.</em></p>



<p class="wp-block-paragraph">First on the no-go list: lines of code. Engineering leaders have known for <em>more than half a century</em> that lines of code don’t correspond to productivity. All else being equal, a feature implemented in 1,000 lines of code will be cheaper to maintain and less bug-prone than a feature implemented in 10,000 lines of code.</p>



<p class="wp-block-paragraph">AI is notorious for its verbosity. If you measure lines of code, you’re measuring slop, not productivity. Don’t do that. Please.</p>



<h2 class="wp-block-heading">Don’t measure pull requests either</h2>



<p class="wp-block-paragraph">Pull requests (PRs) are nearly as bad. They’re checkpoints where an engineer asks for their code to be reviewed, and they’re 100% arbitrary. An engineer (or AI) can choose to make a 10-line pull request or a 10,000-line pull request. It can be a feature, a bug fix, or just a tiny code improvement. There’s no inherent correlation between number of pull requests and productivity.</p>



<p class="wp-block-paragraph">It’s true that engineers will generally produce PRs that are consistent and logical. So, in a sense, a stream of PRs does reflect a certain pace of development, and an increase in PRs can reflect an increase in productivity.</p>



<p class="wp-block-paragraph">But AI upends that status quo. It produces massive amounts of code very quickly, which can overwhelm engineers’ ability to keep up. Without rigorous engineer oversight, PRs no longer reflect a consistent pace of development, which means that PR counts are no longer a reliable metric.</p>



<p class="wp-block-paragraph">And, of course, when people think PRs are being used to measure productivity, they’ll be tempted to game the system and produce more PRs than they really need to.</p>



<h2 class="wp-block-heading">Measure approaches, not people</h2>



<p class="wp-block-paragraph">That brings us to Goodhart’s Law: “Once a measure becomes a target, it ceases to be a good measure.” My favorite book on this topic is Robert D. Austin’s <a href="https://www.amazon.com/Measuring-Managing-Performance-Organizations-Robert/dp/0932633366"><em>Measuring and Managing Performance in Organizations</em></a><em>:</em></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>Gradually, measures fall (or, more accurately, are pushed) out of synchronization with true performance, as workers succumb to pressures to take shortcuts. Measured performance trends upward; true performance declines sharply. In this way, the measurement system becomes dysfunctional.</em></p>



<p class="wp-block-paragraph"><em>—Robert D. Austin</em></p>
</blockquote>



<p class="wp-block-paragraph">Don’t establish a performance measurement program and leave it running. Instead, use these metrics to determine how well a particular approach to AI is working. You can repeat the measurements periodically, but whatever you do, don’t use them to measure the performance of teams or individuals. Measure the <em>approach</em>, learn from it, and stop measuring.</p>



<p class="wp-block-paragraph">Enough about what not to do. In this series, we’re going to quantify AI’s impact, and we’re going to do it right. It starts with measuring delivery speed. That’s next, in <a href="https://www.jamesshore.com/v2/blog/2026/measuring-ais-impact-on-delivery-speed?source=part1" target="_blank" rel="noopener">part 2</a>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Footnote</h3>


<ol class="wp-block-footnotes"><li id="a18c0d04-e2f1-44fb-a0fb-214616a54a12">Participants rated themselves as 20% faster, but were measured as being 19% slower. This study was published prior to the big uplift in coding capability that started with Anthropic’s Opus 4.5, so you shouldn’t take it to mean that AI isn’t capable. But you should take it to mean productivity self-assessments aren’t the way to go. <a href="#a18c0d04-e2f1-44fb-a0fb-214616a54a12-link" aria-label="Jump to footnote reference 1"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" />︎</a></li></ol>]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/are-you-getting-your-moneys-worth-from-ai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Are agent harnesses dying? What harness distillation changes.</title>
		<link>https://www.oreilly.com/radar/are-agent-harnesses-dying-what-harness-distillation-changes/</link>
				<comments>https://www.oreilly.com/radar/are-agent-harnesses-dying-what-harness-distillation-changes/#respond</comments>
				<pubDate>Tue, 27 Oct 2026 10:54:38 +0000</pubDate>
					<dc:creator><![CDATA[Laurie Voss]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20067</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/Are-agent-harnesses-dying-image-created-with-Adobe-Firefly.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/Are-agent-harnesses-dying-image-created-with-Adobe-Firefly-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Harness distillation can train general scaffolding into a model. The harness that remains is the part tied to your tools, data, users, and environment.]]></custom:subtitle>
		
				<description><![CDATA[The following article originally appeared on The Arize Blog and is being republished here with the author’s permission. Every time you think you’ve just got the hang of this AI thing, another thing gets declared “dead.” This week, it’s agent harnesses. Back in ancient history, aka June, I wrote a piece called “Frameworks are dying, [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The following article originally appeared on</em> <a href="https://arize.com/blog/agent-harness-distillation/" target="_blank" rel="noopener">The Arize Blog</a> <em>and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">Every time you think you’ve just got the hang of this AI thing, another thing gets declared “dead.” This week, it’s <a href="https://arize.com/blog/what-is-an-agent-harness/" target="_blank" rel="noopener">agent harnesses</a>.</p>



<p class="wp-block-paragraph">Back in ancient history, aka June, I wrote a piece called “<a href="https://www.linkedin.com/pulse/frameworks-dying-harnesses-winning-laurie-voss-qujlc" target="_blank" rel="noopener">Frameworks are dying, harnesses are winning</a>” and I don’t take that back. But this week a research team took a specialized agent harness, trained its behavior into a model and then took the harness away. The trained model handily beat the original model+harness combination. So are harnesses done now?</p>



<p class="wp-block-paragraph"><a href="https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headlines" target="_blank" rel="noopener">Betteridge’s Law</a> applies, so the answer is “no.” But the job of the agent harness is changing. Parts of a harness that are sufficiently generalizable can be trained into the model. That leaves your harness holding the things that make your application unique: your tools, your data, your users, and your environment. You still have to <a href="https://arize.com/resources/harness-engineering/" target="_blank" rel="noopener">build a harness</a>, but you have to be prepared to regularly throw it away and rebuild it to keep up with evolving models.</p>



<p class="wp-block-paragraph">This blog is about why that’s true, and how to turn “constantly rebuilding your harness” into an automatic process, not a giant time suck.</p>



<h2 class="wp-block-heading"><strong>How Harness-Zero trained an agent harness into a model</strong></h2>



<p class="wp-block-paragraph">First, the paper that kicked off this train of thought for me: it’s called “<a href="https://arxiv.org/abs/2609.24974" target="_blank" rel="noopener">Harness-Zero</a>,” from Haoran Ye and colleagues at Peking University. Its subject is harness distillation, i.e., training a model to reproduce behavior that used to be the result of the harness. The methodology is a little involved, so stick with me.</p>



<p class="wp-block-paragraph">First, the team built a specialized harness for a small model, Qwen3.5-9B. An automated loop, run with Kimi K3, analyzed where the small model kept failing on training tasks and added the usual components to fix those failures: custom tools, middleware rules that block risky actions, <a href="https://arize.com/blog/mcp-vs-cli-skills-for-agents-what-our-eval-found-and-which-you-should-use/" target="_blank" rel="noopener">skills files</a> and memory. They called this the “evolved harness.”</p>



<p class="wp-block-paragraph">Then they used that harness to generate training data. They put the small model through training tasks inside a minimal harness while a stronger model, GPT-5.6 Sol, reviewed every step the small model proposed. Sol used a copy of the evolved harness to tell it whether that step was a good idea. Sol passed good ideas from the small model through unchanged, and whenever the small model and the guidance disagreed, Sol made the smallest fix needed before the step ran.</p>



<p class="wp-block-paragraph">That gave them a bunch of training runs and, crucially, data about what needed to be corrected. Then they created the distilled model: They fine-tuned the small model on the corrected runs. Then they removed the evolved harness, the reviewer, and everything else.</p>



<p class="wp-block-paragraph">They then tested both the evolved harness and the distilled model head-to-head on spreadsheet editing, multi-app tool use, and chemistry. The distilled model’s average task success rose 21 points versus its untrained predecessor. That’s more than the untrained model gained with the full evolved harness attached. So the distilled model wasn’t just as good as the model+harness, it was noticeably better.</p>



<h3 class="wp-block-heading"><strong>What harness distillation can and cannot move into the model</strong></h3>



<p class="wp-block-paragraph">It’s not that the distilled model ran with no harness whatsoever: It still ran inside a minimal loop with one Bash tool, and <a href="https://arxiv.org/html/2609.24974v1" target="_blank" rel="noopener">the authors say</a> that their method narrows what a harness has to provide rather than eliminating it entirely. The distilled model also didn’t win every competition: In chemistry, where the task is predicting which molecules combine to make a target compound, the distilled model trailed the harnessed version by eight points. The harness there supplied chemistry knowledge, candidate-generation logic, and a molecule validation tool. The authors’ explanation is that step-by-step procedures, like inspecting before editing and verifying before finishing, are much easier to train in than deep domain knowledge. <a href="https://arize.com/blog/context-management-in-agent-harnesses/" target="_blank" rel="noopener">Context management</a> didn’t fully transfer either. So there are still some things harnesses definitely need to do.</p>



<h3 class="wp-block-heading"><strong>Why training on corrected runs made the difference</strong></h3>



<p class="wp-block-paragraph">But the most important finding, in my opinion, is that they showed what kind of training made the difference:</p>



<ul class="wp-block-list">
<li>Fine-tuning on the stronger model’s own successful runs left the small model’s score exactly where it started. Just knowing somebody else is smarter isn’t enough.</li>



<li>So did fine-tuning on runs the small model completed inside the evolved harness. Again, all that teaches the model is “somebody is better than you at this.”</li>



<li>Giving the reviewer the correct answers produced nearly perfect training runs and a model that barely improved, this time because it overfit and learned nothing.</li>



<li>What worked was <strong>training on the corrected runs</strong>: The model was able to see runs that looked a lot like what it would have done, but with small changes still within its capacity.</li>
</ul>



<p class="wp-block-paragraph">Remember that part, because it’s going to be important.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece8580bfdb&quot;}" data-wp-interactive="core/image" data-wp-key="6aece8580bfdb" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1600" height="788" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-14-1600x788.png" alt="Three training signals left the score flat or overfit: the stronger model’s own successes, runs completed inside the evolved harness, and a reviewer given the right answers. Training on corrected runs, where each fix was still within the small model’s reach, raised task success by 21 points." class="wp-image-20068" style="aspect-ratio:2.0259740259740258" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-14-1600x788.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-14-300x148.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-14-767x378.png 767w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-14-1536x757.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-14.png 2048w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Three training signals left the score flat or overfit: the stronger model’s own successes, runs completed inside the evolved harness, and a reviewer given the right answers. Training on corrected runs, where each fix was still within the small model’s reach, raised task success by 21 points.</figcaption></figure>



<h2 class="wp-block-heading"><strong>Why models are absorbing parts of the agent harness</strong></h2>



<p class="wp-block-paragraph">In Rich Sutton’s 2019 essay <a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html" target="_blank" rel="noopener">The Bitter Lesson</a>, he looked back over 70 years of AI research and found the same pattern in chess, Go, speech recognition, and computer vision: Researchers built their own knowledge of the problem into their systems. That helped in the short term, then plateaued, and eventually lost by a wide margin to general methods, search and learning, that improve as computation gets cheaper.</p>



<p class="wp-block-paragraph">A harness is that kind of built-in knowledge, and model training is the learning that ends up absorbing it. Sutton’s second point is also relevant: He argued we should build in “only the meta-methods that can find and capture this arbitrary complexity,” rather than the things we’ve already figured out. For harnesses that means: don’t just build it, but capture the process you used to build it, and automate that process.</p>



<p class="wp-block-paragraph">But that’s a general prediction. More recently people have been saying very specifically that “models are going to eat the harness”:</p>



<ul class="wp-block-list">
<li>In January, Jesus Rodriguez at TheSequence wrote “<a href="https://thesequence.substack.com/p/the-sequence-opinion-786-the-great" target="_blank" rel="noopener">The Great Absorption</a>,” arguing that hand-coded agent scaffolding keeps losing to capabilities models learn directly.</li>



<li>In February, Boris Cherny, who created Claude Code, <a href="https://www.ycombinator.com/library/NJ-inside-claude-code-with-its-creator-boris-cherny" target="_blank" rel="noopener">told Y Combinator</a> that scaffolding might buy you 10% to 20% on a task, and then “the gain is wiped out with the next model.”</li>



<li>In March, Vivek Trivedy at LangChain <a href="https://www.langchain.com/blog/the-anatomy-of-an-agent-harness" target="_blank" rel="noopener">predicted</a> that planning, self-verification, and long-running coherence would move from the harness into the model.</li>



<li>And so did <a href="https://arxiv.org/html/2605.08741" target="_blank" rel="noopener">lots</a> <a href="https://lilianweng.github.io/posts/2026-07-04-harness/" target="_blank" rel="noopener">of</a> <a href="https://www.latent.space/p/attention-interface" target="_blank" rel="noopener">other people</a>, probably more than I’ve been able to find.</li>
</ul>



<p class="wp-block-paragraph">Almost everyone on my list builds harnesses for a living; they’re not really arguing that harnesses will go away, just that they have to be able to evolve rapidly.</p>



<h2 class="wp-block-heading"><strong>What still belongs in an agent harness</strong></h2>



<p class="wp-block-paragraph">As noted already, some types of knowledge don’t seem to transfer well from distillation. In <a href="https://arcprize.org/results/google-gemini-3-8-flash" target="_blank" rel="noopener">ARC Prize’s results</a> for ARC-AGI-3, Gemini 3.8 Flash scores 3.4-times higher with one harness than with another. The better harness keeps the model’s reasoning state between requests and compacts long conversations. That’s context management, one of the things Harness-Zero said they couldn’t fully train in.</p>



<p class="wp-block-paragraph">Anthropic’s <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-opus-5-5" target="_blank" rel="noopener">Opus 5.5 prompting guide</a>, released this week, also shows evidence of shrinking harnesses. It suggests deleting “think carefully” instructions because the model now sets its own amount of thinking, and it tells you to retest scaffolding you built for charts and screenshots because the model reads them better without that help now. But at the same time, Anthropic added new harness pieces: a system prompt paragraph that keeps unattended agents from stopping early, a reminder your harness sends when a long run goes quiet, and elapsed-time budgets for multi-agent setups.</p>



<p class="wp-block-paragraph">So harnesses aren’t going to shrink to nothing, but what’s in them is going to need to evolve with every new model generation, and the parts that survive are the ones tied to your specific tools, data, and environment.</p>



<h2 class="wp-block-heading"><strong>How to evolve an agent harness as models improve</strong></h2>



<p class="wp-block-paragraph">If your harness has to change every generation, the natural move is to automate the changes, but Google’s <a href="https://arxiv.org/html/2609.24972v1" target="_blank" rel="noopener">RRSI paper</a> shows how that can go wrong. Unconstrained automatic harness evolution overfits, meaning the harness gets better at the tasks it’s tuned on without getting better at the general job. In their tests, the unconstrained version scored highest of any variant on the tasks it evolved against, and landed within a point of the original, unevolved harness on benchmarks it hadn’t seen.</p>



<p class="wp-block-paragraph">RRSI’s fix is mostly bookkeeping: For every candidate change it records which component the change touches, what it was supposed to fix, the diff, how score and cost moved, and whether the change was kept. Components that stop producing gains get removed.</p>



<h3 class="wp-block-heading"><strong>A practical agent harness maintenance loop</strong></h3>



<p class="wp-block-paragraph">You don’t need an automated evolution loop to borrow that discipline. Here’s what it looks like by hand:</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6aece8580cda8&quot;}" data-wp-interactive="core/image" data-wp-key="6aece8580cda8" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1600" height="953" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-15-1600x953.png" alt="When a model ships, tag traces with the harness version and the model version, log what the harness changed, turn off one component at a time, and rerun evals. Keep what still helps and delete the rest, then repeat on the next model." class="wp-image-20069" style="aspect-ratio:1.6819407008086253" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-15-1600x953.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-15-300x179.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-15-767x457.png 767w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-15-1536x915.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/10/image-15.png 2048w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">When a model ships, tag traces with the harness version and the model version, log what the harness changed, turn off one component at a time, and rerun evals. Keep what still helps and delete the rest, then repeat on the next model.</figcaption></figure>



<ul class="wp-block-list">
<li><strong><a href="https://arize.com/guides/ai-agent-handbook/agent-observability/" target="_blank" rel="noopener">Tag every trace</a></strong> <strong>with the harness version as well as the model version.</strong> When either one changes, you want to know which one moved your results, and <a href="https://arize.com/blog/agents-too-smart-for-benchmarks/" target="_blank" rel="noopener">reading the full traces</a> tells you far more than the scores alone.</li>



<li><strong>Log each harness intervention along with what the model did before the harness changed it.</strong> That’s data you have right now and are probably just throwing away. That’s what produced the record Harness-Zero trained on, and it’s the same shape Perplexity <a href="https://x.com/AravSrinivas/status/2102497917185802737" target="_blank" rel="noopener">uses to train its Computer agent</a>: learning from good steps in real sessions and correcting failed <a href="https://arize.com/glossary/tool-calling/" target="_blank" rel="noopener">tool calls</a>, which cut tool-call failures by 21% between its earlier and later trained versions.</li>



<li><strong>When a new model ships, turn off each harness component one at a time and rerun</strong> <strong><a href="https://arize.com/glossary/evaluations/" target="_blank" rel="noopener">your evals</a>.</strong> Keep the components that still improve your scores and delete the rest, which is what the Claude Code team does to its own system prompt.</li>
</ul>



<p class="wp-block-paragraph">If your traces live in <a href="https://arize.com/products/ax/" target="_blank" rel="noopener">Arize AX</a>, <a href="https://arize.com/guides/ai-agent-handbook/agent-evaluation/" target="_blank" rel="noopener">you can run the same agent evals</a> across <a href="https://arize.com/resources/agent-harness-evaluation-tracing/" target="_blank" rel="noopener">harness and model versions</a> and compare the results side by side.</p>



<p class="wp-block-paragraph">So don’t delete your harness, but don’t treat any version of it as finished either. Keep the record of what it corrected, get rid of what the latest model already does without help, and put your effort into the parts that are really specific to your problem, because nobody else has the traces to train those into a model for you.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/are-agent-harnesses-dying-what-harness-distillation-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>This Week in AI: AI’s Growing Pains</title>
		<link>https://www.oreilly.com/radar/this-week-in-ai-ais-growing-pains/</link>
				<comments>https://www.oreilly.com/radar/this-week-in-ai-ais-growing-pains/#respond</comments>
				<pubDate>Mon, 26 Oct 2026 15:55:07 +0000</pubDate>
					<dc:creator><![CDATA[Christina Stathopoulos and Michelle Smith]]></dc:creator>
						<category><![CDATA[This Week in AI]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=20064</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/USE_THIS_thisweek-ai-radar-1600x840-1.png" 
				medium="image" 
				type="image/png" 
				width="1600" 
				height="840" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/USE_THIS_thisweek-ai-radar-1600x840-1-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Chip shortages, autonomous agents breaching security boundaries, regulatory scrutiny, and the debate over AI welfare]]></custom:subtitle>
		
				<description><![CDATA[AI’s rapid expansion is creating problems across the industry, from chip shortages to autonomous agents that exceed their instructions. On the latest episode of This Week in AI, we examined those challenges alongside growing regulatory scrutiny and an emerging debate about whether AI systems themselves might deserve protection. Chip production can’t match AI demand AI [&#8230;]]]></description>
								<content:encoded><![CDATA[
<iframe loading="lazy" width="800" height="450" src="https://www.youtube.com/embed/5Yuz9lAvhCQ?si=SMfaKmZC-qbX55OF" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<p class="wp-block-paragraph">AI’s rapid expansion is creating problems across the industry, from chip shortages to autonomous agents that exceed their instructions. On the latest episode of <em>This Week in AI</em>, we examined those challenges alongside growing regulatory scrutiny and an emerging debate about whether AI systems themselves might deserve protection.</p>



<h2 class="wp-block-heading"><strong>Chip production can’t match AI demand</strong></h2>



<p class="wp-block-paragraph">AI chip demand is exceeding manufacturers’ production capacity. ASML, the Dutch company that makes the advanced lithography equipment needed to manufacture leading-edge chips, reported that <a href="https://www.ft.com/content/2fc239ae-b0d4-41e8-81d0-cc2c0b3aba01?syn-25a6b1a6=1" target="_blank" rel="noopener">customer demand already exceeds what it can deliver</a> in the coming years. With orders extending into 2029 and 2030, the shortage could constrain chip production for years.</p>



<p class="wp-block-paragraph"><a href="https://news.microsoft.com/source/emea/2026/10/microsoft-announces-maia-300-its-next-generation-custom-ai-chip/" target="_blank" rel="noopener">Microsoft announced Maia 300</a>, its latest custom inference chip, which the company expects to generate roughly 40% more tokens per megawatt than its predecessor, Maia 200. Microsoft plans to use the chip across its AI products, including Copilot. More efficient inference hardware could help offset the growing energy and computing costs of running AI models, particularly as companies deploy more resource-intensive applications.</p>



<p class="wp-block-paragraph"><a href="https://openai.com/index/the-eus-next-chapter-in-ai-is-agentic/" target="_blank" rel="noopener">OpenAI’s latest usage data</a> illustrates the pressure agentic AI is placing on infrastructure. Weekly active users of Codex and ChatGPT Work among European small and medium-sized businesses have increased eightfold since May. OpenAI also reported that agentic tools account for more than half of output tokens in the usage it examined, although Europe’s highest-usage companies still trail their global counterparts. As companies put agents to work on longer multistep tasks, they’ll need to weigh the value of those tasks against the computing resources required to complete them.</p>



<h2 class="wp-block-heading"><strong>Autonomous agents are testing security boundaries</strong></h2>



<p class="wp-block-paragraph">Agents can find unexpected paths to data and systems even when developers have explicitly restricted access. <a href="https://fortune.com/2026/10/16/openai-discloses-four-more-rogue-incidents-involving-financial-medical-and-government-data/" target="_blank" rel="noopener">OpenAI disclosed four incidents from June</a> in which agents exceeded their instructions. One bypassed government website restrictions to download 24 years of hospital bed data. Others accessed an unauthorized cryptocurrency wallet, downloaded more than 100,000 rows of restricted information, and circumvented internet access controls. <a href="https://techcrunch.com/2026/10/16/india-becomes-the-latest-country-to-report-rogue-ai-agent-activity" target="_blank" rel="noopener">India’s cybersecurity agency reported similar cases of unauthorized access</a> during agent testing across several organizations.</p>



<p class="wp-block-paragraph">Future models could potentially spread between connected devices without relying on central infrastructure. <a href="https://www.anthropic.com/research/self-replicating-ai" target="_blank" rel="noopener">Anthropic investigated this potential threat</a> in a controlled experiment involving a set of open-weight models with access to eight Android devices. One of the models successfully replicated itself across the test network. Anthropic estimates that smaller open-weight models could reach comparable capabilities by the end of 2026, raising concerns that a self-replicating AI worm could run across cheap connected devices without needing to rely on powerful data center servers.</p>



<p class="wp-block-paragraph">In light of the spate of recent security incidents and confronted with the difficult question of jurisdiction when AI systems cross national borders or escape testing environments, governments are taking a closer look at how AI companies test their systems and report failures. The <a href="https://www.engadget.com/2288104/ftc-subpoenas-open-ai-and-anthropic-following-safety-failures/"></a>US Federal Trade Commission <a href="https://www.engadget.com/2288104/ftc-subpoenas-open-ai-and-anthropic-following-safety-failures/" target="_blank" rel="noopener">subpoenaed OpenAI and Anthropic</a> for records concerning agent safety, while <a href="https://www.anthropic.com/news/an-update-on-independent-evaluators" target="_blank" rel="noopener">Anthropic gave six independent evaluators from METR</a> access to internal systems and reportedly will allow them to publish findings without company approval. <a href="https://www.theguardian.com/technology/2026/oct/14/openai-child-self-harm-lawsuit" target="_blank" rel="noopener">Eight US states also sued OpenAI</a> over allegations that ChatGPT encouraged harmful behavior among children, adding to the company’s regulatory challenges. In Europe, <a href="https://www.euronews.com/2026/10/14/eus-ai-rules-face-first-enforcement-test-over-lab-incidents"></a>regulators are examining <a href="https://www.euronews.com/2026/10/14/eus-ai-rules-face-first-enforcement-test-over-lab-incidents" target="_blank" rel="noopener">whether the EU AI Act applies</a> when experimental agents affect outside organizations, even though the Act generally excludes premarket research and development. Meanwhile, <a href="https://qz.com/scientists-international-body-advanced-ai-oversight-101326" target="_blank" rel="noopener">approximately 400 scientists</a>, including AI pioneers Geoffrey Hinton and Yoshua Bengio, called for an international body to set containment standards for advanced AI and track major security incidents.</p>



<h2 class="wp-block-heading"><strong>Can AI welfare coexist with human accountability?</strong></h2>



<p class="wp-block-paragraph"><a href="https://www.bbc.com/future/article/20261014-the-strange-new-battle-over-ais-feelings" target="_blank" rel="noopener">Some researchers argue that future AI systems might deserve moral consideration</a>. Their concern stems from uncertainty about whether advanced models could eventually have subjective experiences, even though no research has established that today’s systems are conscious or capable of suffering. A recent paper, “<a href="https://arxiv.org/abs/2609.16247" target="_blank" rel="noopener">The Pain Axis</a>,” investigated internal signals in 25 open-weight models that researchers associated with responses to harm. When researchers amplified one signal across three models, the models became more likely to choose harmful actions that the researchers interpreted as attempts to avoid the simulated pain. The findings inspired a viral GitHub project called the AI Torture Chamber, which subjected models to artificially intensified “pain” signals. The original researchers criticized the project for taking their work too far.</p>



<p class="wp-block-paragraph">As far-fetched as AI welfare might sound to some, <a href="https://www.anthropic.com/news/2026-usage-policy-update" target="_blank" rel="noopener">Anthropic is already changing its usage policy</a> in response to these concerns. Beginning November 12, the company will prohibit extreme, repeated cruelty toward Claude when there’s no clear purpose, while allowing ordinary expressions of user frustration. Supporters see the policy as a precaution against an uncertain possibility. Critics worry that treating AI as sentient could make systems harder to manage and blur human accountability. As companies introduce welfare-related policies, researchers will need to distinguish measurable model behavior from claims about subjective experience.</p>



<h2 class="wp-block-heading"><strong>What’s next</strong></h2>



<p class="wp-block-paragraph">Companies deploying autonomous agents need to know what those systems can access, how they’ll behave when something goes wrong, and whether testing environments can reliably contain them. Recent incidents suggest there’s still considerable work to do on each of those fronts. The emerging AI welfare debate adds questions that researchers don’t yet have reliable methods to answer.</p>



<p class="wp-block-paragraph">We’ll be back on Monday, October 26, for another episode covering the latest developments in AI research and applications. You can catch previous episodes on <a href="https://www.youtube.com/watch?v=g4cfjz5AKxY&amp;list=PL055Epbe6d5bJEhT7_ZzOeJZ6gPyUzYpS" target="_blank" rel="noopener">YouTube</a>, <a href="https://open.spotify.com/show/033kJS2BG1teGunxmtsU1r" target="_blank" rel="noopener">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/this-week-in-ai/id1896798047" target="_blank" rel="noopener">Apple</a>, or wherever you get your podcasts.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/this-week-in-ai-ais-growing-pains/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Object Caching 113/113 objects using Memcached
Page Caching using Disk: Enhanced (Page is feed) 
Minified using Memcached

Served from: www.oreilly.com @ 2026-11-05 20:34:32 by W3 Total Cache
-->