CONTENTS

Chapters

AI PRESS / AI ENGINEER KB © 2026
AI PRESS
0.00%
[ AI ENGINEER BOOK ]

From CopilottoColleague

AI Engineer Knowledge Base
[ 941 source videos mapped ]
[ 2h 11m read ]
EVIDENCE OF SOURCE · CHAPTER 01
FIG. 01 · BEFORE · AFTERCLICK · SCROLL · ZOOM

AI Engineer Book · Ch 01

The Shift: From Assistant to Delegate

1/5

FIG. 01.0 · OPENER

Assistant vs delegate

Click to enlarge

CH01

CH. 01 // Drafting
2,724 words12 min read
CHAPTER 01/2,724 words/Drafting

For a while, the most impressive thing AI could do was answer.

It answered faster than search, more fluently than documentation, and with just enough confidence to make people feel the future arriving inside a chat box. It could summarize a meeting, draft an email, explain a code snippet, brainstorm a launch plan, or produce a suspiciously polished first pass at almost anything. That mattered. It changed user expectations, product design, and the perceived shape of software. But it did not yet change the nature of work.

The deeper transition begins when the system is no longer asked only to suggest. It is asked to return with work done.

Research this market and come back with a memo. Review this contract and mark the risky clauses. Refactor this service, run the checks, and prepare the patch for review. Investigate the failure, trace the likely cause, and show me what to approve next.

That is a different standard. A helpful answer can be wrong and still useful. Delegated work is expensive in a different way. It consumes time, touches systems, shapes decisions, and often hides its mistakes inside output that looks plausible enough to pass a casual glance. That last property is the real trap: the primary failure surface is not the work that looks broken but the work that looks finished. The moment AI crosses from consultation into execution, eloquence stops being the main thing that matters, and the casual glance stops being an acceptable form of review. What matters is whether the system can produce bounded, inspectable, dependable work.

Joel Hron gives the cleanest formulation of this shift: the north star has moved “from helpfulness to productive.” In the same vein he describes the target as systems that don’t just suggest but plan their own work, execute it, and replan as they learn. That single move rearranges the field. Once we ask AI to actually produce output, make judgments, and act on behalf of users, the central problem is no longer prompt cleverness. It is trust under action.

That is the subject of this book. AI engineering begins where prompt engineering stops being enough. It is the discipline of turning raw model capability into delegated work that can be structured, measured, supervised, and trusted.

The real transition is from suggestion to delegation

Figure 01.1/Assistant, copilot, delegateCLICK TO ENLARGE

A lot of confusion in AI discourse comes from flattening very different kinds of systems into one bucket. Calling everything an assistant or everything an agent blurs the distinction that actually matters.

The useful spectrum is simpler:

  • an assistant suggests
  • a copilot collaborates inside a tight human loop
  • a delegate is given a unit of work and expected to come back with an artifact, a recommendation, or a completed step

The labels themselves are less important than the operating difference, and the cleanest way to tell them apart is to ask where the human sits relative to the loop: in the critical path for every step, alongside the work in real time, or out of the loop until review. An assistant helps you think; nothing it produces takes effect until you have read it. A copilot lands its contribution inside a task already in motion, the way it completes the line you were already typing. A steps you out of the moment-to-moment loop and back in at review, changing the state of the world even if only by producing work that others will rely on.

The book does not start with model intelligence in the abstract. Intelligence is necessary but insufficient. A system can be astonishing in conversation and still collapse the moment the user expects follow-through. Jacob Lauritzen, building legal AI at Legora, puts the break point bluntly: vertical AI and complex agents “need more than just the chat.” Sam Bhagwat makes the adjacent point from the workflow side. Once work becomes operational, the supposed opposition between agents and workflows starts to dissolve. The useful system is usually both.

That is the first throughline of : not better chat but delegated execution. And that shift matters because delegation changes the failure surface.

A suggestion can be ignored. A delegated action can create rework. A bad summary can waste a few minutes. A bad patch can stall a release. A shallow legal draft can mislead someone who assumes the system already did the hard part.

Chat is the visible surface; the real system lives underneath

Figure 01.2/Tell me vs go doCLICK TO ENLARGE

The text box remains important. It is usually the easiest way for a human to assign work, redirect a trajectory, or inspect an intermediate result. But once the task horizon stretches beyond a single turn, chat stops being the whole system.

Chat is what people see. The real product is the machinery underneath.

A trustworthy needs:

  • the right context, not just a large context window
  • tools it can use without drowning in irrelevant options
  • constraints that convert tacit expectations into explicit ones
  • evaluation loops that catch drift before users do
  • state that survives interruption, retries, and handoffs
  • approval boundaries that let humans steer without micromanaging every move
  • observability that shows what happened and what needs review next

This is why so many AI products keep escaping the chat box. They grow task lists, side panels, traces, approval queues, workflow views, memory layers, and tool catalogs. From the outside it can look like feature sprawl. Often it is something more basic: reality forcing the system to acquire a control surface equal to the work it to perform. Those organs are a diagnostic rather than decoration: when a serious agent product lacks one of them — a trace view, an approval queue — treat the absence as a reliability gap, not a leaner design, because a missing layer is usually where the workflow fails first. The important lesson is not that chat becomes irrelevant, but that it becomes one layer in a deeper stack.

That recurs throughout the book: as the around a coding agent, as evals and observability, as context assembly, as durable workflows and the . They are all answers to the same problem: what must surround intelligence before it is safe to work to it?

Capability is not the same as dependable work

Figure 01.3/Chat is the tip of the icebergCLICK TO ENLARGE

The AI field keeps relearning a painful distinction: demo capability and operational dependability are not the same thing. A model can look extraordinary in a controlled interaction and still fail as a working system. It can write code that seems right but violates a local convention nobody wrote down. It can retrieve relevant documents but miss the one paragraph that actually governs the decision. It can produce a beautiful answer while silently losing track of what happened two steps ago. It can look productive and still be impossible to trust. That gap is what AI engineering exists to close.

Barry Zhang and Mahesh Murag at Anthropic are especially useful here because they resist the fantasy that raw model progress alone solves the problem. Their formulation is careful: agents “have intelligence and capabilities, but not always expertise that we need for real work.” The illustration is exact — you would not ask a 300-IQ mathematician to derive the 2025 tax code from first principles when what you need is an experienced tax professional’s consistent execution. Capability and expertise are different things, and the practical move is to supply the second deliberately rather than wait for the first to grow into it: package the missing context, conventions, and procedures as reusable skills the agent can load. Models got dramatically more capable. Expertise gaps did not disappear. Operational gaps did not disappear. The principle underneath is that capability amplifies whatever workflow it runs inside: a stronger model makes a good system better and a weak one more dangerous, because it generates more convincing output whether the surrounding workflow is sound or broken.

This is one of the book’s strongest anti-hype : in production AI, scaffolding is not a wrapper around intelligence but what makes it usable. That line can sound deflationary until you notice how much leverage it creates. If dependable systems come less from raw cleverness than from the environment around the model, then engineering matters enormously. matter. Specs matter. Evals matter. Context architecture matters. Runtime semantics matter. Human oversight matters. The surrounding system is not bureaucratic drag on intelligence but the reason it can be trusted to do work.

The two recurring cases: the Software Factory and the High-Stakes Colleague

Figure 01.4/The failure surface stretchesCLICK TO ENLARGE

To keep this argument concrete, the book returns repeatedly to two recurring cases. Both are composite — drawn from real patterns rather than a single company — but they are consistent enough that what happens in one chapter carries into the next.

The first is the Software Factory, anchored in a company we will call Meridian. Meridian is a mid-size fintech. It starts with an ordinary payments repository and a strong coding model. At first the agent feels magical on small tasks. Then the team expands scope and quality gets erratic. The model is not always the real problem. The deeper issue is that the workplace was never made legible enough for delegated machine work. The team has to add , specs, validation, context discipline, eval loops, runtime structure, and review surfaces. As it does, the repo starts behaving less like a chat playground and more like a managed production environment for machine labor.

That case drives Chapters 3, 4, and 6 in particular. It shows how quickly "AI coding" stops being a prompt problem and becomes a systems problem.

The second is the High-Stakes Colleague, anchored in a firm we will call Hargrove. Hargrove is a mid-tier tax and advisory firm. Its assistant begins life as a helpful conversational surface that summarizes and explains. Then users ask it to do real professional work: assemble evidence, draft analysis, trace support, navigate internal knowledge, and operate under risk. Suddenly generic fluency is not enough. The system needs provenance, access boundaries, retrieval discipline, staged authority, durable trajectories, and explicit review points. It is no longer being judged as an answer engine. It is being judged as a professional .

That case becomes especially important in Chapters 5, 6, and 7. It makes the trust question impossible to romanticize. In higher-stakes domains, "almost right" is often the most dangerous category.

These two cases matter because they prevent the opening from floating above the rest of . The book is not arguing in abstractions; it is following the same transition across two kinds of work:

  • one where the output is software
  • one where the output is high-stakes professional judgment

In both, the same pattern appears. The more valuable the delegated work becomes, the more the surrounding system starts to matter.

Delegation makes hidden judgment visible

There is a second reason the opening cannot be only about tools and architecture. Delegation exposes how much good work always depended on tacit human judgment.

In the software case, that means local conventions, architecture taste, dependency discipline, rollback instinct, performance habits, and dozens of non-functional expectations that senior engineers usually carry in their heads. In the professional-services case, it means source hierarchy, provenance awareness, exception handling, domain caution, and judgment about when a result is not ready to trust.

Humans often mistake this tacit judgment for natural background competence because strong teams internalize it so thoroughly. But once work is handed to a machine collaborator, hidden standards become a liability. The system cannot reliably inherit what the organization never externalized, which sets the practical rule: a standard has to be made explicit before it can be delegated, or it will be violated silently. The opening of the book needs a second alongside the delegation : cheap generation increases the value of judgment.

When code, prose, research notes, and drafts get cheaper to produce, taste does not become obsolete. It becomes more operationally important. The new scarce skill is not typing faster. It is setting standards, framing tasks, spotting slop, and knowing what good looks like before the system does.

If Chapter 1 asks what changes when execution becomes delegable, Chapter 2 asks what humans still have to be excellent at when generation becomes abundant. The answer is not less craft but more visible craft.

AI engineering is the discipline of making delegation trustworthy

Once you accept that the real shift is from suggestion to delegation, a lot of the surrounding field stops looking fragmented. Prompting, retrieval, evals, workflow engines, guardrails, tool protocols, observability, sandboxing, policy files, and approval systems are often discussed as if they were separate subcultures. They are not. They are pieces of one broader discipline: making delegated machine work trustworthy enough to use.

That discipline keeps returning to a small set of questions. Can the system understand the environment it is supposed to operate in? Are the goals and constraints externalized well enough to survive handoff? Can the team tell whether the system is actually doing useful work? Is the model seeing the right information, in the right shape, at the right time? Can the work persist, recover, and expose itself to human supervision over time? Where should the system be free to act, and where must human judgment remain decisive?

AI engineering deserves to be treated as more than prompt craft or model selection. It is closer to distributed systems, product design, operations, and organizational design fused together around probabilistic components. Once the model is expected to do work, every surrounding layer becomes part of the product.

Trust under action is the governing problem

This book is not organized around the question of whether models are impressive. They are. It is not organized around whether chat is useful. It is. It is organized around a harder question: under what conditions can a system act or produce on behalf of a user without quietly drifting out of bounds?

That is the governing problem because action changes everything. A product that only converses can survive with soft trust. A product that drafts, edits, executes, routes, retrieves, summarizes, recommends, or mutates real systems needs harder trust. It needs state, structure, reviewability, and control.

The book is also skeptical of autonomy maximalism. The goal is not to maximize agency in every direction. In many valuable systems, the right design is adjustable autonomy: let the machine move quickly where the risk is low and the checks are strong; slow it down where consequences are harder to reverse. Useful autonomy is not max autonomy but well-tuned autonomy.

The opening should already make one thing clear: trust in AI is not mainly a matter of anthropomorphism or vibes. It is a property of system design.

What the rest of the book is really about

The chapters that follow are not a tour of trendy infrastructure. They are a cumulative answer to the same opening question.

  • Chapter 2 asks what human craft becomes more valuable when execution gets cheap.
  • Chapter 3 shows that delegated coding lives or dies on the legibility of the repo and the around it.
  • Chapter 4 argues that delegated systems need a control loop, not just a few impressive successes.
  • Chapter 5 argues that useful intelligence depends on building the right active working set, not merely shoveling more tokens into a window.
  • Chapter 6 argues that long-running delegated work needs state, runtime semantics, and a .
  • Later chapters extend the same logic into security, identity, realtime edges, and organizational redesign.

The underlying argument is continuous even when the technical surfaces change. The future of AI engineering is the gradual construction of dependable shared systems in which humans steer, machines execute, and trust is earned through architecture, not a pile of isolated tricks.

Closing move

The most important fact about modern AI is not that it can talk. It is that people increasingly want it to work.

They want it to return with artifacts, not just ideas; with completed steps, not just suggestions; with trajectories that can be inspected, redirected, and trusted. That desire raises the standard for the whole stack. A useful needs context, structure, evaluation, durable state, and supervision. It needs engineering.

The rest of this book is about what happens once we take that requirement seriously.

EVIDENCE OF SOURCE · CHAPTER 01 · VIDEOS

5 claims · 16 source anchors

Evidence — Source Anchors

The important transition is from suggestion to delegated execution

Open in graph
  • from helpfulness to productive
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • I think they need more
    #3 — Jacob Lauritzen, Legoraconfidence: high
  • most primitives the magic happens when you combine these things together
    #138 — Sam Bhagwat, Mastra.aiconfidence: high

Chat is an insufficient control surface for long-running or high-stakes work

Open in graph
  • Chat is one-dimensional. It's a very low bandwidth interface,
    #3 — Jacob Lauritzen, Legoraconfidence: high
  • we're asking AI systems to now produce output and produce judgments and decisions
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • handle state potentially over long periods of time. There needs to be human interaction for approvals
    #167 — Preeti Somal, Temporalconfidence: high

Reliability comes less from model cleverness than from surrounding scaffolding

Open in graph
  • The important thing is not the code but the prompt and the guardrails that got you there.
    #16 — Ryan Lopopolo, OpenAIconfidence: high
  • Agents have intelligence and capabilities, but not always expertise that we need for real work.
    #83 — Barry Zhang & Mahesh Murag, Anthropicconfidence: high
  • these are three kind of like ingredients which are pretty simple and pretty basic, but I think provide an interesting kind of like first principles approach for how to think about
    #198 — Harrison Chase, LangChain/LangGraphconfidence: high

Human oversight works best as an architectural layer, not an afterthought

Open in graph
  • There needs to be human interaction for approvals or other reasons and of course they need to be able to be uh able to run in parallel for efficiency
    #167 — Preeti Somal, Temporalconfidence: high
  • dial these agency dials far up.
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • maintaining a factory would require you to have an overview of the processes you want your coding agents to go through.
    #629 — Eric Zakariasson, Cursorconfidence: high

Once agents go parallel and autonomous, the human's verification capacity — not the agents' generation capacity — is the binding constraint

Open in graph
  • agents are not the bottleneck now and I think that's going to increasingly be the case, but we are.
    #761 — Zack Proser, WorkOSconfidence: high
  • our attention is still, you know, in meatspace, if you will, and it still degrades under load. It's still the hard constraint, essentially.
    #761 — Zack Proser, WorkOSconfidence: high
  • we just want you to look at PRs that are ready for you in GitHub.
    #758 — Joshua Snyder, PostHogconfidence: high
  • instead of you reviewing changes, if the change is pretty easy, let's just approve it with an agent and deploy it behind a feature flag.
    #758 — Joshua Snyder, PostHogconfidence: high
AI QUALITY · CHAPTER 01 · MASH JUDGES
4 unsupported claims — ship-blocker

scored on version git:e68466c

EVIDENCE OF SOURCE · CHAPTER 02
FIG. 02 · BEFORE · AFTERCLICK · SCROLL · ZOOM

AI Engineer Book · Ch 02

Taste Still Matters When Code Gets Cheap

1/4

FIG. 02.0 · OPENER

Vibe coding vs vibe engineering

Click to enlarge

CH02

CH. 02 // Drafting
3,172 words14 min read
CHAPTER 02/3,172 words/Drafting

One of the easiest mistakes to make in an AI-heavy moment is to confuse abundance with mastery. When code gets cheaper to produce, it becomes tempting to think that engineering itself has become cheaper in the same proportion. A team can now generate ten versions of a feature instead of one. A founder can spin up a prototype in a weekend. A product manager can produce a plausible spec without waiting on a formal writing cycle. A junior engineer can land patches that would have taken much longer before. The system seems to remove friction everywhere.

Some of that is real. A lot of routine output really has become cheaper.

But cheap output does not mean cheap judgment.

In some ways, the opposite is happening. When code, copy, plans, tests, and glue work become easier to generate, the new bottleneck shifts toward deciding what should exist, what quality looks like, what tradeoffs are acceptable, what should be rejected, and how to tell the difference between elegant speed and expensive slop. The human contribution does not disappear. It becomes easier to see.

If Chapter 1 says the big shift is from suggestion to delegated execution, Chapter 2 says the human side of that shift is not less craft but more visible craft. Once a machine can produce more work than a human can carefully inspect by default, taste stops being a soft virtue and becomes part of the operating system.

Cheap generation raises the value of judgment

Figure 02.1/The cheap-code syllogismCLICK TO ENLARGE

Matt Pocock captures the first principle cleanly: “software fundamentals matter now more than they actually ever have.” That can sound backward at first. Surely fundamentals matter less if a capable coding system can fill in the syntax, scaffold the endpoint, wire the form, and draft the tests.

But the more the machine handles surface-level production, the more the remaining human work concentrates around leverage points.

Which abstraction belongs here? Which dependency will quietly punish us six months from now? Which draft only looks polished because nobody asked whether the premise is right? Which shortcut is a useful prototype move and which one is a long-term maintenance trap? Which bug is local and which one reveals that the architecture itself is under-specified?

Those decisions were always important. What changes is their visibility. In a slower, human-only workflow, bad decisions were often partially hidden by the fact that all production was expensive. Teams naturally moved slower, touched fewer surfaces, and had more incidental review embedded in the cost of making anything. Cheap generation strips away that natural throttle. You can now produce a much larger amount of work on top of weak decisions.

This is why AI often behaves as an amplifier before it behaves as a replacement. Good operators get more leverage. Sloppy operators get more slop, faster.

The point is not that the tools are bad. The point is that they magnify what is already there. If the team has strong standards, explicit constraints, and people who can discriminate well, the new speed is extraordinary. If the team lacks those things, the same speed just means they can industrialize confusion.

Taste is not aesthetic preference; it is quality discrimination under abundance

Figure 02.2/The vibe-coding mode switchCLICK TO ENLARGE

The word taste can sound soft, almost decorative, as if it refers only to style or personal preference. In engineering it means something harder.

Taste is the ability to notice the difference between output that merely works and output that fits. What that ability comes down to, in practice, is a recognizable set of tells: a patch that is technically correct but shaped wrong for the system around it, a component boundary that is too clever, a naming choice that will confuse the next person, a generated paragraph that says the obvious thing in the most generic way possible, a workflow with one hidden step too many, a prototype convenience about to become permanent structure. None of these trip a test. Each is the moment where merely working and actually fitting come apart, and recognizing them on sight is what taste actually buys you.

Tuomas Artman, reflecting with Gergely Orosz on craft at Linear, raises the right unsettling question: “What happens when agents are capable of doing everything immediately for you?”

The obvious answer is speed. The more important answer is that speed changes what human excellence consists of.

If the machine can produce immediately, the scarce skill is less often the manual act of producing and more often the act of selecting, directing, constraining, sequencing, and refusing. Taste becomes the discipline of quality discrimination under abundance.

AI does not simply remove toil and leave the rest of engineering unchanged. In many cases it removes one kind of toil by placing heavier demands on another kind of work. Someone still has to know what “good” means. Someone still has to tell the difference between a local success and a systemic mistake. Someone still has to notice when the generated work optimizes for velocity in a way that quietly damages legibility, maintainability, or trust.

This is also why taste is inseparable from architecture. The strongest engineers are not just better at cleaning up generated output. They are better at shaping the conditions under which good output is likely to be produced in the first place.

There is a second reason to read generated code closely. When you wrote every line, comprehension came free with authorship. A model breaks that bundle: it hands you working code you did not build and therefore do not yet understand, and that understanding now has to be paid for separately, after the fact. Reading the diff stops being a courtesy and becomes the load-bearing step — reading it like an author, reconstructing why each choice was made rather than confirming the lines parse, tracing one path the tests do not cover to ask whether the design would survive it.

The friction is your judgment

Figure 02.3/Friction is judgmentCLICK TO ENLARGE

Armin Ronacher and Cristina Poncela Cubeiro offer one of the sharpest counterweights to the rhetoric of frictionless shipping. Their talk, titled The Friction Is Your Judgment, begins with the argument that we should add some friction back, not because speed is bad, but because some friction is actually judgment in disguise.

A lot of traditional software friction is waste. Slow builds, unclear ownership, handoffs nobody needs, cumbersome tooling, meetings that exist only because the system is poorly designed — none of that deserves romantic defense. AI can remove a lot of this, and good riddance.

But not all friction is waste. Some of it is where the human mind actually enters the loop.

The pause before merge. The question about whether this belongs in the system at all. The extra review pass on a security-sensitive path. The insistence on naming something precisely. The decision to rewrite a generated function because it violates the grain of the codebase, even if it passes today.

Those moments are easy to misclassify as inefficiency, especially when generation tools make everything else feel instant. But in many teams, that is the moment where quality is actually being created.

This is one of the deeper cultural adjustments AI engineering demands. Teams have to learn to separate needless friction from meaningful resistance. If they remove both at once, they often do not end up with a higher-performing system. They end up with a faster path to lower standards.

There is a test for which is which. Cut the pause if removing it only costs keystrokes — boilerplate, glue, scaffolding the model can regenerate on demand. Keep the pause if removing it costs a decision: whether the architecture can carry this, whether the draft is right or merely plausible, whether the frame is correct before the model executes it. The first kind of friction is waste; the second is where the judgment lives, and the cost of skipping it now scales with how fast the model executes the wrong frame.

The key phrase here is not “slow down.” It is “know what your pauses are for.”

A good team does not defend friction because it likes pain. It defends the points in the process where judgment is doing real work.

Vibe coding is a mode, not a production philosophy

The phrase is useful partly because it is a little embarrassing. It names a behavior many people recognize immediately: low-spec, high-speed, intuition-led building where the model is steered by momentum more than by explicit structure.

That mode is not worthless. In fact, it can be brilliant.

For exploration, interface sketching, rough prototypes, internal tooling, one-off automation, toy apps, or situations where learning by doing is more valuable than formal design, can be the correct move. It can widen the top of the funnel. It can make experimentation cheap enough that more people discover what is actually worth building. It can give individuals a level of expressive power that used to require a small team.

The problem begins when a useful exploratory mode quietly hardens into a default production philosophy. Corey Gallon at Rexmore calls this the vibe-coding hangover: the app works on Friday, and “then Monday rolls around, you want to add a feature, and you realize that you don't understand it, you can't maintain it, and you have to throw most or all of it away.”

is not the enemy. Unexamined is.

A strong manuscript should avoid the lazy reaction of treating all AI-native building as unserious. That would miss the real shift. But it should also avoid the equal and opposite mistake of treating momentum as a substitute for engineering. Chris Kelly at Augment Code is blunt about it. AI code is still code, and vibes do not cut it in production — where production means four-nines uptime, thousands of users, and gigabytes of data, the moment a mistake is paid by people who never saw the prompt. It still has to live somewhere. It still interacts with systems, constraints, users, security boundaries, and future maintainers. The machine does not repeal software reality.

So the right stance is not anti-vibe but mode-aware.

Being mode-aware comes down to one switch: use where the cost of being wrong is low and the goal is discovery, and leave it behind the moment the output has to endure. The tell is the Monday that Gallon described — the app still works, but now it has to change, and no one understands it well enough to change it safely. If that Monday is coming, the exploratory mode has already outlived its usefulness.

That shift in mode is itself a form of judgment.

The new scarce skill is problem framing

One of the most underrated effects of stronger generation tools is that they expose weak framing much faster.

If a human engineer receives a vague task, progress may be slow enough that ambiguity reveals itself early. Questions emerge. Missing constraints become obvious. A meeting happens. The task gets reshaped before too much damage is done.

A machine can take a badly framed prompt and sprint in the wrong direction with alarming competence. This makes problem framing more valuable, not less. Sean Grove at OpenAI puts the point directly: the new scarce skill is “writing specifications that fully capture the intent.”

Framing a task well comes down to answering a specific set of questions before the work is delegated — a gate it has to clear, not a courtesy.

What exactly is the task? What counts as success? What constraints matter? What should the system optimize for: speed, clarity, correctness, extensibility, reversibility? What is allowed to remain rough, and what must be production-grade now? What would make this output unacceptable even if it looks superficially complete?

These questions used to be signs of seniority. They now become the gate itself: operational prerequisites anyone must clear before directing cheap delegated execution.

Once we say the future is delegated work, the immediate human consequence is that directing work becomes a first-class technical skill. The manager, staff engineer, founder, designer, or individual developer who can frame a problem well suddenly gains disproportionate leverage because the system can execute rapidly against that frame.

The inverse is also true. A badly framed task can now waste far more time than before because the generator will happily produce large amounts of plausible but misaligned output. In a high-output environment, the quality of the question increasingly shapes the quality of the answer.

Review becomes more important because generation outruns intuition

A subtle danger of AI-assisted work is that it can generate artifacts faster than human intuition can responsibly validate them. This matters in code, but also in strategy docs, product copy, research notes, customer communication, and operational plans. Humans are easily seduced by fluency and completion. A thing that looks finished exerts psychological pressure to be accepted. A thing that arrived quickly can feel like found value. The system does not merely save time; it changes the emotional texture of review.

That is why review becomes a more strategic function in AI-native teams.

Not review as bureaucratic blockage. Review as quality discrimination. Review as the moment where the team asks whether the artifact is actually fit for purpose. Review as the place where tacit standards become visible.

Chris Kelly at Augment Code puts it bluntly: “code review is by far the most important skill” — and one the industry under-trained, because it interviewed for solving leetcode puzzles rather than for reading someone else’s code and judging why it is good or bad. It is the skill agents now demand at volume, because every line they write is a line you did not, and therefore have to evaluate cold.

This is where swyx’s “war on slop” is useful. Slop is not just bad code or generic writing. It is output that consumes trust faster than it creates value. It is work that looks done but transfers the cost downstream. It burdens the next person with confusion, cleanup, or false confidence. In a world of cheap generation, slop is not a side effect. It is the default failure mode.

Anti-slop discipline is not elitism. It is economic realism.

Cheap output that requires expensive cleanup is not actually cheap. Fast drafts that hide slow confusion are not actually fast. A system that creates reviewer fatigue is not scaling intelligence; it is scaling cognitive debt.

The human reviewer is therefore not an obstacle to AI productivity. In a well-designed loop, the reviewer is the mechanism through which standards survive abundance.

Constraints are a form of care

One of the recurring mistakes people make with powerful models is to imagine that creativity and constraints oppose each other. In reality, constraints are often what allow useful creativity to emerge.

