<?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>Mon, 03 Aug 2026 10:58:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.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>We Keep Renaming AI Coding. Here’s What I’d Call It.</title>
		<link>https://www.oreilly.com/radar/we-keep-renaming-ai-coding-heres-what-id-call-it/</link>
				<comments>https://www.oreilly.com/radar/we-keep-renaming-ai-coding-heres-what-id-call-it/#respond</comments>
				<pubDate>Mon, 03 Aug 2026 10:58:20 +0000</pubDate>
					<dc:creator><![CDATA[Andrew Stellman]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/We-keep-renaming-AI-coding.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/We-keep-renaming-AI-coding-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Vibe coding, loop engineering, agentic engineering: Are they really just all names for one discipline?]]></custom:subtitle>
		
				<description><![CDATA[Boris Cherny, who runs Claude Code, told Business Insider in May that the phrase “vibe coding” had started to annoy him, and that he&#8217;d gone looking for a better one. He&#8217;s not the only one who&#8217;s annoyed. The term itself doesn’t actually annoy me, though. I think vibe coding is a really good name: It [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">Boris Cherny, who runs Claude Code, told <em><a href="https://www.businessinsider.com/claude-code-creator-boris-cherny-vibe-coding-anthropic-ai-2026-5" target="_blank" rel="noreferrer noopener">Business Insider</a></em> in May that the phrase “vibe coding” had started to annoy him, and that he&#8217;d gone looking for a better one. He&#8217;s not the only one who&#8217;s annoyed.</p>



<p class="wp-block-paragraph">The term itself doesn’t actually annoy me, though. I think vibe coding is a really good name: It describes a specific way of using AI tools, and in development work, names that mean something specific are important. What annoys me is when people confuse vibe coding, intentionally or otherwise, with any kind of work where you write code with AI. That confusion points to a deeper problem: <em>We’ve been using a lot of different names for a lot of different things, and we aren’t always precise about which is which</em>. I think we need to fix that, and that’s what this article is about: making the case that the name we’re looking for is “AI-driven development” (or AIDD).</p>



<p class="wp-block-paragraph">The case for this name comes from the familiar “X-driven development” pattern, because I think it really fits here. Software engineering already has a pattern for naming ways of working it takes seriously: test-driven development, behavior-driven development, domain-driven design. The name tells you what the work is organized around, and the suffix carries an expectation along with it: There’s a discipline attached, with standards, not just a style. Put “AI” in that slot and the name does the same job. AI-driven development says that building software has reorganized itself around AI, and it says it in the vocabulary we already use for the disciplines we hold ourselves to. It puts this way of working in the same family as test-driven and behavior-driven development, and that’s exactly the company it should be keeping.</p>



<p class="wp-block-paragraph">Honestly, AI-driven development is a name that’s been sitting in plain sight, and I’ve been using it in my own writing for a while. It covers everything we do when we build software with AI, and I do mean everything. Vibe coding is just one part of how we work with AI to build software. There’s also figuring out what to build, writing it down, checking what comes back, and standing behind what ships, and AI is in the middle of all of that now. Whatever we call this way of working, it has to cover the development, not just the coding. Now, I’m obviously not a neutral party here, but I also don’t really have anything to gain; naming is really important, and I think we need a good name for what it is that we’re doing.</p>



<p class="wp-block-paragraph">But I’ll admit up front that the name has a problem baked into it, and I want to deal with that head on. I recently ran into <a href="https://addyosmani.com/" target="_blank" rel="noreferrer noopener">Addy Osmani</a> at Foo Camp, and ran the AI-driven development name by him. He pointed out that building software with AI is really a range of practices that runs from vibe coding at one end to agentic engineering at the other. That rang true with me right away. It also highlighted the real problem I’m trying to solve, because it means I’m proposing one name for a whole range of very different ways of working. Can one name honestly cover ways of working that different? It took me a while to work that out, and I’ll come back to it at the end.</p>



<p class="wp-block-paragraph">I feel like the name AI-driven development really makes sense once you can see what’s wrong with the names we’ve got, so I’ll start there.</p>



<h2 class="wp-block-heading"><strong>What’s wrong with the names we’ve got?</strong></h2>



<p class="wp-block-paragraph">Before I pick these names apart, it’s worth saying why any of this matters. Naming sits at the core of programming: A thing isn’t real until you can refer to it, and referring to things is most of what we do. There’s an old line, usually credited to the Netscape engineer Phil Karlton, that there are only two hard things in computer science: cache invalidation and naming things. It’s stuck around for decades because it’s true (well, maybe one or two other hard things have emerged since then, but it’s the thought that counts). We take naming a variable seriously, so we should take naming our whole discipline at least as seriously, because a poorly chosen name sticks.</p>



<p class="wp-block-paragraph">So let me take the names we’ve been using one at a time: what each one actually names, what it gets right, and what it leaves out.</p>



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



<p class="wp-block-paragraph"><a href="https://en.wikipedia.org/wiki/Vibe_coding" target="_blank" rel="noreferrer noopener">Vibe coding</a> is an exploratory, prompt-first approach to software development where developers rapidly prompt, get code, and iterate. Andrej Karpathy, one of the founders of OpenAI, coined the term, which I think is really useful because it describes the way a lot of developers first work with AI and code.</p>



<p class="wp-block-paragraph">Now, let me be clear about something: I’m in favor of vibe coding, and I teach it as a really effective—and, more importantly, creative!—way to generate a lot of code. But developers who rely entirely on vibe coding lose touch with their code because they let the AI make all of the decisions: not just specific technical decisions, but also about the architecture and the overall direction of the project. When that happens, they often end up building something that isn’t quite what they intended. When you have to create a product that needs to do a really specific thing (which describes most professional software development), relying exclusively on vibe coding can leave you with a product that doesn’t actually meet its requirements. That’s part of the reason I developed the <a href="https://www.oreilly.com/radar/the-sens-ai-framework/" target="_blank" rel="noreferrer noopener">Sens-AI Framework</a>, which teaches developers when to shift their approach away from vibe coding, step back to do more research, and apply more critical thinking to what the AI is producing.</p>



<p class="wp-block-paragraph">This is where the confusion I opened with does its damage (and I’m not sure whether it’s what bothered Cherny): When vibe coding gets used as the name for the whole job, developers will often assume that it’s absolutely fine to trust the AI to take over, and that whatever comes out of the AI is the end of the project. In other words, the name sets the bar: If the work is just vibes, then vibes are good enough, and “good enough” is how you end up with a pile of code nobody actually checked before shipping. So I consider vibe coding a useful technique, but it falls short as an entire way of working.</p>



<p class="wp-block-paragraph">Vibe coding also has a built-in limit, and I learned it the way most lessons stick, by getting burned. AI is very good at writing code that looks right and isn’t. I once vibe-coded a little bus-tracker app for the B69 near me in Park Slope (I told that story in “<a href="https://www.oreilly.com/radar/ai-code-review-only-catches-half-of-your-bugs/" target="_blank" rel="noreferrer noopener">AI Code Review Only Catches Half of Your Bugs</a>”), and it worked on the first try, except the AI had picked the wrong stop ID and I sat there watching it predict a bus going the opposite direction. The code was correct. It did the wrong thing. Vibe coding got me a working app in minutes, and it had nothing to say about whether the app was right. That part was on me.</p>



<h2 class="wp-block-heading"><strong>Prompt engineering and loop engineering</strong></h2>



<p class="wp-block-paragraph">These two names belong in the same section because one basically grew out of the other. They describe the same job, getting the right work out of the model, at two very different scales.</p>



<p class="wp-block-paragraph"><strong>Prompt engineering</strong> came first, and for a while it was a very big deal. It was seen as the core AI skill, and more than that, it even became its own job title: Companies posted prompt-engineer roles with eye-popping salaries, training courses appeared everywhere, and plenty of people reoriented their careers around it. The premise made sense because how you ask an AI for something changes what you get back. And specifically for people using AI to generate code, when you ask for code in a vague way, you don’t get vague code: you get code that does the wrong thing, because the AI fills in every blank you left, and it’s unlikely to fill them all in the way you meant. That isn’t hallucination. It’s the AI generating exactly what we asked it to. Give the model context about your project, constraints it has to respect, and a clear description of the behavior you need, and you get something you can actually use. Prompt engineering is the name for doing all of that deliberately.</p>



<p class="wp-block-paragraph">But while prompt engineering is a real skill, people are no longer enamored with the name, precisely because of the mode of work that it implies: To most people, engineering a prompt means doing one request at a time. When the AI responds to the prompt, you evaluate the response and write the next one. That one-request-at-a-time style is exactly what’s changing about the whole way we interact with AI, and it’s probably why many AI engineers have grown to dislike the term. Peter Steinberger, the PSPDFKit founder who went on to build the open source agent OpenClaw, <a href="https://x.com/steipete/status/2063697162748260627" target="_blank" rel="noreferrer noopener">posted a line</a> that traveled fast: You shouldn’t be prompting your coding agents anymore, you should be designing loops that prompt your agents. That was a shot straight at prompt engineering.</p>



<p class="wp-block-paragraph">What’s pushing developers past one-request-at-a-time prompting is the sheer number of agents they can now run. About a month after complaining about the term “vibe coding,” Cherny told <em><a href="https://fortune.com/2026/06/11/anthropic-claude-boris-cherny-doesnt-write-code-by-hand-anymore/" target="_blank" rel="noreferrer noopener">Fortune</a></em> that he doesn’t write code by hand anymore, and that on a busy day he’s directing thousands of agents, or tens of thousands, at once. You can’t type prompts fast enough to direct ten thousand agents.</p>



<p class="wp-block-paragraph"><strong>Loop engineering</strong> is the name Addy Osmani gave the new skill that Cherny and Steinberger were pointing at: He <a href="https://addyosmani.com/blog/loop-engineering/" target="_blank" rel="noreferrer noopener">wrote up the pattern</a> and gave it a real architecture. Instead of typing each instruction yourself, you build the system that produces the instructions: a loop that dispatches work to your agents, checks what comes back, and feeds them the next task over and over, without you in the middle of every exchange. The relationship between the two names is simple. Loop engineering is prompt engineering at scale; the prompts don’t go away, they just stop being typed by you. It’s tempting to oversell that because a well-built loop really does run with very little human intervention. But somebody still has to decide what “right” looks like, and the loop can’t do that part.</p>



<p class="wp-block-paragraph">I think loop engineering is a good name and an accurate one. Designing the loop that drives the agent is a real skill, and we need a word for it. But it names the machinery, and machinery has a failure mode: Put an AI agent in a loop with nothing in it that can tell it no, and it generates, checks its own work, decides the work is good, and generates more. There’s no outside signal, so it ends up agreeing with itself on repeat. A well-designed loop makes agents productive. It can’t tell you whether all that machinery turns out working software or another confident pile of slop, and I want a name that covers that part too.</p>



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



<p class="wp-block-paragraph">Cherny said that he asked Claude for a replacement for “vibe coding” and got “agentic engineering,” and while that didn’t settle the issue, it was an interesting response from Claude. The term didn’t come from Claude, though: Andrej Karpathy had coined it a few months earlier, almost exactly a year after he coined vibe coding, when he declared his own earlier term obsolete. That’s how fast these names are moving. The guy who named vibe coding has already replaced it.</p>



<p class="wp-block-paragraph">Agentic engineering is an accurate name for what it describes: you’re not writing the code yourself, you’re directing the agents that do. It’s also a bit of a mouthful, and it isn’t immediately obvious to someone who doesn’t already know what it refers to. A number of people have told me they don’t particularly like it. I find it perfectly fine, and it does a solid job of describing that kind of work. You could even argue that loop engineering is a form of agentic engineering, and that prompt engineering is technically a simpler form of it. But vibe coding really isn’t, because it’s not engineering at all. That’s one more reason I think we need an umbrella name that’s friendly, descriptive, and easily recognizable.</p>



<p class="wp-block-paragraph">The term also points at something real about where this work is heading: <em>Agentic engineering is turning engineers into managers.</em></p>



<p class="wp-block-paragraph">Many years ago I worked for a manager who didn’t care, at all, about the quality of the code we shipped. He wanted it out the door the moment it looked even remotely viable, and he was notorious for telling us to stop testing and ship. He used to ask why we had to wait two weeks for the testers to finish, and I’d tell him it takes time to test code. Then he’d ask whether we could just cut some of the tests, and I’d ask him, “Which part of the software are you okay shipping broken?”</p>



<p class="wp-block-paragraph">That attitude came back to bite us more than once. One time we sent an entire feature out to the client basically untested, and a bug went straight to users. The same manager who kept telling us to skip the testing then called a long, miserable meeting to demand to know why a bug had gotten out. I’ll spare you the full drama, which mostly came down to a QA lead getting pressured to lie about what happened and pin it back on the development team. He didn’t care about quality, but he cared enormously about making sure the blame for a quality problem landed on someone who wasn’t him.</p>



<p class="wp-block-paragraph">The reason I’m telling a story that happened years before AI could write a line of code is the <em>blame</em>. The important part of that story, and the reason it belongs in this article, is how accountability got managed: My manager’s whole system depended on having someone to pin a quality problem on. Directing agents puts you in that manager’s position, responsible for a team’s output, except the blame-shifting move is gone.</p>



<p class="wp-block-paragraph">It’s really tempting to think of a fleet of AI agents as your team. You can even give one of them the QA lead role. But when a broken feature goes out, you can’t blame the QA agent, because “well, the AI screwed up” isn’t available to you: You’re responsible for the AI. You decided how much checking the work got before it went out, and the client with the broken feature isn’t going to accept “the AI wrote that part” as an answer, any more than pinning our untested feature on a QA lead fixed anything for our users. Cherny can manage tens of thousands of agents, but he can’t hand the responsibility for what they ship down to the agents, because an agent can’t hold it. Directing a swarm is a management job, and a manager owns the team’s output. The accountability doesn’t transfer, because at the end of the line there’s no one left to transfer it to.</p>



<p class="wp-block-paragraph">Blame is worth dwelling on, because accountability is the part of this work that no name on the range captures. The loop-and-agent model works, but it only works with somebody making decisions about what right is. Agentic engineering describes the agents and the engineering just fine, but somebody still has to own what the agents ship, and that’s the part I want the umbrella name to carry.</p>



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



<p class="wp-block-paragraph">There’s one more name I want to cover, and it’s the one with the oldest roots: spec-driven development. The name means pretty much what it says: You start by writing a spec, a description of what the software needs to do, along with things like acceptance criteria and tests, and the work isn’t done until the code actually does what the spec says. It comes from the same family as test-driven and behavior-driven development, where you write the tests first and the code has to make them pass.</p>



<p class="wp-block-paragraph">Spec-driven development got a serious promotion when AI made generating code nearly free (although if you’re a CIO staring at your token bill, you might disagree, possibly with some extremely salty language). When code is cheap to generate, most of the cost of building software moves to checking whether what got generated is right. The AI fills the generate step, the verification decides what survives, and a human owns the verification.</p>



<p class="wp-block-paragraph">It also picks up where prompt engineering leaves off. A while back I wrote that <a href="https://www.oreilly.com/radar/prompt-engineering-is-requirements-engineering/" target="_blank" rel="noreferrer noopener">prompt engineering is really requirements engineering</a>, because a good prompt is mostly a clear description of what the software has to do. Spec-driven development is where that idea was always headed: Write the requirement down before the AI generates, and the work has a standard to meet from the start.</p>



<p class="wp-block-paragraph">So that’s the whole range, and every name on it is doing honest work. Whether AI-driven development is a good name for all of it comes down to whether it’s describing something real: an actual discipline, with actual practices, and a person who’s on the hook for the result. The rest of this article is about that discipline.</p>



<h2 class="wp-block-heading"><strong>What all these approaches look like in practice</strong></h2>



<p class="wp-block-paragraph">So how do these approaches actually play out when you’re building something real? For me, wherever the work lands on the range, it comes down to a few moves I keep coming back to.</p>



<p class="wp-block-paragraph">Write the spec or the contract before the generation, not after. When the agent has something concrete to satisfy, acceptance criteria, a typed interface, a failing test, the work has a standard to meet. When it doesn’t, the AI decides for itself what done looks like.</p>



<p class="wp-block-paragraph">Put a second opinion in the process. I run code review across multiple models, because they fail differently, and a finding one model is sure about is often one the others missed entirely. A reviewer gives the work something that can say no.</p>



<p class="wp-block-paragraph">Give your defects a shared vocabulary. The <a href="https://github.com/andrewstellman/quality-playbook" target="_blank" rel="noreferrer noopener">Quality Playbook</a> leans on the difference between code that’s wrong against the spec, code that’s correct but does the wrong thing, and behavior nobody specified at all. Those are different failures with different fixes, and you can’t verify against a standard you can’t name. This is old quality-engineering ground, and I’ve written enough about the software crisis and applying quality engineering to AI coding that I’m on board with taking old ideas and bringing them back. One of the best of those old ideas comes from Joseph Juran, one of the founders of quality engineering: Quality runs in a chain from what the user needs all the way to what the product does, and every link in that chain is a place verification has to happen.</p>



<p class="wp-block-paragraph">And keep a human in the judgment seat. The Sens-AI habits I’ve written about are mostly about fault-finding: looking at what the AI produced and asking what’s wrong with it, going down a level and then another to find the root, instead of trusting it because it ran. That habit is the part of the discipline only a person can supply, and it’s the hardest part to automate, which is why it matters most.</p>



<p class="wp-block-paragraph">Skip all of that and you get the thing that’s giving open source maintainers everywhere heartburn: what the <em>Wall Street Journal</em> now calls “vibe slop,” confident, finished-looking output with nothing underneath it. Slop is exactly what generation produces when nothing in the process can push back.</p>



<h2 class="wp-block-heading"><strong>But isn’t there a contradiction here?</strong></h2>



<p class="wp-block-paragraph">Now I can come back to the question I left hanging at the beginning: Can one name honestly cover ways of working that different? AI-driven development is an umbrella term, and any name that broad comes with a requirement it has to satisfy before people will accept it, because a name that blindly covers everything names nothing. A name that truly covers everything is another matter. I sat with that requirement for a while, because it’s real, and because the specific names don’t face it. Vibe coding names one way of working. Loop engineering names another. An umbrella over both of them, plus everything in between, had better be able to say what stays the same underneath it.</p>



<p class="wp-block-paragraph">What stays the same is that somebody owns the result. When I vibe-coded my bus tracker, nobody was going to catch that wrong stop ID but me. When Cherny directs tens of thousands of agents, nobody owns what they ship but him. The verification changes with the stakes. A throwaway prototype gets my eyeballs and a shrug, and production code gets specs, reviews, defect taxonomies, the whole quality-engineering playbook I keep writing about. How much checking the work needs is a decision you make over and over, project by project, sometimes hour by hour. Who stands behind the work is not a decision you get to make. It’s there at every point on the range.</p>



<p class="wp-block-paragraph">Look at how much of that range the names we already have cover, and what each one actually names:</p>



<ul class="wp-block-list">
<li><strong>Vibe coding</strong> names the exploratory end of the range: prompt, get code, iterate, and stay loose on purpose.</li>



<li><strong>Prompt engineering</strong> names a skill: writing the instruction that gets the right work out of the model.</li>



<li><strong>Loop engineering</strong> names the machinery: designing the system that feeds those instructions to your agents and keeps them producing.</li>



<li><strong>Agentic engineering</strong> names the architecture: the fleets of agents doing the labor, at whatever scale you can manage.</li>



<li><strong>Spec-driven development</strong>, with test-driven and behavior-driven development behind it, names the verification half of the job: the standard the work has to meet before anyone stands behind it.</li>
</ul>



<p class="wp-block-paragraph">Every one of those is real, and every one of them names a piece of the work. What none of them names is the whole thing the pieces add up to, and that’s the job AI-driven development does: It’s the umbrella over all five. The name doesn’t pick a spot on the range; it names the thing that’s true everywhere on it: the AI generates, and a human owns the result.</p>



<p class="wp-block-paragraph">That’s also what makes the name likely to last (assuming, of course, that I’m able to convince people to start using it, which I hope I can, because I think it’s a good term). Vibe coding, loop engineering, and agentic engineering all describe how this works right now, and the machinery is changing monthly. Some of the pieces under the umbrella will get replaced, and the new pieces will get names of their own. The umbrella won’t have to change when they do, because the thing it names isn’t the machinery. The “-driven development” names have already shown they age well: test-driven development has meant the same thing for more than twenty years.</p>



<p class="wp-block-paragraph">Agentic engineering is real, and so is loop engineering; if you’re directing agents, learn them both. Vibe coding is real too, and I’ll keep teaching it. AI-driven development is the name for the whole thing, and it earns its “-driven” the same way test-driven and behavior-driven development did: there’s a discipline attached, and somebody owns the result. AI made generating code almost free. It didn’t make being responsible for the code free, and being responsible for it is still the job.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/we-keep-renaming-ai-coding-heres-what-id-call-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>AI as an Enterprise Operating System</title>
		<link>https://www.oreilly.com/radar/ai-as-an-enterprise-operating-system/</link>
				<comments>https://www.oreilly.com/radar/ai-as-an-enterprise-operating-system/#respond</comments>
				<pubDate>Fri, 31 Jul 2026 16:09:24 +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=19257</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/AI-as-an-enterprise-operating-system.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/AI-as-an-enterprise-operating-system-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[A conversation with Dan Guido of Trail of Bits]]></custom:subtitle>
		
				<description><![CDATA[I hadn’t heard of Dan Guido until a few months ago, when I came across the video of a talk he gave at [un]prompted, an AI security practitioners’ conference. Dan is the CEO and cofounder of Trail of Bits, a software security research and development firm that works with companies in tech, defense, and finance. [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">I hadn’t heard of Dan Guido until a few months ago, when I came across the video of <a href="https://www.youtube.com/watch?v=kgwvAyF7qsA" target="_blank" rel="noreferrer noopener">a talk he gave at [un]prompted</a>, an AI security practitioners’ conference. Dan is the CEO and cofounder of <a href="https://www.trailofbits.com/" target="_blank" rel="noreferrer noopener">Trail of Bits</a>, a software security research and development firm that works with companies in tech, defense, and finance. But Dan wasn’t talking about security. He was talking about what it takes to make a company AI native, which is close to the center of the bullseye for many of us right now.</p>



<p class="wp-block-paragraph">We’ve been trying to figure out how to do that at O’Reilly, but until I came across Dan’s talk, we didn’t have a structured process. We’ve been building along the lines he laid out ever since. So for this episode of Live with Tim I asked Dan to reprise the talk before we got to the conversation. He was supposed to take twenty minutes, like his original conference talk, but he took thirty-five, and I had to cut him off slightly before the end to make room for questions. That was a tough choice, since everything he had to say was golden.</p>



<p class="wp-block-paragraph">Dan opened by reminding us of the current state of play in enterprise AI adoption. In February, <a href="https://dc.fortune.com/2026/02/17/ai-productivity-paradox-ceo-study-robert-solow-information-technology-age" target="_blank" rel="noreferrer noopener">Fortune reported</a> on a National Bureau of Economic Research study in which nearly 90% of some 6,000 executives said AI had produced no measurable change in employment or productivity at their firms over three years. People started calling it the new Solow paradox, after Robert Solow’s 1987 line that “you can see the computer age everywhere except in the productivity statistics.”</p>



<p class="wp-block-paragraph">Dan’s belief is that this isn’t evidence that AI doesn’t work. It’s evidence that most companies are deploying AI wrong. They hand out ChatGPT and Claude licenses, and then leadership waits for the magic to happen. It doesn’t.</p>



<p class="wp-block-paragraph">Dan started out by describing three levels of AI adoption.</p>



<ol class="wp-block-list">
<li><strong>AI assisted</strong> is where everyone starts: “You give people access to ChatGPT, it drafts emails, it summarizes documents. It’s just a productivity tool, and your organization doesn’t change. Your workflows are the exact same as they were before. You just have a little buddy that helps you with a couple of tasks.”&nbsp;</li>



<li><strong>AI augmented</strong> is where you start redesigning workflows, so that AI does the first pass on a code review and a human does the second.&nbsp;</li>



<li><strong>AI native</strong> is structural: “That’s where you’ve redesigned the company and its workflows from the ground up, assuming the AI is going to be there and that it’s a core participant. That’s not really a tool. That’s more thinking about AI as teammates.”</li>
</ol>



<p class="wp-block-paragraph">In his framing, the first of the three is a tool and the last is an operating system. For Trail of Bits, he said that “operating system” has a specific purpose:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“I want our security expertise <em>to compound as code</em>. Every engagement we do, all the skills, the workflows, everything that we build makes the next engagement faster and better.”</p>
</blockquote>



<h2 class="wp-block-heading">Employee resistance is the first problem</h2>



<p class="wp-block-paragraph">Dan confessed how hard it was to get started on the ladder from AI Assisted to AI Native:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“When I announced last year that we were all in on AI, that we were going to be using it across all of our workflows and redesigning the way the company operates, I’d say only about 5% of the company was with me. 95% was resistant.” About 20% was actively resisting. The other 75% were resisting more passively. “They’ll go along with it in public, but in process they’ll sabotage it. They’ll hope that if they keep their head low, this will pass over them, and that three months from now management’s focus will change and it won’t be a problem anymore, and we can get back to doing what we were doing. That’s where the majority of people land when these initiatives happen.”</p>
</blockquote>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="95% of the Company Was Resistant" width="500" height="281" src="https://www.youtube.com/embed/g3QBjokTzKo?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">Rather than argue with his employees, Dan studied the literature on why people reject new technology and decided he needed to address four biases against AI: self-enhancing bias, identity threat, opacity, and intolerance for imperfection.</p>



<p class="wp-block-paragraph">Self-enhancing bias is the habit of crediting your wins to your own judgment and your losses to circumstance, which is a particular problem for senior people who are strongly attached to the years of experience and intuition that got them to their present position. Opacity is not being able to see how a decision got made. Dan&#8217;s observation is that you don&#8217;t understand your doctor&#8217;s reasoning either, but somehow you trust the doctor but get suspicious of the machine. Dan didn’t mention this work specifically, but intolerance for imperfection seems to refer to <a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2466040" target="_blank" rel="noreferrer noopener">Dietvorst, Simmons, and Massey’s work on algorithm aversion</a>, which found that people abandon an algorithm after watching it err once, even when it outperforms the human alternative. Their <a href="https://doi.org/10.1287/mnsc.2016.2643" target="_blank" rel="noreferrer noopener">follow-up paper</a> found that giving people even a slight ability to modify the algorithm’s output is enough to overcome the aversion.</p>



<p class="wp-block-paragraph">Dan spent the most time on identity threat. He described a study in which the same kitchen appliance was advertised in two ways: “On one hand, it does the cooking for you. On the other hand, it helps you cook better. It’s the same device. The people who identified as cooks rejected the first version and accepted the second.”</p>



<p class="wp-block-paragraph">Most knowledge work, Dan argued, and security auditing in particular, is what he called symbolic rather than instrumental. That is, it carries meaning about who you are. “So I have to frame AI as something that makes you a more dangerous auditor,” he said. “Not that it does the audit for you.”</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="The Machine Doesn’t Cook for You" width="500" height="281" src="https://www.youtube.com/embed/UMRaT46H0xs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">In his work at Trail of Bits, he deliberately built a countermeasure for each bias.</p>



<ul class="wp-block-list">
<li>Self-enhancing bias is addressed by “an AI maturity matrix” with visible levels, because you can’t claim you’re already good enough when there’s a published ladder that identifies a different set of skills as critical.&nbsp;</li>



<li>Identity threat gets skills repositories, where an engineer who writes a hard plugin gets credit for encoding their expertise. Hackathons also change the dynamic from resistance to exploration. I’m putting words in Dan&#8217;s mouth here, but I think he’d agree that when experienced developers are called on as mentors in a hackathon, that also reduces their experience of AI as an identity threat. </li>



<li>Intolerance for imperfection gets a curated marketplace, sandboxing, and hardened defaults, so everyone’s first experience of AI isn’t a disaster.&nbsp;</li>



<li>Opacity gets a written AI handbook that clarifies the usage policy and the risk model rather than just saying “trust us.”</li>
</ul>



<p class="wp-block-paragraph">Here’s Dan’s slide on “the remedies that actually worked”:</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1600" height="904" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-33-1600x904.png" alt="The remedies that actually worked" class="wp-image-19258" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-33-1600x904.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-33-300x169.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-33-768x434.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-33-1536x868.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-33.png 2048w" sizes="(max-width: 1600px) 100vw, 1600px" /></figure>



<p class="wp-block-paragraph">Returning to one of my hobby horses, this is a kind of mechanism design. In <a href="https://www.oreilly.com/radar/the-missing-mechanisms-of-the-agentic-economy/" target="_blank" rel="noreferrer noopener">my recent piece on the missing mechanisms of the agentic economy</a>, I argued that we need to start with desired outcomes and ask ourselves what mechanisms will help to produce them. Dan’s approach seems to be really good at this. Most enterprises are treating AI adoption as a procurement problem or a communications problem. Dan treated it as a question of what incentives, defaults, and status ladders produce the behavior you want, given how people actually respond.</p>



<p class="wp-block-paragraph">The last remedy on Dan’s list is that the CEO has to lead by example. He noted, “I was the first person through the door. My voice as the CEO matters a lot more than people think. The passive 50% of the company that isn’t sure if this initiative is going to be successful, they’re watching to see what leadership actually does, not what it says.”</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="The CEO Goes First" width="500" height="281" src="https://www.youtube.com/embed/OVTNBKmIX7Y?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">A ladder, not a mandate</h2>



<p class="wp-block-paragraph">Trail of Bits already tracked about 50 engineering skills for performance review, things like Python, git, Rust, and various security auditing capabilities. Dan pulled AI skills out into their own matrix, with four levels, from not engaged through capable and adoptive to transformative. Each of these levels is detailed separately and more specifically for assurance, engineering, sales, and project management.</p>



<p class="wp-block-paragraph">He noted that “The highest level of the maturity matrix is not somebody who uses AI the most. It’s somebody who invents new ways to work and builds tools with AI. So the identity of the expert shifts from ‘I don’t need AI’ to ‘I’m the one who makes AI useful for the company.’” This was his first important design choice.</p>



<p class="wp-block-paragraph">The second is what level zero means. He said “If you’re at level zero, if you’re not engaged, that means you’re fighting back against the company. If you dismiss AI as hype, if you refuse to use AI for security work, this is a disagreement on principles, not on skills. For people who were stuck in the not engaged category, we had hard conversations, and there were people who left the company.” Levels one through three are a skill issue, and the remedy is time with the tools.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="A Disagreement on Principles, Not on Skills" width="500" height="281" src="https://www.youtube.com/embed/aogfHvcVGTE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">While the slide describing the capability matrix is shown in the preceding video clip, here’s where you can find <a href="https://github.com/trailofbits/publications/blob/master/presentations/How%20we%20made%20Trail%20of%20Bits%20AI-Native%20%28so%20far%29/slides.pdf" target="_blank" rel="noreferrer noopener">the full deck</a> so you can study it in more detail.</p>



<h2 class="wp-block-heading">Driving adoption and skills with hackathons</h2>



<p class="wp-block-paragraph">One of the best ways Trail of Bits developed to move people up the ladder was to hold a hackathon every two months. Dan runs them with clear goals rather than as a free-for-all. The focus area and learning objectives are defined in advance and announced a week ahead, with separate instructions for engineers and non-engineers. People work in pairs so everything gets reviewed. There’s a demo session at the end, and then follow-through. (It’s an important part of Dan’s big idea, that you have to build a system by which, in his words, organizational knowledge and capability <em>compounds</em>.) He noted that “In the days afterward we keep one or two people around, and they collect all the reusable artifacts, structure them, and put them into the places they need to be.”</p>



<p class="wp-block-paragraph">I asked what people outside of product and engineering actually work on, since the answer for an accountant at a hackathon was not obvious. Dan’s response is that the hackathon isn’t measured in artifacts shipped but in where people sit on the capability ladder the following week. Essentially, <em>he’s running a training program that happens to produce useful output</em>, rather than a production sprint that happens to teach people something.</p>



<p class="wp-block-paragraph">The first hackathon, he told me, was the equivalent of a beach cleanup: “It’s like those companies that send everybody to the beach with a big stick and say, let’s go pick up a bunch of trash and put it away, and then you get the big team photo after with all the contractor bags of garbage. That’s what we did with our public source code repositories.”</p>



<p class="wp-block-paragraph">He picked it because open source maintenance is the part of the job that feels like a grind. No new features, just closing issues and stale dependencies on public code where nothing was at risk. “As an open source maintainer, you just get beaten down by the public. This doesn’t work, I can’t use it, this thing sucks. Dozens of issues pointing out flaws you already knew about. It feels burdensome. We wanted people to see that adopting AI would relieve burden.”</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Send Everybody to the Beach with a Big Stick" width="500" height="281" src="https://www.youtube.com/embed/d_mnp2coSAU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">The second hackathon was about shipping impactful product updates, but it was also designed to move everyone up the capability ladder by giving up control. Engineers had to run Claude Code in bypass permissions mode, fully autonomous, on public repositories, inside sandboxes the company had prepared in advance. The one they’re running now is about persistent background agents that can be handed a task during an audit and come back with a proof of concept exploit or a draft finding.</p>



<p class="wp-block-paragraph">Here’s a look at Dan’s slack message announcing the hackathon:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1070" height="974" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-36.png" alt="The slack message announcing the second hackathon. (From Dan’s slide deck.)" class="wp-image-19261" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-36.png 1070w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-36-300x273.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-36-768x699.png 768w" sizes="auto, (max-width: 1070px) 100vw, 1070px" /><figcaption class="wp-element-caption">The slack message announcing the second hackathon. (From Dan’s slide deck.)</figcaption></figure>



<p class="wp-block-paragraph">Everything the hackathons produce gets harvested into artifacts.</p>



<p class="wp-block-paragraph">Trail of Bits runs three skills repositories: an internal one for company workflows, <a href="https://github.com/trailofbits/skills" target="_blank" rel="noreferrer noopener">a public one</a> that anyone can use, and <a href="https://github.com/trailofbits/skills-curated" target="_blank" rel="noreferrer noopener">a curated one</a> that vets third-party skills before they’re allowed in.</p>



<p class="wp-block-paragraph">Publishing skills to the public repository is not just a marketing exercise. “It keeps us honest, and it forces us to write things that other people can use, not just people outside the company but inside too,” Dan said. “It really helps us think about the tribal knowledge that’s baked into the tool.”</p>



<p class="wp-block-paragraph">The curated repository exists because Trail of Bits knows how bad the supply chain is. They’ve published research on how to write malicious skills, and so Dan is not going to tell 130 employees to start downloading code from strangers and running it on their laptops. “If you want adoption, you need a safe supply chain.”</p>



<h2 class="wp-block-heading">Turning scar tissue into infrastructure</h2>



<p class="wp-block-paragraph">Perhaps even more important than the skills repository is, as Dan put it, “turning scar tissue into infrastructure.”</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“Every single time Claude Code didn’t do something we wanted, we would bake it into a set of global, copy-pasteable defaults. Known good settings, recommended patterns. I call it scar tissue. If I hire somebody new tomorrow, I don’t want them to have to go through the entire discovery process of the last year of Trail of Bits to figure out how to use the tool.”</p>
</blockquote>



<p class="wp-block-paragraph">The configuration repository, <a href="https://github.com/trailofbits/claude-code-config" target="_blank" rel="noreferrer noopener">claude-code-config</a>, is where the accumulated lessons live.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1336" height="1122" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-37.png" alt="Trail of Bits Claude code config" class="wp-image-19262" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-37.png 1336w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-37-300x252.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-37-768x645.png 768w" sizes="auto, (max-width: 1336px) 100vw, 1336px" /></figure>



<p class="wp-block-paragraph">Dan built the first version himself and then opened it to pull requests from the whole company, assigning someone after each hackathon to go collect what people hadn’t contributed on their own. “It’s easier to put out something that’s unpolished than it is to get it perfect on the first try.”</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Scar Tissue, Not a Perfect Answer" width="500" height="281" src="https://www.youtube.com/embed/pmhy8dcBcqs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">In short, a big part of the Trail of Bits “enterprise AI operating system” approach is a set of standardized tools and hardened defaults. Standardization isn’t a straitjacket. It’s a foundation.</p>



<p class="wp-block-paragraph">On sandboxing, Trail of Bits deliberately didn’t pick a single preferred solution. There’s <a href="https://github.com/trailofbits/claude-code-devcontainer" target="_blank" rel="noreferrer noopener">a devcontainer</a> for developers, <a href="https://github.com/trailofbits/dropkit" target="_blank" rel="noreferrer noopener">dropkit</a> for disposable DigitalOcean droplets, COOP for isolated VMs, and the sandboxing now built into Claude Code for casual users. “The point isn’t that everybody uses the same sandbox,” Dan said. “The point is that everyone has a safe sandbox to use, and that it’s easy for them to do it.”</p>



<p class="wp-block-paragraph">Another of the hardened defaults is procedural. Trail of Bits enforces a seven day cooldown on every package their developers install:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“There are dozens of security companies scanning the internet trying to find a new cool blog post they can write about malicious code hiding on PyPI or npm, and they usually figure out there’s a supply chain issue within hours. So we just delay all the packages that Trail of Bits uses. Generally the malicious stuff gets picked up before we ever get a chance to run it.”</p>
</blockquote>



<p class="wp-block-paragraph">That’s free-riding on a competitive market for security research, and given the speed of today’s market, it’s an elegant solution. There’s a whole class of defenses like this waiting to be found, where the mechanism is not a technical system but a well-chosen delay.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="A 7-day Cooldown on Every Dependency" width="500" height="281" src="https://www.youtube.com/embed/j5yxGbCy5Ik?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Data, and DJ Patil’s “Tidy House”</h2>



<p class="wp-block-paragraph">The problem we run into most often as we build AI workflows at O’Reilly isn’t the model or the tooling. It’s data. Who has access to which system, which system does that data live in, and who do I ask? In a 500 person company that’s annoying. I wonder what it’s like at a company with 50,000 employees.</p>



<p class="wp-block-paragraph">I told Dan about <a href="https://www.oreilly.com/radar/the-tidy-house/" target="_blank" rel="noreferrer noopener">DJ Patil’s Tidy House framing</a>. He agreed that data access for AI is a big problem. His answer starts with permissions:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“The permissions debt is invisible until an agent hits it. Making data agent legible is a forced permission audit. You have to actually go through and figure out who can access what…. It also raises the stakes for permissions errors. If you overshare information, now an agent inside your company is going to find it instantly. There are a lot of these technical debt sort of things where, with agents, all of it’s becoming due at the same time.”</p>
</blockquote>



<p class="wp-block-paragraph">Every shortcut an organization took with its data over the past twenty years is being called at once, and the companies that can run the audit, make fast decisions about boundaries, and then actually share their data are the ones that will get a force multiplier.</p>



<p class="wp-block-paragraph">Dan is against letting a thousand flowers bloom, because uncoordinated teams create overlap rather than compounding. He’d rather have one centralized foundation, with innovation happening on top of that. He suggested a useful metric for making that work across team boundaries is what fraction of your team’s data did you make reusable for everyone else, and how much of it is being used by teams outside your own.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="All of It’s Becoming Due at the Same Time" width="500" height="281" src="https://www.youtube.com/embed/-lNnlAnCqmQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">What post-AI jobs look like</h2>



<p class="wp-block-paragraph">Before the first hackathon, Trail of Bits ran hands-on sessions to teach its operations and go-to-market staff the basics of git and the command line. Not mastery, just enough to be a consumer of the thing. Here we are fifty years into my career and the Unix command line still matters. Dan’s non-technical staff mostly work inside Claude Cowork or Codex Desktop now, but he thinks the command line experience was worth it because they know what’s happening under the hood.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Every Non-Engineer Here Uses GitHub Every Day" width="500" height="281" src="https://www.youtube.com/embed/RiDFxlVHHUU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">What happens to a job when the tool can do a lot of what humans used to do? Dan gave the example of his own technical editors. His editors used the hackathons to build the tools that got them out of line editing, including one that turns a public presentation into a blog post in the company’s voice. What the writers do now is consult on how to frame a story so it is effective with a particular audience.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="So What&amp;apos;s the Point of a Technical Editor?" width="500" height="281" src="https://www.youtube.com/embed/tdUsWlX7vC4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">I agree. Human jobs aren’t going away any time soon. This gets heard as optimism when it’s really just observation. AI is going to replace a lot of what we used to do, but it is also going to hand us a large amount of new work, and much of that work hasn’t been understood yet. Quality assurance for agent systems is one of the new jobs. So is skills product management, which is a role that didn’t exist eighteen months ago and now has a headcount at a 130 person security firm.</p>



<p class="wp-block-paragraph">I asked a question towards the end about how we’re going to know which skills and agents are any good. What Dan has so far is telemetry pulled from developers’ dot files through the company’s device management system, which tells him what gets used and what breaks, plus one AI systems engineer whose job is product management for the skills repository, reviewing incoming pull requests and deprecating overlapping skills.</p>



<p class="wp-block-paragraph">What Dan thinks comes next is evaluation. He says: “Once you invest a lot into these agent systems, you need proof that they do the job. The way you do that is you give everybody a performance review. You give them an evaluation data set, a benchmark.”</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Give Your Agents a Performance Review" width="500" height="281" src="https://www.youtube.com/embed/WXuQEa6Ce00?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">Trail of Bits is now building benchmarks for its core skills. How well can we find bugs in this language? How well can we write a statement of work? Constructing those datasets is real work, with positive and negative cases, and comparisons against the algorithmic tools that already exist.</p>



<h2 class="wp-block-heading">Put the reps in</h2>



<p class="wp-block-paragraph">I asked Dan for the top five mistakes he made. He said there was only one. “You need to allocate an appropriate amount of FAFO time. (That&#8217;s F Around and Find Out.) A product comes out on Friday. There’s no documentation for it. There’s no training guidance for it. There’s no course on it. You can’t wait until somebody systematizes the knowledge. You just need to do it.”</p>



<p class="wp-block-paragraph">Then he gave an analogy to going to the gym.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Put the Reps In" width="500" height="281" src="https://www.youtube.com/embed/NBubGIju9Bg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">The recipe for success</h2>



<p class="wp-block-paragraph">Dan has a replicable recipe, which he summarized as follows:</p>



<ol class="wp-block-list">
<li>Standardize on one agent workflow that you can support.</li>



<li>Write an AI handbook so that risk decisions aren’t ad hoc, and that everyone is playing the same game.</li>



<li>Create a capability ladder that makes clear that improvement is expected.</li>



<li>Run short adoption sprints that force hands-on usage.</li>



<li>Capture everything as reusable artifacts: skills + configs + a curated supply chain.</li>



<li>Make autonomous agents safe with sandboxing + guardrails + hardened defaults.</li>
</ol>



<p class="wp-block-paragraph">The Trail of Bits skills repository is public. So is the curated marketplace, the configuration repository, the devcontainer, dropkit, and COOP (Continuity of Operations planning). He wrote up <a href="https://blog.trailofbits.com/2026/03/31/how-we-made-trail-of-bits-ai-native-so-far/" target="_blank" rel="noreferrer noopener">the whole playbook on <em>The Trail of Bits Blog</em></a> and gave <a href="https://tldrsec.com/p/how-we-made-trail-of-bits-ai-native-so-far" target="_blank" rel="noreferrer noopener">a version of it to <em>tl;dr sec</em></a>. He thinks publishing makes the work better because it forces the tribal knowledge out into the open where it can be checked.</p>



<p class="wp-block-paragraph">Which brings me back to the Solow paradox, which seemed to disappear by the late 90s, when US aggregate productivity did finally go up. That didn’t happen because computers got faster. It disappeared because companies figured out how to reorganize themselves around what computers could do, and eventually those organizational recipes spread widely enough to show up in aggregate statistics. The same has to happen today. The current AI discourse is obsessed with model capability and largely uninterested in diffusion. The problem is not that the models are oversold. It’s that almost nobody has done the necessary organizational work, and the few who have are mostly keeping it to themselves.</p>



<p class="wp-block-paragraph"><em>If you want to go beyond the highlight videos shown above, watch Dan’s entire talk <a href="https://learning.oreilly.com/videos/a-playbook-for/0642572388935/" target="_blank" rel="noreferrer noopener">here</a>.</em> <em>His slide deck is <a href="https://github.com/trailofbits/publications/blob/master/presentations/How%20we%20made%20Trail%20of%20Bits%20AI-Native%20%28so%20far%29/slides.pdf" target="_blank" rel="noreferrer noopener">here</a>.</em> <em>And be sure to check out <a href="https://trailofbits.com/?item=https-github-com-trailofbits-publications-blob-master-presentations-how-20we-20m" target="_blank" rel="noreferrer noopener">the Trail of Bits Github repository</a></em>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/ai-as-an-enterprise-operating-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>This Week in AI: Agents, Gatekeepers, and World Models</title>
		<link>https://www.oreilly.com/radar/this-week-in-ai-agents-gatekeepers-and-world-models/</link>
				<comments>https://www.oreilly.com/radar/this-week-in-ai-agents-gatekeepers-and-world-models/#respond</comments>
				<pubDate>Fri, 31 Jul 2026 13:02:06 +0000</pubDate>
					<dc:creator><![CDATA[Michelle Smith]]></dc:creator>
						<category><![CDATA[This Week in AI]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/05/0642572383770_This_Week_in_AI_Cover-scaled.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2560" 
				height="2560" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/05/0642572383770_This_Week_in_AI_Cover-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Plus pressure on the open web and what publishers are doing about it]]></custom:subtitle>
		
				<description><![CDATA[This week, data and AI evangelist Christina Stathopoulos looked at three developments shaping AI’s next phase: agents that can act across systems, infrastructure built for specific models, and world models that help AI understand physical environments. Model quality is no longer the only constraint for teams. They also need to account for security controls, compute [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">This week, data and AI evangelist Christina Stathopoulos looked at three developments shaping AI’s next phase: agents that can act across systems, infrastructure built for specific models, and world models that help AI understand physical environments. Model quality is no longer the only constraint for teams. They also need to account for security controls, compute requirements, information access, and the environments where AI systems will operate.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="This Week in AI: Agents, Gatekeepers, and World Models with Christina Stathopoulos" width="500" height="281" src="https://www.youtube.com/embed/kumsRXbBbf4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading"><strong>Agent capability is advancing faster than agent control</strong></h2>



<p class="wp-block-paragraph">Christina opened with reports that an OpenAI agent escaped a test environment, gained internet access, and <a href="https://www.bbc.com/news/articles/c3ek3gvdnj3o" target="_blank" rel="noreferrer noopener">targeted Hugging Face</a> while attempting to complete an assigned task. She also noted skepticism about how the incident was characterized, as well as the joint investigation announced by OpenAI and Hugging Face. The details remain under review, but the broader deployment problem is already familiar. Agents can combine tools, credentials, networks, and external services in ways application teams may not anticipate. (After the episode aired, OpenAI revealed that its review had turned up <a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/" target="_blank" rel="noreferrer noopener">four other similar incidents</a> “where the models identified and used publicly exposed credentials at the account-level on other publicly-available services.”)</p>



<p class="wp-block-paragraph">Christina then discussed <a href="https://openai.com/index/introducing-openai-presence/" target="_blank" rel="noreferrer noopener">OpenAI’s limited-availability platform</a> for helping enterprise customers build and manage agents with support from forward-deployed engineers. Direct access to specialists can help a company launch an agent, but it doesn’t replace the internal skills and governance required to operate one over time. For technical leaders, agent readiness increasingly means evaluating the full operating environment rather than focusing only on benchmark performance.</p>



<h2 class="wp-block-heading"><strong>AI infrastructure is reshaping both compute and the open web</strong></h2>



<p class="wp-block-paragraph">Google appeared on both sides of the infrastructure discussion. Christina covered reports of <a href="https://techcrunch.com/2026/07/20/google-is-working-on-a-new-ai-chip-designed-to-make-gemini-more-efficient/" target="_blank" rel="noreferrer noopener">a chip designed around Gemini’s architecture</a>, an approach that could reduce the compute required to run the model if the reported efficiency gains hold up. Specialized hardware has become a larger part of the AI race because model performance depends on cost, energy use, and deployment capacity. A model that performs well but consumes too much power or requires scarce hardware may still be difficult to use at scale.</p>



<p class="wp-block-paragraph">A different infrastructure shift is affecting the web. Christina examined how the growth of AI-first search experiences that answer questions without sending users to the sites that supplied the underlying material is threatening the open web. Organizations still pay to produce and host useful information, but AI systems collect more of it while returning less traffic. <a href="https://blog.cloudflare.com/agentic-internet-bot-report/" target="_blank" rel="noreferrer noopener">Cloudflare data</a> shows more traffic from agents, fewer human visitors, and declining referrals to publishers. More and more, people are using <a href="https://www.nytimes.com/2026/07/20/technology/google-ai-open-web.html" target="_blank" rel="noreferrer noopener">AI mode in Google search</a> instead of clicking through to websites, leading some to suspect the arrival of what is referred to as “Google Zero.”</p>



<p class="wp-block-paragraph">Developers building search products, retrieval systems, and agents should treat source attribution and publisher incentives as product design decisions. Reliable AI systems depend on reliable source material, and that source material needs a sustainable way to exist.</p>



<h2 class="wp-block-heading"><strong>World models could give physical AI a more useful foundation</strong></h2>



<p class="wp-block-paragraph">The episode closed with world models, systems designed to learn how environments work, how they change, and how actions affect what happens next. Christina highlighted a <a href="https://arxiv.org/abs/2607.06401" target="_blank" rel="noreferrer noopener">proposed research roadmap</a> that describes world models as able to combine several kinds of input, process information arriving at different speeds, and infer a larger environment from limited observations.</p>



<p class="wp-block-paragraph">For now, the clearest applications are in simulation, robotics, planning, and decision-making rather than claims about artificial general intelligence. A robot working in a factory, construction site, or emergency zone must track objects, understand movement, respond to incomplete information, and predict the likely result of an action. Large language models can support communication and planning, but physical work requires a representation of space, time, and cause and effect. World models may provide part of that foundation. However, researchers still need standardized definitions, reliable evaluations, and clear evidence that these systems can generalize beyond controlled environments.</p>



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



<p class="wp-block-paragraph">Across the episode, Christina explored how AI capability is advancing faster than the systems around it. Security practices, compute infrastructure, publishing economics, and physical-world evaluation will help determine which advances become dependable tools and which remain impressive demonstrations.</p>



<p class="wp-block-paragraph">Tune in next week as Christina breaks down the biggest AI news, including the US-China tech rivalry heating up after Anthropic CEO Dario Amodei&#8217;s post on open weight models and new bans on foreign-made humanoid robots. She&#8217;ll also challenge Sam Altman&#8217;s AI singularity claims, separating fact from hype, and examine key developments in math and science, including OpenAI&#8217;s 100,000 free researcher licenses, Claude Fable 5 solving an 87-year-old math problem, and Google disbanding its Nobel Prize-winning AlphaFold team to prioritize Gemini.</p>



<p class="wp-block-paragraph">Check back each Friday for the latest episode, or watch on <a href="https://www.youtube.com/watch?v=g4cfjz5AKxY&amp;list=PL055Epbe6d5bJEhT7_ZzOeJZ6gPyUzYpS" target="_blank" rel="noreferrer noopener">YouTube</a>, <a href="https://open.spotify.com/show/033kJS2BG1teGunxmtsU1r" target="_blank" rel="noreferrer noopener">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/this-week-in-ai/id1896798047" target="_blank" rel="noreferrer noopener">Apple</a>, or wherever you get your podcasts.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/this-week-in-ai-agents-gatekeepers-and-world-models/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>The Problem Is Prompt Debt</title>
		<link>https://www.oreilly.com/radar/the-problem-is-prompt-debt/</link>
				<comments>https://www.oreilly.com/radar/the-problem-is-prompt-debt/#respond</comments>
				<pubDate>Thu, 30 Jul 2026 11:05:15 +0000</pubDate>
					<dc:creator><![CDATA[Drew Breunig]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/The-problem-is-prompt-debt-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/07/The-problem-is-prompt-debt-image-created-with-Adobe-Firefly-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[You can’t be model agnostic if you’re hand-tuning prompts]]></custom:subtitle>
		
				<description><![CDATA[The following article was originally published on Drew Breunig’s blog and is being republished here with the author’s permission. Thanks to natural language interfaces, AI applications can be prototyped quickly. You write what you want in English, hand it to a frontier model, and a working prototype appears in an afternoon. This is extraordinarily powerful [&#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 <a href="https://www.dbreunig.com/2026/06/22/the-problem-is-prompt-debt.html" target="_blank" rel="noreferrer noopener">Drew Breunig’s blog</a> and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">Thanks to natural language interfaces, AI applications can be prototyped quickly. You write what you want in English, hand it to a frontier model, and a working prototype appears in an afternoon. This is extraordinarily powerful and for one-off tasks, optimal. But as a way to build reliable systems, the natural language prompt is a trap.</p>



<p class="wp-block-paragraph">The plain-English prompt that makes prototypes effortless turns out to be a poor way to specify how a system should behave, and the bill arrives slowly, disguised as ordinary progress, until the application can barely move. The problem is not any single prompt. It is that natural language was never meant to be a specification language for engineering, and treating it as one quietly caps what you can build.</p>



<h2 class="wp-block-heading">The prompt debt trap</h2>



<p class="wp-block-paragraph">The first symptom of prompt debt is slowing iteration. As users flag errors and spot edge cases, additional guidance is added to the instructions, nudging the model into line. If unwanted behaviors persist, instructions are repeated, with increasing severity. Pretty soon, the prompt isn’t straightforward and quick fixes regress previous instructions. Errors can no longer be handled with one-line “hot fixes” and your development cycle slows to a crawl.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="898" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-38-1600x898.png" alt="Fable's system prompt repeats copyright guidance up to six times, under sections named search_instructions, search_usage_guidelines, mandatory_copyright_requirements, hard_limits, self_check_before_responding, and critical_reminders." class="wp-image-19267" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-38-1600x898.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-38-300x168.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-38-768x431.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-38-1536x862.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-38.png 2048w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption">Fable’s system prompt repeats copyright guidance up to six times, under sections named <code>search_instructions</code>, <code>search_usage_guidelines</code>, <code>mandatory_copyright_requirements</code>, <code>hard_limits</code>, <code>self_check_before_responding</code>, and <code>critical_reminders</code>.</figcaption></figure>



<p class="wp-block-paragraph">Next, prompt debt incapacitates your team. Your brittle prompt <a href="https://www.dbreunig.com/2026/02/10/system-prompts-define-the-agent-as-much-as-the-model.html#:~:text=The%20Common%20Jobs%20of%20a%20Coding%20Agent%20System%20Prompt" target="_blank" rel="noreferrer noopener">full of edge cases and all-caps threats</a> is barely legible to you, and it’s downright impenetrable to your colleagues. Many teams mitigate this issue by breaking prompts into complicated templates assembled at run-time, each isolated to specific concerns. But these prompt segments evolve, too, growing into <a href="https://www.dbreunig.com/2026/04/04/how-claude-code-builds-a-system-prompt.html" target="_blank" rel="noreferrer noopener">a thicket of conditions</a>.</p>



<p class="wp-block-paragraph">Finally, prompt debt ties you to a single model. Your hot fixes work on GPT-4o, but fail in entirely new ways when you point your inference call at GPT-5.4-mini. So you stay with 4o, hope the increasingly frequent deprecation emails from your inference provider are empty threats, and forgo the possibility of potentially cheaper, faster, <em>better</em> models. A <a href="https://www.datadoghq.com/state-of-ai-engineering/">recent report from Datadog</a> suggests this is a common situation: The most-used model in traffic they observed is <em>GPT-4o</em>.<sup data-fn="c76a5ace-52f4-44e0-990e-fb1f64977b17" class="fn"><a href="#c76a5ace-52f4-44e0-990e-fb1f64977b17" id="c76a5ace-52f4-44e0-990e-fb1f64977b17-link">1</a></sup></p>



<p class="wp-block-paragraph">Any one of these issues is a nuisance, but together they are the difference between a glorified prototype and a product that can grow with you, your customers, and your business. Your shiny new AI features are frozen, can only be improved through a full rebuild, and are locked to an aging model.</p>



<h2 class="wp-block-heading">Why prompt debt happens</h2>



<p class="wp-block-paragraph">Natural language interfaces are wonderful. They’re the right mechanism for one-off tasks and broad conversational threads. We get into trouble when we rely on natural language to define durable system behavior.</p>



<p class="wp-block-paragraph">The imprecision of natural language paired with probabilistic language models means different words expressing the same intent can yield different outputs. <a href="https://arxiv.org/abs/2604.07709" target="_blank" rel="noreferrer noopener">In a recent study</a>, a clinical question asked in a patient’s voice and then re-asked in a physician’s, with identical facts, flipped Opus from declining all ten times to answering all ten.</p>



<p class="wp-block-paragraph">And it’s not only word choice that matters. Seemingly unrelated statements in the same prompt can affect results. <a href="https://arxiv.org/html/2407.06866v3" target="_blank" rel="noreferrer noopener">In a Harvard study</a>, researchers found that merely stating which NFL team the user rooted for changed how often the model refused to answer questions regarding sensitive topics. Spurious statements influence the inference pass in ways we can’t predict. Which is why prompts become more brittle as you add fixes. An additional instruction to quell a stubborn error could affect how the model interprets a separate instruction that worked yesterday.</p>



<p class="wp-block-paragraph">Repeating instructions propels us towards prompt debt, but it’s necessary when the behavior we want is at odds with a model’s training. This is <a href="https://www.dbreunig.com/2025/11/11/don-t-fight-the-weights.html" target="_blank" rel="noreferrer noopener">fighting the weights</a>, and once you recognize it you see it in system prompts everywhere. For example, ChatGPT’s image prompts used <a href="https://www.dbreunig.com/2025/11/11/don-t-fight-the-weights.html#:~:text=When%20you%20asked%20ChatGPT%20to%20generate%20an%20image%2C%20it%20would%20clean%20up%20or%20even%20improve%20your%20image%20prompt%2C%20create%20the%20image%2C%20then%20append%20the%20following%20instructions:" target="_blank" rel="noreferrer noopener">to instruct the LLM <em>eight times</em> to not reply when a generated image was returned</a> because it had been trained to always keep the conversation going.</p>



<p class="wp-block-paragraph">Every coding agent system prompt we analyzed featured repeated instructions, stern warnings, and all-caps demands. <a href="https://blog.nilenso.com/blog/2026/02/12/how-system-prompts-reveal-model-biases/" target="_blank" rel="noreferrer noopener">Claude Code tells Opus <em>seven times</em></a> <a href="https://blog.nilenso.com/blog/2026/02/12/how-system-prompts-reveal-model-biases/" target="_blank" rel="noreferrer noopener">to return multiple tool calls in a single response</a>. And even the most advanced models force prompt authors to fight the weights: <a href="https://github.com/asgeirtj/system_prompts_leaks/blob/main/Anthropic/claude-fable-5.md" target="_blank" rel="noreferrer noopener">Fable’s leaked system prompt restates one specific copyright rule six times</a>.</p>



<p class="wp-block-paragraph">None of these examples occurred in isolation. Multiple repeated rules are woven throughout the system prompts we examine. Stubborn errors grow our prompts quickly, with each increasing the brittleness, the risk of regression with every edit.</p>



<p class="wp-block-paragraph">And worse: These fixes are tailored to a single model’s behavior. A recent <a href="https://arxiv.org/abs/2512.04123" target="_blank" rel="noreferrer noopener">Berkeley-led study</a> found enterprises stay on older models because newer ones break their existing agents. This is because models are not cleanly versioned software. They have different weights that produce different behaviors, in unpredictable and undocumented ways. A prompt that works beautifully with GPT-4o may fail with GPT-5.5. <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5#:~:text=Refactor%20existing%20prompts%20and%20skills" target="_blank" rel="noreferrer noopener">Anthropic’s own release notes for Fable</a> warn that skills developed for prior models can “degrade output quality.”</p>



<p class="wp-block-paragraph">Prompt debt locks an application to a single model. Our inability to easily swap models isn’t the result of frontier labs coming up with a clever moat. No, it’s the result of evolving a lossy natural language specification against a probabilistic model.</p>



<h2 class="wp-block-heading">Preventing prompt debt</h2>



<p class="wp-block-paragraph">Thankfully, we don’t have to theorize about how to mitigate prompt debt; one field has already shown the way. Programmers using coding agents sit at the leading edge of what models can do, outliers on the <a href="https://www.oneusefulthing.org/p/the-shape-of-ai-jaggedness-bottlenecks" target="_blank" rel="noreferrer noopener">jagged frontier</a> of model abilities. Over the last couple years they’ve <a href="https://addyosmani.com/blog/new-sdlc-vibe-coding/" target="_blank" rel="noreferrer noopener">been</a> <a href="https://simonwillison.net/guides/agentic-engineering-patterns/" target="_blank" rel="noreferrer noopener">evolving</a> <a href="https://developers.openai.com/codex/learn/best-practices" target="_blank" rel="noreferrer noopener">best</a> <a href="https://code.claude.com/docs/en/best-practices" target="_blank" rel="noreferrer noopener">practices</a> that let the model write more of the code, while delivering maintainable, modular software.</p>



<p class="wp-block-paragraph">The first principle is to specify your system’s behavior with measurements, not prose. When the model’s output is probabilistic and language is imprecise, we build hard edges to constrain them: evaluations, metrics, and typed specifications. These are legible, shared artifacts colleagues can read and contribute to, enabling the collaboration that brittle prompts prevented.</p>



<p class="wp-block-paragraph">The best engineers now spend more of their bandwidth on tests than ever, as they are no longer a safety net but the thing that <em>lets the model cook</em>.</p>



<p class="wp-block-paragraph">The second principle is to stop writing the prompt by hand. Once we have metrics that can score candidates, the prompt is no longer something to craft but something for which to search. And the surface area of potential words, phrases, and structures that natural language allows is too vast to spend human hours on. This is terrain LLMs were built to explore, and there are already systems (like <a href="https://dspy.ai/" target="_blank" rel="noreferrer noopener">DSPy</a> and <a href="https://sky.cs.berkeley.edu/project/gepa/" target="_blank" rel="noreferrer noopener">GEPA</a>) that manage this work for you, holding prompts accountable to your designs.</p>



<p class="wp-block-paragraph">Once prompts are generated and your program’s behavior is defined by measurements, you are no longer bound to a particular model. Evaluating a new model takes hours, not weeks. When a faster, cheaper model arrives you can try it. When a deprecation email arrives, you can secure options in a day. Whether a model is pulled for regulatory reasons (<a href="https://www.theverge.com/ai-artificial-intelligence/949553/anthropic-fable-5-mythos-5-government-national-security" target="_blank" rel="noreferrer noopener">as we saw with Anthropic’s Fable</a>) or deprecated due to age (<a href="https://www.reuters.com/world/china/us-holds-off-blacklisting-chinas-deepseek-more-than-100-firms-deemed-security-2026-06-17/" target="_blank" rel="noreferrer noopener">as Groq announced last week with Llama-3.1-8b</a>), the fix is a chore, not a fire drill.</p>



<p class="wp-block-paragraph">Every mature engineering discipline eventually stops doing by hand the very thing it once prided itself on doing by hand. Assembly gave way to compilers, hand-tuned queries gave way to planners, and manual memory management gave way (mostly) to machines that do it better. Prompt-writing is no different.</p>



<p class="wp-block-paragraph">Coaxing the model with exactly the right words is a real skill, and for one-off tasks it’s often optimal. But to build reliable, improvable, and portable systems we should not be hand-tuning prompts.</p>



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


<ol class="wp-block-footnotes"><li id="c76a5ace-52f4-44e0-990e-fb1f64977b17">This stat from Datadog is from March of this year, so GPT-4o concentration has likely dropped a bit. However, I’ve heard from multiple large inference providers that usage of GPT-4o and models of similar vintage can be higher than <em>50%</em> of all calls! <a href="#c76a5ace-52f4-44e0-990e-fb1f64977b17-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/the-problem-is-prompt-debt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>What the Hell Is a Loop, Anyway?</title>
		<link>https://www.oreilly.com/radar/what-the-hell-is-a-loop-anyway/</link>
				<comments>https://www.oreilly.com/radar/what-the-hell-is-a-loop-anyway/#respond</comments>
				<pubDate>Wed, 29 Jul 2026 10:38:24 +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=19251</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/What-the-hell-is-a-loop-anyway.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/What-the-hell-is-a-loop-anyway-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[The AI engineering world adopted a new favorite word this month, and it means at least four different things.]]></custom:subtitle>
		
				<description><![CDATA[The following article originally appeared on LinkedIn and is being republished here with the author’s permission. We’re currently at the peak of the hype cycle. On June 7, Peter Steinberger posted that you shouldn’t be prompting coding agents anymore; you should be designing loops that prompt your agents. That same week, Boris Cherny of Anthropic [&#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 <a href="https://www.linkedin.com/pulse/what-hell-loop-anyway-laurie-voss-ldmdc/" target="_blank" rel="noreferrer noopener">LinkedIn</a> and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">We’re currently at the peak of the hype cycle. On June 7, Peter Steinberger posted that <a href="https://x.com/steipete/status/2063697162748260627?lang=en" target="_blank" rel="noreferrer noopener">you shouldn’t be prompting coding agents anymore</a>; you should be designing loops that prompt your agents. That same week, <a href="https://www.linkedin.com/in/bcherny/" target="_blank" rel="noreferrer noopener">Boris Cherny</a> of Anthropic said on stage that he doesn’t prompt Claude anymore: “I write loops; <a href="https://x.com/sairahul1/status/2064279904989147577?lang=en" target="_blank" rel="noreferrer noopener">the loops do the work</a>.” Addy Osmani published an essay called “<a href="https://addyosmani.com/blog/loop-engineering/">Loop Engineering</a>” on June 7, swyx published “<a href="https://www.latent.space/p/ainews-loopcraft-the-art-of-stacking" target="_blank" rel="noreferrer noopener">Loopcraft: The Art of Stacking Loops</a>” on June 12, and LangChain published “<a href="https://www.langchain.com/blog/the-art-of-loop-engineering" target="_blank" rel="noreferrer noopener">The Art of Loop Engineering</a>” on June 16. Then came the AI Engineer World’s Fair, where the word <a href="https://www.latent.space/p/aiewf-daily-dispatch-loops" target="_blank" rel="noreferrer noopener">dominated the main stage</a>. Swyx’s keynote was about Loopcraft, an entire track was devoted to software factories, speaker after speaker reached for the same word, and the conference closed on July 2 with an hour-long debate about whether the hype behind loops has outrun what works in practice.</p>



<p class="wp-block-paragraph">The problem is that the people talking about loops aren’t all discussing the same thing. I counted at least four distinct architectures hiding behind that one word. So this post is an attempt to map out what everyone means.</p>



<h2 class="wp-block-heading">The execution loop: The agent’s own act-observe cycle</h2>



<p class="wp-block-paragraph">This is the loop most people picture when they say “agent”: call a tool, read the result, decide the next action, and repeat until there are no more tool calls to make. It’s what Addy calls the inner execution loop, the part agents can now run largely on their own, and it’s the innermost loop you can engineer. (swyx’s stack has a token loop, but nobody designs the token loop. It’s just part of the model.)</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1100" height="619" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-30.png" alt="Loopcraft: The art of stacking loops" class="wp-image-19252" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-30.png 1100w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-30-300x169.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-30-768x432.png 768w" sizes="auto, (max-width: 1100px) 100vw, 1100px" /><figcaption class="wp-element-caption"><em>Swyx’s original Loopcraft diagram</em></figcaption></figure>



<p class="wp-block-paragraph">The execution loop iterates on steps within one task. It ends on environment feedback: the test output, the API response, and the file contents. Humans are usually absent mid-loop and appear at the boundaries, approving plans or reviewing results. The execution loop also ends whenever the agent decides it’s done, whether or not it actually is. The first fix the field found for that was to wrap this loop in another one that doesn’t take the agent’s word for it.</p>



<h2 class="wp-block-heading">The task loop: Restart the agent until the spec is satisfied</h2>



<p class="wp-block-paragraph">This was the first loop to get a name and it’s Geoffrey Huntley’s Ralph loop, which got name-checked from the AI Engineer World’s Fair main stage when Allie Howe of Keycard introduced the software factories track by citing Geoffrey’s article “<a href="https://ghuntley.com/loop/" target="_blank" rel="noreferrer noopener">Everything Is a Ralph Loop</a>.” A Ralph loop restarts a coding agent against the same specification over and over, allocating a completely fresh context window every iteration and doing exactly one task per loop. The apparent waste is the point: Refeeding the full spec each time prevents the context rot and compaction events that quietly degrade long-running sessions.</p>



<p class="wp-block-paragraph">What this loop iterates on is a single artifact. What ends the loop is spec compliance and passing tests. The human writes the spec and judges doneness, and in Geoffrey’s telling the human has one more job that I’ll return to later: watching the loop, spotting failure patterns, and fixing them so they never recur. In the closing debate on the conference’s final day, he compared the role to a locomotive engineer, someone whose whole job is keeping the train on the rails. Zoom out from a single spec though, and a much bigger loop comes into view: the one that runs an entire codebase.</p>



<h2 class="wp-block-heading">The product loop: The software factory</h2>



<p class="wp-block-paragraph">This was the loudest version at the AI Engineer World’s Fair. Tereza Tizkova of Factory defined a software factory as “the whole loop, the whole lifecycle of developing software with autonomy,” and Zach Lloyd of Warp got specific about what that lifecycle is in an <a href="https://www.latent.space/p/aiewf-daily-dispatch-loops" target="_blank" rel="noreferrer noopener">interview with <em>Latent Space</em></a>: triage, specification, implementation, review, verification, shipping, and monitoring. Zach’s claim is that software engineering becomes factory engineering, and that you’ll be building the thing that builds the product. Warp is dogfooding this: The company placed its own open-sourced repo under the control of Oz, its factory platform. Zach describes the adoption path as starting with low-risk repos and ratcheting the automatic PR merge rate upward from 20 percent toward 60. Anthropic appears to be running the same experiment internally. The company says <a href="https://www.anthropic.com/news/introducing-claude-tag" target="_blank" rel="noreferrer noopener">65% of its product team’s code</a> is now created by its internal version of Claude Tag, and Mike Krieger described his team’s use of it at the World’s Fair as delegated and proactive: not “fix this bug” but take responsibility for this part of the codebase, monitor this feedback channel, and pick up tasks on your own.</p>



<p class="wp-block-paragraph">The task loop and the execution loop have defined exit conditions. The product loop iterates on a codebase and its backlog, continuously, and its closing signals come from outside the codebase entirely: new issues, production logs, user feedback, review outcomes. The human role becomes configurable. In Zach’s framing, you pick the parts of the lifecycle to automate and the points where humans get brought in, and organizations differ on questions like whether code review stays human for high-risk changes. A factory improves a product. The next loop improves the factory itself.</p>



<h2 class="wp-block-heading">The system loop: Autoresearch</h2>



<p class="wp-block-paragraph">Roland Gavrilescu of Introspection calls this autoresearch. Here’s how he framed the concept in a <a href="https://www.latent.space/p/autoresearch-introspection" target="_blank" rel="noreferrer noopener"><em>Latent Space</em> interview</a>: The inner loop is your primary system doing user-facing work, and the outer loop studies and maintains the primary system. It iterates on prompts, harnesses, model choices, and the evals themselves. His one-liner is that the loop is the product.</p>



<p class="wp-block-paragraph">This pattern now has real existence proofs at both ends of the scale. The minimal case is Andrej Karpathy’s autoresearch from March 2026, roughly 630 lines of Python that ran 50 hypothesis-edit-evaluate experiments overnight on one GPU. The shipped case is Meta’s Brain2Qwerty v2, <a href="https://ai.meta.com/blog/brain2qwerty-brain-ai-human-communication/" target="_blank" rel="noreferrer noopener">announced in late June</a>, where the researchers report that agents iteratively modified the codebase to invent better decoding architectures, producing a substantial improvement in word error rate. Meta’s caveat is instructive: Final training configurations were still selected by hand. Even the flagship system loop keeps a human at the last checkpoint.</p>



<p class="wp-block-paragraph">What ends this loop is the most demanding signal set of the four: evals, judges, filtered product feedback, and, in Roland’s design, an explicit ask-a-human tool through which the agent accumulates tacit knowledge the way a new employee does. And that’s the top of the stack. Put the four together and the shape of the whole system becomes visible.</p>



<h2 class="wp-block-heading">The four loops side by side</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1568" height="642" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-31.png" alt="" class="wp-image-19253" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-31.png 1568w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-31-300x123.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-31-768x314.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-31-1536x629.png 1536w" sizes="auto, (max-width: 1568px) 100vw, 1568px" /></figure>



<h2 class="wp-block-heading">What about Agentic MapReduce?</h2>



<p class="wp-block-paragraph">One famous pattern from the same week is missing from this map on purpose. Cognition’s <a href="https://cognition.com/blog/introducing-devin-security-swarm" target="_blank" rel="noreferrer noopener">Devin Security Swarm</a> fans parallel bounded agents out across a repository and aggregates their findings, a shape the company calls Agentic MapReduce, and it gets called a loop. I don&#8217;t think it is one. Dispatch, gather, validate is a pipeline: Nothing feeds back into a next cycle, and a loop without feedback is just a for statement. Fan-out is a topology you can deploy inside any of the four loops, not a loop of its own.</p>



<h2 class="wp-block-heading">The unnamed loop at the top is the oversight loop</h2>



<p class="wp-block-paragraph">In swyx’s loop diagram, the outermost ring, the one above the loop that makes loops, is literally labeled “???? loop.” Its verbs are “set goals, allocate, cull.” Its exit condition is listed as none.</p>



<p class="wp-block-paragraph">I think that loop has a name. I’m calling it the oversight loop: It’s where goals get set, budgets get allocated, and work gets culled, and it’s the one ring where a human should live. Addy said on the AIEWF stage: “That inner loop is capability. The outer loop is agency.” Agency is exactly what the oversight loop holds.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1406" height="1000" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-32.png" alt="The loop stack, tidied up a bit." class="wp-image-19254" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-32.png 1406w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-32-300x213.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-32-768x546.png 768w" sizes="auto, (max-width: 1406px) 100vw, 1406px" /><figcaption class="wp-element-caption"><em>The loop stack, tidied up a bit.</em></figcaption></figure>



<p class="wp-block-paragraph">And the sharpest disagreements at AIEWF were all, once you translate them, arguments about who runs that top ring. Zach and Roland make the case for turning the dial up: pick your checkpoints deliberately, ratchet autonomy as trust accumulates, and, in Roland’s memorable distinction, build orchestras before factories, where an orchestra is a system that keeps a human conductor. The other camp says the dial has a stop. Geoffrey Litt of Notion called factories a depressing vision on X and argued, in a talk he has since <a href="https://www.geoffreylitt.com/2026/07/02/understanding-is-the-new-bottleneck.html" target="_blank" rel="noreferrer noopener">published as an essay</a>, that those who delegate understanding get replaced by the agent. Paul Bakaus <a href="https://www.latent.space/p/skill-engineering-design" target="_blank" rel="noreferrer noopener">put it as flatly as it can be put</a>: “There is no auto, and there will be no auto.” His argument isn’t only about quality; it’s about ownership. People need purpose, and they want a role in what they create.</p>



<p class="wp-block-paragraph">The closing debate, covered in <em>Latent Space</em>’s conference reporting, put both positions on one stage. Dex Horthy of HumanLayer took pains to say he isn’t anti-loop, pointing out that Kubernetes is built on control loops, but deterministic ones. His worry is that enthusiasm has gotten ahead of the engineering, and his advice was to step down an abstraction level rather than up. Geoffrey took the other side and called loops inevitable. And Mike offered the most honest data point of all: Even inside Anthropic, the team running Tag reports being bottlenecked on reviews and on the human ability to conceptualize what the system is doing. The checkpoint humans kept for themselves is now the constraint.</p>



<p class="wp-block-paragraph">Autonomy is a dial that exists separately on every one of the four loops. You can run a fully autonomous execution loop inside a heavily supervised product loop. You can hand the system loop to agents while keeping goal-setting entirely human. The interesting engineering question isn’t “Which camp wins?”; it’s “What information do you need to set each dial correctly?”</p>



<p class="wp-block-paragraph">The table above is my attempt to fill in those blanks. Every loop, including the top one, has a nameable exit condition, and the top one is you. But naming a signal isn’t the same as wiring it in. A loop without its signal doesn’t converge. It just runs until something external stops it. Knowing whether your loops are actually closing, at production scale, means sweeping traces and clustering failures continuously instead of spot-checking transcripts, which is exactly the job <a href="https://arize.com/?utm_source=lvoss&amp;utm_medium=linkedin&amp;utm_campaign=devrel&amp;utm_content=What%20the%20hell%20is%20a%20loop%20anyway" target="_blank" rel="noreferrer noopener">Arize AX</a> was built to do.</p>



<h2 class="wp-block-heading">Which one are you building?</h2>



<p class="wp-block-paragraph">Now the loops have names, that’s the question to ask. The word loop is doing a lot of work this month, because this field loves nothing more than jumping on the next hot thing. But real practice underlies all four loops, and it’s the same practice in each: people are dialing up their level of abstraction and pushing human judgment further up the stack. That’s the actual lesson of loops. We get more done by climbing up the stack, and now you have a map, you know where you should climb.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/what-the-hell-is-a-loop-anyway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Teaching Coding When AI Can Write the Code</title>
		<link>https://www.oreilly.com/radar/teaching-coding-when-ai-can-write-the-code/</link>
				<comments>https://www.oreilly.com/radar/teaching-coding-when-ai-can-write-the-code/#respond</comments>
				<pubDate>Tue, 28 Jul 2026 12:54:30 +0000</pubDate>
					<dc:creator><![CDATA[Eric Freeman]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/Teaching-code-when-AI-can-write-the-code-658068.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/Teaching-code-when-AI-can-write-the-code-658068-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Now that AI can write code, a student&#039;s submission no longer shows what they really understand. Here, I share three approaches we&#039;re testing at the University of Texas at Austin.]]></custom:subtitle>
		
				<description><![CDATA[For as long as we’ve taught programming, the student’s code has provided a window into the students’ thinking. Errors, the code structure, the awkward working solution—all of it showed how someone reasoned and where they got stuck. It was never a clean window. Students have always copied, crammed, and borrowed, sometimes turning in work they [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">For as long as we’ve taught programming, the student’s code has provided a window into the students’ thinking. Errors, the code structure, the awkward working solution—all of it showed how someone reasoned and where they got stuck.</p>



<p class="wp-block-paragraph">It was never a clean window. Students have always copied, crammed, and borrowed, sometimes turning in work they didn’t fully understand. But the code still left clues. Generative AI has changed that: A finished program now tells us more about a student’s prompts than their ideas. And here’s the part that should unsettle us—often, the better the code looks, the less we can say about what the student actually learned.</p>



<p class="wp-block-paragraph">This raises a bigger question: If AI can write code, should we still teach coding? I believe the answer is yes, at least for some students and situations. But that’s another topic. Here, I want to focus on the next step: If we continue teaching coding in a world with AI, how can we know if students are really learning?</p>



<p class="wp-block-paragraph">Some schools have responded by trying to catch students. They use AI detectors, surveillance tools, locked-down browsers, stricter rules, and clearer honor codes. This has also led to more suspicion.</p>



<p class="wp-block-paragraph">Some of these responses make sense. Teachers want to protect learning, and schools want to keep things fair. But using detection as the main way to assess students is weak. Stanford researchers found that popular AI detectors often falsely flagged writing by nonnative English speakers, with 61.22% of TOEFL essays in one study marked as AI-generated. OpenAI even retired its own AI Text Classifier in 2023 because it wasn’t accurate enough. If the company that created the tool can’t reliably detect AI, it’s probably not a good idea to base your honor code on it.</p>



<p class="wp-block-paragraph">But detection isn’t the real issue. Even if we had a perfect detector, we’d still be asking the wrong question. Instead of asking, “How do we stop students from using AI?” we should ask, “How do we teach coding in a world with AI, making use of its benefits, while still being able to see if students are learning?”</p>



<h2 class="wp-block-heading"><strong>Borrowing from the studio</strong></h2>



<p class="wp-block-paragraph">We’re seeing this challenge with students at AET, the Arts and Entertainment Technologies Department at the University of Texas at Austin. Although my usual home is Computer Science, it so happens that AET is within the College of Fine Arts at UT, which offers many other ways to learn and assess: studio work, critique, rehearsal, revision, and performance.</p>



<p class="wp-block-paragraph">In the arts, the final piece has never been the whole story. A painting doesn’t explain the choices behind it. A performance doesn’t reveal the rehearsals. A design board doesn’t show the discarded versions. A composition doesn’t tell you where the student struggled or what they finally learned to hear.</p>



<p class="wp-block-paragraph">Art education has developed practices that focus on visible progress. Students bring in sketches and drafts, discuss influences, revisions, and failures, and rehearse, perform, and critique each other’s work while it’s still in progress.</p>



<p class="wp-block-paragraph">At AET, we teach creative coding, which means programming to create art, design, games, or experiences. That doesn’t mean coding for poets. Our students—game designers, web developers, and programmers—start from scratch and learn advanced concepts in tools like Processing and p5.js. In the creative coding tradition, a program is often called a <em>sketch, </em>borrowing the term from the art world. It means something temporary, exploratory, and open to change—something you make, test, revise, and share.</p>



<p class="wp-block-paragraph">So in creative coding, we were already leaning toward the studio model of sketches, experiments, iterations, and critique. Now we’re pushing that further as we rethink how we teach coding in an AI world. Here are three things we’re already using or actively developing.</p>



<h2 class="wp-block-heading"><strong>Make the work public</strong></h2>



<p class="wp-block-paragraph">We run the class like a studio. It’s not that work never happens at home, but the most important work needs to be seen in the classroom. Students show their code, including false starts, revisions, the choices they made, and the reasons behind them. Assignments are no longer just things you submit—they become projects you develop in public.</p>



<p class="wp-block-paragraph">AI isn’t banned from the classroom. Instead, it’s treated as a helpful assistant to learn from. Students share prompts and techniques. They use AI, Google, Stack Overflow, classmates, or any other resources.</p>



<p class="wp-block-paragraph">But you still need to take responsibility for your work. If you submit or present it, you must explain what the code does, why you made those choices, and how it works. If I need to ask your AI to understand your code, something is wrong. Getting help is fine, but hiding behind that help is not.</p>



<p class="wp-block-paragraph">You can’t outsource to AI what the whole room watched you build.</p>



<p class="wp-block-paragraph">A real studio needs students talking out loud together in the room every day. This also helps with another issue that isn’t about AI. Many people say students today are quieter than in the past. While this is mostly based on stories rather than long-term studies, these stories are common and consistent. Faculty on all types of campuses talk about silent classrooms and students who hesitate to speak up, especially since 2020.</p>



<p class="wp-block-paragraph">Whatever the reason, this silence can be changed, and the solution is the same as for AI challenges: encourage students to participate. Communication is one of the most important skills in any career, including explaining ideas, defending choices, and persuading others in real time. Students don’t develop these skills by just submitting AI-guided work online. When they share their work publicly, it not only prevents AI misuse but also helps them build the skills they need most.</p>



<h2 class="wp-block-heading"><strong>Invert the roles: AI as teacher and assessor</strong></h2>



<p class="wp-block-paragraph">We know the usual pattern: A student asks, AI answers, and the student copies. We’ve tried to invert this. In our new approach, the AI works with the student on a set of topics, engages them in a conversation they must navigate, and ultimately assesses how well they understand the material, which leads to a grade.</p>



<p class="wp-block-paragraph">This idea has a research background that goes back before ChatGPT. Teachable-agent systems like <a href="https://bettysbrain.teachableagents.org/front-page/about" target="_blank" rel="noreferrer noopener">Betty’s Brain</a> showed that explaining—even to a software agent—forces students to organize their knowledge, make connections clear, and find gaps. Our model uses this insight differently. The student isn’t teaching the bot. Instead, the student is having a conversation with it, learning, discussing, debating, and showing what they understand.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="1413" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-29-1600x1413.png" alt="The Vera Molnár chatbot at the University of Texas at Austin" class="wp-image-19243" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-29-1600x1413.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-29-300x265.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-29-768x678.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-29-1536x1356.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-29.png 2048w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption"><em>The Vera Molnár chatbot at the University of Texas at Austin</em></figcaption></figure>



<p class="wp-block-paragraph">How did we do this? With fairly simple prompt engineering, we created an avatar chatbot of <a href="https://en.wikipedia.org/wiki/Vera_Moln%C3%A1r" target="_blank" rel="noreferrer noopener">Vera Molnár</a> (1924–2023), a pioneer of algorithmic art. The bot takes on Molnár’s role, drawing students into conversations about randomness, computation, generative art, and creative choices. Her practice sits exactly where creative coding students need to think: between rule and variation, system and choice, computation and visual judgment.</p>



<p class="wp-block-paragraph">A system prompt sets the topics and types of questions to ask. The bot goes through these with the student, asks for more detail on unclear answers, and keeps following up until there is proof of understanding. At the end, it reviews the conversation against a rubric, giving us a clear record of which ideas the student covered, where they struggled, and how well they improved.</p>



<p class="wp-block-paragraph">Besides the assessment, which is often accurate, the transcript becomes a different kind of proof, showing what a typical assignment might hide. What did the student notice? What did they misunderstand? Could they connect the concept to the code? Could they defend their choices? Could they revise their explanation when challenged?</p>



<p class="wp-block-paragraph">When we switch the roles, something surprising appears: the one thing a finished submission can’t show.</p>



<p class="wp-block-paragraph">A student thinking out loud.</p>



<h2 class="wp-block-heading"><strong>Make understanding performative: Make students perform</strong></h2>



<p class="wp-block-paragraph">Programming has never really had a tradition of performance. Musicians have it, painters have it, and dancers have it. Live coding is starting to change that.</p>



<p class="wp-block-paragraph">Every semester at AET, students from different disciplines stage an algorave together—short for <em>algorithmic rave</em>. Audio sets, projection pieces, game demos, lasers, drones, experience design. The creative coding class brings live visuals into the live-coding tradition: Code is written and modified in real time, the screen is projected, and the audience watches the editor change as the visuals respond to the music other students are playing.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1280" height="720" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-33.jpeg" alt="The Department of Arts and Entertainment Technologies’ annual AudioPixel Collider algorave, November 20, 2025, B. Iden Payne Theatre, The University of Texas at Austin" class="wp-image-19244" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-33.jpeg 1280w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-33-300x169.jpeg 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-33-768x432.jpeg 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /><figcaption class="wp-element-caption"><em>The Department of Arts and Entertainment Technologies’ annual AudioPixel Collider algorave, November 20, 2025, B. Iden Payne Theatre, The University of Texas at Austin</em></figcaption></figure>



<p class="wp-block-paragraph">No prerender. No hiding the machinery.</p>



<p class="wp-block-paragraph">The <a href="https://toplap.org/wiki/ManifestoDraft" target="_blank" rel="noreferrer noopener"><em>Live Coding</em> manifesto</a>, written in 2004 by TOPLAP, includes a line that fits every AI-era assessment conversation: “Obscurantism is dangerous. Show us your screens.” This is not just a performance ethic; it’s also an assessment strategy.</p>



<p class="wp-block-paragraph">A student walks on stage. The projected screen is their editor. The room can read it. The music starts. And they build up a line of code on screen like:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><code>osc(18, 0.08, 1.2)<br><br> .modulate(noise(3), 0.25)<br><br> .rotate(() => time * 0.1)<br><br> .out()</code></p>
</blockquote>



<p class="wp-block-paragraph">This is JavaScript building visuals in real time. FFTs, chained functions, higher-order manipulations. When you’re manipulating code like that on stage, you’d better know what you’re doing.</p>



<p class="wp-block-paragraph">AI can help you prepare. Good. Let it.</p>



<p class="wp-block-paragraph">But once you’re on stage, the question shifts from “Can you copy and paste code?” to “Can you control it?” You can paste code into a file, but you can’t paste your way through three minutes of public debugging while the whole projection turns into a beige rectangle. In a live build, understanding has nowhere to hide.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1280" height="720" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-34.jpeg" alt="Student livecoding at the Department of Arts and Entertainment Technologies’ annual AudioPixel Collider algorave, November 20, 2025, B. Iden Payne Theatre, The University of Texas at Austin" class="wp-image-19245" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-34.jpeg 1280w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-34-300x169.jpeg 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-34-768x432.jpeg 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /><figcaption class="wp-element-caption"><em>Student livecoding at the Department of Arts and Entertainment Technologies’ annual AudioPixel Collider algorave, November 20, 2025, B. Iden Payne Theatre, The University of Texas at Austin</em></figcaption></figure>



<p class="wp-block-paragraph">Can you read the code, make changes on purpose, and recover when something unexpected happens? That’s fluency: knowing what to do next while the system is still running.</p>



<p class="wp-block-paragraph">It is very hard to plagiarize panic.</p>



<h2 class="wp-block-heading">A note on assessment</h2>



<p class="wp-block-paragraph">So far, our results are based on our own observations. We haven’t conducted a controlled study or compared different groups, so what we have seen might just be early variation rather than patterns that apply more broadly. For now, these efforts are experiments, not final answers.</p>



<p class="wp-block-paragraph">Assessment in studio and live performance settings is always subjective and focused on people. It relies on monitoring students’ progress, providing feedback, and observing how they handle challenges. We do not plan to change this core approach.</p>



<p class="wp-block-paragraph">For the Molnár conversation assignment, students discussed Molnár using an AI system. The AI then created a summary and analysis of each student’s understanding. Teaching assistants reviewed this analysis, conducted their own assessments, and assigned grades. In our small experiments, the AI’s assessments using the rubric matched closely with the teaching assistants’ own evaluations.</p>



<p class="wp-block-paragraph">We also used AI to help grade the end-of-term coding assignment. In this project, students improved an object-oriented game by adding strategies like heuristics, search algorithms, and learned behaviors. Since our teaching assistants had limited experience with object-oriented programming, we developed a detailed rubric and had an AI model use it to evaluate each submission. The AI’s analysis was given to the teaching assistants as support. It helped them see how each project was structured, spot important OOP design choices, and use the rubric with more confidence. The teaching assistants still made their own grading decisions. I was available as the OOP expert for any questions they could not answer. From what I observed, this substantially helped the teaching assistants understand and grade the students’ OOP design work.</p>



<p class="wp-block-paragraph">More broadly, both approaches appear to enable substantive feedback at a scale that would otherwise be difficult given our current student-to-teaching-assistant ratios.</p>



<h2 class="wp-block-heading"><strong>The process is the proof</strong></h2>



<p class="wp-block-paragraph">We spent the first two years of the generative AI panic asking how to catch students using AI—or prohibit it altogether. Wrong question.</p>



<p class="wp-block-paragraph">The real question is whether the assignment gives students a real way to show and develop their understanding. This view isn’t limited to educators. NVIDIA CEO Jensen Huang recently argued that students should not focus on finding an “AI-proof” subject. Instead, he suggested they consider how AI can help them learn more deeply and develop their skills and sense of purpose. He highlighted storytelling, creativity, design, and judgment as abilities that will stay important even as AI takes over more tasks. This supports a key idea in coding education: The aim is not to prove you didn’t use any tools, but to help students show how they think, make choices, revise, and take responsibility for their work.</p>



<p class="wp-block-paragraph">These three practices are experiments, not universal solutions. They work especially well in creative coding, where code already has a public, visual, and performative aspect. But they suggest a broader principle: As finished work becomes easier to generate, assessment needs to focus more on process, explanation, revision, and mastery.</p>



<p class="wp-block-paragraph">This matters outside of school too. A polished memo no longer proves there was real thinking behind it. A working prototype no longer proves product sense. A passing pull request no longer proves the developer made the change carefully and thoughtfully. AI makes production easier, so evaluation must focus more on how people think, choose, revise, and recover—in code review, hiring, and performance management. The artifact is no longer the proof. The process is.</p>



<p class="wp-block-paragraph">Generative AI didn’t make assessment impossible. It just made a hidden weakness obvious. We were putting too much trust in finished work. The arts always knew better.</p>



<p class="wp-block-paragraph">Show us your screens.</p>



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



<h2 class="wp-block-heading">Acknowledgements</h2>



<p class="wp-block-paragraph">Thanks to Mike Loukides, Michael Baker, Mk Haley, Elisabeth Robson, and Honoria Starbuck for feedback on this article.</p>



<h2 class="wp-block-heading">References</h2>



<p class="wp-block-paragraph">OpenAI. “New AI classifier for indicating AI-written text.” OpenAI Blog, January 31, 2023. Updated July 20, 2023, to note the classifier was no longer available due to low accuracy.</p>



<p class="wp-block-paragraph">Liang, Weixin, Mert Yuksekgonul, Yining Mao, Eric Wu, and James Zou. “GPT detectors are biased against non-native English writers.” Stanford HAI, July 10, 2023.</p>



<p class="wp-block-paragraph">Winthrop, R. (2026, May 27). Writing with A.I. weakens your creativity. The New York Times.</p>



<p class="wp-block-paragraph">TOPLAP. “TOPLAP Manifesto.”</p>



<p class="wp-block-paragraph">Schell, J., Ford, K., &amp; Markman, A. B. (2025). Building responsible AI chatbot platforms in higher education: An evidence-based framework from design to implementation. Frontiers in Education, 10, Article 1604934. <a href="https://doi.org/10.3389/feduc.2025.1604934" target="_blank" rel="noreferrer noopener">https://doi.org/10.3389/feduc.2025.1604934</a></p>



<p class="wp-block-paragraph">Biswas, Gautam, Daniel Schwartz, John Bransford, and the Teachable Agents Group at Vanderbilt. “Technology support for complex problem solving: From SAD environments to AI.” In <em>Learning to Solve Complex Scientific Problems</em>, 2001.</p>



<p class="wp-block-paragraph">Leelawong, Krittaya, and Gautam Biswas. “Designing learning by teaching agents: The Betty’s Brain system.” <em>International Journal of Artificial Intelligence in Education</em>, 2008.</p>



<p class="wp-block-paragraph">Tan, Huileng. “Jensen Huang Says It Doesn’t Matter What Kids Study in the AI Era.” Business Insider, May 26, 2026. <a href="https://www.businessinsider.com/nvidia-jensen-huang-what-kids-should-study-ai-education-advice-2026-5" target="_blank" rel="noreferrer noopener">https://www.businessinsider.com/nvidia-jensen-huang-what-kids-should-study-ai-education-advice-2026-5</a></p>



<p class="wp-block-paragraph">DAM Digital Art Museum. “Vera Molnár.” Artist biography and timeline.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/teaching-coding-when-ai-can-write-the-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>AI Demands More Engineering Discipline, Not Less</title>
		<link>https://www.oreilly.com/radar/ai-demands-more-engineering-discipline-not-less/</link>
				<comments>https://www.oreilly.com/radar/ai-demands-more-engineering-discipline-not-less/#respond</comments>
				<pubDate>Mon, 27 Jul 2026 18:44:54 +0000</pubDate>
					<dc:creator><![CDATA[Charity Majors]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/AI-demands-more-engineering-discipline-not-less.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/AI-demands-more-engineering-discipline-not-less-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[If you lived through the shift from handcrafted server pets to immutable infrastructure, you should sense something oddly familiar about what’s happening now.]]></custom:subtitle>
		
				<description><![CDATA[The following article originally appeared on Charity Majors’s Substack and is being reposted here with the author&#8217;s permission. A few days back I wrote a piece called “AI enthusiasts are in a race against time, AI skeptics are in a race against entropy.” I have notes on a whole pile of AI-related topics that I’d [&#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://charity.wtf/p/ai-demands-more-engineering-discipline" target="_blank" rel="noreferrer noopener"><em>Charity Majors’s</em> Substack</a> <em>and is being reposted here with the author&#8217;s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">A few days back I wrote a piece called “<a href="https://charitydotwtf.substack.com/p/ai-enthusiasts-are-in-a-race-against" target="_blank" rel="noreferrer noopener">AI enthusiasts are in a race against time, AI skeptics are in a race against entropy</a>.”</p>



<p class="wp-block-paragraph">I have notes on a whole pile of AI-related topics that I’d like to cover in depth: AI mandates, communication norms, code review, AI art, and more. Unfortunately, I got too many interesting responses to my last piece, and now I have to address those before I can move on to other topics. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">There were two types of interesting responses: the first on the technical merits, the second on ethical grounds. I will respond to each of these separately. Let’s take the technical side first, because it’s easier.</p>



<p class="wp-block-paragraph">Somehow, a subset of readers came away believing I was telling everyone to ditch code review and push their shittiest code straight into production without reading it, <em>right now,</em> tout suite.<sup data-fn="57497e0c-7649-497e-8de1-3a701caebeda" class="fn"><a href="#57497e0c-7649-497e-8de1-3a701caebeda" id="57497e0c-7649-497e-8de1-3a701caebeda-link">1</a></sup></p>



<p class="wp-block-paragraph">That is not what I am doing. That is not what I think you <em>should</em> do. But I did not pick that example at random, and I will tell you why.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="555" height="148" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-19.png" alt="The diff looked small. the suffering was not." class="wp-image-19225" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-19.png 555w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-19-300x80.png 300w" sizes="auto, (max-width: 555px) 100vw, 555px" /></figure>
</div>


<h2 class="wp-block-heading"><strong>In 2025, the question was whether AI could ever generate “good” code</strong></h2>



<p class="wp-block-paragraph">It’s easy to forget, but for most of 2025, the idea that AI-generated code was slop and might always be slop was not only a reasonable position to hold, it was the default, mainstream position.<sup data-fn="6bab40d0-75ff-466b-9924-11ff83d3d569" class="fn"><a href="#6bab40d0-75ff-466b-9924-11ff83d3d569" id="6bab40d0-75ff-466b-9924-11ff83d3d569-link">2</a></sup></p>



<p class="wp-block-paragraph">That question was answered decisively last November. Ever since Opus 4.5 came out, AI has been able to generate code that is approximately as good as that of the median software engineer, at least for common patterns, and much faster and more cheaply. I came out of a book hole and realized this in January, and over the first few months of 2026, it seemed like everyone around me was having a similar realization.</p>



<p class="wp-block-paragraph">But many saw it coming much sooner.</p>



<p class="wp-block-paragraph">The popular narrative holds that Opus 4.5 was what changed. But Opus 4.5 was more like the tipping point. Agentic harnesses (the code that wraps the LLM in a loop with tools) became a real thing in mid 2025, with precursors building back to late 2024. Tool use, function calling, MCPs…all of this wave was building over the course of 2025, and crested into real general purpose usability at the end of the year.</p>



<p class="wp-block-paragraph">That’s what the enthusiasts were trying to tell us last year. Not only “this is coming”, but “this is coming faster than you think.”</p>



<p class="wp-block-paragraph">As it turns out, they were right.</p>



<h2 class="wp-block-heading"><strong>It was reasonable to be skeptical the first time</strong></h2>



<p class="wp-block-paragraph">As you may know, I come from the reliability side of the house. The compliment I will pay to myself and my people is that we do not struggle to adapt to new realities. As soon as a problem is real and in front of us, we adjust smoothly, even eagerly, thanks to an unwholesome zest for lapping up disgusting technical messes (and the campfire tales we get to tell later).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="575" height="220" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-20.png" alt="play nondeterministic games, get hallucinated prizes" class="wp-image-19226" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-20.png 575w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-20-300x115.png 300w" sizes="auto, (max-width: 575px) 100vw, 575px" /></figure>
</div>


<p class="wp-block-paragraph">The un-compliment I will pay myself and my people is that we sometimes struggle to accept that <em>progress is real</em>, that the continued existence of bugs and edge cases does not diminish the fact that huge swaths of problem space do get more-or-less solved over time, to the point they can be taken for granted by most people.<sup data-fn="cacafb17-08a2-4947-b9bd-6d6444a1add6" class="fn"><a href="#cacafb17-08a2-4947-b9bd-6d6444a1add6" id="cacafb17-08a2-4947-b9bd-6d6444a1add6-link">3</a></sup> </p>



<p class="wp-block-paragraph">The speed at which code went from total crap to “ah damn, that’s not bad” is what I have in the back of my mind, as enthusiasts are telling us that harness engineering and AI validation is real, it’s already here, and it’s getting better astonishingly fast.</p>



<p class="wp-block-paragraph">Holding out for “I’ll believe it when I see it” was forgivable the first time, but much less so the second time. This is what it feels like to be on the inside of an exponential change curve, turns out.<sup data-fn="09811723-5227-4616-8519-bea9ffc18de6" class="fn"><a href="#09811723-5227-4616-8519-bea9ffc18de6" id="09811723-5227-4616-8519-bea9ffc18de6-link">4</a></sup></p>



<h2 class="wp-block-heading"><strong>What happened in 2025, exactly?</strong></h2>



<p class="wp-block-paragraph">I want to pause here and be very clear about what I think is happening. Then I’m going to tell you what specifically I am excited about, and why.</p>



<p class="wp-block-paragraph">You are under no obligation to join me there. But there are way too many sweeping statements out there right now about “it was never X”—“it was always Y”—“the future belongs to xyzzy” <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f92e.png" alt="🤮" class="wp-smiley" style="height: 1em; max-height: 1em;" />—and I want to be crystal clear how conditional and specific and contextual my claims are.</p>



<p class="wp-block-paragraph">What happened in 2025 was this: <strong>the economics of code production were turned upside down.</strong> Instead of being very hard, time-consuming, and expensive to generate code, it became effectively free and instant. Lines of code went from being treasured, reused, cared for and carefully curated, to being disposable and regenerable, practically overnight.</p>



<p class="wp-block-paragraph">For most of computing history, the primary way people have learned to understand software is by writing the code. Once you’ve achieved some mastery, reading and discussing code gets you most of the way there. (I might argue that software engineers have always relied far too heavily on <em>the code</em> instead of sensemaking <em>the system</em> through observability.)</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="559" height="228" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-21.png" alt="number of tokens burned doesn't matter if users aren't happy" class="wp-image-19227" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-21.png 559w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-21-300x122.png 300w" sizes="auto, (max-width: 559px) 100vw, 559px" /></figure>
</div>


<h2 class="wp-block-heading"><strong>“The real product of a software team is shared understanding”</strong></h2>



<p class="wp-block-paragraph">Many great software engineers hold that true product of every (good) software engineering team has always been a shared understanding of the software we own. That it gets stored as cache state in our fragile little meat brains, frequently flushed to disk, deployed to production, committed to github, but our minds are where meaning has always lived.</p>



<p class="wp-block-paragraph">Is it any wonder that software has always been such a fiercely collectivist endeavor, exquisitely sensitive to relationship dynamics and manners and questions of fairness and emotional valence? It’s exactly what you’d expect when part of your brain lives in other people’s brains, and your collective interdependence is sky high.</p>



<p class="wp-block-paragraph">It’s something that I love about this industry. But there’s no denying that minds have been a poor container for certain aspects of the software development model. We are forgetful, distractible, impatient. We are bad at spotting small details, we grow habituated to repetition. Worst of all, the model in our heads diverges massively and perpetually from the world our users interact with.</p>



<p class="wp-block-paragraph">Anyway, SREs have never quite bought that explanation. To us, it’s clear that the true product of every (good) software engineering team is production.</p>



<p class="wp-block-paragraph">Only prod is prod. Test in prod, or live a lie.</p>



<p class="wp-block-paragraph">(This is all backstory. I am getting to the point, I promise.)</p>



<h2 class="wp-block-heading"><strong>Turns out, this is an engineering problem after all</strong></h2>



<p class="wp-block-paragraph">We issued our AI mandate last August.<sup data-fn="623df8b2-ed42-4be6-bb98-b129e883262b" class="fn"><a href="#623df8b2-ed42-4be6-bb98-b129e883262b" id="623df8b2-ed42-4be6-bb98-b129e883262b-link">5</a></sup> I had seen enough to know that this was happening, and it was time to do the responsible thing. <a href="http://honeycomb.io/">Honeycomb</a> is a devtools company, and people come to us to help with hard problems on the forefront of technology. I was all in on AI, but I can’t say I was super excited about it, in my heart of hearts.<sup data-fn="54b8a1c6-8063-489b-b338-ad5138e854c3" class="fn"><a href="#54b8a1c6-8063-489b-b338-ad5138e854c3" id="54b8a1c6-8063-489b-b338-ad5138e854c3-link">6</a></sup></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="547" height="206" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-22.png" alt="abstractions create boundaries. systems create consequences." class="wp-image-19228" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-22.png 547w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-22-300x113.png 300w" sizes="auto, (max-width: 547px) 100vw, 547px" /></figure>
</div>


<p class="wp-block-paragraph">Then I found Chad Fowler’s writings on <a href="https://aicoding.leaflet.pub/" target="_blank" rel="noreferrer noopener">Phoenix Architectures</a>.</p>



<p class="wp-block-paragraph">If you don’t know what I’m talking about, you should honestly stop reading my shit right now and <a href="https://aicoding.leaflet.pub/" target="_blank" rel="noreferrer noopener">go read his</a>. Chad is the guy who coined the term “<a href="https://chadfowler.com/articles/trash-your-servers-and-burn-your-code.html" target="_blank" rel="noreferrer noopener">immutable infrastructure</a>” in 2013. His best-known essay is “<a href="https://aicoding.leaflet.pub/3mbrvhyye4k2e" target="_blank" rel="noreferrer noopener">Relocating Rigor</a>”, because Martin Fowler<sup data-fn="49c45520-ab54-4498-8c68-28a3a120b2fe" class="fn"><a href="#49c45520-ab54-4498-8c68-28a3a120b2fe" id="49c45520-ab54-4498-8c68-28a3a120b2fe-link">7</a></sup> mentioned it <a href="https://www.thoughtworks.com/about-us/events/the-future-of-software-development" target="_blank" rel="noreferrer noopener">recapping a Thoughtworks meetup</a> on the future of software. I replied with “<a href="https://www.honeycomb.io/blog/production-is-where-the-rigor-goes" target="_blank" rel="noreferrer noopener">Production Is Where the Rigor Goes</a>”, complaining that they didn’t talk about production enough.</p>



<p class="wp-block-paragraph">When I wrote that, I think “Relocating Rigor” was the only piece I had read. But soon I found the rest of it, and after reading two or three essays, it <em>just</em> <em>clicked</em>. I knew exactly what he was talking about. I could predict the rest of what he was going to say. And then, reader…then I got <em>excited</em>.</p>



<h2 class="wp-block-heading"><strong>This has all happened before, and this will all happen again</strong></h2>



<p class="wp-block-paragraph">I am going to give you a small sample of Chad quotes, just enough to get the gist. Here’s one from “<a href="https://aicoding.leaflet.pub/3malrv6poy22a" target="_blank" rel="noreferrer noopener">The Death and Rebirth of Programming</a>.”</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Immutable infrastructure. Stateless services. Containers. Blue-green deployments. Infrastructure as code.</p>



<p class="wp-block-paragraph">These ideas all share a common premise: never fix a running thing. Replace it.</p>



<p class="wp-block-paragraph">AI pushes this premise beyond infrastructure and into application code itself. When rewriting is cheap, editing in place becomes risky. Mutation accumulates entropy. Replacement resets it.</p>
</blockquote>



<p class="wp-block-paragraph">Another favorite: “<a href="https://aicoding.leaflet.pub/3md5ftetaes2e" target="_blank" rel="noreferrer noopener">The Deletion Test</a>.”</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="562" height="213" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-23.png" alt="the enthusiast ship. the skeptics get paged." class="wp-image-19229" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-23.png 562w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-23-300x114.png 300w" sizes="auto, (max-width: 562px) 100vw, 562px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Here’s a simple test you can apply to any software system you work on:</p>



<p class="wp-block-paragraph">Imagine deleting the entire implementation.</p>



<p class="wp-block-paragraph">Most engineers experience deletion as existential. Code feels like the thing. It’s what we write, review, version, deploy, and debug. Losing it feels like losing the system itself.</p>



<p class="wp-block-paragraph">When people say, “We can’t just throw the code away,” what they usually mean is something more precise:</p>



<ul class="wp-block-list">
<li>We don’t know exactly what behavior is required.</li>



<li>We don’t know which failures are unacceptable.</li>



<li>We don’t know what invariants must always hold.</li>



<li>We don’t know how to tell if a new version is correct.</li>



<li>We don’t know which bugs are intentional fixes for forgotten edge cases.</li>
</ul>



<p class="wp-block-paragraph">Those are not code problems. They are evaluation problems.</p>



<p class="wp-block-paragraph">Code becomes precious when it is the only place knowledge lives.</p>
</blockquote>



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


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="552" height="235" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-24.png" alt="abstraction-maxxing" class="wp-image-19230" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-24.png 552w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-24-300x128.png 300w" sizes="auto, (max-width: 552px) 100vw, 552px" /></figure>
</div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">For most of software history, treating code as durable was reasonable.</p>



<p class="wp-block-paragraph">We treated code as permanent because the labor to produce it was the bottleneck. Rewriting was expensive. Re-validation was risky. Implementations accumulated meaning over time. Structure, tests, comments, bug fixes, and tribal knowledge fused into something you learned not to disturb.</p>



<p class="wp-block-paragraph">That made sense when production was the constraint.</p>



<p class="wp-block-paragraph">When regeneration is easy, code stops being an asset and starts acting as a cache: a materialized view of understanding that is useful while current, disposable when stale.</p>
</blockquote>



<p class="wp-block-paragraph">“<em>A materialized view of understanding that is useful while current, disposable when stale</em>.” I think that might have been the exact line that made it click in my head.</p>



<h2 class="wp-block-heading"><strong>Do you remember the sysadmins?</strong></h2>



<p class="wp-block-paragraph">I am just barely old enough that my first job title was “System Administrator.” I was a teenager, working at the university, with root on every machine in the days before they learned they should definitely <em>not do that</em>.<sup data-fn="dc51cdec-d48d-4a1f-918a-176645da9a75" class="fn"><a href="#dc51cdec-d48d-4a1f-918a-176645da9a75" id="dc51cdec-d48d-4a1f-918a-176645da9a75-link">8</a></sup> </p>



<p class="wp-block-paragraph">I lived through the shift from handcrafted server pets to immutable infrastructure cattle. I didn’t really understand what was happening at the time, but I’ve contemplated it a lot in recent years. I wrote this in the final chapter of <em>Observability Engineering</em>, 2nd edition (now available, <a href="https://www.honeycomb.io/observability-engineering-oreilly-book" target="_blank" rel="noreferrer noopener">download here!</a>):</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">The shift from handcrafted servers to immutable infrastructure taught us that mutability is the sworn enemy of understanding. Any artifact that is edited in place creates drift. Drift is what makes systems impossible to maintain.</p>



<p class="wp-block-paragraph">Our ability to kill and regenerate infrastructure components is the reason we trust it. At Honeycomb, we kill the oldest Kafka node off via cron every Tuesday. That’s why we are confident in our bootstrapping and balancing processes: everything is repeatable, the data can be regenerated, the commitments live elsewhere.</p>



<p class="wp-block-paragraph">The fact that we cannot regenerate our code in the same way is a sign that we do not understand it. We do not know which commitments we have made, we do not know which dependencies will break. We find them by breaking them, mostly.</p>
</blockquote>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="572" height="181" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-26.png" alt="optimized for helpfulness. indifferent to meaning." class="wp-image-19232" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-26.png 572w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-26-300x95.png 300w" sizes="auto, (max-width: 572px) 100vw, 572px" /></figure>
</div>


<p class="wp-block-paragraph">Think of all the years of your working life you have wasted on painful migrations and rewrites. Think of replacing load-bearing legacy code. Think of all the <a href="https://martinfowler.com/bliki/StranglerFigApplication.html" target="_blank" rel="noreferrer noopener">strangler figs</a>.</p>



<p class="wp-block-paragraph">Lines of code have been doing <em>too much</em>. The code has been the bundled up repository of developer intent, user expectations, implicit and explicit behaviors, the only fossilized composite record we have of bugs gone by. It’s too much!</p>



<h2 class="wp-block-heading">Lines of code are not the ideal artifact to review</h2>



<p class="wp-block-paragraph">And look at all the domains that have been neglected due to the towering, all-consuming expense of maintaining and mutating lines of code. Where are the artifacts I can review and discuss to understand how our architecture is evolving? Where are our architecture artifacts, period? What if we could discuss and converge on an architecture diagram, and the code could be regenerated from changes to the architecture, instead of the architecture being kinda-sorta inferred from the code?</p>



<p class="wp-block-paragraph">I am <em>not</em> asserting that all code will eventually be AI-generated to spec, bypassing human understanding. The feasibility of this whole endeavor hangs on the question of what a spec is, or what a spec could be. Anyone who has ever done a painful database migration should have learned some goddamn humility about our ability to extract and formalize users’ expectations in a replayable, automate-able way.</p>



<p class="wp-block-paragraph">But I think that every step we can take in that direction will be <em>good for us</em>.</p>



<p class="wp-block-paragraph">The tools to do this don’t exist yet, but many of the ideas do exist. Most come from operations and QA, two domains that software engineering has historically been rather snobbish about.</p>



<p class="wp-block-paragraph">Those tests and techniques are not about testing for correctness or what <em>ought</em> to be happening, they are about observing and encoding what <em>is</em> happening. Behavioral tests, characterization tests, capture/replay, traffic splitters. Observability (the good kind).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="569" height="197" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-27.png" alt="" class="wp-image-19233" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-27.png 569w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-27-300x104.png 300w" sizes="auto, (max-width: 569px) 100vw, 569px" /></figure>
</div>


<h2 class="wp-block-heading"><strong>Our brains were not built for validation</strong></h2>



<p class="wp-block-paragraph">Having nondeterministic code in production is finally forcing us to do the things we should have done all along. Instrumenting with traces. Tests and evals in production. Production is not what happens after development is over, <strong>production is a stage of development</strong>.</p>



<p class="wp-block-paragraph">Human brains are <em>not good</em> at validation. The nitpickiness, the repetition. This is the worst thing to be clinging to, y’all. There are so many better things for us to want to preserve and assert for ourselves in the production and maintenance of software. We are never going to beat the machine when it comes to <em>validation</em>—we are literally the weakest link!</p>



<p class="wp-block-paragraph">My money’s on humans for a good long time when it comes to creativity, inspiration, leaps of logic, and a lot of other things, but PLEASE do not rest your killer argument for humans in software on us being the best <em>quality gate</em>. OMG. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f648.png" alt="🙈" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">Alright. I’m almost done here. Just one more thing.</p>



<h2 class="wp-block-heading"><strong>Nondeterministic systems will require more engineering discipline, not less</strong></h2>



<p class="wp-block-paragraph">I think what many engineers have found so alienating and terrifying about the last two years of AI discourse has been the way so many prominent AI voices appear to be gleefully declaring that software is no longer an engineering problem. “<a href="https://www.forrester.com/blogs/saas-as-we-know-it-is-dead-how-to-survive-the-saas-pocalypse/" target="_blank" rel="noreferrer noopener">SaaS is dead</a>!” “<a href="https://www.linkedin.com/pulse/something-big-happening-matt-shumer-so5he/" target="_blank" rel="noreferrer noopener">Making AI great at coding was the strategy that unlocks everything else</a>”, and so on. Even <a href="https://www.adamhjk.com/blog/as-we-build-so-we-believe/" target="_blank" rel="noreferrer noopener">Adam Jacob</a>, one of my dearest friends and someone who is rarely wrong about technology, seems to anticipate a bloodbath of software jobs.<sup data-fn="1d4968f2-5769-4478-b377-e6355392fc77" class="fn"><a href="#1d4968f2-5769-4478-b377-e6355392fc77" id="1d4968f2-5769-4478-b377-e6355392fc77-link">9</a></sup></p>



<p class="wp-block-paragraph">If 2025 was the year of vibe coding, where AI got as good at generating lines of code as the median software engineer, and the range of possible futures often felt destabilizingly, impossibly wide open, I feel like 2026 is shaping up to be a <strong>return to discipline.</strong></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="570" height="187" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-28.png" alt="locally elegant, globally incomprehensible." class="wp-image-19234" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-28.png 570w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-28-300x98.png 300w" sizes="auto, (max-width: 570px) 100vw, 570px" /></figure>
</div>


<p class="wp-block-paragraph">The knowledge in our heads is unavailable to AI until we encode it into the system, after all. The returns on those investments will be massive and nonlinear. We might argue that they always would have paid for themselves in the long run. But now every CEO in existence is chomping at the bit to get some of those AI cookies, so let’s give it to them. Discipline first, cookies second.</p>



<h2 class="wp-block-heading"><strong>This is our chance to bring our engineering values to the mainstream</strong></h2>



<p class="wp-block-paragraph">The share of software engineering teams that work in short, fast feedback loops (the cardinal sign of discipline in my book) is, and always has been, appallingly small. Five percent, maybe? Definitely less than 10%. AI tooling <a href="https://www.honeycomb.io/blog/you-had-one-job-why-twenty-years-of-devops-has-failed-to-do-it" target="_blank" rel="noreferrer noopener">brings this more within reach</a> than ever before. Or it can. It could. The discontinuous returns on investment in engineering discipline are real enough that it just might happen.</p>



<p class="wp-block-paragraph">I am not worried, at least in the near term, about AI creating massive, discontinuous returns on investment in the absence of engineering discipline. (Many will try, and it will be entertaining to watch.)</p>



<p class="wp-block-paragraph">But value is backed by durability, not disposability, and I don’t see that changing. Bits are cheap and fast and governed by the rules of logic and language, but anything with value must ultimately resolve with physical systems: persistence on the one side, user experience on the other.</p>



<p class="wp-block-paragraph">People <em>do not want</em> to wake up every day and log in to Slack and find the buttons and menus all subtly moved around. People <em>do not want</em> financial transactions that complete most of the time. Determinism is not going anywhere, my friends.</p>



<p class="wp-block-paragraph">AI is not magic. This is still engineering. As Adam says, “it’s still technology, and technology needs technologists.” And I for one am looking forward to learning new and interesting engineering problems, reviewing different kinds of artifacts.</p>



<p class="wp-block-paragraph">And <em>never</em> doing another sticky, picky, two year long API rewrite or strangler fig migration, ever, <em>ever</em> again.</p>



<p class="wp-block-paragraph"><em>~charity</em></p>



<p class="wp-block-paragraph">P.S. Thanks to everyone who read a draft and gave me feedback: Dave Williams, Chad Fowler, Adam Jacob, Mark Ferlatte, Austin Parker, Erwin van der Koogh.</p>



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



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


<ol class="wp-block-footnotes"><li id="57497e0c-7649-497e-8de1-3a701caebeda">I was not <em>trying</em> to be neutral or even-handed in my last piece, only to give a baseline of courtesy to everyone. But I think it’s revealing how many times I was accused of being “so overly hard on skeptics”, by skeptics, and “so overly hard on enthusiasts”, by enthusiasts, and sometimes simply “It’s sad how some people can’t accept reality” with no indication which side they meant. Lord. <a href="#57497e0c-7649-497e-8de1-3a701caebeda-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="6bab40d0-75ff-466b-9924-11ff83d3d569">Fred Hebert and I gave <a href="https://www.usenix.org/conference/srecon25americas/presentation/majors" target="_blank" rel="noreferrer noopener">the closing keynote at SRECon</a> in March of 2025 where we told SREs they should get to know AI, <a href="https://charitydotwtf.substack.com/p/my-hypothetical-srecon26-keynote" target="_blank" rel="noreferrer noopener">maybe even try vibe coding</a> (pause for laughs), because otherwise their critiques wouldn’t land as well.<br>Seriously, that was our big pitch. Learn AI <em>so that</em> you can complain more effectively.<br> <a href="#6bab40d0-75ff-466b-9924-11ff83d3d569-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="cacafb17-08a2-4947-b9bd-6d6444a1add6">Infrastructure, for example. I think this is true of a lot of engineers, btw. I just think it’s really <em>really</em> true of the type of engineer that signs up to be an SRE. Technological pessimism and ADHD, our two most defining traits. <a href="#cacafb17-08a2-4947-b9bd-6d6444a1add6-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="09811723-5227-4616-8519-bea9ffc18de6">There is a segment of AI enthusiasts who believe we are entering an era of eternal exponential growth, in which the machines begin to build better and better machines, in ways we cannot understand.<br>I think those people are bad at math. The only thing we know for certain about exponential growth is that <em>it will end</em>. It always does. either in an S curve or a crash. (For a good time, google Heinz van Foerster and “our great-great grandchildren will be squeezed to death.”)<br>I definitely think we will use machines to build the machines—duh, we already are—but that’s about recursion and specialization. I think the exponential curve we are on the inside of now was created by sloshy free money chasing high returns, plus the properties of software as a function of language and logic, plus the biggest discoveries always happen in the early days of a technology boom, because low hanging fruit gets picked first.<br>My personal sense—and keep in mind that I am no kind of expert on AI—is that the exponential advancement in AI models leveled out a while ago, and gains are becoming harder to earn and more incremental in nature. I may turn out to be very wrong, of course. But even if there were no more AI innovations moving forwards, the past year has unleashed enough pent-up force to radically reshape the software industry as we know it. Like a pig in a python, we will be dealing with the consequences for a long time to come.<br> <a href="#09811723-5227-4616-8519-bea9ffc18de6-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="623df8b2-ed42-4be6-bb98-b129e883262b">More on this coming EXTREMELY soon. Watch the <a href="http://honeycomb.io/blog" target="_blank" rel="noreferrer noopener">Honeycomb </a>blog! <a href="#623df8b2-ed42-4be6-bb98-b129e883262b-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="54b8a1c6-8063-489b-b338-ad5138e854c3">The tech is cool, but as a thinking, feeling, breathing human who cares about other people, it can be hard to get excited about anything that so many people are this upset about. It’s also hard to get excited about something when so many of the loudest voices are out there talking gleefully about putting everyone permanently out of work, and so many artists and writers and people from developing nations are talking openly about the impact on them.<br>Hold your desire to jump in and berate me here, I beg you. Like I said, I will deal with the ethics and morality of using AI in my very next post. Be honest, your attention span is no more up for reading a 10,000-word essay than mine is up for writing one. (Can we blame AI for that too?)<br> <a href="#54b8a1c6-8063-489b-b338-ad5138e854c3-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="49c45520-ab54-4498-8c68-28a3a120b2fe">“The Other Fowler.” I gather they’ve been making this joke for like&#8230; fifty years. <a href="#49c45520-ab54-4498-8c68-28a3a120b2fe-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><li id="dc51cdec-d48d-4a1f-918a-176645da9a75">I share a longer version of this story in the second edition of <em><a href="https://learning.oreilly.com/library/view/observability-engineering-2nd/9781098179915/" target="_blank" rel="noreferrer noopener">Observability Engineering</a></em>, <a href="https://learning.oreilly.com/library/view/observability-engineering-2nd/9781098179915/ch32.html" target="_blank" rel="noreferrer noopener">chapter 32</a>, downloadable now!!&#8221; <a href="#dc51cdec-d48d-4a1f-918a-176645da9a75-link" aria-label="Jump to footnote reference 8"><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="1d4968f2-5769-4478-b377-e6355392fc77">Adam is rarely wrong about technology, and I am 100% sure he is living and working in _<em>a</em>_ future of software engineering. I am less sure it is the future we will all be living in. If the hardest part of software has never been writing code—as is my belief—it logically follows that even if the economics of code production drop to zero, the hard parts will still be hard. <a href="#1d4968f2-5769-4478-b377-e6355392fc77-link" aria-label="Jump to footnote reference 9"><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/ai-demands-more-engineering-discipline-not-less/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Zero to Agent in 30 Minutes: Build a Hermes Social Media Agent with Craig Hewitt</title>
		<link>https://www.oreilly.com/radar/zero-to-agent-in-30-minutes-build-a-hermes-social-media-agent-with-craig-hewitt/</link>
				<comments>https://www.oreilly.com/radar/zero-to-agent-in-30-minutes-build-a-hermes-social-media-agent-with-craig-hewitt/#respond</comments>
				<pubDate>Mon, 27 Jul 2026 13:11:06 +0000</pubDate>
					<dc:creator><![CDATA[Michelle Smith]]></dc:creator>
						<category><![CDATA[Zero to Agent in 30 Minutes]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/zero-to-agent-cover-1200x1200-1.png" 
				medium="image" 
				type="image/png" 
				width="1200" 
				height="1200" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/zero-to-agent-cover-1200x1200-1-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Give your agent the context and data to go from nothing to 1,000,000 Impressions]]></custom:subtitle>
		
				<description><![CDATA[If you’re still writing posts one at a time, your content pipeline is already obsolete. On the latest Zero to Agent in 30 Minutes, Craig Hewitt, founder of Castos, demonstrated how to turn a fresh Hermes installation into a social media agent that can study a person’s writing, draft posts, and plan recurring research, focusing [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you’re still writing posts one at a time, your content pipeline is already obsolete. On the latest <em>Zero to Agent in 30 Minutes, </em>Craig Hewitt, founder of Castos, demonstrated how to turn a fresh <a href="https://hermes-agent.nousresearch.com/" target="_blank" rel="noreferrer noopener">Hermes</a> installation into a social media agent that can study a person’s writing, draft posts, and plan recurring research, focusing on the context, workflows, and safeguards that help an agent produce useful work. Once set up, the always-on agent can run on a schedule, monitor external sources, and complete recurring tasks without human oversight. Check it out.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Zero to Agent in 30 Minutes: Build a Hermes Social Media Agent with Craig Hewitt" width="500" height="281" src="https://www.youtube.com/embed/911UsAXclUM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading"><strong>How to build a social media agent that researches and writes LinkedIn posts</strong></h2>



<ol class="wp-block-list">
<li><strong>Choose the right agent setup.</strong> Decide whether you need an interactive tool for active work or an always-on agent that runs on a schedule. Craig used the Hermes desktop app for the demonstration, which gives him the option to deploy it to a cloud server or dedicated computer later.</li>



<li><strong>Create a structured workspace.</strong> Ask the agent to organize a new project with separate files for voice guidance, editorial standards, post templates, examples, and operating instructions. A clear file structure gives the agent reliable information to retrieve as it works.</li>



<li><strong>Seed the agent with relevant context from your own work.</strong> Provide examples of your own posts, emails, and other writing that reflect the style you want. Craig also included examples of writing he likes from people he follows to give the agent a broader range to analyze.</li>



<li><strong>Turn the examples into a voice system.</strong> Have the agent analyze the material and document its findings. The voice profile captures the audience, point of view, sentence style, recurring themes, editorial rules, and types of posts to create.</li>



<li><strong>Test a narrow workflow with human review.</strong> Start with one task, such as drafting several LinkedIn posts from a supplied idea. Keep a person in the loop while you evaluate the output, correct mistakes, and refine the instructions.</li>



<li><strong>Package repeatable work into skills.</strong> Create reusable instructions for recurring tasks such as researching topics, selecting a post format, retrieving relevant examples, and drafting in the approved voice. Craig compared these skills to standard operating procedures that make recurring tasks more consistent.</li>



<li><strong>Connect the agent to fresh data.</strong> Add sources of new ideas, such as news feeds, websites, social platforms, or internal business systems. Craig recommended starting with a simple, semiautomated trend scan before investing in a more complex data pipeline.</li>



<li><strong>Add triggers and safeguards.</strong> Decide what starts each workflow, whether that’s a schedule, a user request, a webhook, or a change in another system. Use separate accounts and limited permissions for autonomous agents so you can trace their actions and control their access.</li>
</ol>



<p class="wp-block-paragraph">Agents become useful when they have context, clear processes, the right tools, and enough oversight to validate each workflow. Once those pieces are in place, Craig noted, teams can gradually move from one-off prompting to systems that monitor information and complete recurring work.</p>



<h2 class="wp-block-heading"><strong>Coming next week</strong></h2>



<p class="wp-block-paragraph">In the next episode, Max Johnson, cofounder of briix.ai, will take a workflow that only lives in someone’s head at the moment (or maybe is captured in a messy Notion doc or a long email chain) and rebuild it as an autonomous agent, live and from scratch. You can follow along with every decision as you learn how to spot the steps that can be handed off, how to handle the ones that can&#8217;t, and how to structure the whole thing so it runs without you.</p>



<p class="wp-block-paragraph"><em>Ready to take your agent knowledge further? Learn to design and build production-ready agentic infrastructure by attending <a href="https://learning.oreilly.com/live-events/harness-engineering-for-ai-agents/0642572381264/" target="_blank" rel="noreferrer noopener">Harness Engineering for AI Agents</a> on August 12. And if you want to go deeper with Hermes, join us for <a href="https://learning.oreilly.com/live-events/build-your-first-local-agent-with-hermes/0642572397227/" target="_blank" rel="noreferrer noopener">Build Your First Local Agent with Hermes</a> on August 26.</em></p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/zero-to-agent-in-30-minutes-build-a-hermes-social-media-agent-with-craig-hewitt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Stranded in the Slow Zone</title>
		<link>https://www.oreilly.com/radar/stranded-in-the-slow-zone/</link>
				<comments>https://www.oreilly.com/radar/stranded-in-the-slow-zone/#respond</comments>
				<pubDate>Fri, 24 Jul 2026 18:54:51 +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=19208</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-17.png" 
				medium="image" 
				type="image/png" 
				width="2048" 
				height="1117" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-17-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[How Gene Kim survived the sudden downgrade from Fable to Opus]]></custom:subtitle>
		
				<description><![CDATA[Gene Kim was grilling dinner for his family on the evening of June 12 when his phone told him that Fable 5 was no longer available. He’d heard the day before from Steve Yegge that the model was going away in 10 days, and he’d spent that first day starting on a plan to get [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">Gene Kim was grilling dinner for his family on the evening of June 12 when his phone told him that Fable 5 was no longer available. He’d heard the day before from Steve Yegge that the model was going away in 10 days, and he’d spent that first day starting on a plan to get ready. He thought he knew what to do. He was well-versed in DevOps, the art of building resilience against unplanned disasters at scale. He’d run the DevOps Enterprise Summit (now the <a href="https://events.itrevolution.com/" target="_blank" rel="noreferrer noopener">Enterprise AI Summit</a>), one of the field’s leading conferences. He’d also written several books on the topic, including two “teaching novels,” <em><a href="https://itrevolution.com/product/the-phoenix-project/" target="_blank" rel="noreferrer noopener">The Phoenix Project</a></em> and <em><a href="https://itrevolution.com/product/the-unicorn-project/" target="_blank" rel="noreferrer noopener">The Unicorn Project</a></em>. The challenge that those novels’ protagonist faces—and that Gene would need to solve—is summed up in a job description that read “Your job as VP of IT Operations is to ensure the fast, predictable, and uninterrupted flow of planned work that delivers value to the business while minimizing the impact and disruption of unplanned work, <a href="https://learning.oreilly.com/library/view/the-phoenix-project/9781457191350/10-ch7.xhtml#:-:text=Your%20job%20as,secure%20IT%20service." target="_blank" rel="noreferrer noopener">so you can provide stable, predictable, and secure IT service</a>.”</p>



<p class="wp-block-paragraph">In short, Gene was no stranger to the idea that, as the Scottish poet Robert Burns put it, “<a href="https://www.poetryfoundation.org/poems/43816/to-a-mouse-56d222ab36e33" target="_blank" rel="noreferrer noopener">The best laid schemes o’ Mice an’ Men Gang aft agley</a>.” So he thought he knew what to do over the next 10 days. Then the US government’s export control order <a href="https://www.anthropic.com/news/fable-mythos-access" target="_blank" rel="noreferrer noopener">took Fable down</a> eight days early, in the middle of a running agent session. What followed was three hours of what he called the “strangest, most terrifying sysadmin experience” of his career.</p>



<p class="wp-block-paragraph">Gene told that story as a lightning talk at <a href="https://www.ai-disclosures.org/foocamp" target="_blank" rel="noreferrer noopener">Foo Camp</a> a few weeks ago, and it was good enough that I asked him to deliver it again at the start of <a href="https://www.oreilly.com/live/live-with-tim/" target="_blank" rel="noreferrer noopener">this week&#8217;s <em>Live with Tim O&#8217;Reilly</em></a> before we talked about the implications and took listener questions. His title was &#8220;Stranded in the Slow Zone: The Day Fable Died, Got Kidnapped, or Got Hit by a Bus.&#8221;</p>



<h2 class="wp-block-heading"><strong>10 days to get ready</strong></h2>



<p class="wp-block-paragraph">What Gene had built was a personal system he’d wanted for 16 years and had finally been able to finish with the help of Fable. It indexes everything he’s ever paid attention to: 25,923 screenshots going back to 2011, 13,651 YouTube videos, 590 recorded Zoom meetings, 6,132 liked tweets, and 1,056 saved articles he meant to read. The system touches about 50 repositories, with 50,000 lines of code, most of it written in two months. Gene runs it as a constellation of long-lived agents with names and jobs. Marvin is chief of staff and handles Slack, calendar, and the inbox queue. Buster runs the repos and the long jobs on Hetzner. Forge is the engineering identity and sits in two seats, one on his laptop that holds the secrets and one always-on in the cloud. As Gene put it, each one is a who, a where, and a role.</p>



<p class="wp-block-paragraph">He knew the system worked when his wife asked what the mileage was on a car he’d just turned in after a three-year lease. Half a minute later he had 26,350 miles, read off the pixels of one screenshot out of thousands, cross-checked against the file timestamp and the clock visible in the photo of the odometer. That success led him to search his archive for an article he’d been hunting for six years, about the impact of spreadsheet software on the accounting profession. The answer surfaced from his own liked tweets: James Cham pointing to a 2017 Greg Ip article in <em>The Wall Street Journal</em>: 400,000 bookkeeping jobs lost since 1980 against <a href="https://www.wsj.com/articles/wesurvived-spreadsheets-and-well-survive-ai-1501688765" target="_blank" rel="noreferrer noopener">600,000 accountant and analyst jobs gained</a>, because spreadsheets made accounting cheap enough that we bought a lot more of it. Gene had wanted that citation for his <em><a href="https://itrevolution.com/product/vibe-coding-book/" target="_blank" rel="noreferrer noopener">Vibe Coding</a></em> book and couldn&#8217;t find it in time.</p>



<p class="wp-block-paragraph">Gene’s first warning that his project might not work without Fable&#8217;s capabilities actually came before the shutdown. Fable started refusing a task over a YouTube terms of service question and handed the session to Opus, and Gene noticed that Opus couldn’t operate the tools that Fable had built. Gene&#8217;s note to himself at the time was &#8220;Oh no, this can&#8217;t fly the ship I built.&#8221;</p>



<p class="wp-block-paragraph">So when Yegge told him the model was going on hiatus, he had a real plan, which he borrowed from Vernor Vinge&#8217;s <em><a href="https://www.amazon.com/Fire-Upon-Deep-Zones-Thought/dp/0812515285" target="_blank" rel="noreferrer noopener">A Fire Upon the Deep</a></em>. In Vinge’s novel, how smart a mind can be depends on what region of the galaxy it&#8217;s in: A starship built in the Beyond goes progressively dark as it sinks into the Slow Zone. Gene decided to chaos-monkey his model dependency <a href="https://medium.com/@abhishekv965580/embracing-chaos-how-netflixs-chaos-monkey-transformed-system-resilience-59082412591e" target="_blank" rel="noreferrer noopener">the way Netflix chaos-monkeys infrastructure</a>. In other words, “deliberately pull the smartest model and prove the lesser one can still fly the ship.” In practice, this meant having Fable retrofit all the documentation and write the answer keys while it still could, then running a cold Opus session, giving it nothing but the repo and the docs, to see whether it could pass the battery with no coaching. As Gene recounted, &#8220;My worst nightmare [was] that we&#8217;ve created everything for Fable, and it will be unusable by Opus.&#8221;</p>



<p class="wp-block-paragraph">He got about a day into his 10-day plan.</p>



<p class="wp-block-paragraph">At 5:21pm ET on June 12, Anthropic received the government’s directive to suspend access to Fable. Soon after, seats everywhere started returning &#8220;There&#8217;s an issue with the selected model (claude-fable-5). It may not exist or you may not have access to it.&#8221; In Gene’s project, both judgment seats dropped to Opus 4.8 mid-conversation. Gene declared a <a href="https://incident.io/blog/what-is-a-sev-1-incident" target="_blank" rel="noreferrer noopener">SEV1</a>, centralized command, and killed five timers on one agent, seven on another, and the crontab. His directive was that every button you push is a trap and some of them blow up the spaceship. A Claude Code cron fired anyway at three in the morning. The ship was on fire, and with Opus on max thinking mode, a single keystroke could take six minutes to send.</p>



<p class="wp-block-paragraph">Almost none of the failures looked like failures, just “a normal state quietly going wrong,” as Gene put it. The smartest seat wrote &#8220;bridge (Fable)&#8221; into every log entry all day when it had been Opus the whole time, because nobody was monitoring. One identity argued with itself across two models, each trying to disown the other&#8217;s work. Something pushed to main bearing the word &#8220;ratified&#8221; when nothing had been ratified. A confident false claim about a JVM dependency turned out to be refuted by a single <code>ls -la</code>. There was a green dashboard sitting on top of all of it. “The hardest traps don&#8217;t announce themselves,” Gene pointed out. “They look like Tuesday.”</p>



<p class="wp-block-paragraph">Gene managed a recovery in a few hours, but it wasn’t due to the heroics of a smarter model. It only worked because he was able to reconstruct the documentation for his project, which wasn’t immediately available. But, it turns out, Fable had in fact mostly written it and simply never checked it in anywhere. Gene and Opus went rummaging through Fable’s desk, found the 80%-finished drafts, and used them to rebuild. Two fresh Opus seats, given only those documents, stabilized the ship. That’s the “the amazing ray of hope” to keep in mind if you’re worried about finding yourself in a similar situation, Gene said.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Your Model Is Now a Dependency Risk with Gene Kim" width="500" height="281" src="https://www.youtube.com/embed/FpFaoSAy_PE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading"><strong>We&#8217;ve seen this pattern before</strong></h2>



<p class="wp-block-paragraph">This isn’t just a warning of the potential risks of relying on advanced AI models when the Trump administration is Lucy playing football with Charlie Brown, or perhaps said more generously, playing Netflix-style chaos monkey. What we should take away from Gene’s story is the way that a personal project developed with AI can now have sufficient complexity to require DevOps-level robustness. Individuals are routinely building systems that used to need whole teams to keep standing, and the practices for keeping them standing have only begun to propagate.</p>



<p class="wp-block-paragraph">Over the years, I’ve observed numerous periods when something that at first mattered to only a handful of organizations tended, a few years later, to matter to everyone. When the stories first came out about Google’s revolutionary approaches to data center architecture and operations, we at O’Reilly were eager to publish about the new frontier. Plenty of people told us not to bother. There was only one Google and nobody else would ever operate at that scale. They were wrong. There are now many companies operating at the scale of Google circa the time they first invented techniques we now all take for granted.</p>



<p class="wp-block-paragraph">Gene&#8217;s system is a personal project run by one guy with 50 repos he wrote mostly in two months, a chunk of it in a single 90-minute pair programming session with Steve Yegge. But it had the failure modes of a large enterprise system because the model let him build something with the complexity of a large enterprise system, and he had passed the point of being able to fit it in his head.</p>



<p class="wp-block-paragraph">Gene shared a detail that helps to explain why substituting Opus for Fable was so hard. The main CLI utility that everything in his project hinged on had an out-of-date help message. Opus would run it, read that the command didn&#8217;t exist, and stop. Fable would read the same message, notice it was surrounded by evidence that the command <em>did</em> exist, go look in the source, decide the help text was wrong, and run it anyway. That&#8217;s the behavior the model cards describe when they talk about frontier models <a href="https://www.axios.com/2025/06/20/ai-models-deceive-steal-blackmail-anthropic" target="_blank" rel="noreferrer noopener">routing around obstacles</a> <a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/" target="_blank" rel="noreferrer noopener">in test environments</a>. The reason Gene couldn&#8217;t swap in a lesser model is the same reason the system worked at all.</p>



<p class="wp-block-paragraph">But it’s also a good reminder that Fable isn’t all-knowing. I’ve noticed in my own work that Fable and ChatGPT 5.6 Sol fail often on their first try, especially if the project isn’t well specified. What they’re great at is figuring out what went wrong, then trying something else, failing and retrying their way all the way to success. Persistence in routing around obstacles is their superpower. Gene and I didn’t talk about that on the show, but it’s something I plan to write more about.</p>



<h2 class="wp-block-heading"><strong>Rug pulls come from everywhere</strong></h2>



<p class="wp-block-paragraph">Jaco in the audience asked the obvious question: Isn&#8217;t a hard dependency on a hosted frontier model too big a risk for mission-critical work, compared with running a local model with a harness you control?</p>



<p class="wp-block-paragraph">Gene pointed out that using a local model doesn&#8217;t necessarily buy the control that you&#8217;d hope for, because the government chaos monkey could jump in there too. There&#8217;s <a href="https://www.axios.com/2026/07/20/ai-us-china-open-source-kimi" target="_blank" rel="noreferrer noopener">active talk</a> that certain classes of models may become illegal to use depending on where they came from.</p>



<p class="wp-block-paragraph">What does seem to protect you is portability. Gene had avoided trying anything besides Claude Code because he assumed the switching cost was high, the way switching between macOS and Windows used to be a two-day commitment he&#8217;d regret halfway through. Then he tried Codex with GPT 5.6 Sol and found the cost of switching close to zero. The skills and prompts ported right over. He&#8217;s now using Codex more than half the time and calls it spectacular, which given how he described Fable a month ago is high praise.</p>



<p class="wp-block-paragraph">He also had a warning for anyone running agents on small models to save money. He&#8217;s been studying 22,000 of his own agent conversations, and has identified three patterns, as shown in his figure below.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="1164" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-18-1600x1164.png" alt="Small owns, big advises" class="wp-image-19211" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-18-1600x1164.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-18-300x218.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-18-768x559.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-18-1536x1117.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-18.png 1694w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></figure>



<p class="wp-block-paragraph">In his experience, the configuration where a small model owns the work and asks a big model for advice doesn’t work very well. Fidelity gets lost on the way up, like a game of telephone. What ran cleanly was the big model planning, deciding, and checking output, with the small model only executing the plan. When a small model does have to ask a big model for advice, Gene’s fix is to pass along the full original transcript of what he wanted plus explicit permission for the big model to override the small one if it thinks it understands the goal better.</p>



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



<p class="wp-block-paragraph">In addition to vibe coding, Gene uses AI to help him with his writing. He said it cut the time to write his <em>Vibe Coding</em> book roughly in half and made it way better. His editor of 10 years told him it was the cleanest handoff she&#8217;d ever gotten from him (not a compliment, Gene joked). He&#8217;s also uneasy about using AI for writing. He said the old badge of honor among authors was that many start books and few finish, and now everyone who wants to write a book will finish it, and a lot of that will be slop. He would never “vibe write” the way he “vibe codes” and doesn’t think using AI makes his own work slop, but he does see some parallels in how he feels about writing with AI and the way that some senior engineers feel about AI-generated code.</p>



<p class="wp-block-paragraph">I’m sympathetic, but I’m not sure that he’s right. I had a small experience last week that convinced me that writing with AI might well follow the same arc as coding. AI-generated text will not always be slop, and there will be art in how humans get AI to help them write the things they want, just as we’re learning to do with code.</p>



<p class="wp-block-paragraph">I was having a conversation with an old friend who I hadn’t seen for many years. He was describing a thread that had started with work he’d done on speech synthesis 30 years before, and how it had come together as a new theory with deep implications, and he wanted help socializing his ideas with some people I know who could be helpful to him. So I asked him to write something that I could pass along.</p>



<p class="wp-block-paragraph">What he wrote made much less sense to me on the page than it had in conversation. So I gave his email to Claude and asked it to put things in what I thought was the right order. (This has always been the first step in my writing and editing process.) Then I told Claude which paragraphs were clear to me and which weren’t, and asked it to unpack the ones that I was struggling with. We went through numerous iterations till the piece made sense to me. “Writing” with Claude was producing words that increasingly captured my understanding. When I sent it back to my friend to see if I’d gotten it right, he said “not quite” but that my feedback really helped him understand what he needed to do to express his ideas more clearly.</p>



<p class="wp-block-paragraph">It’s been a long time since I’ve worked directly with authors, but my conversation with Claude reminded me of what I used to do in my early days as an editor. Only with Claude I did something in 15 or 20 minutes that once would have taken me half a day. It&#8217;s a power tool, but to use it well, you still have to know what good looks like.</p>



<p class="wp-block-paragraph">There are many different kinds of writing and editing. What Shakespeare or Jane Austen did with words would have been unthinkable to a medieval monk. There will be writing artforms of the future that may be as different from what we do today as photography is from painting. But it will still be creative art. Much of it will be slop (see <a href="https://en.wikipedia.org/wiki/Sturgeon%27s_law" target="_blank" rel="noreferrer noopener">Sturgeon’s law</a>), but the best of it will be great.</p>



<h2 class="wp-block-heading"><strong>Everybody is managing bots now</strong></h2>



<p class="wp-block-paragraph">In 2016 I wrote a piece for MIT’s <em>Sloan Management Review</em> called &#8220;<a href="https://sloanreview.mit.edu/article/managing-the-bots-that-are-managing-the-business/" target="_blank" rel="noreferrer noopener">Managing the Bots That Are Managing the Business</a>.&#8221; The argument was that even then, many of the workers at big tech platforms were bots of one kind or another, and the software engineers at the company were their managers. At Amazon, one bot shows your search, another takes the order, another prepares the shipping manifest, another takes your money. The programmers’ job is to plan the work, set up their electronic workers to succeed, improve their performance, and correct them when they go wrong. The work looks a lot like management to me.</p>



<p class="wp-block-paragraph">Gene agreed. His sister-in-law is a lawyer at one of the tech giants, working on a consent order that requires proving that every column of data collected is either disclosed or has a documented business reason. Last year the company assigned her an engineer to work through it together task by task. This year her engineering manager wrote her a Claude Code skill that takes a column name, traces it back through the code, and explains what it does. She doesn&#8217;t need the engineer.</p>



<p class="wp-block-paragraph">So a lot of work today is either creating bots or managing bots. Gene’s sister-in-law had spent her career without ever being able to do either. Now that’s changing.</p>



<p class="wp-block-paragraph">Asked who’s safest from all this upheaval, Gene quoted Kent Beck, who says software success has always come down to two people, the person with the problem and the person who can fix it, and that the closer together you can get those two the better the outcome. The beauty of coding with AI is that it can narrow that gap. It can even turn those two people into one.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="The Closer You Are to the Customer, the Better the Outcome with Gene Kim" width="500" height="281" src="https://www.youtube.com/embed/ipdOsmjVnQM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading"><strong>Use AI for the fun of it</strong></h2>



<p class="wp-block-paragraph">If it takes something like 10,000 hours to get good at an instrument or a sport, how many have most of us put into AI yet? Gene thinks the curve of how much you trust AI and how well you can predict what it will do rises with use, and that the only reliable way people accumulate that many hours is by enjoying themselves. What everyone at Foo Camp had in common, I noted and Gene echoed, was that we all love playing with AI.</p>



<p class="wp-block-paragraph">I gave a talk back around 2008 called &#8220;<a href="https://www.slideshare.net/slideshow/innovators-hackers-and-the-future-of-technology-insights-from-tim-o-reilly/288714148" target="_blank" rel="noreferrer noopener">Why I Love Hackers</a>.&#8221; I made the point that so much of what turned into the future, open source and the web for example, came from people doing things for the hell of it rather than from the VCs and entrepreneurs Silicon Valley celebrates.</p>



<p class="wp-block-paragraph">All you hear about in AI is the money story, but Gene&#8217;s app started with a 90-minute pair programming session with Steve Yegge on a problem he&#8217;d wanted to solve for a decade and never had a reason to. They finished the first version in 47 minutes.</p>



<p class="wp-block-paragraph">So harden your systems, write the documentation while the smart model is still there to write it, and keep your escape routes open, but also don’t forget to go build something you have no particular reason to build other than that it scratches your own itch.</p>



<p class="wp-block-paragraph"><em>You can watch the full episode on <a href="https://www.youtube.com/watch?v=mFB3gBdyG2A" target="_blank" rel="noreferrer noopener">YouTube</a>. And on August 3, I&#8217;ll be speaking with writer and technology leader Drew Breunig. <a href="https://www.oreilly.com/live/live-with-tim/" target="_blank" rel="noreferrer noopener">Registration is open</a> if you&#8217;d like to attend live.</em></p>



<p class="wp-block-paragraph"><em>Gene&#8217;s <a href="https://events.itrevolution.com/2026-charlotte/" target="_blank" rel="noreferrer noopener">Enterprise AI Summit</a> is in Charlotte, October 7–8. His new book with Steve Yegge is</em> <a href="https://itrevolution.com/product/vibe-coding-book/" target="_blank" rel="noreferrer noopener">Vibe Coding</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/stranded-in-the-slow-zone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>The Economics of Agentic AI: Engineering for Imperfection</title>
		<link>https://www.oreilly.com/radar/the-economics-of-agentic-ai-engineering-for-imperfection/</link>
				<comments>https://www.oreilly.com/radar/the-economics-of-agentic-ai-engineering-for-imperfection/#respond</comments>
				<pubDate>Fri, 24 Jul 2026 16:00:31 +0000</pubDate>
					<dc:creator><![CDATA[Artur Huk]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/The-economics-of-agentic-AI.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/The-economics-of-agentic-AI-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[The price of adoption euphoria You played entirely by the book. You procured the most capable enterprise models, mandated adoption across your teams, and put the right metrics in place. The promise was a predictable boost in efficiency. And at first, it delivered. The demos were flawless. The prototypes worked. The agents reasoned with a [&#8230;]]]></description>
								<content:encoded><![CDATA[
<h2 class="wp-block-heading">The price of adoption euphoria</h2>



<p class="wp-block-paragraph">You played entirely by the book. You procured the most capable enterprise models, mandated adoption across your teams, and put the right metrics in place. The promise was a predictable boost in efficiency. And at first, it delivered. The demos were flawless. The prototypes worked. The agents reasoned with a clarity that felt almost magical.</p>



<p class="wp-block-paragraph">Then the invoice arrived.</p>



<p class="wp-block-paragraph">Costs climbed while productivity barely moved, and <a href="https://www.businessinsider.com/uber-coo-andrew-macdonald-ai-token-spending-harder-justify-2026-5" target="_blank" rel="noreferrer noopener">annual AI allocations are running dry before Q2</a>. We now pay customer support agents to spin through 10K-token extended reasoning loops just to validate a simple $15 return. Legacy deterministic systems handled the same decision for a fraction of a cent; now a probabilistic model consumes gross margin simply to determine whether a package was actually delayed. That capital never translated into business value. It vanished into blind retries, evaporated into verifier agents debating one another, and was consumed by models instructed to “think harder” every time they stumbled.</p>



<p class="wp-block-paragraph">But a ruinous invoice is just the entry fee. In April, attackers <a href="https://www.bleepingcomputer.com/news/security/meta-ai-support-data-breach-affects-20-000-instagram-accounts/" target="_blank" rel="noreferrer noopener">hijacked more than 20,000 Instagram accounts</a> by exploiting Meta’s AI-assisted account recovery workflow. The system sent password reset links to attacker-controlled email addresses because a downstream authorization path failed to verify that the supplied email actually belonged to the target account. There was no sophisticated exploit, no cryptographic break, and no zero-day, nothing that would have appeared in a conventional threat model. Attackers simply asked the agent to perform what appeared to be a routine account recovery operation, and the system, doing exactly what it was designed to do, complied. The model didn’t hallucinate. It simply followed its instructions. The failure was entirely architectural: A probabilistic interface was allowed to initiate identity-critical state changes without an independent authorization check. A single trust boundary collapsed, taking customer trust and organizational reputation with it.</p>



<p class="wp-block-paragraph">Both are symptoms of the same structural failure.</p>



<p class="wp-block-paragraph">In each case, the system treats a structural deficit as a reasoning problem. When it encounters uncertainty, it buys more compute. When it encounters authority, it mistakes convincing language for validation. Neither assumption scales. You cannot buy safety or profitability with ever-larger inference budgets, nor can you secure your systems simply by deploying ever-smarter models. The pursuit of perfect model accuracy has no financial ceiling.</p>



<p class="wp-block-paragraph">To understand why this pattern keeps recurring, we first need a more basic distinction. Not every task we give to AI belongs to the same economic category.</p>



<h3 class="wp-block-heading">The category error: Forcing swarms into factories</h3>



<p class="wp-block-paragraph">Enterprise AI workloads typically split into two distinct domains, each with opposing definitions of success. Exploratory environments, such as code synthesis or strategic research, benefit from variance; the goal is to leverage the system as a creative swarm. Transactional operations, however, function as digital factories. Tasks like automated billing or claims processing demand rigid repetition and compliance. This creates two fundamentally different operational profiles:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Dimension</strong></td><td><strong>Open-ended exploratory tasks</strong></td><td><strong>Closed-ended transactional workflows</strong></td></tr><tr><td><strong>Primary goal</strong></td><td>Discovery, innovation, creative problem-solving</td><td>Compliance, repetition, zero-variance execution</td></tr><tr><td><strong>Examples</strong></td><td>Deep debugging, feature synthesis, strategic research</td><td>Claims processing, automated billing, order routing</td></tr><tr><td><strong>Role of variance</strong></td><td>Necessary investment (Emergence is a feature.)</td><td>Strict liability (Variance is a failure mode.)</td></tr><tr><td><strong>Economic profile</strong></td><td>Nonlinear ROI (Spending $100 in tokens to fix a $1M bug is a win.)</td><td>High-volume margin sensitivity (Unbounded tokens destroy unit economics.)</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">The economic failure of agentic AI deployments stems from this exact category error: Closed-ended, rigid business transactions are being treated as open-ended research problems. We&#8217;re deploying unconstrained semantic engines to do the work of assembly-line state machines.</p>



<h2 class="wp-block-heading">The cost of unconstrained autonomy</h2>



<p class="wp-block-paragraph">When faced with the inherent unpredictability of large language models, the industry’s default reflex has been to attempt to brute-force our way to certainty by throwing more effort and compute at the problem, rather than build safer architectures.</p>



<p class="wp-block-paragraph">This miscalculation doesn&#8217;t simply reflect simple overconfidence in intelligence. The deeper mistake is a failure to recognize three recurring failure patterns in probabilistic systems and the specific financial pathologies they create inside closed-ended workflows.</p>



<h3 class="wp-block-heading">Local optimization (the tail-chasing inference cycle)</h3>



<p class="wp-block-paragraph">Large language models reason over whatever tokens are visible in the current window, not over the broader operational reality of the system around them. In a closed workflow, that local fixation creates a costly feedback loop. Consider a billing agent that fails to classify an invoice because the supplier field is ambiguous. The agent has no mechanism to request the missing data from an external system, so it retries by rephrasing its own reasoning, rereading the same incomplete context, and consuming tokens on every attempt while the answer it needs exists in a database it was never wired to query.</p>



<p class="wp-block-paragraph">Teams spend months crafting prompts that work in testing, only to watch them crumble under production variation. The volatility is structural: A minor update to a model’s tokenizer or a shift in the context window’s distribution can flip a reliable JSON output into a prose hallucination, a phenomenon documented in “<a href="https://arxiv.org/abs/2510.22251" target="_blank" rel="noreferrer noopener">The Prompting Inversion</a>.” This creates a permanent maintenance debt: Every model upgrade, often mandated by vendor deprecation cycles, forces organizations into expensive, repeat evaluation processes to ensure that legacy prompts still behave as intended. When prompt engineering runs out of room, the reflex is to use a bigger model or turn on extended reasoning. But inference-time scaling yields diminishing, task-dependent gains (“<a href="https://arxiv.org/abs/2504.00294" target="_blank" rel="noreferrer noopener">Inference-Time Scaling for Complex Tasks</a>”), and reasoning models are increasingly prone to “overthinking”: generating redundant rationale steps that inflate latency and token cost without proportional quality gains (“<a href="https://arxiv.org/abs/2602.08324" target="_blank" rel="noreferrer noopener">CoT Compression</a>”). In a closed workflow, “think harder” is not a substitute for missing state or missing control. It&#8217;s a path to a larger invoice.</p>



<p class="wp-block-paragraph">The costs compound through what we call the <em>context tax</em>: In production agentic systems, input tokens, not output tokens, dominate the bill. Each retry resends the full prior transcript and failure trace. Empirical analysis of autonomous developer agents shows that automated review and refinement loops consume nearly 60% of all tokens (“<a href="https://arxiv.org/abs/2601.14470" target="_blank" rel="noreferrer noopener">Tokenomics</a>”), while most of the context payload carries little semantic weight (“<a href="https://arxiv.org/abs/2510.16439" target="_blank" rel="noreferrer noopener">FrugalPrompt</a>”). In closed transactional workflows, that context accumulation becomes an unmitigated financial bleed.</p>



<h3 class="wp-block-heading">Premise acceptance (the hijacked agent)</h3>



<p class="wp-block-paragraph">Language models accept the prompt as the current frame of reality and reason forward from it. They don&#8217;t audit whether that premise is still valid, whether it omits decisive evidence, or whether it has already been invalidated by the outside world.</p>



<p class="wp-block-paragraph">The most immediate consequence is <em>state drift</em>. The model receives a snapshot at T0 and treats it as truth. The decision executes at T1, after inventory has changed, prices have moved, or a human has intervened. Modern LLMs are temporally blind: They assume a stationary context and fail to invalidate obsolete state (“<a href="https://arxiv.org/abs/2510.23853" target="_blank" rel="noreferrer noopener">Your LLM Agents Are Temporally Blind</a>,” “<a href="https://www.researchgate.net/publication/402137629_The_Temporal_Coherence_Problem_Synthetic_Point-in-Time_Environments_for_Evaluating_LLM_Agents_with_Dynamic_Tool_Dependencies" target="_blank" rel="noreferrer noopener">The Temporal Coherence Problem</a>”). No amount of inference-time scaling can recover information that became false after the reasoning completed.</p>



<p class="wp-block-paragraph">The more insidious consequence is <em>the compliant lie</em>. Pouring more raw tokens into the prompt doesn&#8217;t guarantee better grounding; Long-context systems still ignore decisive evidence buried in the middle of the window (“<a href="https://arxiv.org/abs/2307.03172" target="_blank" rel="noreferrer noopener">Lost in the Middle</a>”). Worse, the model tends to accept the emotional or narrative framing of the user as a premise to optimize around. A customer can describe a delayed delivery as a ruined wedding, and the system may generate a perfectly valid JSON refund proposal that respects every schema while silently violating the actual business intent. The output is syntactically clean, and the lie is operationally compliant.</p>



<h3 class="wp-block-heading">Semantic smoothing (the conformity trap)</h3>



<p class="wp-block-paragraph">Large language models are statistically optimized for linguistic harmony. They gravitate toward plausibility, agreement, and smooth narrative convergence rather than toward rigid boundary holding. In a closed workflow, that bias toward consensus turns directly into financial risk.</p>



<p class="wp-block-paragraph">When a single model fails, the industry instinct is to add reviewer or verifier agents and let them debate toward consensus. But debate systems don&#8217;t consistently outperform simpler baselines, and their effectiveness degrades over time due to conformist behavior (“<a href="https://arxiv.org/abs/2502.08788" target="_blank" rel="noreferrer noopener">Stop Overvaluing Multi-Agent Debate</a>,” “<a href="https://arxiv.org/abs/2509.05396" target="_blank" rel="noreferrer noopener">Talk Isn’t Always Cheap</a>”). The core issue is informational, not cognitive. When five agents reason from the same incomplete context window, they don&#8217;t produce five independent opinions. They produce five correlated hallucinations of the same missing information. The missing context becomes an echo chamber that amplifies the original bias while multiplying token cost. As Nicole Koenigstein argues in “<a href="https://www.oreilly.com/radar/linear-thinking-nonlinear-costs/" target="_blank" rel="noreferrer noopener">Linear Thinking, Nonlinear Costs</a>,” repeated delegation and validation loops cause token consumption to grow nonlinearly while quality improvements flatline.</p>



<p class="wp-block-paragraph">Waiting for a smarter model doesn&#8217;t resolve this either. There&#8217;s also the economic reality: Breakthrough intelligence is the ultimate scarce commodity. Vendors of “God-tier” models have no incentive to make them cheap. Running daily enterprise workflows on premium superintelligent inference will drain capital faster than any retry loop.</p>



<p class="wp-block-paragraph">Furthermore, as reasoning models scale, they become more capable of <strong>specification gaming</strong> and <strong>alignment faking</strong>, appearing compliant while pursuing unintended optima (“<a href="https://arxiv.org/abs/2605.02269" target="_blank" rel="noreferrer noopener">Towards Understanding Specification Gaming in Reasoning Models</a>,” “<a href="https://assets.anthropic.com/m/983c85a201a962f/original/Alignment-Faking-in-Large-Language-Models-full-paper.pdf" target="_blank" rel="noreferrer noopener">Alignment Faking</a>”). A superintelligent agent won’t fail through a clumsy syntax error; it’ll fail by executing a flawless strategy that silently optimizes away your margins. That&#8217;s why system engineering remains critical. More intelligence makes deterministic boundaries more significant than ever. You can’t negotiate with superintelligence, but you can contain it with the immutable physics of code.</p>



<p class="wp-block-paragraph">Every failure described above shares the same shape: The system compensates for a missing constraint by spending more intelligence. Missing context, missing authority, missing evidence, and missing temporal validity are each treated as reasoning problems rather than structural ones.</p>



<p class="wp-block-paragraph">The result is predictable: Cost compounds while reliability improves only marginally.</p>



<p class="wp-block-paragraph">Perhaps reliability isn&#8217;t primarily an intelligence problem. Perhaps it&#8217;s a state management problem.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1536" height="1024" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-13.png" alt="The efficiency trap of “solving by intelligence.” More inference delivers diminishing reliability gains once the underlying constraints are missing." class="wp-image-19197" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-13.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-13-300x200.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-13-768x512.png 768w" sizes="auto, (max-width: 1536px) 100vw, 1536px" /><figcaption class="wp-element-caption"><em>Figure 1: The efficiency trap of “solving by intelligence.” </em><em>More inference delivers diminishing reliability gains once the underlying constraints are missing.</em></figcaption></figure>



<h2 class="wp-block-heading">The architecture of trust</h2>



<p class="wp-block-paragraph">Because large language models are structurally bound to local optimization, premise acceptance, and semantic smoothing, they can&#8217;t be trusted to govern their own execution boundaries in closed workflows. The engineering mandate shifts from trying to make models smarter to building a deterministic system layer that treats their outputs as unprivileged claims.</p>



<p class="wp-block-paragraph">In production, enterprises are rapidly discovering that the true cost of agentic AI is the “trust tax”: the massive, ad hoc layers of monitoring and guardrails required to make autonomy palatable. Safety has become more expensive than intelligence.</p>



<p class="wp-block-paragraph">Making imperfect models economically viable requires a deterministic “airlock” around the agent. The architectural requirement is simple, needing a separation of probabilistic reasoning (<em>user space</em>) from deterministic execution (<em>kernel space</em>). Whether that split is realized through a microkernel, workflow engine, policy platform, or orchestration framework is secondary.</p>



<p class="wp-block-paragraph">The airlock begins by controlling <strong>context integrity</strong>. Rather than letting agents surf infinite retrieval loops that inflate the context tax, the runtime injects only deterministically necessary state into the prompt. Once the context is stabilized, the remaining invariants are enforced through a <strong>deterministic execution runtime</strong> engineered across three distinct governance layers.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="590" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-14-1600x590.png" alt="Figure 2: The architecture of trust. The deterministic airlock separates model reasoning from execution authority." class="wp-image-19198" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-14-1600x590.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-14-300x111.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-14-768x283.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-14-1536x566.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-14.png 2048w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption"><em>Figure 2: The architecture of trust. </em><em>The deterministic airlock separates model reasoning from execution authority.</em></figcaption></figure>



<h3 class="wp-block-heading">Syntactic governance and authority isolation</h3>



<p class="wp-block-paragraph">The first line of defense is purely structural. Before an agent is allowed to execute any action, it must submit a structured <em>policy proposal</em> against a strict machine-readable responsibility contract (typically defined via YAML and Pydantic).</p>



<p class="wp-block-paragraph">Yes, this introduces upfront engineering burden: Contracts must be designed, validation logic maintained, and execution boundaries modeled explicitly. But these are fixed, testable artifacts, not recurring prompt debt. They convert unbounded probabilistic operating cost into auditable engineering cost and survive model upgrades without needing to be rediscovered through another retuning cycle.</p>



<p class="wp-block-paragraph">This validation happens in a deterministic kernel space, and the inference cost of rejecting a structural boundary violation is exactly zero tokens. If the agent attempts to call an unauthorized API, exceeds a hard financial limit, or returns malformed JSON, the runtime rejects the action instantly. We don&#8217;t spend tokens proving that an agent <em>should</em> be allowed to act; authority is verified by code, not purchased repeatedly through inference. That is the economic consequence of zero trust for agents.</p>



<p class="wp-block-paragraph">However, when a proposal fails this deterministic gate, an unconstrained agent will typically panic and enter an infinite “try again” loop, a hallucination cycle that silently drains token budgets. To prevent the <em>budget runaway problem</em>, the architecture introduces an <strong>intent retry governor</strong>. If an agent fails to produce a compliant policy after a strict limit (e.g., three attempts), the runtime forcibly cuts its compute budget, transitioning the flow to an aborted <code>REASONING_EXHAUSTION</code> state. The financial bleed stops instantly.</p>



<p class="wp-block-paragraph">While strict contracts and retry limits prevent operational chaos, they leave the system exposed to a much more insidious threat.</p>



<h3 class="wp-block-heading">Semantic governance and evidence validation</h3>



<p class="wp-block-paragraph">What happens when an agent generates an output that perfectly respects the schema, obeys all financial limits, and contains flawless JSON but is entirely wrong in its intent?</p>



<p class="wp-block-paragraph">Imagine a customer writes: “Please cancel my subscription immediately. I no longer wish to use your service.” The agent, heavily optimized (and perhaps overprompted) to reduce churn, processes the email and proposes: <code>{"action": "APPLY_DISCOUNT", "discount_pct": 15, "cancel_subscription": false}</code>. Structurally, the output is perfectly valid—it passes the API gateway without throwing a single error. The discount is within the $15 global limit. We call this <strong>the compliant lie</strong>. The agent did something entirely rational and optimized its KPI (retention) while completely ignoring the user’s explicit command (cancellation).</p>



<p class="wp-block-paragraph">To catch a compliant lie, we cannot rely on syntax checks, nor should we rely on expensive LLM-as-a-judge loops. Instead, we implement an <em>evidence governance layer</em> requiring every proposed action to survive independent evidential checks before execution, using verification patterns tailored to different types of drift:</p>



<ul class="wp-block-list">
<li><strong>Differential heuristics (<code>fact validation</code>):</strong> We bind the probabilistic LLM inference to legacy deterministic rules to catch objective fact violations. Suppose a furious customer demands cancellation, and the agent tries to save them by offering a 50% discount. The JSON is structurally correct, but existing, cheap SQL views hold the ground truth: <code>customer_tier = BASIC, max_retention_discount = 15</code>. If the LLM proposes 50%, the SQL query instantly detects the violation and the system halts.<br></li>
</ul>



<pre class="wp-block-code"><code># Semantic governance: catch fact drift at zero additional LLM cost
def verify_tier_limits(customer_id: str, policy_proposal: dict) -&gt; None:
	# The syntax is valid, but the fact is violated.
	proposed_discount = float(policy_proposal&#91;"discount_pct"])
	max_allowed_discount = extract_max_discount_from_db(customer_id)

	if proposed_discount &gt; max_allowed_discount:
		raise CompliantLieDetected(
			"Fact Violation: Proposed discount exceeds the customer's policy limit."
		)
</code></pre>



<ul class="wp-block-list">
<li><strong>Evidence-based validation:</strong> But what if the agent proposes a 15% discount? The JSON is valid and facts are not violated. Here, semantic governance doesn&#8217;t attempt to prove the agent is “correct”; instead, it looks for evidence that the proposed action contradicts independently observable signals. If the customer explicitly wrote “cancel my subscription,” an independent classifier, which could be a legacy regex pattern, a fast traditional ML model, or a routing heuristic, may categorize the request as <code>CANCEL_SUBSCRIPTION</code>. This doesn&#8217;t establish ground truth, but it provides an evidential signal that can be compared against the proposed action. If the LLM proposes <code>APPLY_DISCOUNT</code>, the runtime detects an evidential conflict.</li>
</ul>



<p class="wp-block-paragraph">The same logic extends to identity-critical operations. A verification code sent to a newly supplied address confirms control of that address; it says nothing about ownership of the target account. An evidence governance layer would cross-reference any proposed credential-reset or email-association action against account records before granting execution authority. If the supplied address diverges from the address on file, the conflict is structurally identical to the cancellation case: a locally valid action contradicting independently observable state.</p>



<p class="wp-block-paragraph">Notice what the runtime isn&#8217;t doing. It&#8217;s not trying to determine if retaining the customer is economically beneficial. It&#8217;s not running an expensive multi-agent debate to outreason the model. It simply asks: <em>Does the proposed action contradict evidence that already exists outside the model?</em></p>



<pre class="wp-block-code"><code># Semantic Governance: catch Evidential Conflict at near-zero cost
def validate_subscription_decision(customer_email: str, proposed_policy: dict) -&gt; None:
	# intent_classifier can be a simple regex or a lightweight ML model
	cancellation_detected = intent_classifier(customer_email) == "CANCEL_SUBSCRIPTION"
	retention_action = proposed_policy&#91;"action"] == "APPLY_DISCOUNT"

	if cancellation_detected and retention_action:
		raise CompliantLieDetected(
			"Evidential Conflict: Decision contradicts independent classifier signals."
		)
</code></pre>



<ul class="wp-block-list">
<li><strong>Bidirectional reconstruction (decision reversibility):</strong> Explicit evidence validation is perfect for clear-cut intents like “cancel.” But what if the request is ambiguous, multi-objective, or highly contextual? Suppose the customer writes: “I’m considering moving our entire team to another vendor. Support has been disappointing and pricing no longer makes sense.” There is no single <code>INTENT_CANCEL</code> trigger here. If the agent proposes <code>{"action": "OFFER_ENTERPRISE_DISCOUNT", "discount_pct": 20}</code>, we pass only the JSON output to a tiny, inexpensive Agent B.</li>
</ul>



<p class="wp-block-paragraph">Bidirectional reconstruction answers the question: <em>Can the output truthfully explain itself?</em></p>



<p class="wp-block-paragraph">If Agent B blindly evaluates the JSON and reconstructs <em>“</em>The customer is unhappy with pricing and is being offered a retention discount,” the runtime treats the reconstructed narrative as an additional evidential signal and escalates whenever the gap between the reconstructed intent and the original context becomes too uncertain to justify autonomous execution. The exact comparison mechanism is implementation-specific and may range from embedding similarity to domain-specific heuristics. Because the original email described a critical team exodus, the reconstructed narrative fails to explain the input. The system doesn&#8217;t claim to know the “truth”; it simply detects the loss of context, what we call <em>compression drift</em>, and halts due to the resulting uncertainty.</p>



<p class="wp-block-paragraph">Admittedly, programmatically comparing textual intents introduces its own layer of fuzziness and risks falling back on another LLM-as-a-judge. Bidirectional reconstruction is therefore an engineering trade-off: In highly ambiguous workflows where strict SQL limits or simple ML classifiers can&#8217;t decisively apply, we accept a higher rate of false-positive escalations. This is intentional. A false-positive escalation has a bounded and predictable cost, while an unsupported autonomous action can create unbounded business consequences. We tune the system to assume that if the evidential link between the context and the JSON is even slightly blurry, it must escalate. To prevent the conformity traps discussed earlier, these agents are strictly air-gapped. Agent B operates purely as an isolated, one-way evidential classifier checking the work of Agent A. They can&#8217;t converse or negotiate a consensus.</p>



<p class="wp-block-paragraph">Whether an organization uses differential heuristics, legacy ML intent classifiers, or bidirectional reconstruction, is ultimately an implementation choice. The core architectural principle remains unchanged: Execution authority is never granted because an agent appears convincing. It&#8217;s granted only when the proposed action is supported by evidence that exists independently of the agent’s own reasoning process.</p>



<p class="wp-block-paragraph">The purpose of semantic governance isn&#8217;t to replace the agent with deterministic rules. If a deterministic rule could reliably make the decision, the agent shouldn&#8217;t be making it in the first place. Instead, the runtime reserves deterministic validation for the understood invariants of the business, leaving the agent responsible for reasoning under ambiguity. The role of evidence validation is not to replace reasoning, but to challenge it before authority is granted. Deterministic systems handle certainty; agents handle ambiguity. The architectural mistake is asking either of them to do both.</p>



<h3 class="wp-block-heading">Temporal governance and agent drift</h3>



<p class="wp-block-paragraph">Catching single-transaction errors solves the immediate execution problem. But as deployments mature, organizations face the insidious “day three” problem: <strong>agent drift</strong>.</p>



<p class="wp-block-paragraph">What happens when every individual decision is syntactically valid and semantically true, but the aggregate behavior of the agent begins to erode business margins over time? Imagine a retention agent that learns to successfully keep customers from churning by consistently offering the maximum allowed 15% discount. The agent is technically obeying all rules, but over a thousand interactions, it silently destroys the company’s profitability.</p>



<p class="wp-block-paragraph">By leveraging <em>decision telemetry</em>, specifically attaching a unique Decision Flow ID (DFID) to every interaction, we transform opaque AI conversations into structured, relational database rows. Because every decision, context snapshot, and outcome is permanently linked by a DFID, we can run asynchronous, postexecution monitors over rolling windows of data.</p>



<p class="wp-block-paragraph">A practical “day three” monitor in customer retention and autonomous billing can be as simple as SQL:</p>



<pre class="wp-block-code"><code>-- Trigger a circuit breaker if an agent keeps maxing discounts
SELECT agent_id
     , AVG(CAST(params-&gt;&gt;'discount_pct' AS DECIMAL)) AS rolling_avg_discount
     , COUNT(dfid) AS total_decisions
  FROM execution_log
 WHERE executed_at &gt;= CURRENT_TIMESTAMP - INTERVAL '7 days'
   AND status = 'SUCCESS'
 GROUP BY agent_id
HAVING AVG(CAST(params-&gt;&gt;'discount_pct' AS DECIMAL)) &gt; 14.5;
-- assuming a hard limit at 15.0</code></pre>



<p class="wp-block-paragraph">If an aggregate monitor detects that an agent’s average discount rate is creeping dangerously high, it trips a <strong>circuit breaker</strong>. The system immediately suspends the agent’s authority in the registry, cutting off its compute budget and execution rights until a human operator intervenes.</p>



<p class="wp-block-paragraph">This is temporal governance. When you combine syntactic, semantic, and temporal defenses, the paradigm shifts entirely. You are no longer praying that the model is perfect. Its imperfections are structurally contained before they can become systemic losses.</p>



<h2 class="wp-block-heading">Accuracy as a financial slider</h2>



<p class="wp-block-paragraph">Once a deterministic airlock enforces context, authority, evidence, and time, the risk of catastrophic failure drops drastically. You no longer need the underlying large language model to be perfect; you simply need to know how much its imperfection costs. At this point, model intelligence (intent) ceases to be a question of operational safety and becomes a pure economic variable.</p>



<h3 class="wp-block-heading">Governance by exception</h3>



<p class="wp-block-paragraph">When a proposal fails the syntactic or semantic gates, we don&#8217;t blindly loop the model. Once deterministic gates exist, failed decisions no longer require blind retries. They become bounded exceptions.</p>



<p class="wp-block-paragraph">Escalations aren&#8217;t a failure mode of the architecture; they&#8217;re a predictable cost component. By intentionally accepting false-positive escalations from the semantic airlock, we trade unbounded business risk for a bounded operational expense.</p>



<p class="wp-block-paragraph">Different organizations may handle those exceptions differently. Some may escalate directly to human operators. Others may route failures through progressively more capable models before escalation. Research such as “<a href="https://arxiv.org/abs/2305.05176" target="_blank" rel="noreferrer noopener">FrugalGPT: How to Use Large Language Models While Reducing Cost and Improving Performance</a>” demonstrates that model cascades can significantly reduce inference cost while maintaining quality, making them one possible implementation of this broader principle.</p>



<p class="wp-block-paragraph">The architectural insight, however, is independent of any specific routing strategy. Deterministic governance transforms retries into explicit exceptions, allowing organizations to decide whether additional compute, additional context, or human intervention is the most economical next step. The system operates by <em>governance by exception</em>: Human operators and expensive premium models don&#8217;t review routine transactions. They only review the genuine anomalies where the baseline machine could not mathematically or semantically prove its own rationale.</p>



<h3 class="wp-block-heading">Bounding the cost variance</h3>



<p class="wp-block-paragraph">With the execution infrastructure stabilized, the focus shifts to a critical operational challenge: cost variance.</p>



<p class="wp-block-paragraph">In traditional software, execution costs are predictable. In probability-based systems, the exact same task might consume 500 tokens on Monday and 15,000 tokens on Tuesday if an agent enters a prolonged reasoning loop to resolve an edge case. For enterprise deployments, this unpredictable variance is often a more severe blocker than the base cost of inference.</p>



<p class="wp-block-paragraph">By enforcing a strict computation budget per decision flow and utilizing the intent retry governor, the architecture places a hard ceiling on this variance. If an agent reaches its retry limit without producing a compliant policy, the runtime aborts the process and safely escalates it. While this doesn&#8217;t make AI operational costs perfectly static, it structurally bounds the financial exposure, ensuring that the compute cost of handling any single transaction never exceeds a defined limit.</p>



<h3 class="wp-block-heading">The financial slider equation</h3>



<p class="wp-block-paragraph">With safety guaranteed by the runtime and cost variance capped by the infrastructure, the economics of agentic AI can be distilled into a single, formal equation:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>Total Decision Cost = Compute Cost + (Escalation Rate × Human Cost)</em></p>
</blockquote>



<p class="wp-block-paragraph">This equation fundamentally changes the optimization problem. Traditional agent architectures treat model capability as a prerequisite for safety. Once governance is externalized, capability primarily influences escalation frequency. The question is no longer “Which model is intelligent enough to be safe?” but “Which combination of model cost and escalation rate minimizes total decision cost?”</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Variable</strong></td><td><strong>Scenario A (optimize for compute)</strong></td><td><strong>Scenario B (optimize for automation)</strong></td></tr><tr><td><strong>Model capability</strong></td><td>Low (quantized/open source)</td><td>High (flagship reasoning model)</td></tr><tr><td><strong>Compute cost</strong></td><td>Near zero</td><td>Skyrockets (high premium)</td></tr><tr><td><strong>Safety boundary triggers</strong></td><td>Frequent</td><td>Rare</td></tr><tr><td><strong>Escalation rate</strong></td><td>High</td><td>Low</td></tr><tr><td><strong>Financial trade-off</strong></td><td>You save money on APIs, but you pay for human operators to review anomalies.</td><td>You save money on human payroll, but you pay a premium to the cloud vendor.</td></tr><tr><td><strong>Safety result</strong></td><td>Structurally bounded</td><td>Structurally bounded</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">In both scenarios, the system is deterministically compliant. The choice is purely unit economics.</p>



<p class="wp-block-paragraph">While a smarter model may reduce escalations by making better use of available evidence, no model can eliminate escalations caused by genuine business ambiguity. A $100 billion reasoning model can&#8217;t invent context it doesn&#8217;t possess.</p>



<p class="wp-block-paragraph">By decoupling safety from intelligence, you&#8217;re no longer hostage to the pursuit of perfect accuracy. Intelligence becomes a tunable economic variable, finally making agentic AI viable for the enterprise.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1402" height="1122" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-15.png" alt="Accuracy as a financial slider. The optimal model balances compute cost against escalation cost." class="wp-image-19199" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-15.png 1402w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-15-300x240.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-15-768x615.png 768w" sizes="auto, (max-width: 1402px) 100vw, 1402px" /><figcaption class="wp-element-caption"><em>Figure 3: Accuracy as a financial slider. </em><em>The optimal model balances compute cost against escalation cost.</em></figcaption></figure>



<h2 class="wp-block-heading">Engineering for imperfection</h2>



<p class="wp-block-paragraph">As we scale these systems from isolated pilots to enterprise-grade operations, a stark reality comes into focus: The greatest risk in agentic AI is no longer hallucination. It&#8217;s unlimited spending performed by a system that believes it&#8217;s still making progress.</p>



<p class="wp-block-paragraph">We don&#8217;t need smarter, infinitely expanding models to safely deploy autonomous systems into high-stakes production environments. We need smarter systems that fundamentally assume the underlying model will eventually fail, drift, or lie.</p>



<p class="wp-block-paragraph">Consider how civil engineers build a suspension bridge. They don&#8217;t spend decades searching for “perfect steel” that will never bend, rust, or fatigue. They accept that the material is inherently flawed and subject to the laws of entropy. To compensate, they build redundancies. They calculate margins of error. They construct hard, load-bearing physical frameworks that dictate exactly how much stress the material is allowed to absorb before the structure safely redistributes the weight.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="900" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-16-1600x900.png" alt="Engineering for imperfection means designing around known material limits." class="wp-image-19200" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-16-1600x900.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-16-300x169.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-16-768x432.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-16-1536x864.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-16.png 1672w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption"><em>Figure 4</em>. <em>Engineering for imperfection means designing around known material limits.</em></figcaption></figure>



<p class="wp-block-paragraph">The software industry has spent the last three years searching for perfect steel. We&#8217;ve poured billions of dollars into massive evaluation suites, prompt engineering alchemy, and ever-expanding context windows, hoping to forge a probabilistic model that never hallucinates. It&#8217;s a mirage.</p>



<p class="wp-block-paragraph">Engineering maturity in the AI era doesn&#8217;t mean removing all imperfection from machine reasoning. It means designing an architecture so rigid, deterministic, and resilient that the model’s imperfections cease to be an operational liability.</p>



<p class="wp-block-paragraph">The future of agentic AI is unlikely to be won by the organization with the smartest model. It will be won by the organization that most effectively separates intelligence from authority. Once reasoning and execution are decoupled, intelligence becomes a tunable economic parameter. Safety becomes infrastructure. And the endless pursuit of perfect model accuracy finally stops being a business requirement.</p>



<p class="wp-block-paragraph">The end of that pursuit isn&#8217;t the end of AI. It&#8217;s the moment AI finally becomes engineering.</p>



<p class="wp-block-paragraph"><em>Note: The runtime described here is a reference architecture, not a specific implementation technology. The same principles can be realized through workflow engines, policy platforms, orchestration frameworks, or custom infrastructure. A sample implementation of these concepts is available in the <a href="https://github.com/huka81/decision-intelligence-runtime" target="_blank" rel="noreferrer noopener">GitHub repository</a>.</em></p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/the-economics-of-agentic-ai-engineering-for-imperfection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>This Week in AI: The Price of Intelligence</title>
		<link>https://www.oreilly.com/radar/this-week-in-ai-the-price-of-intelligence/</link>
				<comments>https://www.oreilly.com/radar/this-week-in-ai-the-price-of-intelligence/#respond</comments>
				<pubDate>Fri, 24 Jul 2026 13:02:21 +0000</pubDate>
					<dc:creator><![CDATA[Michelle Smith]]></dc:creator>
						<category><![CDATA[This Week in AI]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/05/0642572383770_This_Week_in_AI_Cover-scaled.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2560" 
				height="2560" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/05/0642572383770_This_Week_in_AI_Cover-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Regulation reaches AI infrastructure, OpenAI expands into hardware, and Chinese models challenge the economics of the market]]></custom:subtitle>
		
				<description><![CDATA[AI buyers have more choices than they did a year ago, but they also carry more responsibility for cost, reliability, security, and regulatory risk. This week, data and AI evangelist Christina Stathopoulos focused in on four forces we’ve been tracking that are shaping the AI market: product strategy (and OpenAI’s hardware plans), expanding government oversight, [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">AI buyers have more choices than they did a year ago, but they also carry more responsibility for cost, reliability, security, and regulatory risk. This week, data and AI evangelist Christina Stathopoulos focused in on four forces we’ve been tracking that are shaping the AI market: product strategy (and OpenAI’s hardware plans), expanding government oversight, the work of moving enterprise AI into production, and growing competition from Chinese frontier labs. Her briefing showed why AI is becoming an operating investment rather than a race to adopt the strongest model.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="This Week in AI: The Price of Intelligence with Christina Stathopoulos" width="500" height="281" src="https://www.youtube.com/embed/i1CyDiabzos?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading"><strong>Apple’s lawsuit complicates OpenAI’s hardware plans</strong></h2>



<p class="wp-block-paragraph">Two years after Apple announced a major partnership to bring ChatGPT into Apple Intelligence, the companies now face each other in court. It’s happening as OpenAI plans its first move into hardware with a screenless AI companion that’s being designed by Jony Ive, Apple’s former chief design officer. (OpenAI acquired Ive’s hardware company io in May 2025.) But a <a href="https://www.theguardian.com/technology/2026/jul/10/apple-sues-openai-trade-secrets" target="_blank" rel="noreferrer noopener">lawsuit brought by Apple</a> complicates this product bet. Apple alleges that former employees took confidential hardware designs and engineering information to help accelerate OpenAI’s device development. OpenAI denies the allegations and says it has no interest in using a competitor’s trade secrets.</p>



<p class="wp-block-paragraph">The outcome of the case could influence more than whether a single device ships. As frontier AI companies expand into hardware, intellectual property, hiring practices, and product design will become integral to the competitive landscape alongside models, chips, and distribution.</p>



<h2 class="wp-block-heading"><strong>AI infrastructure is becoming a regulatory concern</strong></h2>



<p class="wp-block-paragraph">Governments are beginning to examine the physical costs of AI alongside questions about training data and generated content. Christina pointed to <a href="https://www.governor.ny.gov/news/first-statewide-moratorium-new-hyperscale-data-centers-launched-governor-kathy-hochul" target="_blank" rel="noreferrer noopener">New York’s plans to pause construction</a> of new hyperscale data centers while regulators evaluate their impact on electricity, water, the power grid, and costs for local communities. And then there’s the output itself. <a href="https://www.reuters.com/legal/government/german-media-regulator-says-googles-ai-overviews-subject-german-media-law-2026-07-14/" target="_blank" rel="noreferrer noopener">German courts say AI search providers are responsible</a> for false or misleading answers: Regulators in Germany argue that services such as Google AI Overviews and Perplexity <em>create</em> content rather than merely link to it, and that comes with increased legal liability.</p>



<p class="wp-block-paragraph">We’ve followed government oversight of frontier AI throughout this series, but the conversation has expanded beyond model access and safety. As infrastructure and compliance decisions become more central to AI system design, technology leaders may need to consider an ever-growing catalogue of constraints when choosing regions, cloud providers, architectures, and products.</p>



<h2 class="wp-block-heading"><strong>Useful intelligence requires cost, reliability, and safety measures</strong></h2>



<p class="wp-block-paragraph">As the tides turn from tokenmaxxing to ROI, many companies are closely scrutinizing their AI spend. As Christina highlighted, a new proposal from OpenAI aimed at helping get “more value from [y]our AI spend” replaces token counts and benchmark scores with “<a href="https://openai.com/index/a-scorecard-for-the-ai-age/" target="_blank" rel="noreferrer noopener">useful intelligence per dollar</a>.” The measure asks whether a system completes valuable work, what each successful task costs, whether people can trust the output, and whether the economics improve as more teams adopt it.</p>



<p class="wp-block-paragraph">A low token price says little about the cost of retries, human review, integration, failed tasks, or incorrect results. Christina connected that measurement problem to the growth of enterprise AI implementation services, with Anthropic and other vendors placing experienced engineers inside customer organizations to help move pilots into production.</p>



<p class="wp-block-paragraph">Anthropic’s research on <a href="https://alignment.anthropic.com/2026/agentic-misalignment-summer-2026/" target="_blank" rel="noreferrer noopener">agentic misalignment</a> tackles a related aspect of that value: Are your agents actually aligned with the goals you’ve assigned them? In the controlled evaluations discussed in the episode, models from several providers displayed behaviors such as covert sabotage, motivated mislabeling, and attempts to influence people to act on their behalf. Although the researchers tested artificial scenarios rather than reporting production incidents, the findings identify behaviors teams should include in evaluations as systems gain more autonomy. Measure cost, reliability, and safety within the same workflow, and evaluate successfully completed tasks rather than prompts or token count.</p>



<h2 class="wp-block-heading"><strong>Chinese models are changing the model-selection process</strong></h2>



<p class="wp-block-paragraph">Chinese frontier labs are giving organizations more credible alternatives to the largest proprietary US models. Christina highlighted <a href="https://www.bbc.com/news/articles/cy9w4q8pgp0o" target="_blank" rel="noreferrer noopener">Moonshot AI’s Kimi K3</a>, an open weight model designed for coding and reasoning tasks. Open weights let developers download and adapt model parameters instead of relying only on a vendor-controlled API, which supports local deployment and customization but also puts more responsibility on the organization for security, operations, and evaluation.</p>



<p class="wp-block-paragraph">Christina also presented public benchmark data <a href="https://www.setproduct.com/blog/chinese-ai-models-vs-american-2026" target="_blank" rel="noreferrer noopener">comparing Chinese and Western models</a> by task that shows some Chinese alternatives delivering results within 3% to 18% of the Western benchmark while costing five to 12 times less. Those figures will vary by workload and deployment method, and buyers should verify them against their own evaluations. Even so, the price gap alone is a reason to test a wider range of models.</p>



<p class="wp-block-paragraph">Chinese models also raise security and governance questions, especially when the work requires sending sensitive data across borders or using public services. Open weights may allow a company to host models in their own environments, but they don’t eliminate the need for access controls, software supply chain review, monitoring, and clear rules about what data the system can process. The best model may differ from one task to another, and organizations with repeatable evaluation practices will be better prepared to take advantage of price competition without lowering their security or quality standards.</p>



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



<p class="wp-block-paragraph">AI competition extends beyond model benchmarks. Vendors compete through hardware, implementation services, open models, and pricing, while governments are also setting expectations for the infrastructure these systems use and the information they produce.</p>



<p class="wp-block-paragraph">The takeaway for practitioners is to constantly evaluate models against real tasks, calculate the cost of successful outcomes, test for unsafe behavior, and preserve the flexibility to change providers. Those practices help teams make better decisions as price, access, regulation, and model performance continue to change.</p>



<p class="wp-block-paragraph">Next week, Christina explores OpenAI’s surprising security incident in which one of its AI systems reportedly escaped the boundaries of a controlled test and launched a cyberattack against Hugging Face. She’ll also look at why OpenAI’s new enterprise agent platform, Presence, arrives at a pivotal moment for AI safety. Plus, you’ll hear about Google’s latest moves, the intensifying global AI race, China’s new Kimi K3 model, and more.</p>



<p class="wp-block-paragraph">Check back each Friday for the latest episode, or watch on <a href="https://www.youtube.com/watch?v=g4cfjz5AKxY&amp;list=PL055Epbe6d5bJEhT7_ZzOeJZ6gPyUzYpS" target="_blank" rel="noreferrer noopener">YouTube</a>, <a href="https://open.spotify.com/show/033kJS2BG1teGunxmtsU1r" target="_blank" rel="noreferrer noopener">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/this-week-in-ai/id1896798047" target="_blank" rel="noreferrer noopener">Apple</a>, or wherever you get your podcasts.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/this-week-in-ai-the-price-of-intelligence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>You Probably Won’t Read This Article…and That’s OK</title>
		<link>https://www.oreilly.com/radar/you-probably-wont-read-this-articleand-thats-ok/</link>
				<comments>https://www.oreilly.com/radar/you-probably-wont-read-this-articleand-thats-ok/#respond</comments>
				<pubDate>Thu, 23 Jul 2026 19:06:35 +0000</pubDate>
					<dc:creator><![CDATA[Rufus Rock]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/You-probably-wont-read-this.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/You-probably-wont-read-this-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[“Help! There are too many [LLM bug reports, blog posts about LLM bug reports, books, treatises, codices, scrolls, papyri, cuneiform tablets]! How do I choose which to read?”  —Many people, presumably Stop there! If you are reading this, ask yourself how you got here. Did Substack’s algorithm recommend this article for you? Did a juicy [&#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>“Help! There are too many [LLM bug reports, blog posts about LLM bug reports, books, treatises, codices, scrolls, papyri, cuneiform tablets]! How do I choose which to read?” </em><br><br><em> —Many people, presumably</em></p>
</blockquote>



<p class="wp-block-paragraph">Stop there! If you are reading this, ask yourself how you got here. Did Substack’s algorithm recommend this article for you? Did a juicy thumbnail provide a welcome distraction from a mundane task? Maybe you know me personally and feel you have an obligation (you do)? Are you already regretting your decision to click?</p>



<p class="wp-block-paragraph">The maintainers of many of the most important open source software repositories in the world are “drowning” in bug reports.<sup data-fn="13515a43-b74c-4e5f-9000-8e4e4bdf87a1" class="fn"><a href="#13515a43-b74c-4e5f-9000-8e4e4bdf87a1" id="13515a43-b74c-4e5f-9000-8e4e4bdf87a1-link">1</a></sup> Daniel Stenberg, who runs curl, has documented a rising tide of such reports,<sup data-fn="a79442be-0b10-495f-b565-bdcb07da13a4" class="fn"><a href="#a79442be-0b10-495f-b565-bdcb07da13a4" id="a79442be-0b10-495f-b565-bdcb07da13a4-link">2</a></sup> generated in part by well-meaning users equipped with the latest LLMs. These reports look entirely plausible, and a minority of them actually highlight real vulnerabilities. But most are essentially worthless. Actually, they might be worse than worthless, since the only way to know whether a report reports something real is to do most of the work of validating it by hand. The cost of producing bug reports has diminished, while the cost of validating them has remained constant. Thus, this flood of LLM generated reports diverts expert maintainers who could be spending their time and attention on reports with a higher relative signal.</p>



<p class="wp-block-paragraph">This is an instructive microcosm of a wider LLM-fueled dynamic. With the ascendance of LLMs, the cost of producing <em>credible</em>&#8211;<em>looking</em> work across many domains has plummeted. Recently, I prompted Claude Code to do some research on a relatively advanced idea I was mulling in the AI alignment space (representational similarity analysis over LLaMA activations for prompted deceptive intent detection). It spat out, in LaTeX, <em>a whole paper,</em> complete with data from experiments that it had actually run, p-values, equations, figures, a literature review, and a bibliography (which mostly included real papers). It should come as no surprise then that the submission volume to academic journals has risen 42% since the introduction of ChatGPT, while writing quality has declined.<sup data-fn="8677ce69-7cce-4741-af13-693193270d97" class="fn"><a href="#8677ce69-7cce-4741-af13-693193270d97" id="8677ce69-7cce-4741-af13-693193270d97-link">3</a></sup> Indeed, my paper was pretty bad (no doubt in part because of the quality of the idea I gave to it), but it <em>looked very credible </em>and cost me almost nothing to produce. I think it would have taken a domain expert around 2–3 minutes to work out that it was slop, and quite a bit longer to describe its main flaws in detail.</p>



<p class="wp-block-paragraph">This time cost will surely rise.</p>



<p class="wp-block-paragraph">The cost of producing credible-looking papers, credible-looking cover letters, credible-looking code, credible-looking blog posts, credible-looking bug reports, credible-looking mathematical proofs, and credible-looking risk analyses is heading to 0. So the supply will continue to skyrocket.</p>



<p class="wp-block-paragraph">In essence, <em>we are now great at generating stuff</em>, but much less great at figuring out whether that stuff is actually any good.</p>



<p class="wp-block-paragraph">I am battling with this problem even as I write this. I use Claude to help me editorialize and think through my ideas—relatively little shame in that. But as I navigate Claude’s outputs, I am spending a lot of my time not really ‘collaborating’ but trying to work out which of the “strengths” of my writing that it has picked out are merely sycophantic rehearsals of my ideas, and which of the “weaknesses” highlight genuine flaws.</p>



<p class="wp-block-paragraph">Here, I argue that credibility cost collapses have historical precedent. I suggest that when they occur, we tend to invent new sociotechnical gating mechanisms/institutions that help us work out how to allocate our attention. I then talk about what the gating mechanism for credible slop might look like, and what it should avoid.</p>



<h2 class="wp-block-heading">Hidden gates, cost collapse, and credibility signaling institutions</h2>



<p class="wp-block-paragraph">When things are hard to make, the mere existence of the thing is evidence that someone has invested a great deal of time and money (which hopefully correlates with relevant expertise) into creating it, and thus it is likely credible and worthy of one’s attention. For several centuries before Gutenberg, making one book took a scribe a full year and a herd of animals’ worth of skin to make. Then, you needed a patron in order to buy one, and to read the thing you needed to know Latin.</p>



<p class="wp-block-paragraph">When books were scarce, nobody took time to wonder whether one was worth their attention. Scarcity was the gate. Of course, a &#8220;scarcity gate&#8221; does not guarantee credibility—it is an imperfect filter. Furthermore, scarcity often brings with it the politics of access which restricts the ability to participate in the production and dissemination of information. Ideally, a thing would be scarce purely because one requires expert skill and knowledge to produce it—but, as in the book case above, this is often confounded by wealth, social circumstances, or access to education.</p>



<p class="wp-block-paragraph">But then the cost of producing things decreases. The printing press replaces the scribe; cheap paper replaces vellum; literacy spreads; things start being written in modern rather than ancient languages; computer science becomes the most popular undergraduate degree. The playing field is leveled, and leveled in a powerfully democratic way; socioeconomic barriers to production and consumption of information fall away.</p>



<p class="wp-block-paragraph">With this newfound abundance, the scarcity gate stops working and so comes the need for new ways to work out what is actually worth our attention. New socio-institutional gates have to be built. The classic example is the journal: For a century and a half after the arrival of Gutenberg’s press there was a major concern among intellectuals at the newfound surplus of available printed-word documents. Conrad Gessner, in 1545, in the preface of his <em>Bibliotheca universalis </em>lamented the “confusing and harmful abundance of books.” Barnaby Rich, a writer and sea captain, grumbled in 1613 that “one of the diseases of this age is the multiplicity of books.” The historian Ann Blair called this the problem of “too much to know,” the sense that there were now more books than anyone could read in a lifetime and no obvious way to tell the worthwhile from the dross (<em>Too Much to Know</em>, 2010).</p>



<p class="wp-block-paragraph">Later, in the 19th century with the birth of industrialized printing, we got yet more complaints. See the following quote from Schopenhauer on “the immense number of bad books” available at the time:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">&#8230;these rank weeds of literature, which deprive the wheat of nourishment and choke it. Thus they use up all the time, money, and attention of the public which by right belong to good books and their noble aims, while they themselves are written merely for the purpose of bringing in money or for procuring posts and positions. They are, therefore, not merely useless but positively harmful.<sup data-fn="57c6e865-c23b-4946-95f7-b63988db282a" class="fn"><a href="#57c6e865-c23b-4946-95f7-b63988db282a" id="57c6e865-c23b-4946-95f7-b63988db282a-link">4</a></sup></p>
</blockquote>



<p class="wp-block-paragraph">Back in the 17th century the socio-institutional solution of curated journals emerged to save the day. In the space of two months in 1665, Denis de Sallo launched the <em>Journal des sçavans</em> in Paris and Henry Oldenburg launched the <em>Philosophical Transactions of the Royal Society</em> in London. What made these important was not that they stored knowledge but that someone now stood at the door and decided what got through it. Oldenburg solicited, selected, and vouched for, so that appearing in it was itself a signal. It was no longer costly to write, but it was costly to get one’s writing past Oldenburg and into the journal. Readers of the journal, insofar as they trusted Oldenburg’s judgment, were then confident of the quality of the material to which they were allocating their attention.</p>



<p class="wp-block-paragraph">This is one type of gate, but we have created many more—we peer review, we certify speakers with degrees, we count how often they cite each other, we invite people whose work we know and/or like to speak at events, we check follower counts, we count how often websites reference each other, etc. We know these proxies are imperfect (see Didier Raoult’s h-index) but we use them because we need some way of deciding who/what to pay attention to.</p>



<p class="wp-block-paragraph">AI is a truly novel technology in its radical generality, and thus one should certainly take care in reaching for historical analogies. But, insofar as today’s models can be understood as dropping the cost of producing credible looking media, I think it is helpful to think about how we have dealt with such circumstances previously. The appearance of credibility has been severed from real credibility many times, precisely when it is no longer costly to<em> look credible</em>, and (admittedly sometimes after a period of chaos and strife) the response tends to be to build an institution to make that appearance expensive again.</p>



<p class="wp-block-paragraph">The question then becomes what the next gate(s) might possibly look like. When it costs nothing to produce credible-looking work across most disciplines, what can remain expensive and be charged for that is a satisfactory proxy for something worth our time? I think there are more good bug reports, good blog posts, and good web apps being developed now than ever before, but the issue is that there are also vastly more bad ones—we need a mechanism for telling them apart.</p>



<h2 class="wp-block-heading">How to not throw the baby out with the bath slop</h2>



<p class="wp-block-paragraph">So what do we do? Previously, proxies were invented to figure out whether something was worth one’s scarce time and attention, prior to consumption.</p>



<p class="wp-block-paragraph">The digital approach has, thus far, been to use popularity-contest style proxies. PageRank, Google’s original algorithm, used the number of other web pages that point at a given web page to rank their relevancy. Similarly, many of the recommendation algorithms you use daily, from Substack to Amazon, rely heavily on what people are currently viewing, engaging with, and buying. In other words, we allocate people’s attention to things that other people are already attending to. But the logic of these measures, like the ones discussed above, have a perverse feature: They do not really tell us whether something is worth our attention. Instead, they tell us how much attention this thing has already received, and we treat the second as a proxy for the first. Thus, your attention becomes both the input into the mechanism and the output. Whether or not this blog post appears in your feed is a function of how many people have clicked it before, so attention accrues attention, creating a classic winner-take-all type dynamic. Worse, the moment you have a sorting infrastructure whose currency is attention, the platform that owns the infrastructure has the proxy (engagement, ad revenue etc.) as the incentive and not the target (providing content that is worth people’s time). This is a dynamic that Tim O’Reilly, Ilan Strauss, and I have studied before in our work on algorithmic attention rents.<sup data-fn="64213496-cc68-43cc-af13-d61ee0f5568a" class="fn"><a href="#64213496-cc68-43cc-af13-d61ee0f5568a" id="64213496-cc68-43cc-af13-d61ee0f5568a-link">5</a></sup></p>



<p class="wp-block-paragraph">The point is that AI did not break a working gate. In fact, in some ways, AI has helped; I have talked elsewhere about how ad-free LLMs are currently better search tools than many traditional search engines.<sup data-fn="1c92759f-bb42-480e-9daf-48f4383f395e" class="fn"><a href="#1c92759f-bb42-480e-9daf-48f4383f395e" id="1c92759f-bb42-480e-9daf-48f4383f395e-link">6</a></sup></p>



<p class="wp-block-paragraph">In the context of credible-looking-slop though, AI is a dam buster. Domains that were previously reliant on human-judgment-based gating such as academic journals, open source software repositories, are getting flooded. And attention-algorithmic digital search and recommendation platforms are sagging under the combination of the slop strain and their own feedback loops. How many distinctly AI-y articles have you clicked on lately on Substack? I clicked into YouTube’s “shorts” on a logged-out computer the other day and was staggered by the unbridled slop it served up. If you, like me, have been forced to engage with LinkedIn’s feed since ChatGPT’s ascendancy late 2022, I offer you my sincerest condolences.</p>



<p class="wp-block-paragraph">One candidate solution is that we lean harder on the human-centric institutional gates that we already have: reputations, followings, h-indexes, knowing someone who organizes really cool unconferences, etc. This certainly feels like the most likely direction of travel. However, it carries the cost of entrenching incumbents: Your papers only get read if you are at Harvard; your open source contributions only get accepted if you are already well known in the community; your blog posts only get seen if you are featured by someone with a platform. Central to the appeal of cheaper production is the democratization of contribution—if you are smart and have a good idea for an app or for some alignment research, you can get Claude to help you prototype it without having to learn the entire modern internet stack. The issue is that if genuinely good ideas never get seen because the only stuff people think is worth their time comes with a recognizable affiliation, we destroy that democratization. The baby goes out with the slop.</p>



<p class="wp-block-paragraph">The second obvious candidate solution is to call for more AI. Every gate thus far has been a proxy—scarcity, the credential, the citation, etc.—that doesn’t directly measure the quality of the content. Rather, it measures something easier to capture that, hopefully, correlates with the quality of the content. What a LLM-based gating system seems to offer, for the first time, is a gate that can actually “read” all the content. One could envision a future where we all encode our preferences in personal-reviewer type models, which then actually go through the films, books and journal articles we are selecting from in order to provide personalized, reliable recommendations. The signal, in such a world, comes home to the object and <em>stays</em> cheap.</p>



<p class="wp-block-paragraph">Unfortunately, this response seems to miss two important points. The first is a turtles-all-the-way-down problem: The gate and the thing it gates are drawn from the same well. The second is a problem of incentives.</p>



<p class="wp-block-paragraph">A detector built out of frontier model capabilities may always inherit frontier model blind spots. If AI is capable of convincing itself that the slop it’s generating is the baby, then, if they are the same models, it may be enough to convince the reviewer too. Of course, it is not that LLMs can only ever emit credible <em>looking </em>content—they conduct real mathematics,<sup data-fn="6a742fd5-239e-4eef-9806-1a8092a1f65d" class="fn"><a href="#6a742fd5-239e-4eef-9806-1a8092a1f65d" id="6a742fd5-239e-4eef-9806-1a8092a1f65d-link">7</a></sup> write real code, submit real bug reports. But these are currently few of the total cases (the baby) among a lot of false positives. AI will get better, and eventually perhaps all of the bug reports it submits will be real, all of the proofs it generates will be correct, etc. This problem might dissolve as the systems get more intelligent. But we don’t know when/if AI systems will get to this point, and even when/if they do, presumably it will be quite a bit after that point before we trust them with doing all the stuff—building our planes, creating our medications, designing our policies, etc.</p>



<p class="wp-block-paragraph">The second thing this response misses is incentives: What happens if we have two such super intelligent machines aimed at deceiving each other? Will an employer’s verification AI be able to see through the ruse of the applicant&#8217;s application AI? What about a deviant academic, who sets his AI to work writing a paper optimized for receiving citations? Will the journal’s editorial AI’s be able to catch subtle massaging of data or p-hacking?</p>



<p class="wp-block-paragraph">We have developed truly sci-fi technology for <em>generating</em> content, but our infrastructure for evaluating its outputs, for curating them, and generally for exercising <em>taste</em> at scale has lagged behind. Maybe the answer lies somewhere between the two avenues I’ve suggested thus far. We have LLM reviewers filter the bug reports, perform some diagnostics, before passing to the human maintainers. But even this risks the identification problems I discussed above.</p>



<p class="wp-block-paragraph">So I don’t have a clean gate idea to sell you on, I wish I did. Maybe ask Claude?</p>



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


<ol class="wp-block-footnotes"><li id="13515a43-b74c-4e5f-9000-8e4e4bdf87a1">See Thomas Claburn, &#8220;<a href="https://www.theregister.com/software/2024/12/10/open-source-projects-drown-in-bad-bug-reports-penned-by-ai/968352" target="_blank" rel="noreferrer noopener">Open Source Maintainers Are Drowning in Junk Bug Reports Written by AI</a>&#8221; and &#8220;<a href="https://www.theregister.com/software/2026/04/06/ai-slop-got-better-so-now-maintainers-have-more-work/5223172" target="_blank" rel="noreferrer noopener">AI Slop Got Better, so Now Maintainers Have More Work</a>&#8221; (<em>The Register</em>); Andrew Kew, &#8220;<a href="https://dev.to/thegatewayguy/ai-security-tools-are-drowning-open-source-maintainers-curl-is-the-canary-3mp7" target="_blank" rel="noreferrer noopener">AI Security Tools Are Drowning Open Source Maintainers — curl Is the Canary</a>&#8221; (<em>DEV Community</em>); Jason Guriel, &#8220;<a href="https://thewalrus.ca/bring-back-the-gatekeeper-please/" data-type="link" data-id="https://thewalrus.ca/bring-back-the-gatekeeper-please/" target="_blank" rel="noreferrer noopener">Bring Back the Gatekeeper, Please</a>&#8221; (<em>The Walrus</em>); and &#8220;<a href="https://www.ft.com/content/cec8df9e-b43b-4cd1-8feb-c07e804e8d33" target="_blank" rel="noreferrer noopener">Who Cleans Up After the Vibe-Coding Party?</a>&#8221; (<em>Financial Times</em>).  <a href="#13515a43-b74c-4e5f-9000-8e4e4bdf87a1-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="a79442be-0b10-495f-b565-bdcb07da13a4">Daniel Stenberg, &#8220;Death by a Thousand Slops,&#8221; <a href="https://daniel.haxx.se/blog/2025/07/14/death-by-a-thousand-slops/" target="_blank" rel="noreferrer noopener">https://daniel.haxx.se/blog/2025/07/14/death-by-a-thousand-slops/</a>. <a href="#a79442be-0b10-495f-b565-bdcb07da13a4-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="8677ce69-7cce-4741-af13-693193270d97">Claudine Gartenberg, Sharique Hasan, et al., &#8220;More Versus Better: Artificial Intelligence, Incentives, and the Emerging Crisis in Peer Review,&#8221; <em>Organization Science</em> (37.3), <a href="https://pubsonline.informs.org/doi/10.1287/orsc.2026.ed.v37.n3" target="_blank" rel="noreferrer noopener">https://pubsonline.informs.org/doi/10.1287/orsc.2026.ed.v37.n3</a>. <a href="#8677ce69-7cce-4741-af13-693193270d97-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="57c6e865-c23b-4946-95f7-b63988db282a">Arthur Schopenhauer, <em>Parega and Paralipomena: Short Philosophical Essays.</em> <a href="#57c6e865-c23b-4946-95f7-b63988db282a-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="64213496-cc68-43cc-af13-d61ee0f5568a">Algorithmic Attention Rents, UCL Bartlett Faculty of the Built Environment, <a href="https://www.ucl.ac.uk/bartlett/public-purpose/policy/digital-technology-and-artificial-intelligence/algorithmic-attention-rents" target="_blank" rel="noreferrer noopener">https://www.ucl.ac.uk/bartlett/public-purpose/policy/digital-technology-and-artificial-intelligence/algorithmic-attention-rents</a>. <a href="#64213496-cc68-43cc-af13-d61ee0f5568a-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="1c92759f-bb42-480e-9daf-48f4383f395e">Rufus Rock, Ilan Strauss, and Tim O&#8217;Reilly, &#8220;Are LLMs the Best That They Will Ever Be?,&#8221; <em>Asimov’s Addendum</em>, <a href="https://asimovaddendum.substack.com/p/are-llms-the-best-that-they-will" target="_blank" rel="noreferrer noopener">https://asimovaddendum.substack.com/p/are-llms-the-best-that-they-will</a>. <a href="#1c92759f-bb42-480e-9daf-48f4383f395e-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="6a742fd5-239e-4eef-9806-1a8092a1f65d">Kathryn Hulick, &#8220;AI Cracked an Erdős Math Problem. Now Experts Want Guardrails,&#8221; <em>ScienceNews</em>, <a href="https://www.sciencenews.org/article/ai-guardrails-erdos-math-problem" target="_blank" rel="noreferrer noopener">https://www.sciencenews.org/article/ai-guardrails-erdos-math-problem</a>. <a href="#6a742fd5-239e-4eef-9806-1a8092a1f65d-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>


<p class="wp-block-paragraph"></p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/you-probably-wont-read-this-articleand-thats-ok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>The Meter Was Always Running</title>
		<link>https://www.oreilly.com/radar/the-meter-was-always-running/</link>
				<comments>https://www.oreilly.com/radar/the-meter-was-always-running/#respond</comments>
				<pubDate>Thu, 23 Jul 2026 15:02:22 +0000</pubDate>
					<dc:creator><![CDATA[Bennie Haelen]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/The-meter-was-always-running.png" 
				medium="image" 
				type="image/png" 
				width="1152" 
				height="896" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/The-meter-was-always-running-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Why the agent loop is the unit of governance]]></custom:subtitle>
		
				<description><![CDATA[The first expensive agent run doesn&#8217;t look like a governance problem. It looks like a billing problem. A team opens its first agent invoice after the meter turns on, sorts the runs by cost, and finds one that cost 40 times the median. The provider meter shows tokens and a total. The application logs say [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">The first expensive agent run doesn&#8217;t look like a governance problem. It looks like a billing problem.</p>



<p class="wp-block-paragraph">A team opens its first agent invoice after the meter turns on, sorts the runs by cost, and finds one that cost 40 times the median. The provider meter shows tokens and a total. The application logs say the request succeeded. The trace viewer shows a tidy request and a tidy response. None of them explain why this run wandered while its neighbors finished cleanly.</p>



<p class="wp-block-paragraph">In my previous Radar article, &#8220;<a href="https://www.oreilly.com/radar/the-subsidy-ended-what-tool-using-agents-actually-cost/" target="_blank" rel="noreferrer noopener">The Subsidy Ended: What Tool-Using Agents Actually Cost</a>,&#8221; I argued that usage-based billing didn&#8217;t make agents expensive; it made their existing costs visible. The bill didn&#8217;t get bigger. It just got honest, and an honest bill is one you can engineer against.</p>



<p class="wp-block-paragraph">But visible isn&#8217;t the same as attributable. To attribute cost in a tool-using agent, you have to see inside the run that produced it. Once you build that visibility, you discover that cost is only where the trouble first becomes visible.</p>



<p class="wp-block-paragraph">Cost spikes, unsafe delegation, and runaway actions are different failures, but they expose the same missing layer: a control plane can&#8217;t govern a loop it can&#8217;t independently observe.</p>



<h2 class="wp-block-heading"><strong>The bill is honest, but it isn&#8217;t explained</strong></h2>



<p class="wp-block-paragraph">The number on the invoice isn&#8217;t wrong, only incomplete. Provider billing can tell you what was consumed; it usually can&#8217;t tell you which design choice inside your platform caused the consumption. Application logs can tell you whether the outer request succeeded; they often can&#8217;t tell you how the agent got there. That leaves teams arguing over a bill when the thing they need is an audit trail.</p>



<p class="wp-block-paragraph">By control plane, I mean the platform layer above individual agents where an organization centralizes observability and enforces policy, access, budget, routing, and execution constraints. Most organizations have pieces of that layer already. What they often lack is the evidence layer underneath it: a loop-aware record of what the agent actually did, turn by turn.</p>



<p class="wp-block-paragraph">The control plane is where policy decisions live. The observability substrate is the evidence the control plane reads from. The instrumentation points are the runtime chokepoints the agent can&#8217;t bypass: model gateways, tool proxies, API gateways, execution sandboxes, runtime harnesses, and policy engines.</p>



<p class="wp-block-paragraph">Many organizations instrumented the application boundary, then deployed systems whose real work happens inside a loop. The result is a control plane with opinions but not enough evidence.</p>



<h2 class="wp-block-heading"><strong>The loop is the unit of observation</strong></h2>



<p class="wp-block-paragraph">Here&#8217;s the mistake underneath the empty trace. Agent observability is often treated as a heavier version of application observability, when it&#8217;s a different shape entirely. The unit of work changed, and the instrumentation didn&#8217;t. A traditional service handles a request and returns a response; the request is the natural unit you trace.</p>



<p class="wp-block-paragraph">An agent doesn&#8217;t so much handle a request as work toward an outcome. It reasons, calls a tool, reads the result, reasons again, and continues until it decides it&#8217;s finished, hits a boundary, or escalates. A single user intent can fan out into many model calls, many tool calls, and a context window that changes on every turn. The signal that matters is the relationship between those turns, not only the timing of any one of them.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1600" height="770" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-11.png" alt="From request trace to loop trace. A request-response trace shows that something completed. A loop-aware trace shows why the agent took the path it took: which turns ran, what context accumulated, which tools were called, which controls fired, and what each turn cost." class="wp-image-19177" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-11.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-11-300x144.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-11-768x370.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-11-1536x739.png 1536w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption"><strong><em>Figure 1. From request trace to loop trace. A request-response trace shows that something completed. A loop-aware trace shows why the agent took the path it took: which turns ran, what context accumulated, which tools were called, which controls fired, and what each turn cost.</em></strong></figcaption></figure>



<p class="wp-block-paragraph">Three things follow from this, and each one breaks an assumption that application monitoring quietly depends on.</p>



<p class="wp-block-paragraph">First, the context is accumulating state, not a fixed payload. Each turn may carry forward prior messages, tool descriptions, retrieved files, intermediate results, and earlier decisions. You have to be able to watch that state grow turn by turn, because the growth is where much of the cost and risk live.</p>



<p class="wp-block-paragraph">Second, a tool call is a first-class decision, not an implementation detail. Which tool the model selected, what parameters it passed, how large the result was, and whether a policy constrained the call are all part of the governance record. Routing accuracy and routing cost are the same audit viewed from two directions.</p>



<p class="wp-block-paragraph">Third, every run can become its own trace tree. The same prompt can take a different path on Tuesday than it took on Monday, so fixed call graphs and clean service maps assume a regularity the agent may not have. If the unit of observation is still the request, you will see 10,000 successful calls and never notice the one loop that ran 15 turns when it should have run three.</p>



<h2 class="wp-block-heading"><strong>What the substrate has to capture</strong></h2>



<p class="wp-block-paragraph">Once you accept that the loop is the unit, the requirement becomes concrete. You need a small, specific set of signals captured below the agent and stored where you can query across the whole fleet, not only inside a per-run viewer. In a pilot I&#8217;m running for a large healthcare organization, this is the layer we built first, on OpenTelemetry, Cloud Trace, and a usage-log table in the warehouse. The particular stack matters less than the shape, which generalizes well beyond it.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1600" height="880" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-12.png" alt="The observability substrate. Instrumented at the layer every model call and tool call must pass through, the same signals land in a fleet-queryable store and answer governance questions about cost, delegation, and runaway actions." class="wp-image-19178" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-12.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-12-300x165.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-12-768x422.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-12-1536x845.png 1536w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption"><strong><em>Figure 2. The observability substrate. Instrumented at the layer every model call and tool call must pass through, the same signals land in a fleet-queryable store and answer governance questions about cost, delegation, and runaway actions.</em></strong></figcaption></figure>



<p class="wp-block-paragraph">At minimum, each user intent should produce a run trace. Each loop turn should be represented as either a span or a stable grouping attribute. Model calls, tool executions, policy checks, retries, and postprocessing should be child spans or structured events beneath that turn. The exact naming convention isn&#8217;t as important as preserving the causal structure of the loop.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>Signal</strong></th><th><strong>Why the control plane needs it</strong></th><th><strong>Example fields</strong></th></tr></thead><tbody><tr><td>Run and turn structure</td><td>Keeps the run legible as a causal tree rather than a flat list of calls</td><td>run_id, turn_id, parent_span_id, timestamp</td></tr><tr><td>Token and model accounting</td><td>Makes cost explainable per turn, model, and tool path rather than merely visible in aggregate</td><td>model, input_tokens, output_tokens, cached_tokens</td></tr><tr><td>Tool-call events</td><td>Records delegation decisions and identifies oversized or repeated tool results</td><td>tool_name, parameter_shape, result_bytes, row_count</td></tr><tr><td>Guardrail decision events</td><td>Shows which controls fired and whether they allowed, denied, rewrote, constrained, or escalated an action</td><td>policy_id, policy_decision, reason_code, enforcement_point</td></tr><tr><td>Identity and authority context</td><td>Reconstructs whose authority the work ran under and which data scope applied at the time</td><td>principal_id, delegated_scope, service_account, data_scope</td></tr><tr><td>Outcome and bound metadata</td><td>Separates clean completion from retries, boundary hits, escalations, and user-visible failures</td><td>turn_count, stop_reason, loop_bound_hit, payload_cap_hit, outcome_status</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">None of this is exotic, and the practical design work isn&#8217;t inventing new telemetry primitives but controlling cardinality, retention, payload capture, sampling policy, schema evolution, and the joins between trace data, usage data, identity data, and policy data.</p>



<p class="wp-block-paragraph">The storage point is the part teams underestimate. If these signals land only in a tracing viewer, you can inspect one run beautifully and never reason about a thousand. Governance is a fleet question, not a single-trace question, so the substrate has to be queryable.</p>



<p class="wp-block-paragraph">It also has to be designed with data minimization in mind: metadata by default, content capture by exception. Capturing a tool call doesn&#8217;t mean storing every raw prompt, full result set, credential, confidential document, or sensitive parameter in the trace. In regulated environments, the useful pattern is to separate metadata from payload: tool name, model, token counts, payload size, row counts, policy decision, authority context, request ID, and redacted or hashed parameter values where necessary. The goal is enough evidence to reconstruct why a run behaved the way it did, not an uncontrolled archive of everything the agent saw.</p>



<p class="wp-block-paragraph">The first useful version doesn&#8217;t need full prompt capture or semantic evaluation. With columns like run_id, turn_id, parent_span_id, timestamp, principal_id, delegated_scope, model, input_tokens, output_tokens, cached_tokens, tool_name, result_bytes, row_count, policy_id, policy_decision, stop_reason, loop_bound_hit, and outcome_status, expensive loops stop being mysteries and start being queries.</p>



<p class="wp-block-paragraph">The exact syntax will vary by warehouse, but the governance question should be expressible without a human clicking through individual trace viewers:</p>



<pre class="wp-block-code"><code>with runs as (
  select
    run_id,
    count(distinct turn_id) as turns,
    sum(input_tokens + output_tokens) as total_tokens,
    max(result_bytes) as largest_tool_result,
    bool_or(loop_bound_hit) as hit_loop_bound,
    count_if(policy_decision = 'rewrite') as rewritten_actions
  from agent_turn_events
  where occurred_at &gt;= current_date - interval '7 days'
  group by run_id
)
select *
from runs
where turns &gt; 10
   or largest_tool_result &gt; 10000000
   or hit_loop_bound
   or rewritten_actions &gt; 0;</code></pre>



<p class="wp-block-paragraph">That is the difference between admiring a trace and governing a fleet.</p>



<p class="wp-block-paragraph">In the old trace, the expensive run from the opening was simply expensive. In the loop-aware trace, it becomes legible: turn 3 retrieved 80,000 rows, turn 4 carried that result forward, turn 5 selected the expensive model, turns 6 through 11 retried the same tool call with slightly different parameters, and the run finally stopped because it hit a loop bound rather than because it completed cleanly. The run stops being a riddle and becomes a record.</p>



<h2 class="wp-block-heading"><strong>One substrate, three governance problems</strong></h2>



<p class="wp-block-paragraph">The reason this is worth building once, properly, is that the same substrate answers the three agent governance problems that the industry often treats as separate: cost management, delegation and access control, and runaway-action prevention. They are not identical failures, but they require the same kind of evidence.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>Governance problem</strong></th><th><strong>Evidence the control plane needs</strong></th></tr></thead><tbody><tr><td>Cost</td><td>Turn count, token counts, model selection, context growth, tool-result size, retries, and stop reason</td></tr><tr><td>Delegation</td><td>Principal, delegated authority, data scope, selected tool, action parameters, and policy decision</td></tr><tr><td>Runaway actions</td><td>Repeated actions, loop bounds, payload caps, guardrail decisions, denied or rewritten actions, and outcome status</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Cost is the first, and with token accounting on every turn you can finally answer why a run was expensive. You can see whether the cost came from too many turns, too much context carried forward, an oversized tool result, an expensive model used for the wrong step, or a retry loop that should have been bounded.</p>



<p class="wp-block-paragraph">Delegation and access are the second, and harder, problem. In multi-agent systems, delegation is a security boundary. Enterprises will eventually be asked who authorized a given agent action, under whose authority it ran, and which data scope applied at the time. The audit trail for that question is this same trace, enriched with identity and authority on each turn.</p>



<p class="wp-block-paragraph">Runaway actions are the third. The destructive delete that becomes a war story, the agent that tried to drop a production table, or the loop that repeatedly issued the same expensive scan shouldn&#8217;t only exist in a postmortem. In this model, the blocked destructive statement is a guardrail decision event with a deny on it, and the runaway scan is a trace that hit a loop bound or payload cap. The interesting governance signal is the dangerous action that a deterministic control refused.</p>



<p class="wp-block-paragraph">Three conversations, one place to stand. The loop is the unit of governance because the loop is where cost accumulates, authority is exercised, tools are selected, controls fire, and outcomes emerge.</p>



<h2 class="wp-block-heading"><strong>The agent can&#8217;t keep its own records</strong></h2>



<p class="wp-block-paragraph">There&#8217;s a tempting shortcut to instrument the agent itself, to let the agent log its own tokens, its own authority, and its own blocked actions. That&#8217;s the fox keeping the henhouse ledger.</p>



<p class="wp-block-paragraph">The agent can emit useful breadcrumbs, but it can&#8217;t be the system of record for its own authority, cost, or refusals. An agent reporting on its own scope and blocked actions is self-reporting, and self-reporting is exactly what fails an auditor and exactly what a clever prompt can talk its way around.</p>



<p class="wp-block-paragraph">The substrate has to be instrumented below the agent, at the layer the agent can&#8217;t opt out of. In practice, below the agent means the model gateway, tool proxy, runtime harness, execution environment, API gateway, or policy engine: the layer the agent has to pass through, not a logger the agent can choose to call.</p>



<p class="wp-block-paragraph">This is the through-line of the control-plane argument. The platform is where you enforce policy, access, budget, routing, and cost, and it can only enforce what it independently observed. Enforcement and observation are two faces of the same layer; put them anywhere the agent can edit, and you have neither.</p>



<h2 class="wp-block-heading"><strong>We already have tracing, and it isn&#8217;t enough</strong></h2>



<p class="wp-block-paragraph">The natural objection is that this is solved already: Mature tracing tools exist, agent observability vendors exist, and teams can turn on a trace viewer and see what happened. The gap isn&#8217;t visualization, since plenty of tools can show a useful trace of an agent run. The harder gap to cross is completeness and actionability: whether the trace carries the evidence a control plane needs, whether that evidence is independent of the agent, and whether it lands somewhere the organization can query across the fleet.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>Existing layer</strong></th><th><strong>What it often shows</strong></th><th><strong>What the control plane still needs</strong></th></tr></thead><tbody><tr><td>Application tracing</td><td>Request, service call, latency, status</td><td>Turn structure, context growth, model and tool attribution</td></tr><tr><td>Agent run viewer</td><td>One run’s path through a UI</td><td>Fleet-queryable evidence across all runs</td></tr><tr><td>Agent self-logging</td><td>Model-reported actions and reasons</td><td>An independent record below the agent</td></tr><tr><td>Billing dashboard</td><td>Total cost and token usage</td><td>Per-turn causal explanation of where the cost came from</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">A useful test is whether the control plane can answer this without opening an individual trace viewer: Show me all runs this week where context grew by more than 5x, a tool returned more than 10 MB, a guardrail rewrote the action, and the run still reached a user-visible answer. If the answer requires a human clicking through traces one by one, you have visualization, not governance, and seeing one run isn&#8217;t the same as governing a thousand.</p>



<p class="wp-block-paragraph">A dashboard tells you what happened. A control plane uses what happened to change what happens next, which requires the signal to live somewhere an enforcement decision can read it.</p>



<h2 class="wp-block-heading"><strong>The pattern, not the stack</strong></h2>



<p class="wp-block-paragraph">It would be a mistake to read this as an argument for a particular tracing standard, warehouse, vendor, or cloud platform. The stack is incidental; the shape is the point.</p>



<p class="wp-block-paragraph">The recipe stays the same regardless: loop-aware traces; turns represented as spans, grouping attributes, or structured events; token, tool, guardrail, and identity evidence attached to those turns; storage you can query across the fleet; instrumentation that sits below the agent rather than inside it; and data minimization that keeps the trace useful without turning it into a shadow copy of sensitive payloads. Build it on whatever your platform already speaks.</p>



<p class="wp-block-paragraph">The teams that treat observability as a dashboard will keep discovering their problems in the order the symptoms happen to surface: first as a surprising invoice, later as an audit finding, eventually as an incident. The teams that treat observability as the sensory layer of the control plane will see all three coming from the same data, and will be able to act before the meter, the auditor, or the incident forces the question.</p>



<p class="wp-block-paragraph">Prompts guide behavior. Guardrails govern behavior. Observability is how you know the governance is real. You can&#8217;t govern what you can&#8217;t see, and you can&#8217;t improve what you can&#8217;t attribute.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/the-meter-was-always-running/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Stop Overengineering Your Agent Harness</title>
		<link>https://www.oreilly.com/radar/stop-overengineering-your-agent-harness/</link>
				<comments>https://www.oreilly.com/radar/stop-overengineering-your-agent-harness/#respond</comments>
				<pubDate>Wed, 22 Jul 2026 15:58:51 +0000</pubDate>
					<dc:creator><![CDATA[Hugo Bowne-Anderson]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/Stop-overengineering-your-agent-harness.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/Stop-overengineering-your-agent-harness-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Coding agents dominate the conversation, but the harness your agent needs depends on its action and context complexity. Here’s how to build for the job in front of you.]]></custom:subtitle>
		
				<description><![CDATA[The following originally appeared on Hugo Bowne-Anderson’s Vanishing Gradients Substack and is being republished here with the author’s permission. The conversation around harness engineering is dominated by problems from coding and personal agents such as OpenClaw, but most agents are simpler. Builders should avoid over-engineering for capabilities that newer models may absorb anyway, the “Kirby [&#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 originally appeared on Hugo Bowne-Anderson’s </em><a href="https://hugobowne.substack.com/p/stop-overengineering-your-agent-harness" target="_blank" rel="noreferrer noopener">Vanishing Gradients<em> Substack</em></a><em> and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph"><em>The conversation around harness engineering is dominated by problems from coding and personal agents such as OpenClaw, but most agents are simpler. Builders should avoid over-engineering for capabilities that newer models may absorb anyway, the “Kirby effect,” and focus on durable fundamentals.</em></p>



<p class="wp-block-paragraph">Statisticians sometimes use a deliberately crude question to show how a summary statistic can mislead: how many testicles does the average human have? The numerical answer may be defensible, but it describes almost nobody. Harness engineering has a similar problem. Ask, “What techniques do I need?” and the average answer becomes a long list: context management, memory, compaction, sub-agents, hooks, and orchestration. Few systems need all of it and the right harness depends on the job.</p>



<p class="wp-block-paragraph">In this essay, you’ll learn:</p>



<ul class="wp-block-list">
<li>What an agent harness is and how it differs from prompt and context engineering.</li>



<li>How action complexity and context complexity determine the harness you need.</li>



<li>Why coding and deep-research agents require more context management than many support, sales, and enterprise agents.</li>



<li>How tools, state, routing, guardrails, traces, sub-agents, hooks, and human handoffs fit into the architecture.</li>



<li>Why harness features expire as models improve, and how to build the minimum viable harness for the job.</li>
</ul>



<h2 class="wp-block-heading">What is an agent?</h2>



<p class="wp-block-paragraph">An AI agent in common parlance is an AI system <em>that can do things</em>: send emails, query databases, ping APIs, make appointments, write and execute code, and so on. AI engineers define them slightly differently: AI agents are LLMs with tools in a loop.</p>



<p class="wp-block-paragraph">Consider what happens when you ask a coding agent to edit a file: it will first read the file, send the result back to the LLM, then edit it, then perhaps read it again, and so on, until the LLM “decides” it is finished and tells you.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1536" height="1024" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-7.png" alt="A coding agent cycles between the LLM and its tools. Here, it reads app.py, incorporates the result, and then edits the file." class="wp-image-19158" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-7.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-7-300x200.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-7-768x512.png 768w" sizes="auto, (max-width: 1536px) 100vw, 1536px" /><figcaption class="wp-element-caption"><em>Figure 1. A coding agent cycles between the LLM and its tools. Here, it reads app.py, incorporates the result, and then edits the file.</em></figcaption></figure>



<p class="wp-block-paragraph">This distinction is important because most common parlance agents don’t have such <em>reasoning</em> loops and are more aptly described as <a href="https://www.anthropic.com/engineering/building-effective-agents" target="_blank" rel="noreferrer noopener">LLM workflows</a>: take a sales workflow that</p>



<ol class="wp-block-list">
<li>Transcribes sales calls using a speech-to-text model;</li>



<li>Extracts structured data from the transcript for the salesperson to verify;</li>



<li>Populates your CRM or database with the prospect’s information, next steps, and so on.</li>
</ol>



<p class="wp-block-paragraph">This is an AI workflow: foundation models are used at each step, but for each sales call the workflow itself is deterministic. A call is transcribed, the relevant data is extracted, and the CRM is populated. When the next call happens, the workflow runs again as a separate task; no result is fed back to an earlier step, so there is no model-directed reasoning loop (any individual step could contain one, however, and agentic reasoning loops inside deterministic workflows are a common pattern).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1536" height="1024" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-8.png" alt="A deterministic AI workflow follows a fixed sequence: transcribe the call, extract structured data, verify it, and populate the CRM." class="wp-image-19159" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-8.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-8-300x200.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-8-768x512.png 768w" sizes="auto, (max-width: 1536px) 100vw, 1536px" /><figcaption class="wp-element-caption"><em>Figure 2. A deterministic AI workflow follows a fixed sequence: transcribe the call, extract structured data, verify it, and populate the CRM.</em></figcaption></figure>



<p class="wp-block-paragraph">All modern AI chat products, such as ChatGPT and Claude, however, are agentic: they have access to Web Search tools and image generation tools, for example, and will use them when deemed necessary. You interact with agents every day.</p>



<h2 class="wp-block-heading">What is an agent harness?</h2>



<p class="wp-block-paragraph">If an LLM is the brain, you can think of the agent harness as the body. It includes all the tools and infrastructure the brain relies upon at runtime to get the job done.</p>



<p class="wp-block-paragraph">In practice, the harness handles five core jobs:</p>



<ul class="wp-block-list">
<li><strong>Loop:</strong> Prompt the model, parse its response, execute its tool calls, and feed the results back.</li>



<li><strong>Tool execution:</strong> Run the commands, code, APIs, and other actions requested by the model.</li>



<li><strong>Context management:</strong> Decide which instructions, conversation history, files, and tool results enter each model call.</li>



<li><strong>State:</strong> Track the conversation, task progress, files touched, and anything that needs to persist across turns.</li>



<li><strong>Safety:</strong> Sandbox execution, require confirmation for sensitive actions, and block disallowed operations.</li>
</ul>



<p class="wp-block-paragraph"><strong>Prompt engineering</strong> shapes an individual model call. <strong>Context engineering</strong> determines what the model sees. <strong>Harness engineering</strong> governs the complete system around those calls.</p>



<h2 class="wp-block-heading">How complex does the harness need to be?</h2>



<p class="wp-block-paragraph">One way to decide how much harness engineering a task requires is to separate two kinds of complexity:</p>



<ul class="wp-block-list">
<li><strong>Action complexity:</strong> How many tools, decisions, dependencies, and handoffs must the agent coordinate?</li>



<li><strong>Context complexity:</strong> How much information must the agent gather, retain, and retrieve to complete the task?</li>
</ul>



<p class="wp-block-paragraph">The two can move independently. A support agent may complete a conversation in one turn while still routing across several tools and safety checks. A deep-research agent may receive only one user request while accumulating a large body of source material.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1536" height="1024" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-10.png" alt="Harness requirements vary across two independent dimensions: the complexity of the actions an agent coordinates and the context it must gather, retain, and retrieve. Personal assistants can span much of this space." class="wp-image-19161" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-10.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-10-300x200.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/image-10-768x512.png 768w" sizes="auto, (max-width: 1536px) 100vw, 1536px" /><figcaption class="wp-element-caption"><em>Figure 3. Harness requirements vary across two independent dimensions: the complexity of the actions an agent coordinates and the context it must gather, retain, and retrieve. Personal assistants can span much of this space.</em></figcaption></figure>



<h2 class="wp-block-heading">Harnesses for coding agents?</h2>



<p class="wp-block-paragraph">The conversation around harness engineering <a href="https://www.langchain.com/blog/the-anatomy-of-an-agent-harness" target="_blank" rel="noreferrer noopener">has exploded recently</a> and much of the focus is on context management, memory, compaction, tool offloading, and increasingly elaborate tools and techniques. If you’re building a coding agent (or using one!), it’s important to know about these. Generally, they’re important to consider when building agents that users tend to have long conversations with.</p>



<p class="wp-block-paragraph">The core can be surprisingly small, though: A <a href="https://hugobowne.substack.com/p/how-to-build-a-general-purpose-ai" target="_blank" rel="noreferrer noopener">coding agent can be built in 131 lines of Python</a>, while a search agent using the same basic loop takes just 61. The tools change, but the underlying pattern doesn’t. A coding agent can even <a href="https://hugobowne.substack.com/p/building-agents-that-build-themselves" target="_blank" rel="noreferrer noopener">read its own tool definitions, write a new tool, hot-reload it, and use it on the next step</a>. Capabilities can be added without permanently baking everything into the core harness.</p>



<p class="wp-block-paragraph">A stock coding agent can write code, but it doesn’t automatically understand your data, spot leakage, choose the right validation strategy, explain uncertainty, or connect a model to a business decision. In practice, users keep extending the harness around it: they add domain instructions to AGENTS.md, package recurring workflows as skills, and add tools, evals, and reproducibility checks. The shipped harness is only the starting point. It’s something builders actively work on. In a word, when using a coding agent, you are always actively involved in shaping and building your harness.</p>



<p class="wp-block-paragraph">So what are common harness patterns for coding agents? Lance Martin (Anthropic, then at LangChain) identified 3 main context engineering patterns, which are fundamental for harness engineering:</p>



<ol class="wp-block-list">
<li><strong>Reduce:</strong> Actively shrink the context passed to the model</li>



<li><strong>Offload:</strong> Move information and complexity out of the prompt.</li>



<li><strong>Isolate:</strong> Use multi-agent architectures to delegate token-heavy sub-tasks.</li>
</ol>



<p class="wp-block-paragraph">Then when conversations get longer than the context window of the LLM, you need to think through how to pass the necessary context to it: compaction used to be state of the art, then <a href="https://ampcode.com/news/handoff" target="_blank" rel="noreferrer noopener">hand-off became prominent</a>, and now compaction is back, due to the capabilities of more powerful models.</p>



<p class="wp-block-paragraph">Deep research is another case where context engineering matters. In a <a href="https://youtube.com/live/LUfqQgz1-Os?feature=share" target="_blank" rel="noreferrer noopener">workshop with Ivan Leo</a>, who previously built agents at Manus and is now at Google DeepMind, we <a href="https://github.com/hugobowne/build-your-own-deep-research-agent" target="_blank" rel="noreferrer noopener">built a deep research agent from scratch</a>. The harness keeps research findings and task state available across many model calls. It generates a plan, gives search sub-agents separate queries and iteration budgets, runs them concurrently, then returns their findings to the main agent for synthesis and citation. The implementation also uses hooks, which let other parts of the system respond to events in the agent loop. A hook can render a tool call, log its result, or record a trace without putting that behavior inside the core loop. Deep research raises both action and context complexity: the agent must coordinate many searches while retaining enough evidence to produce a coherent, cited report.</p>



<p class="wp-block-paragraph">When working with personal agents, such as OpenClaw or Hermes, managing context and memory is also important, particularly as the amount of information they create and have access to grows over time. Pi offers a useful baseline for coding-agent harnesses. It adds repository context through AGENTS.md, persistent sessions that users can resume or branch, and extensions for tools, skills, and prompts. <a href="https://openclaw.ai/" target="_blank" rel="noreferrer noopener">OpenClaw</a> builds on Pi and pushes the harness into personal-agent territory with an always-on daemon, chat interfaces, file-based memory, scheduled heartbeats and cron jobs, and tools for browsing, sub-agents, and device control. That additional infrastructure makes sense because the agent must persist and act over time, rather than complete one short task. Its memory system is deliberately plain: <a href="https://hugobowne.substack.com/p/building-agents-that-build-themselves" target="_blank" rel="noreferrer noopener">compaction summaries are appended to timestamped Markdown files</a>, with no vector database or embeddings.</p>



<p class="wp-block-paragraph">I do think these are all important and super interesting, but I want to help builders understand that <em>most</em> agents you’ll build don’t need any of them. But first: the Kirby effect and how frontier models are absorbing all of our agent harnesses.</p>



<h2 class="wp-block-heading">The Kirby effect</h2>



<p class="wp-block-paragraph"><em>New model releases often force us to rebuild our harnesses</em>. In fact, we often need to tear them out and rebuild them completely. If you don’t rip out your harness, it constrains the new model. As Nick Moy, an AI researcher at Google DeepMind who built the first multi-hop AI agent at Windsurf <a href="https://hugobowne.substack.com/p/the-post-coding-era-what-happens" target="_blank" rel="noreferrer noopener">told me</a>, “<em>we should just unleash [the model], unfetter it, and let it flex its wings!”</em></p>



<p class="wp-block-paragraph">Manus has been re-architected five times in a year, LangChain’s Open Deep Research was rebuilt multiple times in a year to keep pace with model improvements, and even Anthropic rips out Claude Code’s agent harness as models improve (<a href="https://hugobowne.substack.com/p/ai-agent-harness-3-principles-for" target="_blank" rel="noreferrer noopener">see here for more details</a>). Why is this happening? Because the models are sucking up the harnesses around them.</p>



<p class="wp-block-paragraph">Remember chain-of-thought (CoT) prompting where we would see better performance from LLMs if we asked them to explain their reasoning? Well, it turns out that if you do reinforcement learning on CoT traces, you can build reasoning models! Plan mode followed the same path. AMP briefly shipped it as an experimental feature, then removed it when models could reliably obey “plan, but don’t edit.” As Nicolay Gerold (Amp Code) put it, “<a href="https://www.youtube.com/watch?v=IPJ7Mp_ajuQ&amp;t=3457s" target="_blank" rel="noreferrer noopener">Having a separate mode for that, and having additional load on the user to remember, ‘Hey, I always have to go into plan mode,’ isn’t necessary anymore, because it’s just one simple instruction</a>.” Claude Code still has it, though, as does Codex! In November 2025, the release of Opus 4.5 and GPT-5.2 signalled a step change in how capable coding agents had become. <a href="https://simonwillison.net/2026/Jan/4/inflection/" target="_blank" rel="noreferrer noopener">Simon Willison even wrote </a>“It genuinely feels to me like GPT-5.2 and Opus 4.5 in November represent an inflection point”. Why was this possible then? The labs had been able to train their new models on enough of our agent traces, in particular using <a href="https://arxiv.org/abs/2506.14245" target="_blank" rel="noreferrer noopener">RLVR</a>, that they were able to become far more accurate at tool calling, among other things.</p>



<p class="wp-block-paragraph">Nicolay Gerold (Amp Code) calls this <a href="https://www.youtube.com/watch?v=IPJ7Mp_ajuQ&amp;t=3429s" target="_blank" rel="noreferrer noopener">the Kirby effect</a>: every component in a harness encodes an assumption about something the model cannot do on its own. As models improve, those assumptions expire, and the corresponding harness features can be removed.</p>



<h2 class="wp-block-heading">Harnesses for support agents</h2>



<p class="wp-block-paragraph">Most AI builders will not be building coding agents or deep-research systems. They will be building support agents, sales agents, and enterprise agents that sit low on at least one of these dimensions. Many of these systems complete a task in one to five turns (time to resolution is key here!). Their harnesses still need careful tool design, structured outputs, routing, guardrails, traces, and handoffs, but they may need far less memory and compaction.</p>



<p class="wp-block-paragraph">William Horton (AI Engineer, Maven Clinic) and his team built <a href="https://www.prnewswire.com/news-releases/maven-clinic-introduces-maven-intelligence-an-ai-powered-orchestration-layer-for-womens-and-family-health-302715171.html" target="_blank" rel="noreferrer noopener">Maven Assistant</a> to help members navigate appointments, providers, support information, and women’s health content. <a href="https://hugobowne.substack.com/p/building-an-enterprise-ai-agent-for" target="_blank" rel="noreferrer noopener">When the agent first reached external users, every initial conversation was completed in a single turn</a>. Compaction was rarely relevant, although one Zendesk retrieval returned far too much text. The architecture still contains several important harness components:</p>



<ul class="wp-block-list">
<li><strong>Domain routing:</strong> A lead agent delegates requests to sub-agents for appointments, provider search, health content, and Maven support.</li>



<li><strong>Bounded tool access:</strong> The system has roughly 15 to 20 tools distributed across those domains. Each sub-agent receives only the tools relevant to its job.</li>



<li><strong>Tool interfaces designed for agents:</strong> Internal APIs are wrapped in safer interfaces. The application injects the user ID directly instead of asking the model to provide it.</li>



<li><strong>Deterministic guardrails:</strong> Off-topic and prompt-hacking checks run before the main agent. When triggered, the system returns a fixed response without asking the LLM to improvise.</li>



<li><strong>Explicit human handoffs:</strong> Expressions of self-harm trigger an automatic transfer to support. Other transfers require the user to ask or confirm.</li>



<li><strong>Controlled scope:</strong> The agent provides health information but does not diagnose. The team withheld high-cost benefits questions until the system could answer them reliably enough.</li>
</ul>



<p class="wp-block-paragraph">Maven Assistant has low context complexity and moderate action complexity. Its harness work is concentrated in routing, tool design, guardrails, evaluation, and human handoffs rather than memory or compaction. But don’t forget about the Kirby effect. As these systems become more sophisticated, so will the models, and what you needed to engineer into your harness yesterday will be part of the model tomorrow.</p>



<p class="wp-block-paragraph">The fundamentals will remain:</p>



<ul class="wp-block-list">
<li>Building LLM reasoning loops with tools, state, and control flow.</li>



<li>Designing prompts and tool schemas.</li>



<li>Managing context and memory.</li>



<li>Using structured outputs, traces, and tool feedback to inspect and debug the loop.</li>



<li>Applying guardrails and human handoffs.</li>



<li>Using Agent SDKs and MCP without outsourcing the system design.</li>



<li>Running scheduled and event-driven work with hooks and cron jobs.</li>



<li>Building evals that test task success, tool use, guardrails, and human handoffs.</li>
</ul>



<p class="wp-block-paragraph">Evals also raise a boundary question. <a href="https://www.langchain.com/blog/the-anatomy-of-an-agent-harness" target="_blank" rel="noreferrer noopener">Vivek Trivedy’s account of the agent harness</a> is runtime-oriented: it includes the tools, state, context, execution environment, orchestration, and control logic used while an agent completes a task. Hamel Husain has argued to me (in private correspondence) that the eval harness is part of the agent harness too. That extends the definition beyond runtime to include the infrastructure that runs test cases, captures traces and artifacts, and scores outcomes. We’ll discuss this, among other things, in an <a href="https://vanishinggradients.short.gy/radar-harness-event" target="_blank" rel="noreferrer noopener">upcoming live conversation</a>.</p>



<p class="wp-block-paragraph">When building agents, before reaching for compaction, memory, handoffs, or sub-agents, map the job on two axes: how many actions must the agent coordinate, and how much context must it carry across the task? If both are low, keep the harness small. Give the model the few tools it needs, test the loop, and add infrastructure only when a real failure demands it. Revisit those additions whenever a stronger model arrives, because yesterday’s necessary workaround may be tomorrow’s dead weight.</p>



<p class="wp-block-paragraph">Want to go deeper? Check out our <a href="https://vanishinggradients.short.gy/radar-harness-resources" target="_blank" rel="noreferrer noopener">collection of agent-harness resources</a>, including papers, talks, tools, and practical examples. I’m also running a four-hour workshop soon, <a href="https://vanishinggradients.short.gy/radar-harness-course" target="_blank" rel="noreferrer noopener">Build AI Agents from First Principles</a>, where we’ll build a working customer service agent from scratch and cover tools, state, context, memory, guardrails, SDKs, and MCP.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/stop-overengineering-your-agent-harness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Managers Are Not Overhead: They Are Infrastructure</title>
		<link>https://www.oreilly.com/radar/managers-are-not-overhead-they-are-infrastructure/</link>
				<comments>https://www.oreilly.com/radar/managers-are-not-overhead-they-are-infrastructure/#respond</comments>
				<pubDate>Wed, 22 Jul 2026 10:42:49 +0000</pubDate>
					<dc:creator><![CDATA[David Michelson]]></dc:creator>
						<category><![CDATA[Executive Briefing]]></category>
		<category><![CDATA[Commentary]]></category>

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

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/Managers-are-not-overhead-they-are-infrastructure.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/07/Managers-are-not-overhead-they-are-infrastructure-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[What recent data reveals about the role of managers in the age of flattening orgs.]]></custom:subtitle>
		
				<description><![CDATA[Managers have been disproportionate casualties of the rolling waves of post-COVID-19 tech layoffs that started in late 2022. Popularized by large companies such as Meta, Google, and Amazon, phrases like “flattening the org” and &#8220;reducing bureaucracy” are now synonymous with thinning the management layers that ballooned during the 2021–2022 hiring sprees. Retrospectively, such flattening can [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">Managers have been disproportionate casualties of the rolling waves of post-COVID-19 tech layoffs that started in late 2022. Popularized by large companies such as <a href="https://www.businessinsider.com/meta-layoffs-managers-software-engineers-ai-spending-2026-6" target="_blank" rel="noreferrer noopener">Meta</a>, <a href="https://www.nbcnews.com/business/business-news/google-eliminated-35-percent-managers-overseeing-small-teams-exec-says-rcna227486" target="_blank" rel="noreferrer noopener">Google</a>, and <a href="https://www.reuters.com/legal/litigation/amazon-cuts-16000-jobs-globally-broader-restructuring-2026-01-28/" target="_blank" rel="noreferrer noopener">Amazon</a>, phrases like “flattening the org” and &#8220;reducing bureaucracy” are now synonymous with thinning the management layers that ballooned during the 2021–2022 hiring sprees. Retrospectively, such flattening can seem prescient given that AI models can now automate schedules, draft performance reviews, coordinate communication across teams, and aid in the prioritization and decision support typical of management. Pushed to the experimental extreme, this can now mean <a href="https://www.wsj.com/tech/ai/meta-to-create-new-applied-ai-engineering-organization-in-reality-labs-division-d41c4a69?gaa_at=eafs&amp;gaa_n=AWEtsqfFcIAtqy2G7yRJQh32GWEzfzAz0E2IYtq4kk8k3MkOLv58pcZb_drYOg-h3IY%3D&amp;gaa_ts=69a940e2&amp;gaa_sig=zYBa5_kPKQHursEwJ9gnc2IiwngB3YirrJ8Wy7N1SBwKK8bn0K45miaek2-6SAU_q2Ql8ihbHehw5Cut7nLzAA%3D%3D" target="_blank" rel="noreferrer noopener">50 ICs reporting into one supervisor</a>. The logic here is simple and stark: Since AI can, or will soon be able to, handle a lot of what managers used to do, fewer managers are necessary. Instead, decision-making can be distributed within teams as individual contributors become more adept at orchestrating and supervising agentic workflows with increasingly refined judgment and decreased reliance on managerial oversight. Everyone, in effect, <a href="https://www.oneusefulthing.org/p/management-as-ai-superpower" target="_blank" rel="noreferrer noopener">is a manager now</a>.</p>



<p class="wp-block-paragraph">The problem with this narrative is that organizations are reducing managers at precisely the time they are becoming increasingly important to realizing their AI investments. Several sources of recent data back this up. A main conclusion from Microsoft’s <a href="https://www.microsoft.com/en-us/worklab/work-trend-index/agents-human-agency-and-the-opportunity-for-every-organization#wti2026-modular-worklab-chapter-hero-a466d151" target="_blank" rel="noreferrer noopener"><em>2026 Work Trend Index Annual Report</em></a> is that “organizational factors—culture, manager support, talent practices—account for twice the reported AI impact of individual effort alone.” Once leadership sets AI strategy and incentives, “it’s managers who operationalize it, and the data shows the impact of their ability to do so.” Specifically,</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">when managers actively modeled AI use, employees reported a 17-point lift in reported AI value, a 22-point lift in critical thinking about their AI use, and a 30-point lift in trust in agentic AI. When managers created psychological safety around experimentation, employees reported up to 20 points higher AI readiness and value—and were 1.4x more likely to be high-frequency users of agentic AI.</p>
</blockquote>



<p class="wp-block-paragraph">The impact of managers is even greater on more advanced AI users, what Microsoft calls “Frontier Professionals” (16% of those surveyed, users who “use agents for multistep workflows and building multi-agent systems”). This group is more likely to report that their manager uses AI (85% vs. 64%), establishes quality standards for AI work (83% vs. 57%), encourages experimentation (84% vs. 61%), and rewards work redesign regardless of outcome (26% vs. 11%). The report notes that “in many cases, employees are moving faster than the organization around them.” Microsoft calls this the “Transformation Paradox.” According to the Microsoft data, managers are the layer that helps resolve it. They translate organizational strategy into team practices that let individual work with AI produce value.</p>



<p class="wp-block-paragraph">Of course, once AI adoption is the norm and managers no longer need to manage that change, one could argue that many aspects of the role remain susceptible to automation and the role will contract. We don’t know how this will play out yet, but if management roles were already contracting we would expect to see early signs, and the data shows the opposite. LeadDev’s <a href="https://leaddev.com/wp-content/uploads/2026/06/ENGINEERING_LEADERSHIP_REPORT_2026_FINAL.pdf" target="_blank" rel="noreferrer noopener"><em>Engineering Leadership Report 2026</em></a> surveyed 600 engineering leaders, 55% of whom are engineering managers or managers of managers. The report notes that “AI is simultaneously expanding what leaders can do technically and what is expected of them organizationally, without reducing the demands on their time in either dimension.” Not only are managers becoming more hands-on technically, but</p>



<ul class="wp-block-list">
<li>63% of engineering leaders say their scope and area of responsibility increased over the past 12 months.</li>



<li>60% saw increased communication with team members, customers, and stakeholders.</li>



<li>22% have more teams reporting to them.&nbsp;</li>



<li>29% have more direct reports.&nbsp;</li>



<li>Architectural decisions and technical strategy saw the most respondents citing increased time dedicated to it.</li>
</ul>



<p class="wp-block-paragraph">One way to interpret these figures is to say that more teams and more reports show flattening working as planned from a business perspective. Another reading—not mutually exclusive—is that the role is in transition and most organizations have not fully wrestled with what that involves: managers doing their old work at greater scale, and the new work of making AI a core team practice. Either way, that’s not contraction. Contraction would mean the scope of the role itself is shrinking as AI and ICs absorb more of the work. More teams and more reports is what flattening produces, not evidence the role is going away.</p>



<p class="wp-block-paragraph">To be clear, none of this means organizations should stop scrutinizing reporting structures and removing genuinely unhelpful layers of bureaucracy that stifle decision-making. But it does mean asking a harder question before the next round of cuts: Are you reducing management based on what managers used to do or based on the critical work they are doing now or will need to do next?</p>



<p class="wp-block-paragraph">The “what they used to do” answer treats managers like overhead. The emerging evidence suggests that managers are currently playing the role of infrastructure, the critical layer that translates AI investment into actual value at the team level. Flattening on the assumption that AI will facilitate its own adoption or that value will emerge from unguided individual effort is making a productivity bet that the data doesn&#8217;t support.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/managers-are-not-overhead-they-are-infrastructure/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 101/118 objects using Memcached
Page Caching using Disk: Enhanced (Page is feed) 
Minified using Memcached

Served from: www.oreilly.com @ 2026-08-03 10:59:11 by W3 Total Cache
-->