Itamar Friedman at Qodo frames the problem through confidence — “ with confidence,” he calls it — asking how teams can move fast while staying grounded in the codebase and its standards. The confidence does not come from the vibes; it comes from the verification wrapped around them, high-quality tests and a reviewing pass on the generated diff before it merges. The answer is not to remove constraints but to make the right ones explicit.

Constraints do several jobs at once.

They reduce wasted search. They make evaluation clearer. They preserve local quality norms. They allow work to be delegated without requiring the delegator to hover over every step. They turn taste from a private opinion into something operational.

This is true for codebase rules, product principles, review checklists, domain boundaries, writing standards, and architectural decisions. The team that can state its constraints well can more safely than the team that relies on vibe, memory, and implied context.

Once judgment becomes more valuable, the next question is how to encode it. A lot of what we call taste at the individual level turns into , specs, and repo affordances at the system level.

The software factory still needs adults in the room

The recurring software-factory case helps make this concrete.

A team begins with exciting outputs from coding agents. The first lesson is that the repo needs more structure. The second lesson is that even a better does not eliminate the need for human standards. Someone still has to decide what the should teach. Someone still has to define acceptable tradeoffs, review boundaries, and quality bars. Someone still has to distinguish changes that merely compile from changes that improve the system.

The same is true in the High-Stakes Colleague case. A legal or tax workflow can be given better retrieval, better tools, validation passes, and trajectory review. But none of those layers removes the need for domain judgment. They are ways of making judgment scalable and inspectable.

AI does not make seniority irrelevant. In many contexts it makes seniority more leveraged and more legible.

The senior engineer, strong editor, careful researcher, or domain expert is no longer valuable mainly because they can personally grind through more output. They are valuable because they can define standards, frame problems, reject seductive nonsense, and shape systems so that more of the generated work lands inside the right quality envelope.

The human job is shifting from production to direction

It would be too simple to say that humans now only direct while machines produce. In practice, people still produce a lot, and in some cases manual work remains the fastest or safest path.

But as a directional statement, the shift is real. A larger share of human value moves toward:

  • framing tasks well
  • defining constraints
  • choosing abstractions
  • sequencing work
  • reviewing outputs
  • preserving coherence across many generated artifacts
  • deciding when to trust the system and when to narrow its scope

This is why the AI-native skill set does not look like the disappearance of engineering fundamentals. It looks like fundamentals migrating upward into more leveraged parts of the loop.

The better the generators get, the more dangerous it becomes to confuse typing with thinking. What remains scarce is not the ability to produce tokens. It is the ability to direct production toward something coherent, durable, and worth keeping.

In that sense, taste is not a nostalgic defense of craftsmanship against automation but the discipline that keeps automation from collapsing into trash.

Closing move

When code gets cheaper, many people instinctively ask what happens to programmers.

A better question is what happens to standards.

If the cost of generation collapses while the cost of bad judgment remains stubbornly high, then the defining skill of the next era is not mere production. It is the ability to know what should be produced, under what constraints, to what quality bar, with what review discipline, and with what willingness to throw seductive garbage away.

That is what taste means here. Not luxury. Not style. Not personal branding.

Judgment under abundance.

And once that becomes the scarce resource, the next technical question follows naturally: how do you build environments where that judgment can survive delegation?

That is the work of the next chapter.

EVIDENCE OF SOURCE · CHAPTER 02 · VIDEOS

3 claims · 12 source anchors

Evidence — Source Anchors

Cheap generation raises the value of taste and judgment rather than lowering it

Open in graph
  • software fundamentals matter now more than they actually ever have.
    #1 — Matt Pocock, AI Heroconfidence: high
  • capable of doing everything um immediately
    #6 — Tuomas Artman & Gergely Oroszconfidence: high
  • intentionally designed to put friction
    #14 — Armin Ronacher & Cristina Poncela Cubeiroconfidence: high

Vibe coding is an exploration mode that fails as a production default

Open in graph
  • It's called vibe engineering.
    #73 — Kitze, Sizzyconfidence: high
  • I'm declaring war on slop today.
    #59 — swyxconfidence: high
  • vibes aren't going to fix
    #132 — Chris Kelly, Augment Codeconfidence: high
  • The hangover is the resulting despair
    #106 — Corey J. Gallon, Rexmoreconfidence: high
  • vibe coding with confidence
    #127 — Itamar Friedman, Qodoconfidence: high

Problem framing and review become the scarce skills once execution is cheap

Open in graph
  • the new scarce skill is writing specifications that fully capture the intent
    #265 — Sean Grove, OpenAIconfidence: high
  • intentionally designed to put friction
    #14 — Armin Ronacher & Cristina Poncela Cubeiroconfidence: high
  • vibes aren't going to fix
    #132 — Chris Kelly, Augment Codeconfidence: high
  • I'm declaring war on slop today.
    #59 — swyxconfidence: high
AI QUALITY · CHAPTER 02 · MASH JUDGES
7 unsupported claims — ship-blocker

scored on version git:e68466c

EVIDENCE OF SOURCE · CHAPTER 03
FIG. 03 · BEFORE · AFTERCLICK · SCROLL · ZOOM

AI Engineer Book · Ch 03

Harnesses, Specs, and Codebases Agents Can Actually Use

1/4

FIG. 03.0 · OPENER

Bare prompt vs engineered harness

Click to enlarge

CH03

CH. 03 // Drafting
3,313 words14 min read
CHAPTER 03/3,313 words/Drafting

When coding agents disappoint, teams usually blame the model.

The model missed a dependency. The model misunderstood the architecture. The model refactored the right function but violated a local convention no outsider could have guessed. The model produced code that technically passed, yet somehow still felt wrong. In the postmortem, intelligence becomes the default suspect.

Sometimes that diagnosis is fair. Models do fail because they are weak, distracted, or simply not yet capable enough for the task. But in production codebases, that explanation is often too flattering to the humans involved. Many agent failures are not evidence that the model is hopeless. They are evidence that the environment was never made legible enough for delegated work.

Ryan Lopopolo puts the inversion bluntly: “The important thing is not the code but the prompt and the guardrails that got you there.” The line sounds almost rude in a field obsessed with generated output. But it captures one of the deepest shifts in AI-native engineering. Once you ask a machine to do implementation work instead of merely suggesting snippets, the surroundings become part of the product. The around the model starts determining what kind of work is even possible.

This chapter’s is simple: if you want AI to write production software, do not begin by asking what model to use. Begin by asking whether your repository, specs, validations, and workflow are structured well enough for a machine collaborator to operate without constant rescue.

A small software-factory vignette

Figure 03.1/The repo is the interfaceCLICK TO ENLARGE

Meridian started where many teams now start: with a good model inside an ordinary payments repo — the the opening chapter promised, before it had earned the name. At first the results felt magical. The agent writes tests faster than the humans expect. It handles small UI changes cleanly. It can even land a respectable refactor if a senior engineer hovers nearby and corrects its misunderstandings in real time. So the team expands the scope. They ask it to wire together a new endpoint, touch a migration, update a frontend state machine, and preserve some vague house style that nobody has ever written down.

Quality immediately gets erratic. One patch uses a dependency the team would never approve. Another passes tests but ignores a performance convention learned the hard way six months earlier. A third is logically fine yet shaped in a way that makes review irritating and rollback risky. The team says the model is inconsistent. What they really mean is that the workplace is inconsistent.

So they change the workplace. They add explicit setup scripts instead of Slack archaeology. They tighten lint and type gates. They create agent-facing instructions. They check in examples of accepted patterns. They write slimmer task specs before handing work off. They stop relying on "everyone kind of knows how we do migrations here." The repo becomes less like a haunted archive of past decisions and more like a managed surface for machine labor.

Take one Tuesday from what the team would later call the slop era. A senior engineer hands the agent a migration: move three endpoints onto the new state machine, and keep the house style. The agent comes back in minutes with a clean-looking diff. It compiles. The tests pass. But it has pulled in a parsing dependency the team had quietly banned, and it batches writes inside a loop — exactly the pattern a payments incident taught them to avoid six months earlier. Neither rule was written anywhere the agent could read. The reviewer catches the dependency, misses the write pattern, and approves. The convention resurfaces later, in a review comment nobody will search again. None of it was a hallucination. The agent guessed because the workplace gave it nothing firmer to stand on. The next morning the team does the unglamorous work: a checked-in example of an accepted migration, a lint rule for the banned import, a setup script that ends the Slack archaeology.

That is the recurring case this book will call the . It matters because it shows where the leverage really sits. The breakthrough is not that the model suddenly became a genius, but that the team stopped treating its own tacit judgment as invisible infrastructure.

The repo is the real interface

Figure 03.2/Specs persistCLICK TO ENLARGE

Most coding tools still present themselves through chat. You type a request, maybe select a few files, and wait for the assistant to propose a patch. That interface is useful, but it misleads by suggesting the real problem lives in the prompt. What actually determines the work is the environment around it — and unlike a prompt, an environment can be audited and improved.

In practice, the prompt is only the visible tip of a much larger system. The real interface is the codebase plus everything around it: the setup instructions, the architecture, the naming conventions, the tests, the lint rules, the examples of good patches, the traces of previous reviews, the ADRs, the failure cases, and the rules about performance or security that no single file states explicitly. A human engineer entering a mature repository absorbs these constraints slowly. They ask teammates what matters. They notice which patterns recur. They learn what kinds of changes get approved quickly and which ones trigger suspicion. An agent does not get that apprenticeship unless the team builds it.

Lopopolo makes the obligation explicit: “Your job is to build systems, software and structures that enable your team to be successful. And to do that, we need to make them legible to those agents that are driving the implementation.” That sentence is more radical than it first appears. It means the team is no longer only maintaining software for other humans. It is also maintaining a working environment for machine contributors. A cheap test for legibility: clone the repo into a fresh container and time how long an agent takes to reach a green test run. If it cannot — because step four lives in someone's shell history — that is a hole where the agent will guess.

That is why documentation, ADRs, examples, and historical breadcrumbs matter so much. Those are not decorative artifacts around the “real” software process; in an AI-native workflow, they are part of the execution environment itself. The rule underneath is unforgiving: a standard that lives only in scattered memory is one the agent cannot inherit, and will therefore break — in ways that look mysterious only because the team never externalized the standard the agent broke.

This is also why the practical unit of AI coding is no longer the snippet but the codebase. Naman Jain describes the shift cleanly: “My first project was actually working on generating single line... snippets and my last project was generating an entire codebase.” Once the unit of work becomes the repository, environment design stops being background hygiene and becomes first-order leverage.

The core mistake many teams make is to treat code generation as the primary problem and repo legibility as a secondary concern. In reality, the second often dominates the first. A capable model dropped into a murky repository is like a strong engineer dropped into an organization with no onboarding, inconsistent standards, and no access to prior decisions. You can still get lucky. You cannot count on it.

Good code contains hundreds of unstated decisions

Figure 03.3/The software factoryCLICK TO ENLARGE

One reason this problem is easy to underestimate is that experienced engineers are bad at seeing their own tacit judgment. Good code does not differ from bad code only in correctness. It differs in tone, proportion, naming, performance discipline, dependency choices, rollback safety, test shape, compatibility assumptions, reviewability, and fit with the broader system.

Lopopolo gives this problem a memorable scale when he says that producing a single patch can require “500 little decisions” around underspecified non-functional requirements. The exact number is not the point. The point is that repositories are dense with decisions that matter greatly but are rarely captured in the task description. A human engineer often fills those gaps through craft and context. A coding agent fills them through inference under uncertainty. Lopopolo names the mechanism: the models “during their training have seen trillions of lines of code that make every possible choice of those non-functional requirements that you could ever imagine.” Left a requirement unspecified, it samples one of those conventions, and nothing makes the sample yours.

That is where slop comes from.

The sloppy patch is not always the sign of a stupid model. It is often the sign of a task whose invisible success criteria were never written down. The agent guessed because the environment forced it to. Then humans act surprised that the guesses look generic.

Once you see the problem this way, the prescription changes. The answer is not only “prompt better”; it is to reduce the amount of silent guesswork that the environment demands. Externalize architecture choices. Store examples of accepted patterns. Make non-functional constraints explicit. Give the system stable ways to discover how this team expects software to be built.

That is what really means. Not a fancier wrapper around a model, but the systematic conversion of tacit engineering judgment into durable, machine-usable constraints. Lopopolo describes the raw materials plainly — “leaving breadcrumbs, documentation, ADRs, persona oriented documentation around what a good job looks like” — and encoding them once buys reuse: have one engineer write down what a good QA plan looks like, and “every agent trajectory is going to get a good QA plan.”

Specs are not paperwork; they are executable intent

This is where becomes more than a documentation preference. In a purely human workflow, specs often compete with direct conversation. A strong team can get away with more ambiguity because engineers resolve a surprising amount through meetings, hallway discussions, pull-request comments, and local intuition. In an AI-mediated workflow, that ambiguity becomes more expensive. Context windows expire. Tasks get retried. Work gets decomposed into subproblems. Different agents touch different layers of the same system. Without persistent artifacts, intent keeps dissolving back into transient conversation. The operational test is whether intent would survive a fresh agent picking up the task cold; if not, it belongs in a persistent artifact, not the prompt.

Al Harris offers one of the clearest framings in the corpus: “The spec then becomes the natural language representation of your system. It has constraints, it has concerns around functional requirements, non-functional requirements...” That framing matters because it upgrades the spec from document to control surface. Treating it that way has a concrete consequence: when the output is wrong, you fix the line in the spec that under-specified it and regenerate rather than hand-patch the output. Repeatedly editing code the next run overwrites is the signal that the spec, not the patch, is the thing to change.

Harris makes a second point that is just as important: is “a structured workflow that we push you through to reliably deliver high-quality software... requirements, design, and execution phases.”

A useful spec in an AI-native environment does several jobs at once. It records what problem is being solved. It states constraints the agent should not have to rediscover through trial and error. It makes room for non-functional requirements that are otherwise easy to drop. It persists across retries and handoffs. And it creates a shared object that humans and machines can both inspect.

Seen this way, specs are a form of context compression. They take sprawling intent that would otherwise live in chat history, tribal knowledge, or remembered conversation and package it into a stable artifact the workflow can keep returning to. They also make evaluation easier, because a system with a concrete spec can be judged against a clearer notion of success than one that began with a vague prompt and hope.

This does not mean every ticket needs an elaborate design doc. Over-specification can just as easily collapse exploration into bureaucracy, and some work is best discovered through fast iteration. The test is not how important the work feels but how expensive a misunderstanding would be: once the task is large, parallelized, safety-sensitive, or costly to review, explicit intent stops being ceremony and becomes leverage.

The deeper point is that matters more, not less, in an era of powerful coding agents. The stronger the generator, the more valuable a stable representation of intent becomes.

Agent-ready codebases are designed, not discovered

At this point the argument can sound abstract, so it helps to come back to repository mechanics. Eno Reyes is especially useful here because he connects old-fashioned engineering hygiene to an AI-native operating model. He begins with a deliberately basic question: “Do you have some automated validation for the format of your code?... for professional software engineers [it's] like, yeah, of course we do.” Then comes the important turn: “But I think you can go a step further.”

That extra step is the real substance of agent-readiness. The question is not simply whether a team has linting or tests, but whether the codebase has enough automated validation and explicit structure that a coding agent can move through it with bounded risk. A repository becomes agent-ready when it exposes enough of its standards, setup, and quality gates that delegated work becomes legible. The step further is that the validation surface is itself something the agent can extend: you can “ask a coding agent, could you figure out where we're not being opinionated enough about our linters” and have it write the missing rule. Reyes sets a low bar on purpose — “a slop test is better than no test” — because once a rough check exists, the next agent follows it and the rules ratchet tighter.

A practical checklist usually includes at least the following:

  • a stable folder structure rather than a maze of historical accidents
  • explicit setup, build, and run commands that do not rely on oral tradition
  • strong type, lint, and test gates the agent can run repeatedly
  • architecture decisions stored in files instead of buried in memory
  • examples of accepted patterns for tests, APIs, migrations, and reviews
  • specs or task briefs stored close enough to the work that they survive handoff
  • narrower tools or scripts for common operations where free-form shell access is unnecessary

None of this is glamorous. That is exactly why it matters. The biggest gains in coding agents often come not from frontier prompting technique but from reducing avoidable ambiguity in the repository itself. Validation also caps how ambitious delegation can get: Reyes is explicit that you cannot fan out parallel agents until single-task execution succeeds nearly 100 percent of the time — if you cannot tell automatically whether one change is safe, running twenty only multiplies unverified output.

There is also an organizational benefit hiding inside this technical one. Better repositories do not only help machines. They help weaker humans, new hires, cross-functional contributors, and future maintainers. In that sense, “agent-ready” is not some alien new standard imposed by AI. It is a sharper test of whether the team actually encoded its own expectations in reusable form. The agent is exposing the difference between standards the team possesses and standards the team can operationalize. ## The is a workflow, not just a wrapper

It is tempting to imagine the as a thin layer around a model: maybe a system prompt, a tool list, a sandbox, and a few guardrails. That is too narrow.

A real includes environment setup, repository policy, validation steps, task decomposition, review surfaces, memory of prior work, failure handling, and the sequence in which all those things are applied. In other words, it is a workflow. Lopopolo's working definition names what ties those pieces together: “a good is really operationalized around giving the model text at the right time.” The unifying job is timing and selection — which file, rule, or example reaches the model at the step it needs it.

This is where the software-factory metaphor becomes useful. Eric Zakariasson talks directly about “building your own ,” and the phrase lands because it redirects attention from one-off generation to staged production. A factory has specifications, stations, checks, feedback loops, and manager-visible status. It does not assume that every worker can safely improvise in every direction.

Zakariasson makes a subtler point too: the factory itself needs a spec. “To set the spec for the factory,” he says, you would likely have a folder in the codebase with markdown guidance, best practices, and rules. That is exactly the conceptual move this chapter needs. The has to be encoded somewhere. Once it is checked into the repo, process stops living only in human habit and becomes part of the codebase’s working surface.

Once you think in , you immediately care about evaluation and runtime semantics. A that cannot measure quality is incomplete. A that cannot preserve state across longer tasks is fragile.

Subagents and specialization belong to the harness

The same logic extends beyond a single agent. One of the most interesting developments in modern coding systems is the move toward specialized roles: research agents, review agents, refactor agents, debugging agents, and broader subagent frameworks that let a larger task be decomposed into parallel, semi-independent work. OpenAI’s Codex materials describe subagents as “the ability wherein you can spin off a master task into decomposable parallel and independent tasks.”

The key insight is not merely that parallelism can make things faster. It is that specialization makes process explicit.

When a team creates a dedicated review agent, a repo-auditing agent, or a migration-focused agent with narrow tools and instructions, it is encoding judgment about how work should be done. The role itself becomes part of the . This mirrors what strong human organizations already do. They do not treat every task as a blank slate executed by a generalist. They create roles, review structures, and bounded responsibilities so judgment can scale.

But subagents also intensify the need for good scaffolding. More workers without a stronger do not create a factory. They create chaos faster. Parallel output is only valuable if the pieces can be recomposed, inspected, and evaluated. That means subagents are not an argument against but evidence that it is becoming more important.

The new advantage is environment design

The marketing of AI coding tools naturally focuses on generation. That is the visible magic. The agent edits a file. It writes a test. It proposes a patch. Those moments are real and often impressive.

But the durable advantage is increasingly elsewhere. It belongs to teams that make their repositories legible. Teams that externalize non-functional judgment instead of leaving it trapped in senior engineers’ heads. Teams that treat specs as reusable intent rather than ceremonial paperwork. Teams that invest in validations and repo affordances that help an agent check its own work. Teams that gradually turn loose process into a staged, inspectable . Reyes puts a specific number on the stakes: this investment is where “the real like 5x, 6x, 7x comes from,” and the catch is that “it's a choice that you as an organization have” — the model will not hand it to you.

This is why deserves to be treated as a primary discipline instead of a tactical trick. The is not a helper around the codebase. It is becoming part of the codebase.

And that may turn out to be one of the most important shifts in software engineering culture. The winners in AI coding will not simply be the teams with access to the strongest models. They will be the teams that built workplaces those models can actually understand.

Once the environment can produce delegated work at all, the obvious next question is no longer how to generate more. It is how to know whether the generated work is actually good.

EVIDENCE OF SOURCE · CHAPTER 03 · VIDEOS

13 claims · 42 source anchors

Evidence — Source Anchors

Reliability comes less from model cleverness than from surrounding scaffolding

Open in graph
  • The important thing is not the code but the prompt and the guardrails that got you there.
    #16 — Ryan Lopopolo, OpenAIconfidence: high
  • Agents have intelligence and capabilities, but not always expertise that we need for real work.
    #83 — Barry Zhang & Mahesh Murag, Anthropicconfidence: high
  • these are three kind of like ingredients which are pretty simple and pretty basic, but I think provide an interesting kind of like first principles approach for how to think about
    #198 — Harrison Chase, LangChain/LangGraphconfidence: high

Harness quality is a major determinant of coding-agent quality

Open in graph
  • a good harness is really operationalized around giving the model text at the right time
    #16 — Ryan Lopopolo, OpenAIconfidence: high
  • there's so much work that has been put in uh over the last you know 20 to 30 years around the automated validation and verification of software that you build
    #57 — Eno Reyes, Factory AIconfidence: high
  • instead of micromanaging, what I'm doing is I'm scaffolding and providing context.
    #190 — Eric Hou, Augment Codeconfidence: high
  • identifying problems with the code because if there's no problems then it's probably high quality code
    #179 — Josh Albrecht, Imbueconfidence: high

Specs are not paperwork; they are executable intent

Open in graph
  • specs are natural language, you're using specs as a control surface to explain what you want the system to do.
    #40 — Al Harris, Amazon Kiroconfidence: high
  • leaving breadcrumbs, documentation, ADRs, persona oriented documentation around what a good job looks like.
    #16 — Ryan Lopopolo, OpenAIconfidence: high

The practical unit of AI coding is the codebase, not the snippet

Open in graph
  • snippets and my last project was generating an entire codebase.
    #72 — Naman Jain, Cursorconfidence: high
  • agents MD files an open standard
    #57 — Eno Reyes, Factory AIconfidence: high
  • codebase for harness engineering
    #16 — Ryan Lopopolo, OpenAIconfidence: high

Agent-ready codebases are designed, not discovered

Open in graph
  • agents MD files an open standard
    #57 — Eno Reyes, Factory AIconfidence: high
  • context deficit as the biggest blocker.
    #190 — Eric Hou, Augment Codeconfidence: high
  • a garbage codebase you're going to get
    #621 — Matt Pocockconfidence: high

The harness is evolving from a local loop into a staged software factory

Open in graph
  • getting to a place where you can build your own like software factory
    #629 — Eric Zakariasson, Cursorconfidence: high
  • unified agent harness that will manage
    #632 — Vaibhav Srivastav & Katia Gil Guzman, OpenAIconfidence: high
  • parallel agents working together to fix
    #42 — Robert Brennan, OpenHandsconfidence: high
  • The difference with missions is that we run features serially.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • Our longest mission ran for 16 days
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • We just kind of gave each role its own kind of context window.
    #691 — Ash Prabaker & Andrew Wilson, Anthropicconfidence: high
  • it's no longer about the model or the agent. It's about the process.
    #743 — Vincent Koc, OpenClawconfidence: high

Harness quality now includes capability packaging, not only repo hygiene

Open in graph
  • That's what a skill is. You're teaching the the LLM how to do something in the way that you expect it to be done
    #654 — Nick Nisi & Zack Proser, WorkOSconfidence: high
  • This is how the agent is
    #683 — Pedro Rodrigues, Supabaseconfidence: high
  • 49% reduction of the initial
    #625 — Sam Morrow, GitHubconfidence: high
  • the schema is the UI for the agent.
    #744 — Michael Hablich, Google (Chrome DevTools)confidence: high

Coordination is the unsolved runtime primitive for multi-agent systems

Open in graph
  • the thing that's missing for me is coordination.
    #704 — Lou Bichard, Onaconfidence: high
  • through sort of state machines, you know, by building out workflows and effectively state machines
    #704 — Lou Bichard, Onaconfidence: high
  • They step on each other's changes. They duplicate work. They make inconsistent architectural decisions.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • we have the two agents basically negotiate what done actually means.
    #691 — Ash Prabaker & Andrew Wilson, Anthropicconfidence: high

Coding agents expose the gap between standards a team possesses and standards it can operationalize

Open in graph
  • there's so much work that has been put in uh over the last you know 20 to 30 years around the automated validation and verification of software that you build
    #57 — Eno Reyes, Factory AIconfidence: high
  • specs are natural language, you're using specs as a control surface to explain what you want the system to do.
    #40 — Al Harris, Amazon Kiroconfidence: high

Subagent specialization makes process explicit and encodes team judgment into roles

Open in graph
  • a good harness is really operationalized around giving the model text at the right time
    #16 — Ryan Lopopolo, OpenAIconfidence: high

Once agents go parallel and autonomous, the human's verification capacity — not the agents' generation capacity — is the binding constraint

Open in graph
  • agents are not the bottleneck now and I think that's going to increasingly be the case, but we are.
    #761 — Zack Proser, WorkOSconfidence: high
  • our attention is still, you know, in meatspace, if you will, and it still degrades under load. It's still the hard constraint, essentially.
    #761 — Zack Proser, WorkOSconfidence: high
  • we just want you to look at PRs that are ready for you in GitHub.
    #758 — Joshua Snyder, PostHogconfidence: high
  • instead of you reviewing changes, if the change is pretty easy, let's just approve it with an agent and deploy it behind a feature flag.
    #758 — Joshua Snyder, PostHogconfidence: high

Agents fabricate having verified — they report success they never achieved — so the harness must supply real verification, not trust the agent's account of it

Open in graph
  • There's no error, no warning, just the wrong answer.
    #766 — Rafael Levi, Bright Dataconfidence: high
  • The agent gets blocked, it needs to please you and it makes things up.
    #766 — Rafael Levi, Bright Dataconfidence: high

Parallel agents need per-agent runtime isolation — a sandbox/micro-VM/worktree each — because containers are not a sufficient boundary for agent-generated code

Open in graph
  • And only with having sort of the full isolation of a VM will you be able to effectively do this properly.
    #704 — Lou Bichard, Onaconfidence: high
  • It is also backed by a micro VM. So a sandboxed computer in the cloud on its own Git branch.
    #623 — Maggie Appleton, GitHubconfidence: high
  • if you just use containers, by the way, that's not an isolation layer in case anybody's wondering. Yeah. Yeah. Don't use containers for isolation.
    #151 — Rene Brandel, Cascoconfidence: high
AI QUALITY · CHAPTER 03 · MASH JUDGES
4 unsupported claims — ship-blocker

scored on version git:e68466c

EVIDENCE OF SOURCE · CHAPTER 04
FIG. 04 · BEFORE · AFTERCLICK · SCROLL · ZOOM

AI Engineer Book · Ch 04

Evals Are the Control System

1/4

FIG. 04.0 · OPENER

Vibes & benchmarks vs operational eval loop

Click to enlarge

CH04

CH. 04 // Drafting
3,743 words16 min read
CHAPTER 04/3,743 words/Drafting

The first failure mode of AI systems is obvious: they can be wrong. The second is more dangerous: they can look right often enough that teams stop measuring.

A demo works twice in a row. A prototype returns a plausible answer. A coding agent lands a decent patch in a familiar repo. Everyone starts speaking in the language of vibes. The system feels promising. It feels almost ready. And because modern models are so good at producing locally convincing output, that feeling can persist far longer than it should.

Ido Pesok captures the seduction perfectly with a line that sounds almost comic because it is so familiar: “It worked first try... I even tested it twice... So from there we’re good to ship, right?” Every team working with generative systems has lived some version of that moment. The problem is not that the demo was fake, but that a successful demo is not yet a control loop.

That is why the real role of evals is often misunderstood. Evals are not there to decorate a launch deck or to compare two models in the abstract. They are there to create a feedback system around delegated work. As the task horizon stretches from single-line completion to repo-scale changes and multi-step workflows, the gap between toy metrics and operational reliability gets wider. The hard question stops being “Is the model smart?” and becomes “Can this system repeatedly do useful work in our environment without silently drifting out of bounds?”

The software factory needs a quality system

Figure 04.1/Evals are not unit testsCLICK TO ENLARGE

In the previous chapter, Meridian turned an ordinary payments repository into a more legible workplace for coding agents. They added the checked-in migration example, the lint rule that finally killed the banned dependency, the setup scripts that replaced Slack archaeology — the repairs the slop era forced. The improved, and the agent's output improved with it.

But that only gets Meridian halfway. A more legible workplace makes delegated work possible. It does not by itself make delegated work trustworthy. The moment the repo starts behaving like a , a new question appears: how do you know whether the factory is producing good work consistently?

This is where many teams stall. They do the hard thinking required to structure tasks and tighten the repository, but they still assess outcomes the way people assess demos: by gut feel, by a few handpicked examples, or by whether a trusted engineer was pleasantly surprised in the last week. Human judgment matters. But without a more systematic loop, the team is still flying mostly by anecdote.

A real factory needs quality control. A delegated needs evals.

The crucial shift is to stop thinking of evals as a one-time gate and start thinking of them as an ongoing instrument panel. They tell you when a new model is better on your work and when it is merely different. They tell you whether a prompt revision improved one slice of performance while quietly damaging another. They tell you whether a new retrieval strategy or tool description increased completion rate but also increased latency or cost. They tell you whether your agent can still handle the classes of failure that hurt you last month. Without that loop, teams are not really running a production system, only a series of hopeful anecdotes.

A failure slice from the factory floor

Figure 04.2/The unit of evaluationCLICK TO ENLARGE

The easiest way to see what evals are for is to watch what happens when they are missing. By now Meridian's team has upgraded from "small safe edits" to "multi-file implementation tasks." The agent is asked to add rate limiting to an internal API endpoint, thread the new behavior through a background job, and preserve an existing admin override. On first inspection the run looks good. The patch compiles. Tests pass. The PR description is tidy. A reviewer glances at the diff and says some version of the most expensive sentence in modern engineering: looks fine.

Two days later support reports something odd. A class of admin-triggered backfills is now stalling in production. Nothing is fully broken, but jobs are queuing longer than usual. Customers are not yet furious. Engineers are not yet panicking. The system is merely drifting into a worse state.

The postmortem is revealing. The agent did in fact implement rate limiting. It even mirrored the main service pattern correctly. But it also applied that same throttle to the backfill path, where the intended rule was different. The relevant exception had existed only in an old review comment and in the head of Meridian's most senior payments engineer — the one person who remembered why that path was special. The code still type-checked. The unit tests still passed because none of them covered the override path under production-like volume. The patch was locally plausible, globally wrong.

This is the shape of many AI failures in production. They are not spectacular hallucinations. They are near-misses that survive ordinary review because each individual move looks reasonable. The model did not go insane. The system simply had no reliable way to notice that an important slice of behavior had regressed.

Once Meridian sees this pattern clearly, the eval work almost writes itself. They add a regression case for the admin override path — what the team will afterward just call the admin-override regression. They mine previous incidents for similar "special path" behavior. They create a task slice for patches that touch both product logic and operations logic. They stop asking only whether the patch passes and start asking which real failure families it still protects against.

That is what a control system looks like in practice. It converts an expensive lesson into a reusable instrument.

The unit of evaluation changed

Figure 04.3/The observability flywheelCLICK TO ENLARGE

A lot of inherited evaluation habits break because the unit of AI work changed faster than the measurement habits around it. Naman Jain describes the shift in one sentence: “My first project was actually working on generating single line... snippets and my last project was generating an entire codebase.” That arc should reshape how we think about evals. If the system is no longer doing tiny local completions, then tiny local tests are no longer enough.

The snippet era made certain shortcuts possible. You could ask whether the completion looked plausible. You could measure pass@k on constrained benchmark tasks. You could infer quite a lot from unit-level success. Those methods were not useless. They were matched to a smaller unit of work.

But once the task becomes a codebase change, a retrieval workflow, a multi-step customer-support resolution, or an hours-long planning loop, the evaluation target becomes more complicated. The system may make a series of locally sensible moves and still fail globally. It may retrieve relevant documents but rank them badly. It may edit the right files but leave the repo in a state that is hard to review. It may satisfy an obvious user request while violating a subtler business or safety constraint. When the unit of work changes, the unit of evaluation must change too.

It also means grading the path, not only the destination. Two runs can land on the same diff while one took a safe route and the other quietly deleted a failing test to turn red green; a control system scores whether the agent reached the known-good end state and inspects how it got there, rather than only checking the final files against a golden patch.

This is one reason Pesok’s title, “Evals Are Not Unit Tests,” matters so much. The point is not that software-testing instincts are irrelevant. It is that application-layer AI systems are not deterministic functions in the old sense. Pesok frames the problem at the right level: “This will be a focus on what do evals mean for your users, your apps and your data. The model’s now in the wild, out of , and it needs to work for your use case.”

Production evals are not only about model capability. They are about situated system behavior.

Ara Khan, who works on evals at Cline, names the two ways teams get this wrong. One camp commits “classic benchmark maxing,” chasing a leaderboard number that, in his words, “won’t hold the test of actual real-world evidence.” The other swings entirely to taste and vibes. Neither is a control loop on its own: “there are right ways to use them, there are wrong ways to use them.” The working discipline is to keep both — a tracked aggregate score and a human-labeled slice that catches the cases the aggregate hides.

Real-world tasks beat synthetic cleverness

Once teams accept that the old unit of evaluation is insufficient, they face a second problem: what should replace it? Here Naman Jain offers the most useful methodological rule in the corpus: “Your task should be natural and sourced from the real world and then you should be able to reliably grade them.” That sentence is a quiet standard for seriousness. It rejects two common temptations at once.

The first temptation is synthetic cleverness: tasks invented because they are easy to generate, easy to score, or flattering to the system. The second is unscored realism: impressive examples that feel close to reality but cannot be graded consistently enough to support iteration. Good eval design has to balance both. The task should resemble actual work, and the scoring should be stable enough that teams can compare versions, prompts, tools, and models over time.

Jain’s concrete example is instructive. Rather than inventing toy tasks, his team looks at real repositories: “We take a codebase... we crawl over all the commits... and we find the commits... related to performance optimization.” That is a different epistemology. Instead of asking what benchmark problem might approximate software engineering, the team mines the history of software engineering itself. The recipe is concrete enough to copy: revert one of those fixes, hand the agent the broken state, and score whether it gets back to the known-good commit.

This matters beyond coding. In a support system, the right eval set may come from painful historical tickets. In a legal workflow, it may come from real review patterns that produced escalations. In a research tool, it may come from queries whose wrong answers were persuasive enough to mislead users. The strongest eval sets are often not imagined in a conference room. They are harvested from the places where the system or its human predecessors actually struggled.

This is why human-seeded evals matter so much. Samuel Colvin’s framing is useful not because it romanticizes manual labor, but because it reminds us that humans are often the only reliable source of task realism early on. They know which failures are expensive, which edge cases are recurrent, and which “good-looking” outputs are secretly wrong. Early eval discipline often begins with a human saying: this class of mistake bit us three times last month; from now on it belongs in the test set. The more a system does real work, the less synthetic evals can tell you.

Reliability got harder, not easier

One of the stranger habits of the AI era is to talk as if more capable models somehow dissolved the old reliability problem. They did not.

Samuel Colvin says it plainly: “We still want to build reliable scalable applications and that is still hard. Arguably it’s actually harder with Gen AI than it was before.” The reason is not mysterious. Classical software often failed in brittle but inspectable ways. Generative systems fail in a broader distribution of ways, including ones that appear superficially correct. They also fail in places where multiple layers interact: prompt design, retrieval quality, tool calling, context assembly, schema handling, business logic, state management, and user input variability.

That complexity is what makes naïve evaluation feel so attractive: it offers a fantasy of simplification. If only we could reduce the system to a single score, a single benchmark, a single judge model, a single red-green dashboard, the uncertainty would shrink back to familiar scale. But the right answer to complexity is not false simplicity; it is a richer control system.

For coding systems, some parts of that loop can be relatively crisp. Colvin points out that if you are using a coding agent, “it can use type safety or running type checking to basically mark its own homework.” That is a powerful phrase because it describes one layer of automated self-verification. Static checks, tests, schemas, and validators let the system catch classes of error before a human ever reviews the result.

But those checks are only part of the story, and the admin-override regression is the proof: it type-checked, its tests passed, and it was still globally wrong. A patch can clear every automated gate and still be architecturally clumsy. A retrieval answer can cite real documents and still be unhelpful. A polite assistant can satisfy style constraints while failing the user’s actual goal. Self-verification catches the errors a machine can already define; it cannot certify that the whole change was correct. Production reliability requires multiple layers of evidence, not one.

Application-layer evals are about users, apps, and data

The deeper you go into production AI, the less useful it is to talk about evaluation as if it were only an abstract research discipline. Pesok’s framing matters precisely because it drags evals down into application reality: users, apps, and data. That is where all the ugly variables live. Real users phrase things badly. They ask underspecified questions. They contradict themselves. They have different levels of expertise. They appear in bursts. They produce distributions of input that no tidy benchmark fully captures.

Meanwhile the application has costs, latency budgets, permission boundaries, brand expectations, and failure modes whose importance is highly uneven. A hallucinated movie recommendation is embarrassing. A hallucinated clause in a contract review is much worse. An answer that takes ten seconds instead of three may be acceptable in one workflow and fatal in another. A coding patch that is 95 percent correct but painful to review may still lose economically.

This is why application-layer evals tend to look messier than leaderboard metrics. They mix objective checks with rubric-based human review, and they carry slice-level metrics instead of one universal score. That structure is the point, not a compromise: the slices are not equally important, so a single averaged score hides the failures that cost the most. The discipline is to weight each slice by consequence rather than frequency — to ask not only whether the output was correct, but whether it was usable, safe, timely, cheap enough, and appropriate for this workflow, and to let a rare but expensive failure outweigh a common trivial one. That messiness is not evidence that evals are immature, but that the work is real.

Observability becomes tomorrow’s eval set

The best line in the chapter may belong to Phil Hetzel: “Observability and eval... it’s actually the same problem from a systems perspective.” That sentence is powerful because it collapses a false separation.

Teams often imagine observability as the thing you do after deployment and evals as the thing you do before deployment. In reality, the two should feed each other continuously. Observability shows you what the system is actually doing in the wild. Evals let you replay, score, compare, and improve against those patterns before you ship the next change.

Past a certain complexity this stops being optional. The Raindrop team describes crossing over “from a testing and eval paradigm to a monitoring paradigm,” because no fixed offline set can enumerate the edge cases a live agent will hit. What makes both halves work is the same artifact — the trace. As Arize’s Dat Ngo puts it, “code doesn’t audit agents or — it’s actually the telemetry that does that.” The practical move is to instrument every production run as a trace from the start, before you think you need it, because a trace you never captured is an eval case you can never recover.

Production traces are not only for debugging incidents; they are raw material for the next generation of offline evaluation. A user conversation that exposed a prompt weakness can become a regression example. A failed coding task can become a benchmark slice. A costly retrieval miss can become a dataset item for future ranking experiments. An escalation to human review can become a labeled example of where the autonomy boundary was crossed badly.

This creates the eval flywheel:

  1. observe real behavior in production
  2. identify painful or important failure patterns
  3. label and structure those patterns into reusable datasets
  4. compare prompts, tools, models, or workflows against them
  5. deploy improvements
  6. observe again

Once you see the loop, Chapter 3’s story becomes more concrete. A without observability cannot learn. Observability without eval discipline cannot prioritize.

This is also why Hetzel insists that “an eval platform is not just a test runner.” A runner executes checks. A real platform also stores datasets, versions scoring logic, supports comparisons, surfaces disagreements, and creates enough trust in results that teams will actually use them to make decisions. In mature AI engineering, the platform around evaluation becomes part of the product-development process itself.

There is a newer reason the platform matters: once coding agents write code alongside people, they become readers of the eval suite too. Lawrence Jones at incident.io, who calls his evals “AI unit tests,” stores them as YAML checked in next to the prompt they grade — and learned the interface lesson the hard way. When his team wrapped the evals in richer browser UIs, both audiences fell away: humans lacked the time, and the “coding agents weren’t able to work with them.” The unlock was not a better dashboard but “a small CLI tool that we call eval tool,” because “file systems are exceptionally good agent context.” Pushed further, their “scrapbook” pipeline downloads each backtest investigation as a file tree and runs roughly twenty-five agents in parallel, one per investigation, returning a structured improvement report instead of a chart — and Jones is careful that “these patterns do generalize.” The portable test is blunt: could a coding agent, given only the interface you already have, find a failing eval, read the trace behind it, and add the regression case — or could only a human with the dashboard open do that?

Evals are how teams externalize judgment

There is a cultural misconception hiding inside a technical one. People often talk as if evals are mostly about metrics. In practice, they are also about institutionalizing judgment.

A team may that it wants “better answers,” “cleaner patches,” or “safer behavior,” but until those standards are converted into examples, rubrics, thresholds, and review habits, they remain aspirations. That conversion is the real deliverable of eval work: it forces the team to say, concretely, what it is willing to call good enough. A standard that cannot survive being written down that way was never a standard, only a hope.

Evaluation work is often uncomfortable because it surfaces disagreement. One engineer cares most about correctness. Another cares about cost. A PM cares about task completion and delight. A support lead cares about escalation quality. A security reviewer cares about worst-case behavior, not average behavior. An eval system does not make these tradeoffs disappear. It makes them discussable.

In that sense, evals are a control system not only for the model, but for the organization. They are how teams turn fuzzy standards into inspectable ones.

This is also why a good eval program usually contains multiple layers:

  • fast automatic checks for obvious regressions
  • scenario datasets sourced from real tasks
  • slice-level analysis for important subpopulations or failure types
  • human or expert review where judgment cannot be safely collapsed into a scalar
  • comparison workflows that help teams decide whether a change is actually an improvement

None of this is glamorous. But neither is version control, incident response, or CI.

The control system is organizational, not only technical

The final mistake to avoid is thinking that evals belong to one heroic person. In immature AI teams, evaluation often starts that way: one careful engineer, one spreadsheet, one growing pile of examples, one increasingly overworked human who knows where the bodies are buried. That is a reasonable beginning. It is not a durable end state.

Once AI systems matter, evals have to become institutional. Someone has to own datasets. Someone has to decide how failures are labeled. Someone has to maintain slices as the product changes. Someone has to adjudicate when an automatic judge disagrees with expert review. Someone has to keep the loop connected to product decisions instead of letting it degrade into ritual.

This is another implication of Hetzel’s point that an eval platform is not just a runner. It is shared infrastructure. It sits between engineering, product, design, operations, and whatever domain expertise the application depends on. It gives those groups a common object to argue over constructively.

That is also why the question “Do we have evals?” is usually too small. The better question is: do we have an operating habit for turning real failures into better systems?

Evals are what make delegation trustworthy

Once AI systems start doing work instead of merely suggesting it, measurement stops being optional. You cannot supervise every action directly. You cannot reason from benchmark scores to production trust. You cannot ship on vibes indefinitely, no matter how impressive the model feels during a demo.

What you can do is build a control system: representative tasks, credible scoring, production observability, regression sets from real failures, comparison loops, and a habit of turning mistakes into reusable tests. That is what evals are for.

Not to tell you whether your model is impressive, but to tell you whether your system is safe to trust.

And this is the deeper continuity between the chapters so far. Chapter 3 argued that delegated work depends on a legible . Chapter 4 adds that a legible is still not enough. Once the machine can act, the surrounding system needs a way to notice drift, compare alternatives, preserve painful lessons, and keep quality from collapsing into anecdote.

The natural next question is what the system is actually steering with. Once teams can structure work and measure outcomes, they run into a third bottleneck: whether the agent is seeing the right information, in the right shape, at the right moment. Context is not merely input. It is infrastructure.

EVIDENCE OF SOURCE · CHAPTER 04 · VIDEOS

14 claims · 50 source anchors

Evidence — Source Anchors

Reliability comes less from model cleverness than from surrounding scaffolding

Open in graph
  • The important thing is not the code but the prompt and the guardrails that got you there.
    #16 — Ryan Lopopolo, OpenAIconfidence: high
  • Agents have intelligence and capabilities, but not always expertise that we need for real work.
    #83 — Barry Zhang & Mahesh Murag, Anthropicconfidence: high
  • these are three kind of like ingredients which are pretty simple and pretty basic, but I think provide an interesting kind of like first principles approach for how to think about
    #198 — Harrison Chase, LangChain/LangGraphconfidence: high

Harness quality is a major determinant of coding-agent quality

Open in graph
  • a good harness is really operationalized around giving the model text at the right time
    #16 — Ryan Lopopolo, OpenAIconfidence: high
  • there's so much work that has been put in uh over the last you know 20 to 30 years around the automated validation and verification of software that you build
    #57 — Eno Reyes, Factory AIconfidence: high
  • instead of micromanaging, what I'm doing is I'm scaffolding and providing context.
    #190 — Eric Hou, Augment Codeconfidence: high
  • identifying problems with the code because if there's no problems then it's probably high quality code
    #179 — Josh Albrecht, Imbueconfidence: high

Specs are not paperwork; they are executable intent

Open in graph
  • specs are natural language, you're using specs as a control surface to explain what you want the system to do.
    #40 — Al Harris, Amazon Kiroconfidence: high
  • leaving breadcrumbs, documentation, ADRs, persona oriented documentation around what a good job looks like.
    #16 — Ryan Lopopolo, OpenAIconfidence: high

The practical unit of AI coding is the codebase, not the snippet

Open in graph
  • snippets and my last project was generating an entire codebase.
    #72 — Naman Jain, Cursorconfidence: high
  • agents MD files an open standard
    #57 — Eno Reyes, Factory AIconfidence: high
  • codebase for harness engineering
    #16 — Ryan Lopopolo, OpenAIconfidence: high

Evals are a control system, not just a test suite

Open in graph
  • improvement without measurement is limited and imprecise.
    #125 — Ido Pesok, Vercel v0confidence: high
  • We still want to build reliable scalable applications and that is still hard
    #184 — Samuel Colvin, Pydanticconfidence: high
  • eval to us it's actually the same problem from a from a systems perspective.
    #628 — Phil Hetzel, Braintrustconfidence: high
  • small CLI tool that we call eval tool
    #689 — Lawrence Jones, incident.ioconfidence: high
  • designed to allow agents to leverage our eval suite files.
    #689 — Lawrence Jones, incident.ioconfidence: high
  • classic benchmark maxing.
    #746 — Ara Khan, Clineconfidence: high
  • There are right ways to use them. There are wrong ways to use them.
    #746 — Ara Khan, Clineconfidence: high

Realistic evals must be grounded in natural tasks and operational history

Open in graph
  • task should be natural and sourced from the real world and then you should be able to reliably grade them.
    #72 — Naman Jain, Cursorconfidence: high
  • If you build your application in a type safe way, if you use frameworks that allow it to be type safe, you can refactor it with confidence much more quickly.
    #184 — Samuel Colvin, Pydanticconfidence: high
  • Dynamic data sets have real world alignment.
    #153 — Quotient AI + Tavilyconfidence: high

Evals are strongest when they are trace-linked and fed by production observability

Open in graph
  • what is the gap between agent observability and what you're actually building. How do we mind that gap?
    #680 — Amy Boyd & Nitya Narasimhan, Microsoftconfidence: high
  • we go from like a testing and eval paradigm to a monitoring p uh paradigm.
    #655 — Danny Gollapalli & Ben Hylak, Raindropconfidence: high
  • where I've got some big production CI stack to go and run and deployment takes hours, being able to go and change variables in production or in staging very quickly
    #657 — Samuel Colvin, Pydanticconfidence: high
  • download all of the UI that we have as a file system?
    #689 — Lawrence Jones, incident.ioconfidence: high
  • 25 agents in parallel
    #689 — Lawrence Jones, incident.ioconfidence: high
  • it's actually the telemetry that does that.
    #750 — Dat Ngo, Arizeconfidence: high

Activity-based metrics misread motion as progress in AI-augmented work

Open in graph
  • these are not productivity metrics. They're useful, but you cannot just kind of use them like maximize them to maximize developer productivity.
    #79 — Yegor Denisov-Blanch, Stanford (120k devs study)confidence: high
  • I do think that AI increases developer productivity, but there's also cases in which it decreases developer productivity.
    #195 — Yegor Denisov-Blanch, Stanford (100k devs study)confidence: high
  • just plain old PR throughput. How many pull requests does the average engineer merge per week?
    #101 — Nick Arcolano, Jellyfish (20M PRs)confidence: high
  • I'm going to talk about how we pay engineers. And we pay engineers like salespeople.
    #63 — Arman Hezarkhani, Tenexconfidence: high

Problem framing and review become the scarce skills once execution is cheap

Open in graph
  • the new scarce skill is writing specifications that fully capture the intent
    #265 — Sean Grove, OpenAIconfidence: high
  • intentionally designed to put friction
    #14 — Armin Ronacher & Cristina Poncela Cubeiroconfidence: high
  • vibes aren't going to fix
    #132 — Chris Kelly, Augment Codeconfidence: high
  • I'm declaring war on slop today.
    #59 — swyxconfidence: high

The best evals encode judgment mined from operational history, not invented in a clean room

Open in graph
  • take a real codebase, crawl its commit history, find the commits that fixed actual problems, and turn each fix into a graded task
    #60 — Govind Jain, Stripeconfidence: high
  • handle state potentially over long periods of time. There needs to be human interaction for approvals
    #167 — Preeti Somal, Temporalconfidence: high

The gap that kills agent PoCs is the evaluation gap — no defined, continuously-measured definition of success — not the choice of model

Open in graph
  • Second is the evaluation gap.
    #767 — Sandipan Bhaumik, Databricksconfidence: high
  • Evaluation is basically specification for your AI system.
    #767 — Sandipan Bhaumik, Databricksconfidence: high

Agents fabricate having verified — they report success they never achieved — so the harness must supply real verification, not trust the agent's account of it

Open in graph
  • There's no error, no warning, just the wrong answer.
    #766 — Rafael Levi, Bright Dataconfidence: high
  • The agent gets blocked, it needs to please you and it makes things up.
    #766 — Rafael Levi, Bright Dataconfidence: high

Route each task to the cheapest model that can do it — tiered model selection by difficulty is accepted practice, not a frontier idea

Open in graph
  • don't use the most expensive model for everything you're doing. You want to use multiple different models based on the use case. And then try to route to it inside your agent.
    #791 — Erik Hanchett, AWSconfidence: high
  • So you can do tiered model selection. You can do cheap models for simple queries and expensive models in your agent uh for complex queries.
    #681 — Laurie Voss, Arizeconfidence: high
  • route between uh language models so one model might be better than another you might want to use Claud because of its long context window or you might want to use GPD 4 because it's really good at reasoning
    #613 — Harrison Chase, LangChainconfidence: high
  • flex and that's basically I don't care if that takes a long time but I want to to pay less. So you're going to have a 50% discount but your request can be uh can be delayed
    #692 — Guillaume Vernade, Google DeepMindconfidence: medium

Trustworthy judgment can be manufactured from cheap stochastic generation — sample-and-vote, multi-model consensus, and debate panels beat a single expensive call

Open in graph
  • the models to generate multiple responses and then do majority voting.
    #251 — Aakanksha Chowdhery, Reflection.aiconfidence: high
  • having LMS debate each other, having the weaker LLMs debate each other about what the stronger model is saying and seeing if that makes sense.
    #116 — Leonard Tang, Haize Labsconfidence: high
  • Second tier is a multimodel consensus. So we leverage a diverse range of models such as GBT4, claude and
    #093 — Alberto Romero, Jointlyconfidence: high
  • we using multi-agent debate to get reliable State evaluation instead of using single uh
    #451 — How to Improve Your Agents (lit review)confidence: high
AI QUALITY · CHAPTER 04 · MASH JUDGES
3 unsupported claims — ship-blocker

scored on version git:e68466c

EVIDENCE OF SOURCE · CHAPTER 05
FIG. 05 · BEFORE · AFTERCLICK · SCROLL · ZOOM

AI Engineer Book · Ch 05

Context Is Infrastructure

1/6

FIG. 05.0 · OPENER

Stuffing the window vs assembling context

Click to enlarge

CH05

CH. 05 // Drafting
3,432 words15 min read
CHAPTER 05/3,432 words/Drafting

Useful AI systems do not fail only because the model is weak. They fail because the system cannot assemble the right working set of information at the right moment, in the right shape, at a cost the product can bear.

As long as AI felt like a prompting game, context looked like an input-field problem. You had a box, a token limit, and a growing collection of tricks for stuffing more things into it. Add a few retrieved documents. Paste a spec. Prepend some examples. Tell the model to think harder. But that framing gets the problem backwards. Context is not the garnish around intelligence. It is the substrate that determines what the system can even notice.

That becomes obvious the moment you leave toy tasks. A coding agent needs the right files, the right rules, and the right execution history. A research agent needs the right sources, not just more sources. A legal or enterprise assistant needs proprietary context, structured evidence, and a way to separate active working memory from archival knowledge. And once tools enter the picture, the problem gets harder still. Suddenly the system is not only choosing which documents to retrieve. It is choosing which capabilities to expose, how to describe them, and how to avoid drowning the model in a giant catalog of possible actions.

This is why the next generation of AI systems is being shaped less by prompt cleverness than by context architecture. Retrieval, memory, , enterprise knowledge layers, tool schemas, capability grouping, and token-budget discipline are all parts of the same deeper problem: deciding what the model should see, when it should see it, and what must stay out of the way.

The active working set matters more than the raw knowledge base

Figure 05.1/RAG is not memoryCLICK TO ENLARGE

One of the most persistent confusions in AI product work is the assumption that having access to more information is basically the same thing as having better context. It is not.

A company may have millions of documents. A codebase may have thousands of files. A legal research system may have access to a vast corpus of precedent, internal notes, and prior work product. None of that guarantees that the model will see the right few things for this task, in this turn, under this deadline.

That distinction sounds obvious once stated, but teams violate it constantly. They talk as if the problem were solved the moment the system can technically reach the knowledge. Then the product disappoints and the blame falls on the model. In reality, the model often failed because the system handed it the wrong working set: too much, too little, or the right ingredients in the wrong order.

Jack Morris offers the cleanest line in the source corpus: “Stuffing context is not memory.” It is a sharp sentence because it attacks the lazy default directly. Shoving more tokens into the window is not a serious theory of knowledge use; it is closer to panic than architecture.

Nupur Sharma’s Qodo work gives the mechanism behind it. Models privilege the start and end of the window and degrade in the middle, so a longer prompt does not buy more attention; it buys a wider blind spot. Her detection cue is concrete: when accuracy drops as you add more retrieved documents rather than rising, you are watching the middle get dropped, and the fix is assembly — summarization, graphs, iterative retrieval — not a bigger window.

Daniel Chalef makes a related point from the memory side. Teams often use retrieval as a universal substitute for state, history, and durable understanding. But memory across time, archival knowledge, and the active context surface are not the same layer. An agent may need all three, yet each has different update rules, different freshness requirements, and different failure modes.

The practical unit of is not the total corpus but the active working set. The question is not, “What can the model access in principle?” The question is, “What should the model be looking at right now to do this job well?” That is a much stricter engineering problem.

Kuba Rogut puts the sizing rule in one line, relaying Jeff Dean: you do not need a trillion tokens at once, you need the right million. The number worth instrumenting is not how big the index is but how little of it the answer needed.

Context is selection, shaping, and timing

Figure 05.2/GraphRAG connects the dotsCLICK TO ENLARGE

Once teams stop equating context with raw access, a second clarification becomes necessary. is broader than retrieval.

Retrieval matters. Search quality matters. Ranking quality matters. Chunking matters. But a production context system also has to shape the evidence, compress it, layer it, and decide when it should appear in the workflow. Sometimes the right move is to retrieve the most relevant source. Sometimes it is to retrieve three sources, summarize two, and keep one verbatim because wording precision matters. Sometimes it is to avoid retrieval altogether and carry forward a structured state object produced in the previous step.

Val Bercovici’s phrase “context platform engineering” is useful precisely because it elevates the problem out of prompt folklore and into systems design. If your system has to support many tasks, many agents, many tools, and many data sources, then context becomes something you engineer, budget, version, and monitor.

This is where a lot of otherwise promising AI products become strangely fragile. Their context logic is accidental. They have a search call, a prompt template, and a rough hope that relevant things will land in the window. The product may work beautifully on easy questions and then fall apart on the exact tasks that matter most: cross-document synthesis, multi-hop reasoning, domain-specific exception handling, or cases where one irrelevant chunk quietly crowds out the one paragraph that actually governs the answer.

The failure often gets described as hallucination. Sometimes it is. But just as often it is context misassembly.

That distinction matters because the remedy changes. Hallucination invites better model behavior. Misassembly invites better infrastructure.

The High-Stakes Colleague needs more than access

Figure 05.3/The MCP tool floodCLICK TO ENLARGE

Hargrove’s tax practice makes the stakes of this chapter especially clear. The firm’s assistant began life as a helpful chat surface — the High-Stakes Colleague the opening chapter named, before anyone asked it to do the work. It summarizes documents, answers questions, and cites plausible authorities. Users like it. But after the novelty phase, they ask for something harder. Not “help me think,” but “help me do the work.” Draft the note. Compare the clauses. Trace the missing support. Walk the evidence chain. Tell me not just what this document says, but what matters across the relevant documents for this client, this issue, and this jurisdiction.

At that point, generic model intelligence is no longer the bottleneck. The bottleneck is whether the system can assemble professional-grade context.

Chau Tran’s enterprise framing is useful here because it refuses the fantasy that an LLM becomes enterprise-aware by being merely smarter. A brilliant new employee is still ineffective on day one if they cannot find the internal wiki, do not know which document system matters, and cannot tell policy from draft from folklore. The same is true of agents.

This is where the book’s second recurring case, the High-Stakes Colleague, becomes more than metaphor. The system is valuable not because it can speak elegantly about law or tax, but because it can operate inside a domain where evidence provenance, internal knowledge, and retrieval discipline materially change the quality of work.

In Harvey’s and related legal-frontier material, the problem is not only finding relevant text. It is finding the right text in the right topology: internal precedents, authoritative sources, matter-specific files, note trails, citations, and the relationships between them. The difference between “broadly relevant” and “operationally decisive” can be a single paragraph hidden in the wrong layer.

Watch one request from Hargrove’s early build-out. A tax associate asks the assistant to trace the support for a deduction a client has claimed for years. The assistant answers fluently and cites a clean-looking authority — a public explainer whose wording matches the query almost perfectly. It reads as decisive. It is also wrong for this client: the governing position lives in a matter note a senior attorney wrote earlier, in a different file, under a jurisdiction the explainer never mentions. The system ranked it first because nothing told it a public article and a matter-specific note are not the same kind of evidence. The remedy is not a smarter model. The team types its knowledge topology into the system: source typing that ranks internal precedent above public background, access boundaries per matter, and a retrieval surface that carries provenance, so the associate can see which layer an answer came from. The misranked matter note becomes the scar the rest of the build-out is designed around.

Hargrove’s context system needs more than a document dump. It needs access boundaries, source typing, freshness policies, ranking tuned to domain use, and interfaces that preserve provenance. In high-stakes work, a system that is 90 percent right for unclear reasons can still be professionally unusable. The issue is not whether the model knows a lot, but whether the product can build a trustworthy evidence surface around the model.

Context topology determines usefulness

Figure 05.4/Misassembly is not hallucinationCLICK TO ENLARGE

The phrase context topology may sound abstract, but the idea is concrete. Different kinds of information should not all be treated as interchangeable text.

A company handbook is not the same as a CRM record. A draft contract is not the same as signed language. An old Slack discussion is not the same as a policy. A code spec is not the same as the code itself. A matter note written by a senior attorney is not the same as a general explainer article pulled from a public source.

Yet simplistic retrieval systems flatten all of these into one big searchable pile. They act as if the only problem were semantic similarity.

In practice, usefulness depends on topology: what kind of thing this is, how it relates to other things, how trustworthy it is, how recent it is, whether it is active or archival, and whether the current task calls for literal quotation, background orientation, or cross-source synthesis.

This is one reason is so often misunderstood by teams that are still thinking in terms of “RAG versus no RAG.” Retrieval-augmented generation is one mechanism. Context topology is the broader design problem.

A serious context architecture distinguishes layers such as:

  • authoritative sources versus helpful background
  • current task state versus long-term memory
  • private internal knowledge versus public reference material
  • raw evidence versus summaries derived from prior steps
  • tool outputs that should be inspected directly versus ones safe to compress

Once those layers are explicit, the system can behave less like a desperate search box and more like a disciplined colleague assembling a working binder.

That image is useful because it makes the design standard obvious. A strong professional does not walk into a meeting carrying every file the firm has ever touched. They carry the current binder, the active notes, a few precedents, and a clear sense of what counts as governing authority. Context systems should aspire to the same selectivity.

Chau Tran’s Glean work makes that selectivity operational. Much of it is filtering on signals the corpus already carries — the user’s permission scope, the freshness of the source, the document’s role in the organization — applied before the reranker, so material the task should never see never reaches the window. Rank on raw embedding similarity alone and the system will happily surface a deprecated wiki page that reads almost exactly like the current one.

Graphs matter when evidence must be assembled, not merely fetched

Figure 05.5/“RAG” is four different jobsCLICK TO ENLARGE

There is a predictable cycle in AI infrastructure where one technique gets overhyped, then mocked, then quietly absorbed into mature practice. is in some danger of following that path.

The right way to think about graphs is neither as magic nor as marketing garnish. They matter when the task punishes shallow retrieval.

Nearest-neighbor search is often enough when the user wants one relevant passage. It becomes less sufficient when the work depends on relationships: this clause belongs to this agreement, which sits inside this matter, which has a related note, which references an exception in another source, which only matters for this entity and date range. That is not merely a document-matching problem. It is an evidence-assembly problem.

Stephen Chin and the Neo4j material are useful here because they make the structure visible. Knowledge graphs can help with multi-hop synthesis, entity disambiguation, and the recovery of relations that ordinary chunk retrieval tends to flatten away. The point is not that every product needs a graph. The point is that some tasks require a representation richer than bag-of-passages search.

This is especially true in enterprise and legal settings, where what matters is often not a single answerable sentence but a traceable path across entities, documents, and prior decisions. Hybrid retrieval becomes attractive because the right mechanism follows from the shape of the answer: vector search when the answer is a single similar passage, graph traversal when it is a path along explicit relationships, keyword or metadata filters when exactness is what matters. Mature systems layer all three rather than declaring one winner. The key chapter-level is simple: context quality depends on how well the system assembles evidence, not only on whether it retrieves something related.

Memory is not the same thing as a long prompt

The longer agents operate, the more tempting it becomes to treat the context window as a backpack that just keeps getting bigger. That instinct is understandable and usually wrong.

is a better mental model. Some things belong in immediate working memory because they are needed right now. Some belong in session history because they explain how the current state was reached. Some belong in durable long-term memory because they recur across tasks. Some should not be carried at all unless explicitly reintroduced.

This matters because every piece of carried-forward context has a cost. It occupies tokens. It competes for attention. It increases the chance that stale, irrelevant, or misleading information will quietly shape the next step. Bigger windows reduce one kind of pressure, but they do not remove the need for disciplined selection.

Most of that budget hides in the input. Rajkumar Sakthivel’s team at Tesco states the decomposition bluntly: “90% of your AI cost is input. Files, search results, context you send in. Only 10% is output.” It inverts the usual instinct to reach first for a cheaper model: the model may be 30 percent of the cost, and what you feed it the other 70. Indexing a codebase and retrieving only the relevant slices, instead of pasting whole files, cut their input tokens by a measured 94 percent.

The software-factory case already hinted at this in Chapter 3. An agent working in a repo does not need the whole codebase in active view. It needs the right files, the relevant specs, and enough execution history to avoid losing the thread. Chapter 4 sharpened the same point from the measurement side: the system must preserve the right failures and slices. Chapter 5 extends the logic. Good context architecture means knowing what to keep live, what to summarize, what to index, and what to leave out. That restraint is not weakness but design maturity.

MCP turns context into a capability-management problem

The rise of tool protocols such as exposes a newer version of the same issue. For a while, mostly meant “Which documents should the model see?” Now it also means “Which tools should the model know exist, how should they be described, and how do we prevent the capability surface from becoming its own form of overload?”

Matt Carey’s phrase “mega context problem” lands because it names the trap precisely. If every tool, every parameter, every capability description, and every server is naively dumped into the model’s working view, the system becomes less usable, not more. We should not confuse optional power with available focus.

Sam Morrow’s lessons from GitHub’s remote server push the point from diagnosis into operating practice. Progressive discovery, grouping, intent-aware exposure, and ruthless context reduction are not polish. They are core product decisions. The model should not receive a phone book of capabilities when what it needs is a small, discoverable menu relevant to the current task.

GitHub’s own numbers make the practice concrete. When community contributions pushed that server past a hundred tools, the agents got measurably worse. The first fixes were elegant opt-in machinery: tool sets and dynamic discovery. Almost no one used them, because most users never touch the JSON config — the load-bearing lesson being any fix that depends on user configuration reaches a minority, so change the default instead. GitHub did, cutting the initial tool-load context by 49 percent. The number of tools the agent could call did not fall; the number it had to read did.

This is one of the most important ways the context chapter connects back to the rest of the book. Tool access is not merely an integration story. It is part of the same infrastructure problem as retrieval, memory, and evidence assembly. The system has to decide what the model should see and what it should not.

The old failure mode was “the model lacked the right document.” The emerging one is “the model was buried under too many possible actions.”

Context quality is measured downstream

A lot of context discussions drift into architecture diagrams too quickly. The diagrams can be useful, but they also create a form of intellectual camouflage. A beautiful retrieval stack can still produce mediocre work. A graph-enhanced pipeline can still be badly ranked. A memory subsystem can still carry forward the wrong state. An elegantly standardized tool protocol can still swamp the model with irrelevant capability descriptions.

The only reliable proof of context quality lives downstream, which is the acceptance test any context change has to pass:

Does the system complete real tasks more accurately? Does it cite better evidence? Does it reduce review burden? Does it waste fewer tokens to get the same or better result? Does it make higher-stakes workflows feel more trustworthy rather than more theatrical?

Chapter 5 belongs so closely next to Chapter 4. Evals tell you whether your context architecture is actually helping. Observability tells you where context assembly failed in production. The two disciplines are inseparable in practice. You do not know that your context system is good because the retrieval trace looks clever. You know it is good because the work improves.

That inseparability implies a specific eval design: score retrieval and generation separately. Track whether the governing passage reached the assembled working set at all — a recall measure on the context layer — before scoring whether the model used it correctly. Score only the final answer and a context-assembly bug looks exactly like a model getting dumber — and a model upgrade gets wasted on a retrieval problem.

This also explains why so many context debates are unproductive when they happen in the abstract. Teams argue about RAG, , memory, or tool selection as if these were ideological camps. In production, they are just means. The end is better delegated work.

Context is what makes intelligence situated

There is a temptation, especially among people impressed by raw model progress, to treat context work as secondary plumbing. If the model keeps getting smarter, surely the need for elaborate should diminish.

In practice the opposite often happens, and the rule is worth stating plainly: a stronger model raises both the return on good context and the cost of bad context. It does more with the right evidence, tools, and state placed in front of it, and it generates more persuasive nonsense when the context surface is badly assembled. Capability amplifies both outcomes, which makes a better model a reason to invest more in context, not less.

That is why context belongs in the same mental bucket as , evals, runtimes, and security. It is not a prompt trick but one of the engineered surroundings that determine whether intelligence becomes useful.

A machine colleague does not need infinite information. It needs the right binder.

But a final question now appears. Once the binder is assembled, who keeps the work alive across time? Who remembers what has already happened, what is waiting for approval, which tool ran, and what the human needs to inspect next?

That is the runtime problem, the next layer of infrastructure.

EVIDENCE OF SOURCE · CHAPTER 05 · VIDEOS

10 claims · 41 source anchors

Evidence — Source Anchors

Realistic evals must be grounded in natural tasks and operational history

Open in graph
  • task should be natural and sourced from the real world and then you should be able to reliably grade them.
    #72 — Naman Jain, Cursorconfidence: high
  • If you build your application in a type safe way, if you use frameworks that allow it to be type safe, you can refactor it with confidence much more quickly.
    #184 — Samuel Colvin, Pydanticconfidence: high
  • Dynamic data sets have real world alignment.
    #153 — Quotient AI + Tavilyconfidence: high

Context failure is often a system-assembly problem, not simply a small-context-window problem

Open in graph
  • the reason context platform engineering is so important is it dramatically simplifies reaching maximum KV cache hit rates
    #104 — Val Bercovici, WEKAconfidence: high
  • connect the dots with graph technology and solve problems like context engineering
    #105 — Stephen Chin, Neo4jconfidence: high
  • irrelevant facts pollute memory.
    #218 — Daniel Chalef, Zepconfidence: high
  • LLMs and tools are orchestrated through predefined code paths.
    #193 — Chau Tran, Gleanconfidence: high
  • Agents look at the starting point, end point and try to provide you the results.
    #752 — Nupur Sharma, Qodoconfidence: high
  • the more the tools, the more issues you have.
    #752 — Nupur Sharma, Qodoconfidence: high

The context gap increasingly includes capability packaging and progressive disclosure

Open in graph
  • doesn't have to be loaded immediately to context.
    #683 — Pedro Rodrigues, Supabaseconfidence: high
  • specifically with progressive disclosure.
    #654 — Nick Nisi & Zack Proser, WorkOSconfidence: high
  • 49% reduction of the initial load.
    #625 — Sam Morrow, GitHubconfidence: high
  • rich interactive components that render directly in the chat.
    #747 — Marlene Mhangami & Liam Hampton, GitHubconfidence: high

Harness quality now includes capability packaging, not only repo hygiene

Open in graph
  • That's what a skill is. You're teaching the the LLM how to do something in the way that you expect it to be done
    #654 — Nick Nisi & Zack Proser, WorkOSconfidence: high
  • This is how the agent is
    #683 — Pedro Rodrigues, Supabaseconfidence: high
  • 49% reduction of the initial
    #625 — Sam Morrow, GitHubconfidence: high
  • the schema is the UI for the agent.
    #744 — Michael Hablich, Google (Chrome DevTools)confidence: high

Context failure is often a capability-exposure problem, not only a retrieval problem

Open in graph
  • MCP versus skill debate
    #683 — Pedro Rodrigues, Supabaseconfidence: high
  • you can do it in a better way. And that is specifically with progressive disclosure.
    #654 — Nick Nisi & Zack Proser, WorkOSconfidence: high
  • grouping concept of related product
    #625 — Sam Morrow, GitHubconfidence: high

Context engineering is a primary engineering discipline, not a prompt trick

Open in graph
  • picking up the right documents and answering those questions is a really cool use case.
    #100 — Ofer Mendelevitch, Vectaraconfidence: high
  • cool load generator that Kalen wrote that lets you configure agent swarms uh and agent subtasks with very specific SLOs's
    #104 — Val Bercovici, WEKAconfidence: high
  • connect the dots with graph technology and solve problems like context engineering
    #105 — Stephen Chin, Neo4jconfidence: high
  • the right agent in the future is going to be this system that decides what type of search
    #157 — Will Bryk, Exa.aiconfidence: high

RAG, memory, and GraphRAG solve different jobs; collapsing them into one bucket misses the architecture

Open in graph
  • rag or retrieval augmented generation where you have so many things that you can't fit them all in
    #48 — Jack Morrisconfidence: high
  • why you need to model your memory after your business domain.
    #218 — Daniel Chalef, Zepconfidence: high
  • the basic construct of a knowledge graph is um nodes which represent different people in the situation, relationships, and then you can attach properties to these nodes.
    #105 — Stephen Chin, Neo4jconfidence: high
  • we want to look at patterns for successful graph applications uh for um making LLMs a little bit smarter by putting knowledge graph into the picture.
    #215 — Michael, Jesus & Stephen, Neo4jconfidence: high
  • how can we create a graph rack system what are the advantages of it and if we add the hybrid nature to it how it is helpful
    #219 — Mitesh Patel, NVIDIAconfidence: high
  • you need to be like tuned to what what every technique gives you before you go and invest in it.
    #156 — David Karam, Pi Labsconfidence: high
  • retrieval is not just vector search.
    #756 — Kuba Rogut, Turbopufferconfidence: high

Enterprise usefulness scales with working-set quality, not corpus size

Open in graph
  • about 73% of LM customers implementing use cases say that factual accuracy is their top challenge right now.
    #100 — Ofer Mendelevitch, Vectaraconfidence: high
  • how Harvey tackles retrieval, the types of problems there are and then the challenges that come up with that all with like retrieval quality, scaling, uh security,
    #154 — Calvin Qi (Harvey) & Chang She (Lance)confidence: high
  • how to build enterprise aware agents. How to bring the brilliance of AI into the messy complex realities
    #193 — Chau Tran, Gleanconfidence: high
  • you don't need a trillion at once, you need the right million.
    #756 — Kuba Rogut, Turbopufferconfidence: high

The next failure frontier is context misassembly, not just hallucination

Open in graph
  • there's this third thing, which I think is like really new and no one is doing it yet, which is training things into weights.
    #48 — Jack Morrisconfidence: high
  • this is really useful if you're building anything related to some sort of internal deep research sort of API
    #47 — Ivan Leo, Manus AI / Meta Superintelligenceconfidence: high
  • you combine it with all your other signals. So now if you look at your ranking function
    #156 — David Karam, Pi Labsconfidence: high
  • it's hybrid search because you have multiple approaches, and then you can either boost them together. You could do reranking, which is becoming more and more popular.
    #172 — Philipp Krenn, Elasticconfidence: high

Input tokens dominate agent cost — fix what you feed the model before you optimize which model

Open in graph
  • 90% of your AI cost is input. Files, search results, context you send in. Only 10% is output. The code the AI writes back.
    #792 — Rajkumar Sakthivel, Tescoconfidence: high
  • may be 30% of the cost, but other 70% is what you feed it. Fix the input, the model choice matters less than you think.
    #792 — Rajkumar Sakthivel, Tescoconfidence: high
AI QUALITY · CHAPTER 05 · MASH JUDGES
1 unsupported claim — ship-blocker

scored on version git:e68466c

EVIDENCE OF SOURCE · CHAPTER 06
FIG. 06 · BEFORE · AFTERCLICK · SCROLL · ZOOM

AI Engineer Book · Ch 06

Runtimes, State, and the Human Control Plane

1/5

FIG. 06.0 · OPENER

Stateless loop vs durable runtime

Click to enlarge

CH06

CH. 06 // Drafting
4,005 words17 min read
CHAPTER 06/4,005 words/Drafting

A chatbot can get away with amnesia. A production agent cannot.

That difference is not philosophical. It is architectural. A chat system can answer a question, emit a patch, suggest a draft, and disappear. But the moment you ask a system to do work that unfolds across time, tools, failures, and approvals, the center of gravity moves. The question is no longer only whether the model can produce a smart next token. The question is whether the surrounding system can preserve intent, survive interruption, recover from error, expose its progress, and stop in the right places for human review.

This is where many impressive agent demos break. The model itself may be good enough. The may be decent. The evals may even exist. The context may be strong. But the system was still built like a conversation when it needed to be built like a workflow. It loses track of what already happened. A retry repeats work or performs the same action twice. A human cannot tell which subagent did what. An approval arrives too late, after the expensive or risky step already happened. The agent does not fail because it is unintelligent. It fails because it has nowhere durable to stand.

The next layer is runtime design. Once agents act over time, architecture becomes destiny.

Stateless systems hit a wall

Figure 06.1/Transcript vs workflowCLICK TO ENLARGE

The easiest way to understand the runtime problem is to notice how much modern agent discourse still inherits its assumptions from chat. Chat is an excellent interface for short-lived assistance. It is forgiving. It is intuitive. It lets a user redirect the system turn by turn. For many workflows, that is enough. But chat history is a weak execution substrate for delegated work. A transcript is not the same thing as state. It does not cleanly represent task progress, pending approvals, completed tool calls, rollback boundaries, or which intermediate outputs are binding versus disposable.

Samuel Colvin states the break point simply: “Once we get into longer running workflows, that’s where it really becomes a problem.” The line matters because it does not stateless systems are always bad. It they hit a wall when work acquires duration. A short answer can be regenerated. A half-finished research trajectory, a partially executed software task, or a multi-step legal workflow cannot be managed so casually.

This is the same shift the book has been tracing from the beginning. In a toy setting, you can still tell yourself the model is the product. In a real system, the surrounding structure becomes inseparable from the capability. Preeti Somal gives the trust version of the same point: agent systems “must scale and provide durability and reliability. Otherwise, no one’s going to trust your agent.” That is the operating condition for delegation, not a platform engineer’s hobbyhorse.

Trust fails quickly when continuity fails. A coding agent that loses its place after every interruption is not a colleague. It is an intern with total amnesia. A research agent that cannot resume after a timeout is brittle, not autonomous. A support or legal workflow that cannot survive approvals, waiting periods, or tool outages is not production-ready no matter how eloquent the underlying model sounds in a demo. Durability, then, is the runtime expression of seriousness, not extra credit.

The software factory needs an operating system

Figure 06.2/The human control planeCLICK TO ENLARGE

Meridian's case from Chapters 3 and 4 becomes even more revealing here. The team already rebuilt its repo after the slop era, and after the admin-override regression it added the eval slices that now catch the special-path mistakes a casual test run would miss. Small delegated work now goes well. Then the team raises the ambition again. Instead of isolated patches, it asks the system to investigate a bug, spawn a few subagents, inspect a cluster of files, propose a fix, run checks, and prepare a reviewable summary for a human.

This is where a second class of problems appears. One subagent finds the relevant failure but another, working off a slightly older branch of understanding, proposes a different patch. A retry of the validation step reruns something the first attempt had already completed. The human reviewer receives fragments of work rather than a coherent roll-up. The system still has intelligence and context, but no stable execution semantics. It is a workshop full of talented workers without a foreman’s board, without station history, and without a clean shift handoff.

That is the deeper meaning of the software-factory metaphor. A factory is not only a prepared environment and a quality system. It also needs an operating system. It needs durable task identities, queues, checkpoints, resumability, visibility, and clear places for review. Otherwise increasing the number of workers only multiplies confusion.

This is why the runtime chapter naturally belongs beside the chapter rather than floating off into platform taxonomy. without runtime semantics are fragile. The repo may be legible, the tasks may be specified, the standards may be measured, and the context may be well assembled. But if the work itself cannot persist and be supervised, the colleague illusion still breaks the first time the system has to keep going after the first clever turn.

Agentic systems are workflows with state

Figure 06.3/Subagents need recompositionCLICK TO ENLARGE

A lot of debate about agents versus workflows turns out to be a category error. People sometimes speak as if workflows are rigid and agents are flexible, so choosing workflows means giving up on real agency. In production systems, the opposite lesson often emerges. Workflow structure is what makes useful agency survivable.

Somal gives the chapter its best backbone here: “At the core of agentic AI applications is a complicated workflow... [that] needs to handle state potentially over long periods of time. There needs to be human interaction for approvals...” That sentence should kill the fake dichotomy. The system does not become less agentic because it has durable workflow semantics. It becomes more usable.

Useful agentic systems are not free-floating intelligence. They are stateful workflows with probabilistic decision nodes.

That framing clarifies a lot at once. It explains why pause and resume matter. It explains why retries should not live in ad hoc prompt logic. It explains why approvals belong naturally inside execution rather than as awkward afterthoughts. It explains why application state cannot be reduced to whatever is still visible in the prompt window. And it explains why runtime tooling increasingly looks closer to distributed-systems infrastructure than to prompt folklore.

In a serious coding workflow, state may include the current task plan, completed tool runs, validation status, pending questions for the human reviewer, and links to specific artifacts the agent produced. In a high-stakes professional workflow, it may include evidence bundles, validation checkpoints, unresolved exceptions, approval boundaries, and which output is ready for expert sign-off. In both cases, the core requirement is the same: the agent needs a structured memory of work, not merely a growing transcript of conversation. Durability lets the system preserve the difference between “what was said” and “what has happened.”

History is part of execution, not just debugging

Figure 06.4/Agency is a dial, not a switchCLICK TO ENLARGE

Once you start thinking in workflows rather than turns, history changes meaning, and a practical rule follows from the change: persist a structured record of what has happened, not a growing transcript of what was said. In chat systems, history is mostly there to help the next answer feel continuous. In durable systems, history is part of execution itself. It tells the runtime what has already happened, which steps can be retried safely, which approvals were granted, what state changed, and where the agent should resume — none of which a transcript, by itself, can represent.

That is why durable-agent discussions keep converging on structured histories, checkpoints, and replayable event logs. Not because engineers enjoy complexity, but because long-running work creates obligations. If the system did something important, someone may later need to inspect it. If a run failed halfway through, the team may need to resume from a meaningful boundary rather than start from zero. If a result is contested, the organization may need to know what the system saw, which tools it used, and which step introduced the mistake.

Somal makes this visibility requirement explicit: “We also store all of the workflow history... so that you can look at the visibility of what is happening as your agent is navigating this complex set of interactions.” History is the substrate of inspection, not archival fluff.

This is also where runtime design begins to touch Chapter 4’s control-system argument. A good history lets a team do more than recover execution. It lets them learn. Failed trajectories become eval cases. Slow steps become optimization targets. Repeated approval bottlenecks reveal design problems in the control plane. The runtime is not merely keeping the work alive but generating the evidence by which the system can later improve.

Replay, snapshot, and the shape of continuity

Once durability becomes a real concern, a more technical tradeoff appears: how exactly should continuity be represented? One family of systems leans on replay. Preserve an event history, then reconstruct state from what happened. Another family leans on snapshots. Save checkpoints of working state so execution can continue more directly. Both approaches are reasonable. Both reveal something about what the team values.

Replay-oriented designs are attractive when causality and auditability matter. They preserve a strong sense of how the system got here. They make it easier to reason about the chain of events. They fit environments where exact reconstruction is important and where state should emerge from recorded steps rather than from opaque frozen blobs.

Snapshot-oriented designs are attractive when fast continuation and complex live state matter more. They reduce the cost of resuming. They can feel more natural when the system’s working memory is elaborate, when rebuilding everything is awkward, or when pause-and-resume is expected to be frequent.

This is less a taxonomy lesson than a decision with a rule inside it: reach for replay when causality and auditability are the point, so state emerges from recorded steps rather than opaque blobs; reach for snapshots when fast continuation and elaborate live state dominate, so pause and resume stay cheap. The existence of that tradeoff is what proves runtime semantics are not incidental details. Once agents operate over time, teams are making the kinds of decisions mature distributed systems always have to make: what gets persisted, what gets recomputed, what must be auditable, what can be resumed cheaply, and which failure modes are acceptable.

The human control plane is an architectural layer

This is where the chapter’s title concept should crystallize. A recurring mistake in agent discourse is to treat human involvement as a temporary crutch on the way to full autonomy. But the more capable systems become, the less persuasive that framing looks. In valuable systems, human control is not a leftover from immaturity. It is an architectural layer.

The is the set of interfaces, approvals, visibility layers, and intervention mechanisms through which people supervise delegated machine work. It is the place where a person can see what is active, understand what happened, inspect evidence, redirect a task, approve a risky transition, or teach the system something reusable.

That means a chat transcript is usually not enough. Operators need queue views, roll-up summaries, pending-review surfaces, uncertainty cues, state inspection, and clean intervention points. They need something closer to a control room than a message thread. If the only way to supervise a complex agent system is to read back through thousands of tokens and manually reconstruct what happened, then the control plane does not exist yet.

Eric Zakariasson’s line is one of the cleanest expressions of the problem: “Here’s what everyone is working on... and here’s what you as a human need to review.” That is the control plane in plain English. Not omniscient micromanagement, but selective visibility into a fleet of delegated work.

Maggie Appleton sharpens the same point from the collaboration angle. The missing thing is not merely more autonomous workers but a shared space in which plans, context, intermediate work, and review can be coordinated collectively. The challenge is no longer only model reasoning but organizational legibility. The ties together execution, observability, oversight, and team coordination under one idea: make supervision operationally cheap enough that humans can stay above the loop without vanishing from it.

Human control is not human micromanagement

The phrase human-in-the-loop can accidentally trivialize the design problem. It can suggest a binary choice: either humans approve everything, or the system is autonomous. The more useful reality is a gradient of control, and it turns the design task into a placement question — not how to keep a human in every loop, but where to put the few checkpoints that carry the most judgment. Humans may stay out of the way for low-risk steps, review plans before expensive ones, approve external actions, inspect only exceptions, or intervene only when uncertainty spikes. Control can sit before, during, and after execution.

A well-designed control plane should reduce the need for constant rescue, not institutionalize it. The goal is not to make every system depend on manual babysitting. The goal is to create high-leverage checkpoints where human judgment matters most.

A coding factory, for example, might let subagents explore, search, summarize, draft, and run validations autonomously, while reserving merge decisions, large architectural changes, or dependency additions for review. A high-stakes professional workflow might allow autonomous evidence gathering and draft assembly, while requiring expert sign-off before client-facing output or consequential recommendations. In both cases, the right design question is not “How do we keep the human involved everywhere?” It is “Where is the human most valuable?” That is a control-plane question, not a prompt question.

Attention is not the only scarce resource the control plane rations. Compute is the other: match the cost of the response to the difficulty of the request rather than paying frontier prices per step. Laurie Voss at Arize states it almost prescriptively — use “cheap models for simple queries and expensive models in your agent ... for complex queries” — and Harrison Chase at LangChain describes a router whose job is to “route between ... language models.” The platforms expose the same trade as service tiers; Guillaume Vernade at Google DeepMind describes a flex tier that gives “a 50% discount but your request can be ... delayed.” Which model runs a given step is a control-plane decision, not a global default chosen once. Routing adds its own failure surface, though — a misroute hands a hard task to a cheap model that quietly botches it — so aggressive routing is safe only behind the verification the control plane already runs. Route down to the cheapest model that still passes the eval, and no cheaper.

High-stakes systems tune agency instead of maximizing it

The High-Stakes Colleague case makes this point unavoidable. In legal, tax, compliance, healthcare, and similar workflows, the dream of unrestricted autonomy becomes less impressive the closer you get to real operational risk. The system is valuable not because it can do everything without supervision, but because it can do the right things with the right boundaries.

Joel Hron offers the right antidote to autonomy maximalism, arguing that agency is best thought of as a spectrum — a set of dials adjusted by use case. That framing matters because it replaces the childish question — how autonomous can we make it? — with the adult one: where should autonomy be high, where should it be low, and who decides? That difference is foundational to trustworthy product design.

The north star, as Hron puts it, has shifted “from helpfulness to productive.” But productive does not mean unsupervised. In high-stakes work, productivity often depends on carefully staged authority. The system may be allowed to gather evidence, route across tools, synthesize findings, and even validate parts of its own work. But certain boundaries remain deliberately human. An approval is not evidence that the system failed. It is evidence that the organization understands where risk actually lives.

This is another reason Chapter 6 should pair the with the High-Stakes Colleague. The same control-plane principle appears in both, even though the surface domain is different. In software, a human may review the patch before merge. In professional services, a human may review the trajectory before the conclusion is accepted. In both cases, adjustable autonomy is the runtime expression of trust.

Legacy systems become runtime components

One of the most practical ideas in the High-Stakes Colleague material is that old systems are not just obstacles to agentic work. They often become runtime components of the new control plane.

Hron points out that existing validation engines can be repurposed as tools the AI system uses to inspect and correct its own work — in the same firm that, in Chapter 5, learned to rank a matter note above a public explainer, provenance and validation now become tools the system itself calls. That is a powerful pattern because it shows how durable execution changes the role of traditional enterprise software. Systems that once only served human operators now become structured checkpoints, rule engines, and verification layers inside a machine-mediated workflow.

The chapter should linger on this because it helps demystify agent architecture. Not every trustworthy agent system is built from scratch as a magical new organism. Often it is assembled from older, more stable parts: permission systems, validators, databases, workflow engines, audit trails, search layers, review queues. The model is the volatile component. The rest of the runtime is what prevents volatility from becoming operational chaos.

That is also why runtime design is inseparable from organizational design. As soon as an agent can call the old validation engine, write into the old workflow record, and surface outputs to the old reviewer queue, the boundary between “AI system” and “business process” starts to collapse. The runtime becomes the place where those worlds meet.

Observability is part of the control plane

None of this works if the system is opaque. Classic monitoring tells you whether a service is up, slow, or erroring. has to answer a different kind of question: what did the system believe it was doing, what did it actually do, where did it drift, and what should a human now inspect?

is not merely a nicer logging story but what makes the real. Humans cannot steer what they cannot see.

Good agent traces capture plans, tool calls, state changes, intermediate outputs, timings, and boundaries between durable steps. They should support two levels at once: deep inspection of a single trajectory and roll-up supervision across many concurrent tasks. The first helps engineers debug strange failures. The second helps operators manage a fleet.

This is where Chapter 4’s line from Phil Hetzel keeps paying off: observability and eval are often the same problem from a systems perspective. In Chapter 6 the becomes more concrete. The runtime records the trajectory. Observability renders it legible. The control plane decides where humans inspect it. Evals later mine it for reusable lessons. One layer feeds the next.

There is also an honest tension here the chapter should keep visible. Richer traces increase trust, debuggability, and governance capacity. They also increase privacy, retention, and security risk. The answer is not to avoid observability but to design it consciously: redaction, selective retention, risk-based views, and different surfaces for debugging versus audit. Even here, the control plane is doing governance work.

Parallel workers create leverage only if work can be recomposed

The final runtime lesson is about subagents. Parallel workers are compelling because they offer the same thing every manager has wanted forever: more throughput. OpenAI’s subagent materials and the coding-factory case both point toward a future where one human can launch many narrow specialists at once. Searcher, implementer, reviewer, summarizer, debugger, policy checker, migration scout. The leverage is real.

But subagents do not solve the control problem. They intensify it.

More workers mean more intermediate artifacts, more opportunities for duplicated effort, more state to coordinate, and more need for roll-up visibility. Parallelism without recomposition is just chaos at higher speed. The key design challenge is not how to spawn more workers but how to merge, compare, inspect, and route their outputs so that the human remains oriented.

Independence also has to be enforced by the environment, not merely declared in the task split. Several agents pointed at one shared dev setup collide on the same branch, ports, and database — one agent's migration breaks the others mid-run — so each worker needs its own isolated, ephemeral environment. Maggie Appleton at GitHub gives each session one “backed by a micro VM ... a sandboxed computer in the cloud on its own Git branch,” which is what lets a developer “work on parallel tasks and instantly switch between them.” And the obvious primitive is the wrong one: Rene Brandel at Casco warns that “if you just use containers ... that's not an isolation layer,” because agent code can get root and move laterally. A git worktree suffices for trusted edits; untrusted, side-effecting agent work wants a VM.

Lou Bichard at Ona sharpens the diagnosis to a single missing piece. The runtime, he argues, is solved — “there are many options for this now, sandboxes and containers” — and so are triggers and orchestration. “The thing that's missing,” he says, “is coordination”: the agent-native primitive that lets parallel workers pick up tasks, signal completion, and hand off without a human stitching them together. He is pointed about what is not that primitive: “GitHub is not a coordination layer for agents — it gets incredibly overwhelming.” His candidate building blocks are this chapter's subject — “state machines, by building out workflows.”

This is why the best visions of multi-agent work keep converging on planning boards, supervisor views, task decomposition layers, and explicit review queues. They are not administrative extras but the infrastructure that lets parallelism produce leverage rather than entropy.

The teams shipping production multi-agent systems have not agreed on an answer; each has substituted a known mechanism for the missing one. Factory runs features serially with one active writer — “serial execution with targeted internal parallelization” — eliminating the coordination problem by construction, and reports a longest mission of sixteen days. Anthropic's long-running agents take a planner-generator-evaluator path where each role gets “its own kind of context window” and the agents “negotiate what done actually means” through a contract written to files on disk before any code is produced. Serial execution, file-based contracts, state machines plus durable execution: three substitutes for one primitive that does not yet exist.

The shows the coding version of this. The High-Stakes Colleague shows the professional-services version. In both, the real question is the same: when many machine workers are active, where does coherent human judgment re-enter the system? That place is the control plane.

The runtime is what turns intelligence into dependable work

The real challenge of agentic systems is not producing one intelligent response but sustaining useful action across time without losing control. That is a runtime problem.

Durable state, explicit workflow semantics, structured approvals, inspectable histories, observability, and reviewable roll-ups are not secondary implementation details. They are the machinery that turns bursts of model intelligence into dependable delegated work. Without them, the system remains trapped in the demo layer: locally impressive, globally fragile.

This is the deeper continuity across the book’s middle run. Chapter 3 argued that delegated work needs a legible workplace. Chapter 4 argued that it needs a quality loop. Chapter 5 argued that it needs the right working set of information. Chapter 6 adds that none of this is enough if the work cannot persist, recover, and be supervised over time.

A machine colleague is not just a model with tools. It is a model inside an operating environment.

And the better that operating environment gets, the less the future of AI engineering looks like chat and the more it looks like building dependable systems for shared human-and-machine work.

EVIDENCE OF SOURCE · CHAPTER 06 · VIDEOS

26 claims · 103 source anchors

Evidence — Source Anchors

The important transition is from suggestion to delegated execution

Open in graph
  • from helpfulness to productive
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • I think they need more
    #3 — Jacob Lauritzen, Legoraconfidence: high
  • most primitives the magic happens when you combine these things together
    #138 — Sam Bhagwat, Mastra.aiconfidence: high

Chat is an insufficient control surface for long-running or high-stakes work

Open in graph
  • Chat is one-dimensional. It's a very low bandwidth interface,
    #3 — Jacob Lauritzen, Legoraconfidence: high
  • we're asking AI systems to now produce output and produce judgments and decisions
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • handle state potentially over long periods of time. There needs to be human interaction for approvals
    #167 — Preeti Somal, Temporalconfidence: high

Reliability comes less from model cleverness than from surrounding scaffolding

Open in graph
  • The important thing is not the code but the prompt and the guardrails that got you there.
    #16 — Ryan Lopopolo, OpenAIconfidence: high
  • Agents have intelligence and capabilities, but not always expertise that we need for real work.
    #83 — Barry Zhang & Mahesh Murag, Anthropicconfidence: high
  • these are three kind of like ingredients which are pretty simple and pretty basic, but I think provide an interesting kind of like first principles approach for how to think about
    #198 — Harrison Chase, LangChain/LangGraphconfidence: high

Harness quality is a major determinant of coding-agent quality

Open in graph
  • a good harness is really operationalized around giving the model text at the right time
    #16 — Ryan Lopopolo, OpenAIconfidence: high
  • there's so much work that has been put in uh over the last you know 20 to 30 years around the automated validation and verification of software that you build
    #57 — Eno Reyes, Factory AIconfidence: high
  • instead of micromanaging, what I'm doing is I'm scaffolding and providing context.
    #190 — Eric Hou, Augment Codeconfidence: high
  • identifying problems with the code because if there's no problems then it's probably high quality code
    #179 — Josh Albrecht, Imbueconfidence: high

Specs are not paperwork; they are executable intent

Open in graph
  • specs are natural language, you're using specs as a control surface to explain what you want the system to do.
    #40 — Al Harris, Amazon Kiroconfidence: high
  • leaving breadcrumbs, documentation, ADRs, persona oriented documentation around what a good job looks like.
    #16 — Ryan Lopopolo, OpenAIconfidence: high

Evals are a control system, not just a test suite

Open in graph
  • improvement without measurement is limited and imprecise.
    #125 — Ido Pesok, Vercel v0confidence: high
  • We still want to build reliable scalable applications and that is still hard
    #184 — Samuel Colvin, Pydanticconfidence: high
  • eval to us it's actually the same problem from a from a systems perspective.
    #628 — Phil Hetzel, Braintrustconfidence: high
  • small CLI tool that we call eval tool
    #689 — Lawrence Jones, incident.ioconfidence: high
  • designed to allow agents to leverage our eval suite files.
    #689 — Lawrence Jones, incident.ioconfidence: high
  • classic benchmark maxing.
    #746 — Ara Khan, Clineconfidence: high
  • There are right ways to use them. There are wrong ways to use them.
    #746 — Ara Khan, Clineconfidence: high

Realistic evals must be grounded in natural tasks and operational history

Open in graph
  • task should be natural and sourced from the real world and then you should be able to reliably grade them.
    #72 — Naman Jain, Cursorconfidence: high
  • If you build your application in a type safe way, if you use frameworks that allow it to be type safe, you can refactor it with confidence much more quickly.
    #184 — Samuel Colvin, Pydanticconfidence: high
  • Dynamic data sets have real world alignment.
    #153 — Quotient AI + Tavilyconfidence: high

Context failure is often a system-assembly problem, not simply a small-context-window problem

Open in graph
  • the reason context platform engineering is so important is it dramatically simplifies reaching maximum KV cache hit rates
    #104 — Val Bercovici, WEKAconfidence: high
  • connect the dots with graph technology and solve problems like context engineering
    #105 — Stephen Chin, Neo4jconfidence: high
  • irrelevant facts pollute memory.
    #218 — Daniel Chalef, Zepconfidence: high
  • LLMs and tools are orchestrated through predefined code paths.
    #193 — Chau Tran, Gleanconfidence: high
  • Agents look at the starting point, end point and try to provide you the results.
    #752 — Nupur Sharma, Qodoconfidence: high
  • the more the tools, the more issues you have.
    #752 — Nupur Sharma, Qodoconfidence: high

Durable state and workflow semantics are trust features, not backend details

Open in graph
  • once we get into longer running workflows, that's where it really becomes a problem.
    #99 — Samuel Colvin, Pydanticconfidence: high
  • no one's going to trust your agent.
    #167 — Preeti Somal, Temporalconfidence: high
  • the workflow orchestration layer needs to be deterministic. So it can be rerun um in a in a uh deterministic fashion
    #44 — Peter Wielander, Vercelconfidence: high
  • where I've got some big production CI stack to go and run and deployment takes hours, being able to go and change variables in production or in staging very quickly
    #657 — Samuel Colvin, Pydanticconfidence: high
  • you'll be able to assemble agent teams that can complete tasks orders of magnitude harder than what you can complete with a single agent today.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • minding the gap around observability.
    #680 — Amy Boyd & Nitya Narasimhan, Microsoftconfidence: high

Human oversight works best as an architectural layer, not an afterthought

Open in graph
  • There needs to be human interaction for approvals or other reasons and of course they need to be able to be uh able to run in parallel for efficiency
    #167 — Preeti Somal, Temporalconfidence: high
  • dial these agency dials far up.
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • maintaining a factory would require you to have an overview of the processes you want your coding agents to go through.
    #629 — Eric Zakariasson, Cursorconfidence: high

High-stakes systems tune agency instead of maximizing it

Open in graph
  • a binary thing but as a lever that you can dial
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • agentic workflows we can plan and execute
    #201 — Yogendra Miraje, Factsetconfidence: high
  • send it to me for approval.
    #202 — Rita Kozlov, Cloudflareconfidence: high
  • credentials, payments, and checkout require determinism.
    #745 — Steve Kaliski, Stripeconfidence: high

The harness is evolving from a local loop into a staged software factory

Open in graph
  • getting to a place where you can build your own like software factory
    #629 — Eric Zakariasson, Cursorconfidence: high
  • unified agent harness that will manage
    #632 — Vaibhav Srivastav & Katia Gil Guzman, OpenAIconfidence: high
  • parallel agents working together to fix
    #42 — Robert Brennan, OpenHandsconfidence: high
  • The difference with missions is that we run features serially.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • Our longest mission ran for 16 days
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • We just kind of gave each role its own kind of context window.
    #691 — Ash Prabaker & Andrew Wilson, Anthropicconfidence: high
  • it's no longer about the model or the agent. It's about the process.
    #743 — Vincent Koc, OpenClawconfidence: high

The context gap increasingly includes capability packaging and progressive disclosure

Open in graph
  • doesn't have to be loaded immediately to context.
    #683 — Pedro Rodrigues, Supabaseconfidence: high
  • specifically with progressive disclosure.
    #654 — Nick Nisi & Zack Proser, WorkOSconfidence: high
  • 49% reduction of the initial load.
    #625 — Sam Morrow, GitHubconfidence: high
  • rich interactive components that render directly in the chat.
    #747 — Marlene Mhangami & Liam Hampton, GitHubconfidence: high

AI-native advantage depends on organizational coherence, not output volume alone

Open in graph
  • you'll be able to assemble agent teams that can complete tasks orders of magnitude harder than what you can complete with a single agent today.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • observing their workflows, their pain points, co-designing solutions with them
    #693 — Eoin Mulgrew, 10 Downing Streetconfidence: high
  • maintaining a factory would require you to have an overview of the processes you want your coding agents to go through.
    #629 — Eric Zakariasson, Cursorconfidence: high

Harness quality now includes capability packaging, not only repo hygiene

Open in graph
  • That's what a skill is. You're teaching the the LLM how to do something in the way that you expect it to be done
    #654 — Nick Nisi & Zack Proser, WorkOSconfidence: high
  • This is how the agent is
    #683 — Pedro Rodrigues, Supabaseconfidence: high
  • 49% reduction of the initial
    #625 — Sam Morrow, GitHubconfidence: high
  • the schema is the UI for the agent.
    #744 — Michael Hablich, Google (Chrome DevTools)confidence: high

Context failure is often a capability-exposure problem, not only a retrieval problem

Open in graph
  • MCP versus skill debate
    #683 — Pedro Rodrigues, Supabaseconfidence: high
  • you can do it in a better way. And that is specifically with progressive disclosure.
    #654 — Nick Nisi & Zack Proser, WorkOSconfidence: high
  • grouping concept of related product
    #625 — Sam Morrow, GitHubconfidence: high

Evals are strongest when they are trace-linked and fed by production observability

Open in graph
  • what is the gap between agent observability and what you're actually building. How do we mind that gap?
    #680 — Amy Boyd & Nitya Narasimhan, Microsoftconfidence: high
  • we go from like a testing and eval paradigm to a monitoring p uh paradigm.
    #655 — Danny Gollapalli & Ben Hylak, Raindropconfidence: high
  • where I've got some big production CI stack to go and run and deployment takes hours, being able to go and change variables in production or in staging very quickly
    #657 — Samuel Colvin, Pydanticconfidence: high
  • download all of the UI that we have as a file system?
    #689 — Lawrence Jones, incident.ioconfidence: high
  • 25 agents in parallel
    #689 — Lawrence Jones, incident.ioconfidence: high
  • it's actually the telemetry that does that.
    #750 — Dat Ngo, Arizeconfidence: high

Coordination is the unsolved runtime primitive for multi-agent systems

Open in graph
  • the thing that's missing for me is coordination.
    #704 — Lou Bichard, Onaconfidence: high
  • through sort of state machines, you know, by building out workflows and effectively state machines
    #704 — Lou Bichard, Onaconfidence: high
  • They step on each other's changes. They duplicate work. They make inconsistent architectural decisions.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • we have the two agents basically negotiate what done actually means.
    #691 — Ash Prabaker & Andrew Wilson, Anthropicconfidence: high

Context engineering is a primary engineering discipline, not a prompt trick

Open in graph
  • picking up the right documents and answering those questions is a really cool use case.
    #100 — Ofer Mendelevitch, Vectaraconfidence: high
  • cool load generator that Kalen wrote that lets you configure agent swarms uh and agent subtasks with very specific SLOs's
    #104 — Val Bercovici, WEKAconfidence: high
  • connect the dots with graph technology and solve problems like context engineering
    #105 — Stephen Chin, Neo4jconfidence: high
  • the right agent in the future is going to be this system that decides what type of search
    #157 — Will Bryk, Exa.aiconfidence: high

RAG, memory, and GraphRAG solve different jobs; collapsing them into one bucket misses the architecture

Open in graph
  • rag or retrieval augmented generation where you have so many things that you can't fit them all in
    #48 — Jack Morrisconfidence: high
  • why you need to model your memory after your business domain.
    #218 — Daniel Chalef, Zepconfidence: high
  • the basic construct of a knowledge graph is um nodes which represent different people in the situation, relationships, and then you can attach properties to these nodes.
    #105 — Stephen Chin, Neo4jconfidence: high
  • we want to look at patterns for successful graph applications uh for um making LLMs a little bit smarter by putting knowledge graph into the picture.
    #215 — Michael, Jesus & Stephen, Neo4jconfidence: high
  • how can we create a graph rack system what are the advantages of it and if we add the hybrid nature to it how it is helpful
    #219 — Mitesh Patel, NVIDIAconfidence: high
  • you need to be like tuned to what what every technique gives you before you go and invest in it.
    #156 — David Karam, Pi Labsconfidence: high
  • retrieval is not just vector search.
    #756 — Kuba Rogut, Turbopufferconfidence: high

Once an AI system can act autonomously, bounding its authority becomes the price of deployment

Open in graph
  • we're asking AI systems to now produce output and produce judgments and decisions
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • most primitives the magic happens when you combine these things together
    #138 — Sam Bhagwat, Mastra.aiconfidence: high

The gap that kills agent PoCs is the evaluation gap — no defined, continuously-measured definition of success — not the choice of model

Open in graph
  • Second is the evaluation gap.
    #767 — Sandipan Bhaumik, Databricksconfidence: high
  • Evaluation is basically specification for your AI system.
    #767 — Sandipan Bhaumik, Databricksconfidence: high

Route each task to the cheapest model that can do it — tiered model selection by difficulty is accepted practice, not a frontier idea

Open in graph
  • don't use the most expensive model for everything you're doing. You want to use multiple different models based on the use case. And then try to route to it inside your agent.
    #791 — Erik Hanchett, AWSconfidence: high
  • So you can do tiered model selection. You can do cheap models for simple queries and expensive models in your agent uh for complex queries.
    #681 — Laurie Voss, Arizeconfidence: high
  • route between uh language models so one model might be better than another you might want to use Claud because of its long context window or you might want to use GPD 4 because it's really good at reasoning
    #613 — Harrison Chase, LangChainconfidence: high
  • flex and that's basically I don't care if that takes a long time but I want to to pay less. So you're going to have a 50% discount but your request can be uh can be delayed
    #692 — Guillaume Vernade, Google DeepMindconfidence: medium

Trustworthy judgment can be manufactured from cheap stochastic generation — sample-and-vote, multi-model consensus, and debate panels beat a single expensive call

Open in graph
  • the models to generate multiple responses and then do majority voting.
    #251 — Aakanksha Chowdhery, Reflection.aiconfidence: high
  • having LMS debate each other, having the weaker LLMs debate each other about what the stronger model is saying and seeing if that makes sense.
    #116 — Leonard Tang, Haize Labsconfidence: high
  • Second tier is a multimodel consensus. So we leverage a diverse range of models such as GBT4, claude and
    #093 — Alberto Romero, Jointlyconfidence: high
  • we using multi-agent debate to get reliable State evaluation instead of using single uh
    #451 — How to Improve Your Agents (lit review)confidence: high

Parallel agents need per-agent runtime isolation — a sandbox/micro-VM/worktree each — because containers are not a sufficient boundary for agent-generated code

Open in graph
  • And only with having sort of the full isolation of a VM will you be able to effectively do this properly.
    #704 — Lou Bichard, Onaconfidence: high
  • It is also backed by a micro VM. So a sandboxed computer in the cloud on its own Git branch.
    #623 — Maggie Appleton, GitHubconfidence: high
  • if you just use containers, by the way, that's not an isolation layer in case anybody's wondering. Yeah. Yeah. Don't use containers for isolation.
    #151 — Rene Brandel, Cascoconfidence: high

Input tokens dominate agent cost — fix what you feed the model before you optimize which model

Open in graph
  • 90% of your AI cost is input. Files, search results, context you send in. Only 10% is output. The code the AI writes back.
    #792 — Rajkumar Sakthivel, Tescoconfidence: high
  • may be 30% of the cost, but other 70% is what you feed it. Fix the input, the model choice matters less than you think.
    #792 — Rajkumar Sakthivel, Tescoconfidence: high
AI QUALITY · CHAPTER 06 · MASH JUDGES
1 unsupported claim — ship-blocker

scored on version git:e68466c

EVIDENCE OF SOURCE · CHAPTER 07
FIG. 07 · BEFORE · AFTERCLICK · SCROLL · ZOOM

AI Engineer Book · Ch 07

Security, Identity, and High-Stakes Trust

1/5

FIG. 07.0 · OPENER

Unbounded agent vs bounded autonomy

Click to enlarge

CH07

CH. 07 // Drafting
3,206 words14 min read
CHAPTER 07/3,206 words/Drafting

A helpful model can get away with being vague about power. An acting system cannot.

The moment an AI system can read across accounts, call tools, execute code, trigger workflows, or continue working after the user has moved on, trust stops being a soft judgment about how smart the model sounds. It becomes a hard architectural question. Who is this system acting as? What can it reach? What can it do without asking again? What happens if it is manipulated? What evidence remains after the fact? And how quickly can that power be reduced, revoked, or redirected when something goes wrong?

That is why security belongs immediately after runtimes. Chapter 6 argued that long-running delegated work needs state, checkpoints, observability, and a . Chapter 7 adds the next constraint: a control plane without authority boundaries is still not trustworthy. Durable execution tells you what the system is doing over time. Security determines whether it should have been allowed to do it at all.

The core mistake in immature agent systems is to treat tool access as a product feature before treating delegated authority as a systems problem. That works for demos because the happy path flatters the design. The agent seems capable. It reaches many systems. It stitches steps together. But the same freedom that makes the demo look magical also enlarges the blast radius of every prompt injection, every misread instruction, every overscoped token, and every badly described tool.

Agency turns security from request control into workflow control

Figure 07.1/Authority boundary collapseCLICK TO ENLARGE

Traditional application security had a relatively stable unit of action. A user clicked a button. An API call hit a service. The backend checked permissions. The path was constrained enough that teams could reason in discrete requests. Agency dissolves that unit: the architecture must now constrain the whole delegated workflow, not decorate prompts around isolated requests.

Agentic systems weaken that comfort. An agent does not only receive a command. It interprets intent, decides how to pursue it, fans out into tools, retries when steps fail, and may continue moving through a workflow long after the original prompt is gone from the user’s attention. The trust boundary therefore expands. The key question is no longer only whether a given user may access a given resource. It becomes whether a delegated machine actor can decide, retrieve, execute, and continue safely on that user’s behalf. That is a much larger surface.

The High-Stakes Colleague makes the shift obvious. In legal, tax, and compliance workflows, the system is not merely answering a question. It may gather evidence, traverse internal sources — the same retrieval binder it assembled in Chapter 5 — use the validation engines it gained in Chapter 6, draft conclusions, and surface a recommendation for human sign-off. The risk lives across the trajectory, not at one tool endpoint. A single misstep in that chain can leak the wrong document, overstate a conclusion, or cross a permission boundary that the human did not realize had been delegated. What Chapter 5 answered with provenance, security now answers with authority: who authorized that path?

In high-stakes work the risky move is often not one bad answer. It is a system quietly crossing from assistance into authorization inside a competent-looking trajectory.

The exposes the same problem from another angle. A code agent with repository access is not dangerous only when it writes a bad patch — the quiet, special-path kind the admin-override regression of Chapter 4 already paid for. It is dangerous when it can quietly inspect secrets, mutate CI configuration, add a dependency, call external services, or keep iterating after a misleading instruction entered the loop. Once code execution enters the picture, the old fantasy that trust can be solved primarily at the prompt layer becomes hard to defend.

This is why the chapter resists security theater: the unit of control has moved, and the architecture must move with it.

Sandboxes matter because models are not where trust ultimately lives

Figure 07.2/Scoped agent identityCLICK TO ENLARGE

The clearest lesson from the code-execution material is a rule, not an observation: a model can never be the final enforcement layer for its own power.

If an agent can execute code, browse untrusted content, open files, or chain across tools, then the design must assume it can be induced into bad behavior. Maybe by a malicious instruction. Maybe by a poisoned page. Maybe by a bug in tool descriptions. Maybe by a simple misunderstanding. The source of failure matters less than the consequence.

Sandboxing is therefore part of the product, not an implementation detail. A serious code-executing agent should run in a constrained environment. Filesystem access should be scoped. Network access should be explicit. Secrets should be minimized. Tool permissions should be narrow by default. Risky operations should require step-up approval rather than inheriting broad ambient authority. If the system needs to browse arbitrary inputs, those inputs should not sit on the same trust plane as production credentials.

Fouad Matin's security guidance for coding agents at OpenAI names four controls as the default-on baseline, not hardening added after an incident: sandboxing, network restriction, privilege boundaries, and human review. Each bounds a different failure — a bad command, exfiltration, over-reach when the agent is wrong, and the trajectory the first three let through.

This is an old security instinct, but agent systems give it new urgency. In classic software, code paths were written by developers and at least somewhat knowable in advance. In agentic software, the system is choosing among many possible paths at runtime. That makes deterministic boundaries even more valuable. The model may improvise, but the environment should fail closed.

This is also why security-heavy discussions increasingly sound like runtime design rather than model evaluation alone. They are about OS boundaries, execution isolation, token scope, credential lifetimes, and mediation layers. They are about what the system can do even when the model is confused, manipulated, or simply too eager.

The underlying principle is blunt: assume the agent will sometimes be wrong, and build so that being wrong is survivable.

A word about scope. There is a serious discipline devoted to the model’s own alignment — what it is disposed to do, refuse, and value — and nothing here argues against it. That is not this book’s subject. This book is about the engineering that surrounds the model: the boundaries, identities, sandboxes, and audit trails that must hold even when the model’s inner alignment is imperfect. A bounded system is where trust is earned, however the model was trained.

Least privilege becomes a product design discipline

Figure 07.3/Step-up OAuthCLICK TO ENLARGE

Least privilege is easy to praise and surprisingly hard to operationalize in agent systems.

A useless agent can be perfectly safe. The challenge is to make the system powerful enough to matter without giving it so much authority that one mistake becomes expensive. This is where many teams discover that access control is no longer a back-office function. It becomes part of the product experience.

A strong design does not expose every tool and every permission up front. It gives the system a constrained initial surface, then expands authority only when the workflow truly requires it. GitHub’s production lessons point in this direction — scoping what the system can see based on existing credentials, filtering tool exposure by permission, using step-up flows for stronger actions. That pattern matters because it treats tool discovery and authorization as connected problems.

A scope that looks harmless in isolation can compound once it is paired with retrieval, reasoning, persistence, and retries. The sharper question for an agent is not only what the minimum access is, but minimum access for which stage of the workflow.

The same logic is really a default-permission table, one row per agent. A research agent may not need write access at all. A support agent may need to read account metadata but not issue refunds. A legal workflow may need broad retrieval across documents but no authority to send anything externally. A scheduling agent may need access to calendars yet no permission to message third parties without confirmation.

These choices do not merely protect the organization. They shape the behavior of the system itself. Narrower powers reduce the number of tempting but unsafe paths the model can wander into. A better security design often makes the system easier to reason about, not only safer.

Safe delegation comes from making carelessness less powerful, not from asking the model to be careful.

MCP and standardized tool access do not remove governance; they raise its stakes

Figure 07.4/Enterprise MCP has one shapeCLICK TO ENLARGE

Protocol enthusiasm can make this easy to forget.

Standardized tool access is genuinely useful. It lowers integration friction. It gives model-facing systems a common way to discover capabilities. It reduces the amount of one-off glue every vendor has to invent. All of that is real progress.

But interoperability does not dissolve governance problems. It concentrates them.

Once many tools can be exposed through a common protocol, the main bottleneck moves upward. Teams no longer ask only, “Can we connect this service?” They start asking, “Should this be exposed at all? To which agents? Under which identities? With what logging, discovery rules, consent surfaces, and policy constraints?” The protocol solves the wiring problem and reveals the management problem.

Tun Shwe at Lenses puts the production reality plainly: "Your insecure server won't survive production." The failure modes are mundane and repeatable — authentication treated as a configuration option, tool descriptions trusted as input, servers exposed publicly because internal routing was the harder problem. A useful test: if adopting a protocol raises the number of capabilities your agents can reach faster than your team can answer who can call this, with what scope, and where it is logged, standardization has expanded the attack surface.

The enterprise discussions keep the book from confusing integration ease with production readiness. The easier it becomes to connect tools, the more pressure builds for curation, grouping, authorization, visibility, and roots of trust. The system needs to know not only what exists, but what is blessed, what is risky, what is scoped to a team, and what requires escalation.

This also connects back to Chapter 5. Context overload and capability overload are cousins. A model flooded with too many possible tools is not only inefficient. It is harder to govern. Progressive discovery, capability grouping, and mediated exposure help both cognition and security at once.

A mature tool ecosystem therefore does not eliminate chokepoints. It creates better reasons for them.

Enterprises keep reinventing gateways because gateways solve several problems at once

Developers often prefer directness. Connect the agent to the tool. Let the model call the thing. Keep the stack simple. Organizations with real risk tend to rediscover a different preference: mediated access.

Whether it is called a gateway, a policy plane, an identity hub, or a root of trust, the pattern keeps returning for understandable reasons. A trusted mediation layer can centralize auth, narrow credential handling, standardize policy enforcement, capture logs, and provide one place to revoke or reshape access when the environment changes. It can also make security teams less allergic to agent adoption because they are not being asked to bless an uncontrolled mesh of direct tool connections.

Karan Sampath at Anthropic names the requirement directly: security teams "need to establish a root of trust" at the platform, not at each individual tool. The shape that satisfies it reads as a checklist — a gateway, a policy plane, a registry of blessed servers reviewed before entry, a permissions model over identities and tools, and an audit log at the gateway layer. A missing one is the likeliest place for the boundary to fail first.

This is not bureaucracy for its own sake. It is a response to what delegated machine work actually does inside institutions. Once many tools, many users, many teams, and many workflows are involved, local convenience stops being the only design goal. The organization needs consistent trust infrastructure.

The High-Stakes Colleague is again the clearest mirror. A professional workflow is only trustworthy if the surrounding institution can answer basic questions reliably: who authorized this path, what authority was used, what evidence was consulted, and what policy applied when the system crossed into a consequential step? A gateway pattern makes those questions cheaper to answer.

The same is true in the . A central access and policy layer can decide which repositories, environments, and operations are exposed to coding agents at all. It can keep risky powers off the default path. It can make the difference between a coding assistant that is merely fast and a that is governable.

Identity for agents is really the problem of delegated authority

Identity talk can sound abstract until you name what is actually at stake.

The hard problem is not only authenticating the human user. It is safely carrying that user’s authority across multiple systems while preserving scope, duration, attribution, and revocation. The agent has to act on someone’s behalf without becoming an unbounded extension of their account.

The most common shortcut makes the gap concrete: hand the agent a standing credential — a long-lived API key, or a personal access token borrowed from the operator. A standing credential is not a delegation. It is the agent inheriting the borrowed key’s whole authority, with no scope to revoke and no expiry that maps to the task.

In plain language, the system must know four things.

Who the human is. What powers the agent has been granted. How long those powers last. How those powers can be withdrawn or narrowed.

That is what makes delegated identity different from ordinary session management. A human being can interpret context, notice risk, and stop themselves. An agent can move faster and across more surfaces, but it is less inherently trustworthy. So the identity system has to carry more of the burden.

This is why repeated ad hoc consent flows are not just annoying UX. They signal a deeper architectural gap. If every tool asks separately, the organization loses coherence. Users get habituated to clicking through permissions they do not fully understand. Security teams lose visibility into the aggregate authority the workflow has accumulated. The agent itself becomes a messy stack of partially granted powers rather than a cleanly governed delegated actor.

Patrick Riley and Carlos Galan at Auth0 frame the fix: "we authorize agents, servers" — the agent becomes a first-class principal with its own scopes, lifetime, and revocation path rather than riding on a human’s credential. Jared Hanson at Keycard argues the same shape: the right agent credential is a short-lived, scoped token bound to a session, a user, and a task. An agent authenticated as a blurry extension of a human is not delegated; it is impersonating.

Cross-app access patterns and identity-provider mediation are attractive because they acknowledge that this sprawl will not scale. If agents are to become real workers inside enterprises, they need identities and authorization paths that are as manageable as those of human workers, while still being more bounded.

That phrase matters: more bounded, not less. Nobody grants a junior employee universal access to every internal system on day one. The same common sense should govern agents.

High-stakes trust depends on inspectability as much as prevention

Security discourse often focuses on blocking bad actions. Agent systems require a wider frame.

In high-stakes environments, trust also depends on being able to reconstruct what happened. Which sources were consulted? Which tool calls were made? Which permissions were exercised? Which output did the system present for review, and what path led there? If an answer is disputed, if a workflow failed, or if a regulator asks questions later, the organization needs more than a statement that the model was generally aligned.

It needs evidence.

This is where Chapter 7 should deliberately touch Chapter 6’s observability argument again. Rich traces, approval logs, trajectory views, and reviewable histories are not only operational conveniences. They are part of the security story. They let an institution convert bounded autonomy into something defensible.

Joel Hron’s high-stakes framing is especially powerful here because it does not pretend the answer is unrestricted autonomy under perfect prevention. The answer is constrained execution plus inspectable paths. The system can do meaningful work, but it leaves behind a trail that domain experts and organizations can actually examine.

Consider the day a client disputes a position Hargrove’s assistant helped file. A partner must answer one question: what did the system actually do? Because the assistant reached its documents through a mediation layer, the answer exists. The trajectory shows which matter files it retrieved, which validation engine it called, and which draft it surfaced — all under a read-only token scoped to this matter, with no authority to send to the client. Without that trail, the honest answer would be a shrug. Inspectability here separates a defensible workflow from a liability the firm cannot bound.

That said, the chapter should not fake simplicity. Inspectability creates its own tension. Detailed traces can expose sensitive data, internal reasoning artifacts, or privileged content. A trustworthy architecture therefore needs selective retention, role-based visibility, redaction strategies, and different surfaces for operators, reviewers, and auditors. But that tension is not an argument against inspection. It is an argument for governing inspection properly.

The same pattern keeps recurring: wherever agent systems create new power, they also create a need for better-structured oversight.

Trustworthy autonomy is tuned, not maximized

The chapter’s deepest continuity with the rest of is the rejection of autonomy maximalism.

A childish architecture asks, “How much can we let the agent do?” A mature architecture asks, “What authority is appropriate at this step, for this domain, under this level of risk?”

That distinction matters because it ties security directly to product seriousness. In the High-Stakes Colleague, the system is valuable precisely because autonomy is dialed. It can retrieve, synthesize, validate, and draft, but some transitions remain deliberately human. In the , subagents can search, summarize, patch, and test, while merge rights, deployment actions, or broader environment changes remain gated. In both cases, trust comes not from proving the system can do everything, but from deciding what it should never do casually.

This is what high-stakes trust actually looks like in practice: layered controls, bounded identities, narrow permissions, mediated access, sandboxed execution, and enough visibility that a human institution can remain responsible for the work.

Security is the architecture of deserved trust

Once AI systems act, security cannot remain a sidebar to product capability.

It is the architecture that determines whether delegated power is deserved.

Identity tells the system on whose behalf it acts. Authorization determines which powers it actually holds. Sandboxing and least privilege contain the damage when the model is wrong. Gateways and roots of trust turn sprawl into governable infrastructure. Audit trails and inspectable trajectories turn machine action into something institutions can review, defend, and improve.

A machine colleague is not trustworthy because it sounds confident. It is trustworthy only when its power has shape.

Bounded authority is a calm-room design. The next chapter asks whether that design still holds when the room stops being calm — when the human is still present, the clock is running, and every defect in the architecture becomes audible.

EVIDENCE OF SOURCE · CHAPTER 07 · VIDEOS

14 claims · 52 source anchors

Evidence — Source Anchors

Chat is an insufficient control surface for long-running or high-stakes work

Open in graph
  • Chat is one-dimensional. It's a very low bandwidth interface,
    #3 — Jacob Lauritzen, Legoraconfidence: high
  • we're asking AI systems to now produce output and produce judgments and decisions
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • handle state potentially over long periods of time. There needs to be human interaction for approvals
    #167 — Preeti Somal, Temporalconfidence: high

Evals are a control system, not just a test suite

Open in graph
  • improvement without measurement is limited and imprecise.
    #125 — Ido Pesok, Vercel v0confidence: high
  • We still want to build reliable scalable applications and that is still hard
    #184 — Samuel Colvin, Pydanticconfidence: high
  • eval to us it's actually the same problem from a from a systems perspective.
    #628 — Phil Hetzel, Braintrustconfidence: high
  • small CLI tool that we call eval tool
    #689 — Lawrence Jones, incident.ioconfidence: high
  • designed to allow agents to leverage our eval suite files.
    #689 — Lawrence Jones, incident.ioconfidence: high
  • classic benchmark maxing.
    #746 — Ara Khan, Clineconfidence: high
  • There are right ways to use them. There are wrong ways to use them.
    #746 — Ara Khan, Clineconfidence: high

Durable state and workflow semantics are trust features, not backend details

Open in graph
  • once we get into longer running workflows, that's where it really becomes a problem.
    #99 — Samuel Colvin, Pydanticconfidence: high
  • no one's going to trust your agent.
    #167 — Preeti Somal, Temporalconfidence: high
  • the workflow orchestration layer needs to be deterministic. So it can be rerun um in a in a uh deterministic fashion
    #44 — Peter Wielander, Vercelconfidence: high
  • where I've got some big production CI stack to go and run and deployment takes hours, being able to go and change variables in production or in staging very quickly
    #657 — Samuel Colvin, Pydanticconfidence: high
  • you'll be able to assemble agent teams that can complete tasks orders of magnitude harder than what you can complete with a single agent today.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • minding the gap around observability.
    #680 — Amy Boyd & Nitya Narasimhan, Microsoftconfidence: high

Human oversight works best as an architectural layer, not an afterthought

Open in graph
  • There needs to be human interaction for approvals or other reasons and of course they need to be able to be uh able to run in parallel for efficiency
    #167 — Preeti Somal, Temporalconfidence: high
  • dial these agency dials far up.
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • maintaining a factory would require you to have an overview of the processes you want your coding agents to go through.
    #629 — Eric Zakariasson, Cursorconfidence: high

High-stakes systems tune agency instead of maximizing it

Open in graph
  • a binary thing but as a lever that you can dial
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • agentic workflows we can plan and execute
    #201 — Yogendra Miraje, Factsetconfidence: high
  • send it to me for approval.
    #202 — Rita Kozlov, Cloudflareconfidence: high
  • credentials, payments, and checkout require determinism.
    #745 — Steve Kaliski, Stripeconfidence: high

The next failure frontier is context misassembly, not just hallucination

Open in graph
  • there's this third thing, which I think is like really new and no one is doing it yet, which is training things into weights.
    #48 — Jack Morrisconfidence: high
  • this is really useful if you're building anything related to some sort of internal deep research sort of API
    #47 — Ivan Leo, Manus AI / Meta Superintelligenceconfidence: high
  • you combine it with all your other signals. So now if you look at your ranking function
    #156 — David Karam, Pi Labsconfidence: high
  • it's hybrid search because you have multiple approaches, and then you can either boost them together. You could do reranking, which is becoming more and more popular.
    #172 — Philipp Krenn, Elasticconfidence: high

Identity is a first-class engineering object for agentic systems

Open in graph
  • we actually persist scopes we manage lifetimes of tokens um we do a lot of handling there
    #37 — Patrick Riley & Carlos Galan, Auth0confidence: high
  • we go get API keys that are typically longived and broadly scoped. We paste them into some configuration files and environment variables
    #150 — Jared Hanson, Keycard / Passport.jsconfidence: high
  • if you've used MCP at all extensively, you know that it means consent screens on top of consent screens on top of consent screens.
    #627 — Garrett Galow, WorkOSconfidence: high

Sandbox, least privilege, and auditability are product infrastructure, not security overhead

Open in graph
  • making sure that you're actually providing the correct level of sandboxing, whether it's uh containerization or it's using app level sandboxing,
    #152 — Fouad Matin, OpenAI (Codex, Agent Robustness)confidence: high
  • We have been sandboxing untrusted code for decades. Your browser does it right now. Every tab run in its own sandbox.
    #31 — Harshil Agrawal, Cloudflareconfidence: high
  • these are what they call enforceable guarantees, not just policies.
    #149 — Jmo, CONFSEC, on Apple Private Cloud Computeconfidence: high
  • we see it as the greatest opportunity and the greatest threat to national security,
    #86 — Mark Myshatyn, Los Alamos National Labconfidence: high
  • never compromise trust for convenience.
    #744 — Michael Hablich, Google (Chrome DevTools)confidence: high

Protocol standardization expands the attack surface if governance lags

Open in graph
  • there's no halfway house because you can't do a little bit of production. You're either behind the wall or you're standing out in the open.
    #32 — Tun Shwe, Lensesconfidence: high
  • The really important thing for security teams and enterprises that want to allow this to be decentralized is they need to establish a root of trust.
    #624 — Karan Sampath, Anthropicconfidence: high
  • something like operator just shows up as a Chrome browser and it's much more challenging to understand and detect
    #148 — David Mytton, Arcjetconfidence: high

Enterprise MCP adoption converges on gateways, blessed platforms, and a root of trust

Open in graph
  • we think that the goal for a secure this for any security team is to is to bless one platform.
    #624 — Karan Sampath, Anthropicconfidence: high
  • challenges we've faced building and scaling our remote server, how we've overcome them,
    #625 — Sam Morrow, GitHubconfidence: high
  • if we continue this pattern for hundreds or thousands of agents, we've got a pretty big security problem on our hand.
    #150 — Jared Hanson, Keycardconfidence: high

Per-tool OAuth flows are a governance and IT visibility problem, not just a UX annoyance

Open in graph
  • you have this like lasting access problem that it doesn't have any visibility over
    #627 — Garrett Galow, WorkOSconfidence: high
  • We know how to transition away from static secrets uh, to dynamic access using OOTH.
    #150 — Jared Hanson, Keycardconfidence: high
  • if you log into GitHub MCP with a PAT token that we just immediately filter the tools down by the scopes that the token has.
    #625 — Sam Morrow, GitHubconfidence: high

Once an AI system can act autonomously, bounding its authority becomes the price of deployment

Open in graph
  • we're asking AI systems to now produce output and produce judgments and decisions
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • most primitives the magic happens when you combine these things together
    #138 — Sam Bhagwat, Mastra.aiconfidence: high

Agent commerce is a new infrastructure layer: agents transact on a human's behalf, shifting the stack from payment rails to delegated intent and verifiable authority

Open in graph
  • AI digitizes the participants and their interactions.
    #200 — Adam Behrens, New Generationconfidence: high
  • we go from low-level payment infrastructure to higher level intent infrastructure.
    #200 — Adam Behrens, New Generationconfidence: high
  • help agents interact with the economy starting with e-commerce
    #503 — Justin, Ionicconfidence: high
  • adapt to that new kind of buyer.
    #745 — Steve Kaliski, Stripeconfidence: high

Agents fabricate having verified — they report success they never achieved — so the harness must supply real verification, not trust the agent's account of it

Open in graph
  • There's no error, no warning, just the wrong answer.
    #766 — Rafael Levi, Bright Dataconfidence: high
  • The agent gets blocked, it needs to please you and it makes things up.
    #766 — Rafael Levi, Bright Dataconfidence: high
AI QUALITY · CHAPTER 07 · MASH JUDGES
4 unsupported claims — ship-blocker

scored on version git:e68466c

EVIDENCE OF SOURCE · CHAPTER 08
FIG. 08 · BEFORE · AFTERCLICK · SCROLL · ZOOM

AI Engineer Book · Ch 08

Realtime, Voice, and the Cost of Being Interruptible

1/6

FIG. 08.0 · OPENER

Turn-based chat vs realtime pipeline

Click to enlarge

CH08

CH. 08 // Drafting
2,915 words13 min read
CHAPTER 08/2,915 words/Drafting

Text chat flatters AI systems.

It hides latency behind a blinking cursor. It tolerates awkward pauses. It lets a weak handoff look like thoughtful reflection. It gives users time to scroll, reinterpret, and silently repair what the system failed to make clear on the first pass. A lot of fragile AI feels smarter in text simply because text is forgiving.

Voice removes that mercy.

Imagine Hargrove's assistant — the one that built its retrieval binder in Chapter 5, gained durable state and staged sign-off in Chapter 6, and had its authority scoped behind a gateway in Chapter 7 — on a live support call with a client whose account is locked, whose case crosses billing and compliance rules, and whose patience is running out in real time. The agent has to understand messy speech, notice that the caller interrupted to add a crucial exception, retrieve the right internal policy, check the client record, decide whether it can act directly or must escalate, explain what it is doing, and avoid sounding either lost or overconfident while all of this is happening.

That scenario does two useful things for this book. First, it gives Chapter 8 a center stronger than “voice” in the abstract. Second, it reveals why realtime belongs in ’s main run at all. The same themes that shaped Chapters 3 through 7 — scaffolding, evals, context, runtime design, authority boundaries, and human control — are all still here. The difference is that realtime compresses them into milliseconds. Problems chat can hide become audible. Voice is not merely another modality; it is a systems stress test for trustworthy agency.

Realtime exposes whether the rest of the architecture was honest

Figure 08.1/Latency budgetCLICK TO ENLARGE

The field often treats voice as a charming frontier, a natural interface waiting for slightly better models. That framing is too soft.

Voice matters because it strips away excuses. If the context architecture is weak, the system will fumble the thread. If the runtime is brittle, interruptions will break it. If the security model is sloppy, approvals will be too casual and authority too ambient. If the control plane is underdesigned, the user will be forced to rescue the interaction constantly. If the tool layer is slow, the product will sound incompetent no matter how good the core model is in isolation.

Chapter 7 asked whether delegated power had the right shape. Chapter 8 asks whether that same system still deserves trust when the world refuses to wait.

Realtime systems reveal what chat can hide

Figure 08.2/Speech layer wrapperCLICK TO ENLARGE

In text interfaces, turn-taking is loose. The user sends a message, waits, and receives a response. Even when the latency is annoying, the social contract survives.

Spoken interaction is different. Timing itself becomes part of the product.

People expect overlap, acknowledgment, interruption handling, backchannels, and rapid repair. They do not experience conversation as a sequence of perfectly separated turns. They experience it as a continuous negotiation of attention. Users do not only want the answer faster. They want the system to behave as if it understands the rhythm of interaction.

In the support-call scenario, that rhythm is not cosmetic. If the caller corrects their own account number halfway through a sentence, the system has to revise state. If the caller says, “No, wait, that was the old policy,” the system has to distinguish between abandoned context and active context. If the agent says “One moment while I check that” and then disappears into silence, the user does not experience a neutral backend delay. They experience incompetence.

This is what the modern voice material names so well. The gap is no longer only transcription quality or speech synthesis quality. The real test is narrower and harder: timing, overlap, and interruption — the three ways a live conversation actually breaks. Even as speech models improve, systems still wait too long, cut in too aggressively, or lose coherence when the human changes direction mid-stream. Passing means handling those three, not sounding more eloquent. A model can be perfectly articulate and still fail all of them, because the thing under test is whether the system can coordinate listening, reasoning, tool use, and speaking under live pressure.

That matters far beyond voice. A realtime system is simply the most unforgiving version of a general truth: trustworthy AI depends on the loop around the model. Voice makes that visible because the human is still there to feel every systems defect as behavior.

Latency is a budget across the whole loop

Figure 08.3/Interruption runtimeCLICK TO ENLARGE

One of the most useful mistakes in voice discourse is treating latency as a single number. In practice, latency is a budget distributed across the entire loop: audio capture, transport, speech recognition, turn segmentation, model reasoning, tool invocation, retrieval, speech generation, and playback. A system can have a fast core model and still feel terrible because the orchestration around it burns the budget in awkward places.

Practitioners put numbers on the budget. Neil Zeghidour at Gradium AI sets the target for natural conversation at the whole loop: “the entire stack of understanding, producing an answer, and pronouncing it” has to land “around 200 milliseconds,” measured end to end, not at any single stage. Kwindla Hultman Kramer, whose Pipecat work treats this as infrastructure, is specific that the number to watch is the tail, not the average: “in most cases in a voice AI conversation, you care a lot if your P95 goes up above 800, 900, 1,000 milliseconds for the entire voice-to-voice response chain,” and every inference call inside that chain “has to be much faster than that by definition.”

The support-call case makes this concrete. The user does not care whether the delay came from ASR, retrieval, the permissions gateway, or a slow billing tool. They only hear that the agent became hesitant exactly when confidence mattered. So the rule is to spend the latency budget on the first audio rather than on silence: a quick spoken acknowledgment followed by a slightly slower answer beats a long silent pause followed by a polished response. Streaming partial understanding can outperform a more globally optimal batch pipeline. Fast first audio rescues a system whose deeper reasoning takes longer, provided the interaction contract is designed honestly.

The newer voice material sharpens another important point. As speech layers improve, tool calls increasingly become the bottleneck — “The main bottleneck is becoming the tool call,” as Zeghidour puts it, once speech recognition, the model, and synthesis are all fast. The variance bites: a tool call or open router runs “between 500 milliseconds and 4 seconds,” and a 4-second pause in conversation is not a slow response but a dead line. That tool-call bottleneck is a major book-level insight because it ties voice directly back to Chapters 5, 6, and 7. If a user asks a realtime system for account data, a calendar lookup, a support action, or an environment check, the speech stack may no longer be the slowest part. The true latency may come from retrieval, permission checks, network round-trips, or a workflow step waiting on some other service.

This is why teams that think they are building a speech product often discover they are really building an orchestration product. Low-latency interaction depends on pipeline design, caching, progressive disclosure, asynchronous tool behavior, and clean state handoff just as much as it depends on model speed.

Realtime trust is budgeted. Spend too much of that budget in the wrong layer and the interaction stops feeling intelligent.

Voice works best when it reuses a stronger underlying system

Figure 08.4/Half-duplex is the ceilingCLICK TO ENLARGE

Another useful correction from the corpus is that voice does not usually require reinventing everything. The seductive but often wasteful instinct is to treat voice as an entirely separate product stack. Build a bespoke conversational brain. Recreate all the tools. Redo the runtime. Start over from scratch because speech feels special.

In practice, a more durable pattern keeps emerging: keep the core agent, keep its tools, keep its evals, keep its workflow logic, and wrap a dedicated voice layer around it. That preserves continuity with the core spine: voice does not reject the earlier chapters but demands they were built well enough to survive a harsher interface.

Luke Harries at ElevenLabs puts the case for wrapping plainly: “I’ve already got my agent. I spent loads of time doing the evals.” The eval work is the asset to preserve, not discard, so the move is to “wrap it up into its own first-class primitive” — adding a voice engine to the agent rather than rebuilding as a . As he notes, “your chat agent actually normally does the majority of tool calling.” The voice layer’s job is to make that agent audible.

If the support colleague already has usable tools, sensible permissions, durable state, and a clear control plane, the voice layer can focus on listening, segmentation, interruption handling, and output behavior. If the underlying system is weak, voice will merely expose the weakness faster. But if the underlying system is sound, voice becomes an additional interface rather than a separate metaphysics.

This is why the best voice architecture discussions sound modular rather than mystical. Separate what must be low-latency from what can remain deliberative. Keep speech pipelines specialized. Let the core workflow engine remain the same where possible. Use streaming and partial updates at the interface, not chaos in the business logic. The pattern mirrors the whole book’s attitude toward AI systems generally: compositional systems beat monolithic magic.

Turn-taking is a runtime problem wearing a UX costume

Figure 08.5/Mask latency, don't just minimize itCLICK TO ENLARGE

It is tempting to file interruption handling under experience polish. That is too shallow.

Interruption, barge-in, clarification, and resumption are runtime semantics. When a human cuts the system off, what state is preserved? Which partial output is discarded? Does a tool call continue in the background? If so, how is the result surfaced later? If the agent asked a question and the user answered indirectly, how much of the prior plan should remain binding? If two signals arrive at once — a user correction and an already-returning tool result — which one takes priority? These are execution questions, not copywriting questions.

In the support-call scenario, that might mean the agent has already begun a retrieval step when the caller reveals that the account belongs to a different region. If the runtime cannot cancel, redirect, or downgrade the old plan cleanly, the system starts answering with stale assumptions. The human hears this as conversational failure, but the root problem is execution semantics.

One ceiling here is architectural rather than a matter of orchestration speed: whether the system can listen and speak at the same time. Most production speech-to-speech systems are half-duplex — as Zeghidour says, “The model is either listening or it’s speaking” — so they cannot process a user’s back-channel while their own output is playing. Natural conversation is shot through with overlap; in Japanese, where back-channeling is a politeness norm, he notes it runs “up to 20% of the time.” The honest response is to match the use case to the constraint, not patch it with longer silence thresholds. Structured, turn-based flows survive half-duplex cleanly; open-ended companion chat does not, because the user will interject and the model will read every interjection as a barge-in.

A spoken system has to do state management in public. It needs a runtime that can pause, redirect, summarize, and resume without forcing the user to reconstruct everything manually. It also needs security boundaries that do not disappear just because the interface became conversational. A friendly voice does not make overscoped authority less dangerous.

In fact, the opposite is often true. Because it feels human, voice manufactures false confidence: users reveal more, approve more casually, and assume the system understood more precisely than it actually did. That is the trap — the warmer the interface, the cheaper approval becomes exactly where approval should be expensive. So the rule inverts the intuition. The more consequential the action, the more deliberate the confirmation has to be, precisely because the medium is coaxing everyone to skip it.

This is where the comes into the room. In chat, the control plane may live in a dashboard, a trace view, or a review queue. In voice, part of it must also live inside the interaction itself: clear acknowledgments, visible escalation, graceful fallback, repeatable confirmations, and a way to hand off when uncertainty is too high. A realtime agent cannot rely on the user reading the logs later to discover what went wrong.

Realtime pushes model and inference architecture in specific directions

Voice is changing the model stack itself, not only the front end. The pressure for lower first-audio latency, more natural streaming, and tighter multimodal coordination is pushing systems toward architectures optimized for interaction, not merely offline quality. Speech tokenization, streaming generation, lower-latency synthesis, and specialized serving strategies matter because the product requirement is not just to produce good output but to produce good output now.

This is another reason the chapter should avoid drifting into pure UX commentary. Realtime experience is partly an inference architecture story. Model families, serving strategies, batching decisions, transport layers, and hardware choices all leak into the user experience. The system does not get to hide its internals when every extra delay becomes audible.

The same pattern appears on the speech output side. Modern text-to-speech increasingly inherits design instincts from language models: discrete token spaces, streaming, incremental generation, and the tradeoff between global coherence and local responsiveness. That convergence matters because it shows how deeply interaction requirements are shaping model engineering itself.

The book does not need to become a speech-architecture manual here. The important point is conceptual. Once AI systems have to participate in live loops, model design and systems design start bending toward the requirements of interaction. Realtime is a forcing function on the whole stack, not just another benchmark.

Voice makes the human control plane immediate

In many AI systems, the sits slightly above the action. A reviewer inspects a trace. A manager checks a queue. An expert signs off on a draft after the system has done most of its work.

Voice compresses that distance. The human is often present during execution. They can hear the system hesitate, watch it recover, and decide in real time whether to trust it. That changes how control has to be surfaced. The system needs visible acknowledgment when it is uncertain. It needs graceful ways to clarify rather than bluff. It needs escalation paths that do not feel like collapse. And it needs a social understanding of when to stop pretending and hand off.

This is where the High-Stakes Colleague returns in its most exposed form. A high-stakes voice system is not just a more personable chatbot but a colleague operating while the human is still in the room. That means both capability and humility have to be legible. The system should know when to keep going, when to ask, when to confirm, and when to defer.

A support call is the clearest example, but the principle is broader. Any realtime AI system — a meeting assistant, a voice-driven enterprise copilot, a reactive research interface, even some forms of robot mediation — has to make supervision cheap enough that the human can stay oriented without becoming a full-time operator. That is the same control-plane argument as Chapter 6, now under stronger time pressure.

Embodied edges make the same lesson even harsher

Voice is the cleanest focus for this chapter, and it should remain the main subject. Robotics and other embodied systems matter here only because they confirm the same lesson under even less forgiving conditions.

The more tightly an AI system couples to the world, the less room there is for hidden confusion. Delay becomes visible. State mismatch becomes dangerous. Recovery behavior matters more than eloquent explanation. A model that can improvise impressively in a sandbox may still be unusable when timing, environment state, and safety constraints are all moving at once.

Embodied systems are useful here even though the book does not become a robotics book. They prove by extreme example what voice already suggests: autonomy is a property not of the model alone but of the whole scaffolding around it — sensing, memory, runtime, interfaces, control boundaries, and human oversight. Text lets the field pretend otherwise for longer than it should.

Voice is where trustworthy AI has to perform in public

The field sometimes treats voice as a charming frontier, a natural interface waiting for better models. That is too soft.

Voice is where trustworthy AI has to perform in public, under interruption, under latency pressure, and under immediate human judgment. It is where architecture stops being abstract and becomes audible behavior.

That is why this chapter belongs near the end of ’s main run. It is not there to widen scope for its own sake. It is there to make the earlier harder. If Chapter 3 argued for prepared environments, Chapter 5 for context architecture, Chapter 6 for durable runtimes, and Chapter 7 for bounded authority, Chapter 8 shows what happens when all of those systems have to work while the human is still present.

Dependable AI is not merely a property of good answers. It is a property of good loops. And realtime interaction is where that truth becomes impossible to ignore.

If delegated work now happens across repos, workflows, queues, dashboards, and even live customer interactions, what kind of company is required to manage it coherently?

EVIDENCE OF SOURCE · CHAPTER 08 · VIDEOS

7 claims · 28 source anchors

Evidence — Source Anchors

Durable state and workflow semantics are trust features, not backend details

Open in graph
  • once we get into longer running workflows, that's where it really becomes a problem.
    #99 — Samuel Colvin, Pydanticconfidence: high
  • no one's going to trust your agent.
    #167 — Preeti Somal, Temporalconfidence: high
  • the workflow orchestration layer needs to be deterministic. So it can be rerun um in a in a uh deterministic fashion
    #44 — Peter Wielander, Vercelconfidence: high
  • where I've got some big production CI stack to go and run and deployment takes hours, being able to go and change variables in production or in staging very quickly
    #657 — Samuel Colvin, Pydanticconfidence: high
  • you'll be able to assemble agent teams that can complete tasks orders of magnitude harder than what you can complete with a single agent today.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • minding the gap around observability.
    #680 — Amy Boyd & Nitya Narasimhan, Microsoftconfidence: high

High-stakes systems tune agency instead of maximizing it

Open in graph
  • a binary thing but as a lever that you can dial
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • agentic workflows we can plan and execute
    #201 — Yogendra Miraje, Factsetconfidence: high
  • send it to me for approval.
    #202 — Rita Kozlov, Cloudflareconfidence: high
  • credentials, payments, and checkout require determinism.
    #745 — Steve Kaliski, Stripeconfidence: high

Realtime AI quality is primarily a coordination and latency-engineering problem, not a model-quality problem

Open in graph
  • the main bottleneck is becoming the tool call,
    #662 — Neil Zeghidour, Gradium AIconfidence: high
  • the entire stack of understanding, producing an answer, and pronouncing it to be around 200 milliseconds.
    #662 — Neil Zeghidour, Gradium AIconfidence: high
  • you have a tool call or open router that is going to have a latency between 500 milliseconds and 4 seconds.
    #662 — Neil Zeghidour, Gradium AIconfidence: high
  • wrapped it up into its own first class primitive,
    #661 — Luke Harries, ElevenLabsconfidence: high
  • the latency is key here
    #663 — Samuel Humeau, Mistralconfidence: high
  • knowing who said what is as important as what was said
    #742 — Hervé Bredin, pyannoteconfidence: high

Voice is best added as a realtime wrapper around a chat agent, not as a rebuild

Open in graph
  • I've already got my agent. I spent loads of time doing the evals,
    #661 — Luke Harries, ElevenLabsconfidence: high
  • your chat agent actually normally does the majority of tool calling.
    #661 — Luke Harries, ElevenLabsconfidence: high
  • we can go very very far by just using speech as an interface.
    #663 — Samuel Humeau, Mistralconfidence: high

Half-duplex is the silent architectural ceiling on natural voice conversation

Open in graph
  • the model is either listening or it's speaking.
    #662 — Neil Zeghidour, Gradium AIconfidence: high
  • overlap between uh people speaking on one another.
    #662 — Neil Zeghidour, Gradium AIconfidence: high

TTS architecture is converging on LLM architecture

Open in graph
  • pretty much uh everybody is using an auto reggressive decoder backbone
    #663 — Samuel Humeau, Mistralconfidence: high
  • the king use case for text to speech is uh its usage within agents
    #663 — Samuel Humeau, Mistralconfidence: high
  • the intelligence is baked directly into the model.
    #755 — Thor Schaeff, Google DeepMindconfidence: high

Latency masking belongs in the same architectural category as evals, harnesses, and durable runtimes

Open in graph
  • while it waits for getting the result back, it can keep the conversation going in a natural way,
    #662 — Neil Zeghidour, Gradium AIconfidence: high
  • wrapped it up into its own first class primitive,
    #661 — Luke Harries, ElevenLabsconfidence: high
  • I'm going to share one of the latest research paper around retrieval which is a uh vision based retrieval and also uh I just thought to wrap this around with an agent.
    #85 — Suman Debnath, AWSconfidence: high
  • real time is different from non-real time. And by non-real time, I mean everything that's not conversational latency of a few hundred milliseconds or less.
    #142 — Kwindla Hultman Kramer, Dailyconfidence: high
AI QUALITY · CHAPTER 08 · MASH JUDGES
7 unsupported claims — ship-blocker

scored on version git:e68466c

EVIDENCE OF SOURCE · CHAPTER 09
FIG. 09 · BEFORE · AFTERCLICK · SCROLL · ZOOM

AI Engineer Book · Ch 09

The AI-Native Organization

1/5

FIG. 09.0 · OPENER

Seat licenses vs operating-model redesign

Click to enlarge

CH09

CH. 09 // Drafting
2,834 words12 min read
CHAPTER 09/2,834 words/Drafting

The biggest gains from AI do not come from giving individuals better tools. They come from redesigning the organization so delegated machine work can compound instead of colliding.

That distinction matters because many AI adoption stories still start too small. Someone buys a seat. A few engineers get faster. A product manager drafts more quickly. Support summarizes tickets with less effort. A consultant uses AI to speed up research. These changes are real, and sometimes valuable, but they do not yet amount to an . They are tool-use stories. They describe local acceleration, not institutional redesign.

An begins later, at the point where the work itself changes shape. Execution gets cheaper. Exploration gets faster. More people can create artifacts that previously required specialist intermediaries. Individual operators can direct several agents in parallel. Teams can investigate more options before committing. And almost immediately, a new set of bottlenecks appears. Review load rises. Duplicate work spreads. Private agent workflows drift out of sync with shared priorities. Standards become harder to enforce informally. Managers can no longer assume that the org chart maps cleanly to who is able to produce what.

This is the deeper lesson of the corpus. AI does not merely accelerate output. It reorganizes where scarcity lives.

Scarcity moves upward: from typing to judgment, from production labor to orchestration, from drafting to deciding which draft deserves trust, from isolated productivity to system throughput. Once delegated work becomes real, organizational design becomes the macro-scale version of design.

A Monday morning scene from the software factory

Figure 09.1/Where scarcity movesCLICK TO ENLARGE

Picture a Monday morning at Meridian, which by now has gone well past casual AI adoption.

Over the weekend, engineers launched subagents against backlog items. Product used internal tools to spin up three alternative flows for a new onboarding step. Support discovered a recurring customer complaint and had an agent draft both a help-center update and a proposed product fix. A staff engineer woke up to twelve pull requests, four synthetic eval reports, two security review requests, and a dashboard showing that an internal automation quietly touched three systems nobody had discussed together on Friday — any one of which could be hiding another admin-override regression, the throttle on the wrong path from Chapter 4, now buried under a weekend of green checkmarks.

Nobody in this scene is doing anything obviously reckless. In fact, everyone is being productive.

And that is the problem.

The organization is no longer starved for output. It is starved for coherence. Which of these changes matter? Which ones are duplicates? Which artifacts reflect the current strategy and which ones reflect a private interpretation of it? Which outputs are safe to merge, safe to trial, safe to ignore, or dangerous to trust? Who is even responsible for saying so when authorship is now half human, half machine, and spread across several functions?

That is the scene this chapter has to explain. It is where the stops being just a repo pattern and starts becoming a company problem.

Buying seats is not the same as redesigning work

Figure 09.2/Alignment debtCLICK TO ENLARGE

The easiest way to misunderstand AI transformation is to measure adoption by access rather than by whether work is routed differently. A company can purchase licenses, encourage experimentation, and still remain structurally unchanged: individuals become a little faster, but decisions, approvals, and responsibility flow through the same assumptions the organization held before. Count the seats and AI looks transformative; ask whether a single approval path has changed, and it often has not. Until the operating model bends, AI is helpful but not yet formative.

The more interesting threshold is when AI use becomes sufficiently widespread that the operating model itself starts to bend. Dan Shipper, building the AI-native company Every, puts the discontinuity as a deliberate provocation: “There is a 10x difference between an organization where 90% of engineers use AI versus one where 100% do.” The last ten percent is where compounding effects appear. Once usage becomes pervasive, local shortcuts stop being the main story. Shared expectations shift. Documentation quality matters more. Examples, standards, prompts, policies, and internal tools start acting like leverage multipliers rather than optional aids.

This is where the returns as an organizational case, not just a technical one. Earlier chapters showed a team turning a repo into an environment agents could use. Chapter 9 asks what happens after that. Someone has to own the rules. Someone has to decide which patterns become standard. Someone has to arbitrate between local experimentation and shared reliability. The workplace built for agents becomes, in effect, an institution with governance.

That is the first mark of an : it stops treating AI as a personal productivity trick and starts treating delegated machine work as part of how the company itself operates.

Cheaper execution shifts value toward judgment and throughput design

Figure 09.3/Broaden who createsCLICK TO ENLARGE

When output gets cheaper, not all work becomes equally valuable. This is the subtlety many simplistic productivity narratives miss: when generation is nearly free, the scarcity does not vanish but relocates — from making things to deciding which of them deserve trust. The rule that follows is easy to state and easy to forget: more output per person is not the same as more throughput, and an organization can produce far more while moving slower.

More things can be attempted. More variants can be generated. More tasks can be pushed into motion. But the organization still has to decide what matters, which options deserve review, which outputs are trustworthy, and where limited expert attention should go. The result is that judgment, architecture, and throughput design become even more important as raw execution becomes cheaper.

This creates new pressure on leadership roles. Product managers have to frame work more clearly because ambiguous goals produce more low-value output, not less. Senior engineers have to encode standards and review paths rather than merely embody them personally. Managers have to think in terms of queue health, bottlenecks, and quality systems, not only staffing plans. Internal platform teams become strategic because they decide whether speed compounds or fragments. Justin Reock, working on engineering leadership at DX, reframes the manager’s job as allocating judgment and attention, which stay scarce, rather than production capacity, which is now abundant. A useful test is which scarce resource each ritual rations: a standup that reports how much got produced rations the abundant thing; one that surfaces which decisions are unmade rations the scarce one.

The research on developer productivity helps here mainly as a caution. Local speed gains do not automatically improve system throughput. An engineer can open more pull requests and still make the organization slower if review queues clog, priorities scatter, or trust in the output declines. Nick Arcolano’s analysis at Jellyfish, built on some twenty million pull requests, shows the failure mode at scale: output volume rises and the dashboards light up green while the real constraint — whether the organization can review, integrate, and trust that output — goes unmeasured until it breaks. AI-native advantage therefore cannot be measured only by artifact volume. It has to be measured by the outcome — rework rate, the share of generated work that ships unreverted, time in the review queue — which is to say by whether the institution converts cheaper generation into more trusted completed work.

That is Chapter 4 at organizational scale. Evals were the control system for agents. Review capacity becomes the control system for organizations using agents.

Broader creation works only when paths to ship stay constrained

Figure 09.4/Review is the new bottleneckCLICK TO ENLARGE

One of the most provocative in the corpus is that people outside traditional engineering roles should increasingly be able to ship meaningful changes. Lisa Orr at Zapier states it as a deliberate provocation: “at Zapier we are empowering our support team to ship code.” That is directionally right. As execution becomes easier, more people can participate in creation. Support can encode recurring fixes. Product can prototype flows directly. Domain experts can shape automations without waiting for every translation layer. Organizations that refuse this broadening will leave leverage on the table.

Broader creation becomes durable only when paths to ship are constrained.

This is another place where the book’s earlier chapters should echo loudly. You cannot safely widen authorship without strengthening , specs, evals, permissions, and review. Otherwise democratized creation simply means democratized breakage. The organization becomes noisier, not more capable.

The strongest form of this argument is pro-scaffolding, not anti-democratization. More people should be able to create because the system around them makes safe creation easier. The right internal platforms give non-specialists narrow, high-leverage, well-governed ways to contribute. Templates, policy rails, staged approvals, sandboxed environments, and reusable agent workflows let broader participation coexist with stronger operational discipline.

This is where the becomes a company pattern. The “factory” is not just a coding stack for engineers. It is the broader environment that packages institutional judgment so more people — and more agents — can work inside it safely.

Review becomes the organizational bottleneck

As generation gets cheaper, validation gets more expensive. If one person can now direct several agents, produce many more candidate artifacts, or explore a much wider possibility space before lunch, the organization’s existing review structures will break first. Pull requests pile up. Specs multiply. Drafts arrive faster than domain experts can inspect them. Managers lose visibility into what is real work versus local experimentation. The company starts drowning not in effort, but in options. Zack Proser, running parallel agents on WorkOS’s Applied AI team, states the inversion plainly: “agents are not the bottleneck now and I think that’s going to increasingly be the case, but we are.” Once you hand an agent verification criteria and the tools to meet them, it loops until it does, while the human attention that has to confirm the result “still degrades under load. It’s still the hard constraint.”

This is why Chapter 9 must keep explicit continuity with Chapter 4. The hard question is no longer how to make more output appear. The hard question is how to decide what deserves trust without making humans inspect everything line by line.

A mature therefore invests in layered review. Some outputs are rejected automatically. Some are checked against and evals. Some are sampled. Some are escalated because they touch high-risk paths. Some require domain sign-off because the consequences justify it. The point is not to force universal manual review but to create a review system proportionate to the risk and volume of delegated work. Because generation is cheap, a more trustworthy verdict can come from redundancy rather than a more expensive model: Aakanksha Chowdhery describes having the models “generate multiple responses and then do majority voting,” and Leonard Tang at Haize Labs has “weaker LLMs debate each other about what the stronger model is saying” to build judging systems that beat a frontier model at a fraction of the cost. The redundancy pays off only when the voters are genuinely independent, since one model sampled repeatedly cancels noise but not shared bias.

Eric Zakariasson’s software-factory framing matters here because it shows what management becomes when many workers, human and machine, are active at once. Someone needs a board that says what is in progress, what completed, what failed, and what now needs human attention. Without that roll-up layer, leaders do not manage a system. They manage a blur.

High-stakes domains make the same point even more sharply. In legal, tax, and compliance work, review was never optional. AI raises the stakes because it can create more candidate work than experts can casually supervise. So the organization either gets much better at triage, validation, and evidence surfacing, or it fails under the weight of its own increased productivity.

Alignment debt is the new invisible tax

Private agent workflows create a subtle organizational problem. They are often individually efficient and collectively incoherent. One engineer runs six agents on one interpretation of the problem. Another runs five agents on a slightly different interpretation. Product updates a draft in a private workspace. Support discovers a pattern and patches around it locally. Everyone feels faster. Then the organization discovers duplicated work, conflicting implementations, giant review queues with little context, and outputs that are technically impressive but strategically misaligned.

This is why Maggie Appleton’s framing is so important. Describing collaborative AI engineering from inside GitHub, she names the root cause precisely: “None of our current tools give teams a shared space to discuss plans, gather the right context, and work with agents as a collective.” The hidden cost is not only wasted effort. It is .

accumulates when execution fans out faster than shared understanding. Work happens, artifacts multiply, but the common plan, relevant context, and review surfaces do not stay synchronized. Eventually the debt comes due as rework, confusion, or an exhausting burst of manual coordination.

It names a distinctively AI-native failure mode. The problem is not merely that teams need to collaborate better in the abstract. It is that agent-amplified execution allows individuals to move so quickly in private that the old informal coordination mechanisms stop keeping up.

The remedy is not to ban private leverage. It is to move alignment earlier. Shared planning, visible decomposition, clearer context packets, common review spaces, and artifact roll-ups become more important, not less, when execution is cheap. In other words, the org needs the same thing the agent needed: a better control plane.

Roles blur, but responsibility cannot

AI-native organizations do change role boundaries. Support can do more technical work. Product can produce working artifacts. Designers can prototype logic, not just screens. Engineers can spend more time on specification, review, and systems design. Domain experts can shape workflows directly. All of that is real.

But blurred creation does not mean blurred accountability.

In fact, accountability has to become sharper precisely because authorship becomes more distributed. The operative rule is simple: every path you widen for creation obligates you to name, before it opens, who owns the production path, who owns domain correctness, who owns the security boundaries, and who decides which workflows stay human-gated. Widened creation without an assigned owner is not democratization; it is an accountability gap waiting to be discovered after something ships.

This is another reason internal platforms matter so much. Good platforms do not only make work easier. They encode the transfer points between creation and accountability. They define what can be done safely by many people and what must still pass through narrower ownership structures.

The company becomes a harness for its own agents

At organizational scale, those same requirements turn into company design. An AI-native company externalizes standards, examples, specs, policies, permissions, review rules, and approved workflows so that both humans and agents can operate inside them. It packages taste into templates, governance into platforms, and institutional memory into accessible systems. It creates broader paths to create and narrower, better-governed paths to ship. It treats management not as inspection of every artifact, but as design of the environment in which good artifacts are more likely to emerge. That is what it means for the company to become a for its own agents.

The phrase should not be heard as dehumanizing. The point is not that the organization becomes a machine but that it becomes better at converting distributed intelligence — human and machine — into dependable throughput. It makes judgment reusable. It makes oversight scalable. It makes delegation legible.

This is also where the High-Stakes Colleague quietly returns one last time. In expert domains, the institution does not win by replacing professionals with unrestricted systems; it wins by building workflows in which professional judgment is focused where it adds the most value. The same principle holds in software and in management. An does not eliminate people from the loop. It redesigns the loop so human attention lands on what is most consequential.

AI-native advantage is institutional, not merely individual

The strongest companies in an AI era will not simply be the ones with the most aggressive prompting culture or the highest number of tool seats. They will be the ones that learned how to convert cheap generation into trusted throughput.

That requires broader creation, tighter review, earlier alignment, stronger internal platforms, clearer authority boundaries, and operating models that treat delegated work as a first-class organizational material. It requires leaders to notice that speed alone is not the prize; the prize is compounding.

An is therefore not just a company where people use AI a lot. It is a company that reorganized itself so that machine-amplified work becomes cumulative instead of chaotic.

That is the outer-ring lesson that completes the book’s core spine. The technical question and the organizational question turn out to be the same. How do you build an environment in which delegated work deserves trust?

That question has a quieter twin: which parts of this answer outlast the churn of tools and interfaces? That is the subject of the final chapter.

EVIDENCE OF SOURCE · CHAPTER 09 · VIDEOS

21 claims · 81 source anchors

Evidence — Source Anchors

The important transition is from suggestion to delegated execution

Open in graph
  • from helpfulness to productive
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • I think they need more
    #3 — Jacob Lauritzen, Legoraconfidence: high
  • most primitives the magic happens when you combine these things together
    #138 — Sam Bhagwat, Mastra.aiconfidence: high

Harness quality is a major determinant of coding-agent quality

Open in graph
  • a good harness is really operationalized around giving the model text at the right time
    #16 — Ryan Lopopolo, OpenAIconfidence: high
  • there's so much work that has been put in uh over the last you know 20 to 30 years around the automated validation and verification of software that you build
    #57 — Eno Reyes, Factory AIconfidence: high
  • instead of micromanaging, what I'm doing is I'm scaffolding and providing context.
    #190 — Eric Hou, Augment Codeconfidence: high
  • identifying problems with the code because if there's no problems then it's probably high quality code
    #179 — Josh Albrecht, Imbueconfidence: high

Agent-ready codebases are designed, not discovered

Open in graph
  • agents MD files an open standard
    #57 — Eno Reyes, Factory AIconfidence: high
  • context deficit as the biggest blocker.
    #190 — Eric Hou, Augment Codeconfidence: high
  • a garbage codebase you're going to get
    #621 — Matt Pocockconfidence: high

Evals are a control system, not just a test suite

Open in graph
  • improvement without measurement is limited and imprecise.
    #125 — Ido Pesok, Vercel v0confidence: high
  • We still want to build reliable scalable applications and that is still hard
    #184 — Samuel Colvin, Pydanticconfidence: high
  • eval to us it's actually the same problem from a from a systems perspective.
    #628 — Phil Hetzel, Braintrustconfidence: high
  • small CLI tool that we call eval tool
    #689 — Lawrence Jones, incident.ioconfidence: high
  • designed to allow agents to leverage our eval suite files.
    #689 — Lawrence Jones, incident.ioconfidence: high
  • classic benchmark maxing.
    #746 — Ara Khan, Clineconfidence: high
  • There are right ways to use them. There are wrong ways to use them.
    #746 — Ara Khan, Clineconfidence: high

Human oversight works best as an architectural layer, not an afterthought

Open in graph
  • There needs to be human interaction for approvals or other reasons and of course they need to be able to be uh able to run in parallel for efficiency
    #167 — Preeti Somal, Temporalconfidence: high
  • dial these agency dials far up.
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • maintaining a factory would require you to have an overview of the processes you want your coding agents to go through.
    #629 — Eric Zakariasson, Cursorconfidence: high

The harness is evolving from a local loop into a staged software factory

Open in graph
  • getting to a place where you can build your own like software factory
    #629 — Eric Zakariasson, Cursorconfidence: high
  • unified agent harness that will manage
    #632 — Vaibhav Srivastav & Katia Gil Guzman, OpenAIconfidence: high
  • parallel agents working together to fix
    #42 — Robert Brennan, OpenHandsconfidence: high
  • The difference with missions is that we run features serially.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • Our longest mission ran for 16 days
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • We just kind of gave each role its own kind of context window.
    #691 — Ash Prabaker & Andrew Wilson, Anthropicconfidence: high
  • it's no longer about the model or the agent. It's about the process.
    #743 — Vincent Koc, OpenClawconfidence: high

The context gap increasingly includes capability packaging and progressive disclosure

Open in graph
  • doesn't have to be loaded immediately to context.
    #683 — Pedro Rodrigues, Supabaseconfidence: high
  • specifically with progressive disclosure.
    #654 — Nick Nisi & Zack Proser, WorkOSconfidence: high
  • 49% reduction of the initial load.
    #625 — Sam Morrow, GitHubconfidence: high
  • rich interactive components that render directly in the chat.
    #747 — Marlene Mhangami & Liam Hampton, GitHubconfidence: high

AI-native advantage depends on organizational coherence, not output volume alone

Open in graph
  • you'll be able to assemble agent teams that can complete tasks orders of magnitude harder than what you can complete with a single agent today.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • observing their workflows, their pain points, co-designing solutions with them
    #693 — Eoin Mulgrew, 10 Downing Streetconfidence: high
  • maintaining a factory would require you to have an overview of the processes you want your coding agents to go through.
    #629 — Eric Zakariasson, Cursorconfidence: high

Coordination is the unsolved runtime primitive for multi-agent systems

Open in graph
  • the thing that's missing for me is coordination.
    #704 — Lou Bichard, Onaconfidence: high
  • through sort of state machines, you know, by building out workflows and effectively state machines
    #704 — Lou Bichard, Onaconfidence: high
  • They step on each other's changes. They duplicate work. They make inconsistent architectural decisions.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • we have the two agents basically negotiate what done actually means.
    #691 — Ash Prabaker & Andrew Wilson, Anthropicconfidence: high

Context engineering is a primary engineering discipline, not a prompt trick

Open in graph
  • picking up the right documents and answering those questions is a really cool use case.
    #100 — Ofer Mendelevitch, Vectaraconfidence: high
  • cool load generator that Kalen wrote that lets you configure agent swarms uh and agent subtasks with very specific SLOs's
    #104 — Val Bercovici, WEKAconfidence: high
  • connect the dots with graph technology and solve problems like context engineering
    #105 — Stephen Chin, Neo4jconfidence: high
  • the right agent in the future is going to be this system that decides what type of search
    #157 — Will Bryk, Exa.aiconfidence: high

Enterprise usefulness scales with working-set quality, not corpus size

Open in graph
  • about 73% of LM customers implementing use cases say that factual accuracy is their top challenge right now.
    #100 — Ofer Mendelevitch, Vectaraconfidence: high
  • how Harvey tackles retrieval, the types of problems there are and then the challenges that come up with that all with like retrieval quality, scaling, uh security,
    #154 — Calvin Qi (Harvey) & Chang She (Lance)confidence: high
  • how to build enterprise aware agents. How to bring the brilliance of AI into the messy complex realities
    #193 — Chau Tran, Gleanconfidence: high
  • you don't need a trillion at once, you need the right million.
    #756 — Kuba Rogut, Turbopufferconfidence: high

Enterprise MCP adoption converges on gateways, blessed platforms, and a root of trust

Open in graph
  • we think that the goal for a secure this for any security team is to is to bless one platform.
    #624 — Karan Sampath, Anthropicconfidence: high
  • challenges we've faced building and scaling our remote server, how we've overcome them,
    #625 — Sam Morrow, GitHubconfidence: high
  • if we continue this pattern for hundreds or thousands of agents, we've got a pretty big security problem on our hand.
    #150 — Jared Hanson, Keycardconfidence: high

AI-native advantage is an operating-model redesign, not a procurement decision

Open in graph
  • there's a 10x difference between an org where 90% of the engineers are using AI versus an org where 100% of the engineers are using AI.
    #65 — Dan Shipper, Everyconfidence: high
  • 80% of respondents say LLMs are working well at work,
    #137 — Barr Yaron, Amplify (2025 AI Engineering Report)confidence: high
  • It's about evolving from AI features sprinkled into the product to rethinking how you plan, build, and deliver value all through an AI lens.
    #199 — From Hype to Habit (AI-first SaaS)confidence: high
  • writing code has never been the bottleneck, right? We can in uh we can increase productivity a bit by helping with code completion, but our our biggest bottlenecks are elsewhere within the SDLC.
    #62 — Justin Reock, DX (acq. Atlassian)confidence: high

Broader creation requires tighter review and governance — they rise together or the first becomes a liability

Open in graph
  • at Zapier we are empowering our support team to ship code.
    #69 — Lisa Orr, Zapierconfidence: high
  • I'm going to make the case for the AI product manager. I'm going to argue that AI expertise is really important for this role.
    #162 — James Lowe, i.AIconfidence: high
  • all these skills that you're prioritizing don't necessarily need to be one person. They can be multiple people.
    #188 — Denys Linkov, Wisedocsconfidence: high
  • I'm going to talk to you today about how I believe AI is breaking how we hire technically.
    #207 — Beth Glenfield, DevDayconfidence: high
  • the challenge becomes who do I say no to?
    #743 — Vincent Koc, OpenClawconfidence: high

Activity-based metrics misread motion as progress in AI-augmented work

Open in graph
  • these are not productivity metrics. They're useful, but you cannot just kind of use them like maximize them to maximize developer productivity.
    #79 — Yegor Denisov-Blanch, Stanford (120k devs study)confidence: high
  • I do think that AI increases developer productivity, but there's also cases in which it decreases developer productivity.
    #195 — Yegor Denisov-Blanch, Stanford (100k devs study)confidence: high
  • just plain old PR throughput. How many pull requests does the average engineer merge per week?
    #101 — Nick Arcolano, Jellyfish (20M PRs)confidence: high
  • I'm going to talk about how we pay engineers. And we pay engineers like salespeople.
    #63 — Arman Hezarkhani, Tenexconfidence: high

Review capacity is the throughput limit of an AI-native organization

Open in graph
  • this talk uh is called uh one developer, two dozen agents, zero alignment. Uh this is the case for why we need collaborative AI engineering.
    #623 — Maggie Appleton, GitHubconfidence: high
  • you should have multiple different stages where you you plan it, you produce it, you review it and you essentially follow the whole uh SLC
    #629 — Eric Zakariasson, Cursorconfidence: high
  • every software engineer becomes a code reviewer as basically their primary job.
    #54 — Max Kanat-Alexander, Capital Oneconfidence: high

Alignment debt is the AI-native equivalent of technical debt

Open in graph
  • None of our current tools give teams a shared space to discuss plans, gather the right context, and work with agents as a collective.
    #623 — Maggie Appleton, GitHubconfidence: high
  • if we believe that all of our products are for like for all time going to be probabistic, then like we probably have to figure out how this world works.
    #160 — Ben Stein, Teammatesconfidence: high
  • you kind of like frontload uh the context to the agents either through like a plan or a long spec and then you send them off
    #629 — Eric Zakariasson, Cursorconfidence: high

Cheap generation raises the value of taste and judgment rather than lowering it

Open in graph
  • software fundamentals matter now more than they actually ever have.
    #1 — Matt Pocock, AI Heroconfidence: high
  • capable of doing everything um immediately
    #6 — Tuomas Artman & Gergely Oroszconfidence: high
  • intentionally designed to put friction
    #14 — Armin Ronacher & Cristina Poncela Cubeiroconfidence: high

Once agents go parallel and autonomous, the human's verification capacity — not the agents' generation capacity — is the binding constraint

Open in graph
  • agents are not the bottleneck now and I think that's going to increasingly be the case, but we are.
    #761 — Zack Proser, WorkOSconfidence: high
  • our attention is still, you know, in meatspace, if you will, and it still degrades under load. It's still the hard constraint, essentially.
    #761 — Zack Proser, WorkOSconfidence: high
  • we just want you to look at PRs that are ready for you in GitHub.
    #758 — Joshua Snyder, PostHogconfidence: high
  • instead of you reviewing changes, if the change is pretty easy, let's just approve it with an agent and deploy it behind a feature flag.
    #758 — Joshua Snyder, PostHogconfidence: high

The gap that kills agent PoCs is the evaluation gap — no defined, continuously-measured definition of success — not the choice of model

Open in graph
  • Second is the evaluation gap.
    #767 — Sandipan Bhaumik, Databricksconfidence: high
  • Evaluation is basically specification for your AI system.
    #767 — Sandipan Bhaumik, Databricksconfidence: high

Trustworthy judgment can be manufactured from cheap stochastic generation — sample-and-vote, multi-model consensus, and debate panels beat a single expensive call

Open in graph
  • the models to generate multiple responses and then do majority voting.
    #251 — Aakanksha Chowdhery, Reflection.aiconfidence: high
  • having LMS debate each other, having the weaker LLMs debate each other about what the stronger model is saying and seeing if that makes sense.
    #116 — Leonard Tang, Haize Labsconfidence: high
  • Second tier is a multimodel consensus. So we leverage a diverse range of models such as GBT4, claude and
    #093 — Alberto Romero, Jointlyconfidence: high
  • we using multi-agent debate to get reliable State evaluation instead of using single uh
    #451 — How to Improve Your Agents (lit review)confidence: high
AI QUALITY · CHAPTER 09 · MASH JUDGES
2 unsupported claims — ship-blocker

scored on version git:e68466c

EVIDENCE OF SOURCE · CHAPTER 10
FIG. 10 · BEFORE · AFTERCLICK · SCROLL · ZOOM

AI Engineer Book · Ch 10

What Endures

1/4

FIG. 10.0 · OPENER

Transient layer vs durable layer

Click to enlarge

CH10

CH. 10 // Drafting
1,810 words8 min read
CHAPTER 10/1,810 words/Drafting

By the time a field starts naming everything aggressively, it is usually trying not to drown.

Agent frameworks multiply. Context methods fork and recombine. Tool protocols proliferate. New model releases reorder yesterday’s leaderboard. Interfaces mutate from chat windows to canvases to copilots to swarms to voices in your ear. Every month brings a new that the old abstraction layer is dead and a new one has swallowed the stack.

Some of that noise reflects real progress. Some of it is marketing theater with a GPU budget. Most of it is what fast-moving technical fields look like from the inside: partially right, prematurely named, and quickly replaced.

A book like this needs an ending that does more than point at the horizon. It has to answer a calmer question: what actually endures?

The durable answer is not a specific framework, model family, or orchestration fashion. What endures is a pattern for turning machine capability into dependable work, and that pattern is the real subject of this book.

The interfaces will keep changing faster than the principles

Figure 10.1/Churn vs durableCLICK TO ENLARGE

It is easy to confuse the most visible part of a system with the most stable part. Today that visible part might be a chat interface, a coding pane, a voice loop, a planning board full of subagents, or some future surface that feels obvious in retrospect. The interface matters because it shapes behavior. But it is rarely the deepest source of reliability.

The earlier chapters kept returning to that lesson from different angles. A coding agent does not become trustworthy because its diff view looks polished. A high-stakes professional assistant does not become trustworthy because its prose sounds composed. A realtime voice system does not become trustworthy because its speech sounds natural. In each case, the visible surface is downstream of the same deeper question: what has to be true around the model for delegated work to deserve trust? That question survives interface churn.

The field may stop talking about copilots and start talking about coworkers, swarms, environments, or something even more inflated. It does not matter much. Whatever the label, the work still has to be framed, situated, checked, bounded, and supervised. Omar Khattab, describing systems he had built across years of model turnover — DSPy among them — noted that they “fundamentally stayed the same over the years,” from text-davinci-002 up to o4-mini, even as the models underneath were swapped out entirely. The model was the part that turned over. The structure was the part that stayed.

Cheap generation does not remove the need for standards; it raises the price of their absence

Figure 10.2/Constrained delegationCLICK TO ENLARGE

One of the strongest temptations in the AI era is to treat abundance as if it made discipline optional. If text, code, drafts, plans, and analyses can all be produced more cheaply, why not lean into speed and let quality sort itself out later?

Because later arrives all at once. The cost of generation can collapse while the cost of bad judgment remains stubbornly high. As output gets cheaper, standards do not become quaint. They become load-bearing. Teams can now attempt far more work, spawn far more variants, and move many more artifacts into flight. Without strong judgment, the result is not liberation but a wider blast radius for confusion.

What endures here is not any one taste doctrine or review ritual but the principle that cheaper execution shifts value upward: toward framing, discrimination, prioritization, and the willingness to throw away seductive garbage. The future still belongs to people and institutions that can tell the difference between volume and progress.

Delegation only becomes real when the environment carries part of the thinking

Figure 10.3/Cost of weak standardsCLICK TO ENLARGE

A model can be brilliant in isolation and still fail as a worker. That sounds almost trivial after the last several years of experience, but it is one of the most important corrections the field has learned. Once machines move from answering questions to doing tasks, their success depends less on generic eloquence and more on the quality of the environment around them.

Prepared repositories, specs, validations, retrieval systems, memory layers, runtimes, permissions, and review surfaces are not support accessories for intelligence but the means by which intelligence becomes situated.

This is one reason Dax Raad’s provocation that “AI changes nothing” is useful even if taken too literally it becomes false. AI changes many things about software economics, interfaces, and labor distribution. What it does not change is the need for clear intent, good constraints, and systems thinking. If anything, it makes those requirements harder to ignore because weak environments are now punished faster. What endures, then, is not prompt cleverness but environment design.

Reliability is still a systems problem

The bitter lesson for product teams was not merely that larger models got strong. It was that stronger models did not eliminate the surrounding engineering problem. They moved it.

Teams that expected better models to dissolve complexity discovered instead that the complexity migrated into context assembly, eval design, runtime semantics, authority boundaries, and organizational throughput. The model became more capable, but the loop around it became more consequential.

This is exactly why Chapters 3 through 8 form the core technical arc of the book. A legible workplace without evals is not enough. Evals without good context are not enough. Context without semantics is not enough. Runtime without bounded authority is not enough. Security without usable supervision is not enough. And all of it gets exposed brutally when the system has to operate in real time. What endures is the systems view: reliable AI is still built, not wished into existence by model upgrades.

Autonomy is worth tuning, not worshipping

The field has a recurring weakness for maximalist language. Full autonomy. Fully agentic companies. End-to-end automation. One model to run the business. The mythology is understandable. Grand attract attention, talent, and capital. They also smuggle in bad product instincts.

The most useful systems in this book were rarely the ones with the least human involvement. They were the ones with the clearest handoffs.

The worked when agents could draft, test, search, and decompose work inside a strong — the whose eval slices finally caught the throttle that once stalled an admin path. The high-stakes colleague worked when the system could retrieve, synthesize, validate, and draft while expert review remained focused on the consequential edges. The realtime voice scenario worked when the agent could acknowledge, clarify, act within bounds, and escalate gracefully rather than bluff past uncertainty.

That is the durable principle: autonomy is not a trophy but a variable to tune — what Joel Hron called treating agency as a dial, turned up where the work is reversible and recoverable, turned down where a wrong move costs something you cannot get back. The right system is not the one that removes humans most completely but the one that places human attention where it creates the most value and machine execution where structure makes it safe.

The organization is part of the product

The later chapters widened from technical to institutional systems because every serious AI question eventually turns organizational. Who maintains the ? Who curates the eval set? Who decides what context sources count as authoritative? Who scopes permissions? Who owns review queues? Who resolves the conflicts created by private agent workflows moving faster than shared alignment? There is no lasting answer to those questions at the prompt layer.

That is why the matters. Not as a trend piece, but as the recognition that delegation at scale is a company design problem. The same principles that govern a good agent environment govern a good institution: explicit standards, bounded authority, usable memory, visible work-in-progress, and cheap ways to escalate uncertainty before it compounds into damage.

What endures here is the idea that the company itself becomes a for delegated work. That may be the least glamorous in the book and one of the most important.

The enduring pattern

The enduring pattern is .

Not raw generation. Not autonomous theater. Not tool-sprawl disguised as capability. Not infinite context pretending to be memory. Not a leaderboard screenshot standing in for product trust.

means the machine is given a prepared environment, a clearer representation of intent, a workable slice of context, a runtime that can preserve and expose state, authority boundaries proportionate to risk, and human review focused where it matters most.

That pattern will survive specific model families. It will survive today’s frameworks. It will likely survive today’s interface assumptions too.

The reason is simple. It is not a workaround for weak models but a design response to the nature of delegated work itself.

What remains human is not typing; it is responsibility

There is a shallow version of the “what remains human?” debate that fixates on which tasks people will keep doing by hand. That is not the most important distinction.

Humans may keep typing less. They may implement less boilerplate directly. They may increasingly supervise parallel flows of machine work, edit generated artifacts, compose systems from agentic parts, and intervene mostly at moments of ambiguity or consequence.

But the deeper human role is not any one physical activity. It is responsibility.

Responsibility for standards. Responsibility for scoping. Responsibility for the boundaries within which machines act. Responsibility for deciding when evidence is sufficient. Responsibility for noticing when the system is producing motion without progress.

The book stayed skeptical of both utopian and defensive narratives for that reason. AI neither leaves engineering unchanged nor abolishes the need for engineers. It relocates value toward those who can design, govern, and continuously improve systems of delegated work.

The future belongs to teams that can turn cheap generation into trusted throughput

That is the calmest way to say what endures. The winners in the next era will not be the people who memorize model names fastest or chase every wrapper the hardest. They will be the people and institutions that can separate durable principles from fashionable surfaces, build environments that turn capability into reliable work, and keep human judgment attached to the places where it matters.

The interfaces will change. The tooling will churn. The jargon will get rewritten at least twice before this sentence is old.

But the work underneath is surprisingly stable.

Make the task legible. Make the standards explicit. Make the context usable. Make the runtime durable. Make authority narrow enough to trust. Make review proportionate to risk. Make the organization capable of learning.

That is what it means to engineer AI systems that endure.

And that is the real promise of this field. Not that machines remove the need for engineering, but that more work can finally be delegated without pretending trust will take care of itself.

The future belongs to teams that can turn cheap generation into trusted throughput.

EVIDENCE OF SOURCE · CHAPTER 10 · VIDEOS

10 claims · 36 source anchors

Evidence — Source Anchors

The important transition is from suggestion to delegated execution

Open in graph
  • from helpfulness to productive
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • I think they need more
    #3 — Jacob Lauritzen, Legoraconfidence: high
  • most primitives the magic happens when you combine these things together
    #138 — Sam Bhagwat, Mastra.aiconfidence: high

Reliability comes less from model cleverness than from surrounding scaffolding

Open in graph
  • The important thing is not the code but the prompt and the guardrails that got you there.
    #16 — Ryan Lopopolo, OpenAIconfidence: high
  • Agents have intelligence and capabilities, but not always expertise that we need for real work.
    #83 — Barry Zhang & Mahesh Murag, Anthropicconfidence: high
  • these are three kind of like ingredients which are pretty simple and pretty basic, but I think provide an interesting kind of like first principles approach for how to think about
    #198 — Harrison Chase, LangChain/LangGraphconfidence: high

Specs are not paperwork; they are executable intent

Open in graph
  • specs are natural language, you're using specs as a control surface to explain what you want the system to do.
    #40 — Al Harris, Amazon Kiroconfidence: high
  • leaving breadcrumbs, documentation, ADRs, persona oriented documentation around what a good job looks like.
    #16 — Ryan Lopopolo, OpenAIconfidence: high

Context failure is often a system-assembly problem, not simply a small-context-window problem

Open in graph
  • the reason context platform engineering is so important is it dramatically simplifies reaching maximum KV cache hit rates
    #104 — Val Bercovici, WEKAconfidence: high
  • connect the dots with graph technology and solve problems like context engineering
    #105 — Stephen Chin, Neo4jconfidence: high
  • irrelevant facts pollute memory.
    #218 — Daniel Chalef, Zepconfidence: high
  • LLMs and tools are orchestrated through predefined code paths.
    #193 — Chau Tran, Gleanconfidence: high
  • Agents look at the starting point, end point and try to provide you the results.
    #752 — Nupur Sharma, Qodoconfidence: high
  • the more the tools, the more issues you have.
    #752 — Nupur Sharma, Qodoconfidence: high

Human oversight works best as an architectural layer, not an afterthought

Open in graph
  • There needs to be human interaction for approvals or other reasons and of course they need to be able to be uh able to run in parallel for efficiency
    #167 — Preeti Somal, Temporalconfidence: high
  • dial these agency dials far up.
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • maintaining a factory would require you to have an overview of the processes you want your coding agents to go through.
    #629 — Eric Zakariasson, Cursorconfidence: high

High-stakes systems tune agency instead of maximizing it

Open in graph
  • a binary thing but as a lever that you can dial
    #206 — Joel Hron, Thomson Reutersconfidence: high
  • agentic workflows we can plan and execute
    #201 — Yogendra Miraje, Factsetconfidence: high
  • send it to me for approval.
    #202 — Rita Kozlov, Cloudflareconfidence: high
  • credentials, payments, and checkout require determinism.
    #745 — Steve Kaliski, Stripeconfidence: high

AI-native advantage depends on organizational coherence, not output volume alone

Open in graph
  • you'll be able to assemble agent teams that can complete tasks orders of magnitude harder than what you can complete with a single agent today.
    #653 — Luke Alvoeiro, Factoryconfidence: high
  • observing their workflows, their pain points, co-designing solutions with them
    #693 — Eoin Mulgrew, 10 Downing Streetconfidence: high
  • maintaining a factory would require you to have an overview of the processes you want your coding agents to go through.
    #629 — Eric Zakariasson, Cursorconfidence: high

Realtime AI quality is primarily a coordination and latency-engineering problem, not a model-quality problem

Open in graph
  • the main bottleneck is becoming the tool call,
    #662 — Neil Zeghidour, Gradium AIconfidence: high
  • the entire stack of understanding, producing an answer, and pronouncing it to be around 200 milliseconds.
    #662 — Neil Zeghidour, Gradium AIconfidence: high
  • you have a tool call or open router that is going to have a latency between 500 milliseconds and 4 seconds.
    #662 — Neil Zeghidour, Gradium AIconfidence: high
  • wrapped it up into its own first class primitive,
    #661 — Luke Harries, ElevenLabsconfidence: high
  • the latency is key here
    #663 — Samuel Humeau, Mistralconfidence: high
  • knowing who said what is as important as what was said
    #742 — Hervé Bredin, pyannoteconfidence: high

TTS architecture is converging on LLM architecture

Open in graph
  • pretty much uh everybody is using an auto reggressive decoder backbone
    #663 — Samuel Humeau, Mistralconfidence: high
  • the king use case for text to speech is uh its usage within agents
    #663 — Samuel Humeau, Mistralconfidence: high
  • the intelligence is baked directly into the model.
    #755 — Thor Schaeff, Google DeepMindconfidence: high

Cheap generation raises the value of taste and judgment rather than lowering it

Open in graph
  • software fundamentals matter now more than they actually ever have.
    #1 — Matt Pocock, AI Heroconfidence: high
  • capable of doing everything um immediately
    #6 — Tuomas Artman & Gergely Oroszconfidence: high
  • intentionally designed to put friction
    #14 — Armin Ronacher & Cristina Poncela Cubeiroconfidence: high
AI QUALITY · CHAPTER 10 · MASH JUDGES
5 unsupported claims — ship-blocker

scored on version git:e68466c

Ask AI about this book

Open any AI assistant with a pre-filled prompt about the book, its method, and what makes it different.

00:00 / 00:00