<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ramin Jafary</title>
    <description>The latest articles on DEV Community by Ramin Jafary (@raminjafary).</description>
    <link>https://dev.to/raminjafary</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F137847%2Fcb4bfe00-6886-4b86-99d0-c66a66fc1a31.jpg</url>
      <title>DEV Community: Ramin Jafary</title>
      <link>https://dev.to/raminjafary</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/raminjafary"/>
    <language>en</language>
    <item>
      <title>The Rise of Agentic Engineering — Part 7: Loop Engineering, the Factory &amp; the Human</title>
      <dc:creator>Ramin Jafary</dc:creator>
      <pubDate>Thu, 25 Jun 2026 06:56:03 +0000</pubDate>
      <link>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-7-loop-engineering-the-factory-the-human-4k82</link>
      <guid>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-7-loop-engineering-the-factory-the-human-4k82</guid>
      <description>&lt;h2&gt;
  
  
  Loop Engineering, the Factory &amp;amp; the Human
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;The final part of a chronological survey of the craft around large language models.&lt;/em&gt; Part 5 built the &lt;strong&gt;harness&lt;/strong&gt; — the static structure around a model. Part 6 questioned the hand-written prompt. This installment is about the object that runs &lt;em&gt;inside&lt;/em&gt; the harness and replaces the prompt as the unit of work: &lt;strong&gt;the loop.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — The newest move isn't writing better prompts. It's building loops that prompt the agents &lt;em&gt;for&lt;/em&gt; you — then running many in parallel (the "factory," the "orchestra"). The catch: loops automate the typing, not the thinking. Three debts — comprehension, intent, and cognitive surrender — are yours to pay.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  "I don't prompt anymore. I write loops."
&lt;/h3&gt;

&lt;p&gt;The newest shift in the field was announced, fittingly for this story, in a single well-placed sentence. In June 2026 Peter Steinberger posted: "You shouldn't be prompting coding agents anymore. You should be designing loops that prompt your agents." The same week, independently, Boris Cherny — who built Claude Code at Anthropic — said on stage: "I don't prompt Claude anymore. I have loops running that prompt Claude and figuring out what to do. My job is to write loops." Two practitioners, two companies, the same conclusion.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I don't prompt Claude anymore. I have loops running that prompt Claude. My job is to write loops."&lt;br&gt;
— Boris Cherny, creator of Claude Code&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Addy Osmani's "Loop Engineering" (June 2026) unpacks what they meant. For two years, the way to get something from a coding agent was to write a good prompt, read the reply, write the next prompt — you held the tool the entire time, one turn after another. That, the loop-engineers argue, is ending. Instead you "build a small system that finds the work, hands it out, checks it, writes down what is done and then decides the next thing, and you let that system poke the agents instead of you."&lt;/p&gt;

&lt;p&gt;This is not a brand-new idea so much as a culmination. Simon Willison had named "designing agentic loops" a critical skill back in September 2025 (Part 5). What changed by mid-2026, Osmani notes, is that the pieces stopped being a pile of personal bash scripts and started shipping &lt;em&gt;inside the products&lt;/em&gt; — which is the moment a hack becomes infrastructure. Loop engineering, in Osmani's framing, "sits one floor above the harness": the harness is the environment a single agent runs inside; the loop is the harness "on a timer," spawning helpers and feeding itself.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Loop&lt;/strong&gt; &lt;em&gt;(runs on a timer, prompts the agents)&lt;/em&gt; — wraps:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Harness&lt;/strong&gt; &lt;em&gt;(the environment for one agent)&lt;/em&gt; — wraps:&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;…plus automations, worktrees, sub-agents, and shared state.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  The five primitives, plus memory
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr0us7mldw3eeqv7hj9px.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr0us7mldw3eeqv7hj9px.png" alt="A single self-driving loop: an automation on a schedule triggers a triage skill that reads CI, issues and commits; work goes to an isolated worktree where a maker subagent drafts a fix and a checker subagent verifies it; connectors open the PR and update the ticket; a state file records what's done and what's next. You design it once — the loop prompts the agents." width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Osmani's central observation is one of &lt;em&gt;convergence&lt;/em&gt;: the building blocks of a loop now map near-identically onto both OpenAI's Codex app and Anthropic's Claude Code. Once you notice the shape is the same across tools, "you stop arguing about which tool, you just design a loop." A loop needs five things, plus a place to remember:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Automations — the heartbeat.&lt;/strong&gt; Prompts that fire on a schedule, do their own discovery and triage, and surface findings to an inbox. &lt;em&gt;(Codex: an Automations tab with project, prompt, cadence, environment, and a Triage inbox. Claude Code: scheduled tasks, cron, hooks, GitHub Actions.)&lt;/em&gt; The in-session companion is a &lt;em&gt;run-until-done&lt;/em&gt; command — &lt;code&gt;/goal&lt;/code&gt; in both tools — that keeps working across turns until a &lt;strong&gt;verifiable&lt;/strong&gt; stopping condition holds. After each turn, a separate small model checks the condition, so the agent that wrote the code isn't the one grading it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Worktrees — isolation for parallelism.&lt;/strong&gt; The moment more than one agent runs, files collide. A git worktree gives each agent its own working directory on its own branch, so one agent's edits can't clobber another's checkout.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills — codified project knowledge.&lt;/strong&gt; A folder with a &lt;code&gt;SKILL.md&lt;/code&gt; of instructions and metadata, invoked by name or matched to a task. Skills are where intent gets &lt;strong&gt;written down once, on the outside&lt;/strong&gt; — instead of being re-derived from scratch every session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plugins / connectors — the loop touches real tools.&lt;/strong&gt; Built on MCP, connectors let the loop read the issue tracker, query a database, hit a staging API, post to Slack. This is the line between an agent that says &lt;em&gt;"here is the fix"&lt;/em&gt; and a loop that opens the PR, links the ticket, and pings the channel once CI is green.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sub-agents — separate the maker from the checker.&lt;/strong&gt; The model that wrote the code grades its own work too generously. A second agent — different instructions, sometimes a different model — catches what the first talked itself into.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And the sixth thing, the &lt;strong&gt;state/memory&lt;/strong&gt;: a markdown file or a Linear board — anything outside the single conversation that records what's done and what's next. "The agent forgets, the repo doesn't." This is the same externalized-memory discipline as Anthropic's progress files (Part 5) and the context-offloading tactic (Part 4), now serving as the spine of the whole loop.&lt;/p&gt;

&lt;p&gt;Here's a single loop, assembled:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An automation runs each morning → a triage skill reads yesterday's CI failures and open issues, writing findings to a state file → for each worthwhile finding, the loop opens an isolated worktree → a &lt;strong&gt;maker&lt;/strong&gt; sub-agent drafts the fix, a &lt;strong&gt;checker&lt;/strong&gt; sub-agent reviews it against the skills and tests → connectors open the PR and update the ticket → anything the loop can't handle lands in the triage inbox for the human.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;"You designed it one time. You did not prompt any of those steps."&lt;/p&gt;




&lt;h3&gt;
  
  
  Ralph: the loop in its purest form
&lt;/h3&gt;

&lt;p&gt;If loop engineering has a folk hero, it is the &lt;strong&gt;Ralph Wiggum loop&lt;/strong&gt;, created by Geoffrey Huntley in mid-2025 and gone viral by the end of that year. In its purest form, Ralph is a bash loop: feed the agent a goal, let it work, feed its output (errors and all) back into a &lt;em&gt;fresh&lt;/em&gt; context, and repeat until done. Named after the lovably forgetful Simpsons character — because, like Ralph, AI agents don't remember previous attempts and will cheerfully repeat mistakes — the technique "embraces limitations rather than fighting them."&lt;/p&gt;

&lt;p&gt;Huntley's signature line captures the philosophy:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ralph is &lt;em&gt;"deterministically bad in a non-deterministic world."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Its failures are &lt;em&gt;predictable&lt;/em&gt;, which makes them debuggable and tunable — unlike the chaotic unpredictability of elaborate multi-agent systems.&lt;/p&gt;

&lt;p&gt;The tuning mechanism is a playground metaphor that should sound familiar. Ralph is told to build a playground and comes home bruised from falling off the slide, so you add a sign — "SLIDE DOWN, DON'T JUMP, LOOK AROUND" — to a spec or &lt;code&gt;AGENTS.md&lt;/code&gt; file. Add too many signs and it becomes overwhelming, so you prune and re-evaluate. This is &lt;em&gt;exactly&lt;/em&gt; the ratchet from Part 5 — every mistake becomes a rule, keep the rule-list short — arrived at independently, from the brute-force-loop direction.&lt;/p&gt;

&lt;p&gt;Two things about Ralph tie the whole series together.&lt;/p&gt;

&lt;p&gt;First, the proof points were startling. Huntley used it to build CURSED, a complete programming language, over months of largely autonomous operation. A Y Combinator hackathon team "put a coding agent in a while loop and it shipped 6 repos overnight."&lt;/p&gt;

&lt;p&gt;Second — the subtle point HumanLayer stresses in its "brief history of Ralph" — the real value isn't "run forever." It's that each iteration &lt;em&gt;"carve[s] off small bits of work into independent context windows."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In other words, Ralph is the whole field compressed into a five-line bash loop: context quarantine (Part 4), plus the fresh-context discipline (Part 2's context rot), plus external memory. The fancy version — Anthropic's planner/generator/evaluator splits — simply formalizes the maker/checker separation that Ralph's &lt;code&gt;/goal&lt;/code&gt;-style stop-check already performs.&lt;/p&gt;




&lt;h3&gt;
  
  
  The factory and the orchestra
&lt;/h3&gt;

&lt;p&gt;Once a single loop works, the obvious next move is to run many. Osmani has described this under several names — the &lt;strong&gt;factory model&lt;/strong&gt; (the system that builds the software), the &lt;strong&gt;code agent orchestra&lt;/strong&gt;, and &lt;strong&gt;swarms&lt;/strong&gt; of agents working in parallel. The technical enabler is the worktree (isolation) plus the connector (shared tools) plus the sub-agent (division of labor). The conceptual enabler is everything from Part 4: this is Anthropic's orchestrator-worker pattern, generalized from research to software production.&lt;/p&gt;

&lt;p&gt;But the economics from Part 4 return with force. Anthropic had found multi-agent systems use ~15× the tokens of a chat, and had specifically flagged coding as a &lt;em&gt;worse&lt;/em&gt; fit for parallelism than research — fewer truly independent subtasks, more shared context.&lt;/p&gt;

&lt;p&gt;The loop-engineers run many agents on code anyway. That's why every serious treatment of loop engineering leads with a cost warning; Osmani opens his own essay urging caution about token spend (&lt;em&gt;"usage patterns can vary wildly if you are token rich or poor"&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;And the reliability math compounds. A loop chaining five steps, each 95% reliable, completes cleanly only about three-quarters of the time. Worse, an unattended loop's mistakes compound &lt;em&gt;into the state file&lt;/em&gt; — so tomorrow's run builds on today's errors.&lt;/p&gt;

&lt;p&gt;This is why the maker/checker split is load-bearing, not decorative — and why Willison's wry definition from Part 5 stays pinned to the wall: an agent is &lt;em&gt;"an LLM wrecking its environment in a loop."&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  The orchestration tax and the debts that don't automate away
&lt;/h3&gt;

&lt;p&gt;The loop changes the work; it does not delete the human from it. Osmani is emphatic on this, and three problems get &lt;em&gt;sharper&lt;/em&gt; as loops get better, not easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The orchestration tax.&lt;/strong&gt; Worktrees remove the mechanical collision of parallel agents, but the human's &lt;em&gt;review bandwidth&lt;/em&gt; becomes the ceiling on how many agents you can actually run. The tool isn't the limit; you are. Running more agents doesn't help if you can't review their output.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Spin up ten agents and your bottleneck isn't compute. It's how fast &lt;em&gt;you&lt;/em&gt; can review ten agents.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Comprehension debt.&lt;/strong&gt; The faster a loop ships code you didn't write, the wider the gap between what exists and what you understand. A smooth loop makes that gap grow faster unless you read what it produced. This is the direct descendant of prompt debt (Part 6): both are costs that accrue invisibly while everything looks like progress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intent debt.&lt;/strong&gt; An agent starts every session cold and fills any gap in your intent with a confident guess. Skills (writing intent down on the outside) pay this down; skipping them means the loop re-derives your whole project from scratch every cycle, guessing wrong each time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cognitive surrender.&lt;/strong&gt; The most human risk: when the loop runs itself, it is tempting to stop having an opinion and accept whatever it returns. Osmani's sharpest formulation is that designing the loop "is the cure when you do it with judgement and the accelerant when you do it to avoid thinking — same action, opposite result." Two people can build the identical loop and get opposite outcomes: one uses it to move faster on work they understand deeply; the other uses it to avoid understanding the work at all. "The loop doesn't know the difference. You do."&lt;/p&gt;

&lt;p&gt;His closing line is the thesis of loop engineering and a fair motto for the entire series: &lt;em&gt;"Build the loop. But build it like someone who intends to stay the engineer, not just the person who presses go."&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Open problems and where it's going
&lt;/h3&gt;

&lt;p&gt;The field is, by its own account, early and unsettled. The honest open questions, gathered across the sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The behaviour harness is still unsolved&lt;/strong&gt; (Part 5). We have good guides and sensors for &lt;em&gt;maintainability&lt;/em&gt; and decent ones for &lt;em&gt;architecture fitness&lt;/em&gt;, but reliably guiding and verifying whether an application &lt;em&gt;functionally does what's needed&lt;/em&gt; — beyond trusting an AI-generated test suite — remains open.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Harness coherence at scale.&lt;/strong&gt; As guides and sensors multiply, how do you keep them in sync and non-contradictory? Böckeler flags emerging conflicts between sensors; there's no "coverage metric" for harness quality yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Just-in-time harness assembly.&lt;/strong&gt; Trivedy and Osmani both point to the same frontier: harnesses that dynamically assemble the right tools and context for a task, rather than being pre- configured — the moment a harness "stops being static config and starts becoming something closer to a compiler."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents that fix their own harness.&lt;/strong&gt; Agents analyzing their own traces to identify and repair harness-level failure modes — self-improvement (Part 4) applied to the scaffolding itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orchestrating many agents on a shared codebase&lt;/strong&gt; without the coordination overhead defeating the parallelism gains.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The economics.&lt;/strong&gt; Whether the 15× token cost of heavy multi-agent loops is justified outside high-value tasks, and how cost-governance (budgets, iteration caps, grader agents that kill a failing loop) matures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What the research frontier is already attacking
&lt;/h4&gt;

&lt;p&gt;The academic literature of late 2025 and 2026 is converging on exactly these problems, and a scan of the current arXiv frontier (via discovery layers like Emergent Mind and alphaXiv) shows the context-management thread from Parts 2–4 evolving into &lt;em&gt;autonomous&lt;/em&gt; context management — the agent curating its own context rather than relying on a passive external summarizer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agentic Context Engineering (ACE)&lt;/strong&gt; (Stanford et al., arXiv:2510.04618) treats a context as an evolving "playbook" that accumulates and refines strategies through generation, reflection, and curation. Notably, it names two new failure modes that extend Part 3's taxonomy: &lt;em&gt;brevity bias&lt;/em&gt; (summarization that drops hard-won domain detail) and &lt;em&gt;context collapse&lt;/em&gt; (iterative rewriting that erodes information over time). It reports roughly +10.6% on agent benchmarks by treating context as structured, incrementally-updated bullets rather than a monolithic prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-Compacting Language Model Agents&lt;/strong&gt; (arXiv:2606.23525) gives the agent a rubric to decide &lt;em&gt;when and what&lt;/em&gt; to summarize itself, reporting double-digit task gains alongside 33–67% token reductions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active Context Compression / "Focus"&lt;/strong&gt; (arXiv:2601.07190) lets the agent autonomously consolidate learnings into a persistent knowledge block and prune raw history — reporting ~22.7% token savings at equal accuracy on context-intensive SWE-bench instances, and the pointed finding that &lt;em&gt;aggressive&lt;/em&gt; prompting to compress is what works (passive prompting yielded only ~6%). Current models, in other words, still need scaffolding to manage their own context well — a tidy restatement of this entire series' thesis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are early results on small samples, and none is a settled answer. But the direction is clear: the context curation that Part 3 framed as the &lt;em&gt;human's&lt;/em&gt; job, and Part 5 encoded into a &lt;em&gt;harness&lt;/em&gt;, is now itself becoming something the loop does for itself — the same upward migration of responsibility that defines every rung of the ladder.&lt;/p&gt;

&lt;p&gt;And the largest open question is the one this whole series circles: as models improve, how much of this scaffolding persists? The harness-doesn't-shrink-it-moves argument (Part 5) suggests the work relocates rather than vanishing. But reasonable people in the field disagree about how far autonomy ultimately goes — whether we are heading toward ever-thinner harnesses around ever-more-capable models, or toward ever-richer control systems as we ask agents to do ever-harder things. The sources surveyed here lean toward the latter, but they are written by people building the control systems, and the question is genuinely unresolved.&lt;/p&gt;




&lt;h3&gt;
  
  
  The arc, in one picture
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvdwvydncq5dk7uxgg69f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvdwvydncq5dk7uxgg69f.png" alt="The abstraction ladder of agentic engineering: five widening rungs from Prompt to Context to Harness to Loop to Factory/Orchestra, with the debts (prompt, comprehension, intent) running alongside. Each rung exists because the one below it stopped scaling." width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step back, and the two-year story has a single shape: an escalating ladder of abstraction, where each rung exists because the rung below it stopped scaling — with a matching "debt" accruing at each step, and the human's role shifting upward but never disappearing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Each rung exists because the one below it stopped scaling. The human keeps climbing — never stepping off.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rung&lt;/th&gt;
&lt;th&gt;Era&lt;/th&gt;
&lt;th&gt;What the human does&lt;/th&gt;
&lt;th&gt;The debt&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2023–24&lt;/td&gt;
&lt;td&gt;writes the request&lt;/td&gt;
&lt;td&gt;brittleness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;mid-2025&lt;/td&gt;
&lt;td&gt;curates the information&lt;/td&gt;
&lt;td&gt;context rot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Harness&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;early 2026&lt;/td&gt;
&lt;td&gt;builds guides &amp;amp; sensors&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Loop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;mid-2026&lt;/td&gt;
&lt;td&gt;designs the loop&lt;/td&gt;
&lt;td&gt;comprehension / intent debt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Factory / Orchestra&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;mid-2026 →&lt;/td&gt;
&lt;td&gt;orchestrates many agents — and stays the engineer&lt;/td&gt;
&lt;td&gt;orchestration tax / cognitive surrender&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Prompt engineering taught us that &lt;em&gt;how you ask&lt;/em&gt; changes what you get. Context engineering taught us that &lt;em&gt;what surrounds the ask&lt;/em&gt; matters more than its wording. Harness engineering taught us that the durable work is &lt;em&gt;the system around the model&lt;/em&gt; — guides, sensors, feedback loops. Loop engineering taught us that even the act of prompting can be &lt;em&gt;designed and automated&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And at every rung, the same lesson keeps returning — the one Arthur Dent learned from the Nutri-Matic in Part 1. A powerful, general system will hand you something almost-but-not-quite right, unless you do the work of specifying, constraining, measuring, and steering it.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;form&lt;/em&gt; of that work keeps changing. The need for it has not gone away.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key sources for Part 7
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Addy Osmani, &lt;em&gt;Loop Engineering&lt;/em&gt; (June 2026) — design loops that prompt your agents; the five primitives + memory; Codex/Claude Code convergence; Steinberger and Cherny; comprehension/intent debt; cognitive surrender; "build the loop, stay the engineer."&lt;/li&gt;
&lt;li&gt;Peter Steinberger and Boris Cherny — public remarks (June 2026) declaring the shift from prompting to writing loops. [Via Osmani and contemporaneous coverage.]&lt;/li&gt;
&lt;li&gt;Geoffrey Huntley, &lt;em&gt;Ralph Wiggum as a "software engineer"&lt;/em&gt; (ghuntley.com, 2025) — the Ralph loop; "deterministically bad in a non-deterministic world"; fresh context per iteration; the playground/signs metaphor; CURSED; the YC "6 repos overnight" field report.&lt;/li&gt;
&lt;li&gt;HumanLayer, &lt;em&gt;A Brief History of Ralph&lt;/em&gt; (Jan 2026) — the key nuance that Ralph's point is carving work into independent context windows, not "run forever."&lt;/li&gt;
&lt;li&gt;Simon Willison, &lt;em&gt;Designing agentic loops&lt;/em&gt; (Sept 2025) — the earlier naming of loop design; "an LLM wrecking its environment in a loop"; YOLO mode.&lt;/li&gt;
&lt;li&gt;Anthropic, &lt;em&gt;How we built our multi-agent research system&lt;/em&gt; (2025) — orchestrator-worker; ~15× token economics; coding as a harder fit for parallelism.&lt;/li&gt;
&lt;li&gt;Addy Osmani, related posts — &lt;em&gt;The Factory Model&lt;/em&gt;, &lt;em&gt;The Code Agent Orchestra&lt;/em&gt;, &lt;em&gt;Claude Code Swarms&lt;/em&gt;, &lt;em&gt;The Orchestration Tax&lt;/em&gt;, &lt;em&gt;Comprehension Debt&lt;/em&gt;, &lt;em&gt;The Intent Debt&lt;/em&gt;, &lt;em&gt;Cognitive Surrender&lt;/em&gt;, &lt;em&gt;Self-Improving Coding Agents&lt;/em&gt; — the factory/orchestra framing and the human-cost threads.&lt;/li&gt;
&lt;li&gt;Birgitta Böckeler (martinfowler.com) — the unsolved behaviour harness and harness-coherence open questions.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>softwareengineering</category>
      <category>futureofwork</category>
    </item>
    <item>
      <title>The Rise of Agentic Engineering — Part 6: Prompt Debt &amp; the Limits of Natural Language</title>
      <dc:creator>Ramin Jafary</dc:creator>
      <pubDate>Thu, 25 Jun 2026 06:54:48 +0000</pubDate>
      <link>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-6-prompt-debt-the-limits-of-natural-language-28oi</link>
      <guid>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-6-prompt-debt-the-limits-of-natural-language-28oi</guid>
      <description>&lt;h2&gt;
  
  
  Prompt Debt &amp;amp; the Limits of Natural Language
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Part 6 of a chronological survey of the craft around large language models.&lt;/em&gt; Part 1 noted four quiet weaknesses in prompt engineering. By 2026 they had a name, a cost, and a proposed cure. This installment is about &lt;strong&gt;prompt debt&lt;/strong&gt; — why natural language makes a poor specification language for durable systems.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Hand-tuned prompts accumulate debt: iteration slows, the team can't read them, and you get locked to one model. The root cause is "fighting the weights" — every repeated, all-caps instruction is scar tissue. The proposed cure: &lt;strong&gt;specify behavior with measurements, not prose&lt;/strong&gt;, and stop writing prompts by hand (DSPy, GEPA). Define a metric instead of a paragraph, and switching models becomes a chore — not a fire drill.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  The bill comes due
&lt;/h3&gt;

&lt;p&gt;Natural-language interfaces made prototyping almost magical. As Drew Breunig observes in "The Problem Is Prompt Debt" (June 2026), you write what you want in English, hand it to a frontier model, and a working prototype appears in an afternoon. For one-off tasks, that is optimal. But as a way to build &lt;em&gt;reliable systems&lt;/em&gt;, Breunig argues, the plain-English prompt is a trap — and "the bill arrives slowly, disguised as ordinary progress, until the application can barely move."&lt;/p&gt;

&lt;p&gt;His diagnosis names three symptoms, in order of appearance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First, iteration slows.&lt;/strong&gt; As users flag errors and edge cases, you add guidance to the prompt to nudge the model into line. When an unwanted behavior persists, you repeat the instruction, more sternly. Soon the prompt is no longer straightforward; quick fixes regress earlier instructions; one-line hot fixes stop working; the development cycle crawls. Breunig points to a real artifact: a leaked system prompt that repeats one copyright rule up to six times, under six differently-named sections, each more emphatic than the last.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second, the team is incapacitated.&lt;/strong&gt; A brittle prompt full of edge cases and all-caps threats is barely legible to its own author and "downright impenetrable" to colleagues. Teams try to manage this by breaking prompts into run-time-assembled templates, each isolated to a concern — but those segments evolve too, into "a thicket of conditions."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Third, you get locked to a single model.&lt;/strong&gt; Your hot fixes work on the model you tuned them against and "fail in entirely new ways" when you point the same call at a newer model. So you stay put — and forgo cheaper, faster, better models. Breunig cites a Datadog report finding that the single most-used model in observed traffic was an aging GPT-4o, and relays that some large inference providers see GPT-4o-vintage usage above 50% of all calls. Teams are frozen on old models because moving is too risky.&lt;/p&gt;

&lt;p&gt;Any one of these is a nuisance. Together, Breunig argues, they are "the difference between a glorified prototype and a product that can grow." This is the mature form of the four cracks from Part 1 — the brittleness and non-portability that didn't matter for a chat prompt become fatal for a system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnyhd5v11l5vg1iik4qgt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnyhd5v11l5vg1iik4qgt.png" alt="Prompt debt: as hand-tuned fixes accumulate over time, iteration speed decays while accumulated prompt debt rises — each fix adds a rule, risks regressing another, and ties you tighter to one model." width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Why prompt debt happens
&lt;/h3&gt;

&lt;p&gt;Breunig's deeper point is that this isn't a discipline problem to be solved by writing prompts more carefully. It is structural: &lt;strong&gt;natural language was never meant to be a specification language for engineering, and treating it as one quietly caps what you can build.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Two properties of the medium make it so.&lt;/p&gt;

&lt;p&gt;First, &lt;em&gt;imprecision meets probability&lt;/em&gt;: different words for the same intent can yield different outputs. Breunig cites a 2026 study in which a clinical question asked in a patient's voice versus a physician's — identical facts — flipped a model from declining all ten times to answering all ten.&lt;/p&gt;

&lt;p&gt;Second, and stranger, &lt;em&gt;seemingly unrelated statements interfere&lt;/em&gt;. A Harvard study found that merely stating which NFL team a user rooted for changed how often the model refused sensitive questions. (Same family of effect as Part 3's CatAttack "cat facts": spurious context that shouldn't matter, but does.)&lt;/p&gt;

&lt;p&gt;The consequence: "an additional instruction to quell a stubborn error could affect how the model interprets a separate instruction that worked yesterday." &lt;strong&gt;Prompts get more brittle precisely &lt;em&gt;because&lt;/em&gt; you add fixes.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Fighting the weights
&lt;/h4&gt;

&lt;p&gt;There's a specific reason instructions get repeated, and Breunig names it: &lt;em&gt;fighting the weights.&lt;/em&gt; When the behavior you want is at odds with what the model was trained to do, one instruction isn't enough, so authors restate it, escalating. Once you see it, he writes, "you see it in system prompts everywhere." His examples: an image-generation prompt that instructed a model eight times not to keep talking after returning an image (because it had been trained to always continue the conversation); a coding agent told seven times to return multiple tool calls in a single response; a leaked model prompt restating one copyright rule six times.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every all-caps, repeated, underlined instruction is scar tissue — a prompt losing a fight with the model's training.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Each repetition is the visible cost of that fight — and each one adds brittleness and fresh regression risk.&lt;/p&gt;

&lt;h4&gt;
  
  
  Models are not cleanly versioned software
&lt;/h4&gt;

&lt;p&gt;The portability problem has a structural root too. Models aren't versioned software with stable interfaces; they have different weights that produce different behaviors in undocumented, unpredictable ways. Breunig cites a Berkeley-led study finding that enterprises stay on older models specifically because newer ones break their existing agents. A prompt tuned to one model's quirks is, by construction, welded to that model. This is the non-portability crack from Part 1, now load-bearing: prompt debt locks an application to a single model — not because labs built a clever moat, but as the natural result of "evolving a lossy, natural-language specification against a probabilistic model."&lt;/p&gt;




&lt;h3&gt;
  
  
  The cure, part 1: specify with measurements, not prose
&lt;/h3&gt;

&lt;p&gt;If the problem is that natural language is too loose to specify behavior reliably, the first part of the cure is to put hard edges around the looseness. Breunig's first principle: &lt;strong&gt;specify your system's behavior with measurements, not prose.&lt;/strong&gt; When output is probabilistic and language is imprecise, you constrain them with evaluations, metrics, and typed specifications — artifacts that are legible, shareable, and contributable by colleagues, exactly where brittle prompts were opaque.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A prompt is a paragraph you hope the model reads your way. A metric is a contract it has to satisfy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This connects directly to the harness work of Part 5. Böckeler's sensors — tests, linters, structural rules, LLM-as-judge — &lt;em&gt;are&lt;/em&gt; measurements that constrain probabilistic output. The behaviour you can't reliably get by &lt;em&gt;telling&lt;/em&gt; the model, you get by &lt;em&gt;measuring&lt;/em&gt; whether it happened and feeding that back. Breunig notes the corollary that the best engineers now spend more bandwidth on tests than ever: tests are no longer just a safety net but "the thing that lets the model cook." Spec-writing becomes a primary skill — define the done-condition before the code gets written (an idea that recurs in Part 7's "sprint contract" and in the broader 2026 emphasis on writing good specs for agents).&lt;/p&gt;




&lt;h3&gt;
  
  
  The cure, part 2: stop writing the prompt by hand
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn3nm6brk7rgxw86leprn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn3nm6brk7rgxw86leprn.png" alt="Stop writing prompts by hand: GEPA's reflective prompt search beats both the GRPO reinforcement-learning baseline (by about 6% on average across six tasks) and the MIPROv2 prompt optimizer (by over 10%), while using up to 35x fewer rollouts than GRPO." width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The second principle is more radical: &lt;strong&gt;once you have metrics that can score candidate prompts, the prompt is no longer something to craft but something to &lt;em&gt;search for&lt;/em&gt;.&lt;/strong&gt; The space of possible words, phrases, and structures is far too large to explore by hand, and — Breunig argues — it is exactly the kind of terrain models were built to explore. The human writes the metric; a system searches the prompt space against it.&lt;/p&gt;

&lt;p&gt;Two systems anchor this argument.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DSPy&lt;/strong&gt; reframes prompting as programming: you declare the &lt;em&gt;signature&lt;/em&gt; of what each module should do and an optimizer compiles the actual prompt text against your metric, rather than you hand-tuning strings. The prompt becomes a compiled artifact, held accountable to a measurable objective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GEPA&lt;/strong&gt; (Genetic-Pareto), from a UC Berkeley / Stanford / Databricks / MIT collaboration (Agrawal et al., 2025; ICLR 2026 oral), is the sharpest evidence that searching beats hand-tuning — and even beats reinforcement learning.&lt;/p&gt;

&lt;p&gt;The argument: RL methods like GRPO adapt a model to a task using sparse scalar rewards, often needing tens of thousands of rollouts. GEPA instead uses &lt;em&gt;natural-language reflection&lt;/em&gt;. It samples an AI system's trajectories (reasoning, tool calls, tool outputs), reflects on them in language to diagnose what went wrong, proposes and tests prompt updates, and combines complementary lessons from a Pareto frontier of candidates.&lt;/p&gt;

&lt;p&gt;Because language is a richer learning medium than a scalar reward, GEPA "can often turn even just a few rollouts into a large quality gain." Across six tasks it beat GRPO by 6% on average (up to ~20%) while using &lt;strong&gt;up to 35× fewer rollouts&lt;/strong&gt; — and beat the prior state-of-the-art prompt optimizer, MIPROv2, by over 10% (e.g. +12% on AIME-2025).&lt;/p&gt;

&lt;p&gt;Notably, GEPA ships as &lt;code&gt;dspy.GEPA&lt;/code&gt;: the two tools are one ecosystem for treating prompts as searchable artifacts. The throughline — &lt;strong&gt;the human specifies intent and a metric; the system writes and refines the prompt.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  An evenhanded caveat
&lt;/h4&gt;

&lt;p&gt;Automated prompt optimization is not a universal win — and the research says so, especially once you move from a single prompt to a &lt;em&gt;multi-agent&lt;/em&gt; system.&lt;/p&gt;

&lt;p&gt;A 2025 analysis of multi-agent design spaces (Zhang et al., "Multi-Agent Design: Optimizing Agents with Better Prompts and Topologies," arXiv:2502.02533) found that prompts are frequently an influential lever for strong multi-agent performance. But the interplay between the prompt design space and the &lt;em&gt;topology&lt;/em&gt; design space (how many agents, how they're connected) "remains unclear," and genuinely influential topologies are only a small fraction of the search space.&lt;/p&gt;

&lt;p&gt;Follow-on work reinforces the interdependence: the MASS line of research argues prompt and topology optimization are coupled, best done in alternation rather than isolation.&lt;/p&gt;

&lt;p&gt;The honest reading: searching the prompt space is powerful, but it interacts with system design in ways we don't fully understand yet — and gains are task- and structure-dependent, not guaranteed. None of these techniques is a silver bullet.&lt;/p&gt;




&lt;h3&gt;
  
  
  The portability payoff
&lt;/h3&gt;

&lt;p&gt;The reason to pay down prompt debt is the freedom it buys. Once behavior is defined by measurements and prompts are generated rather than hand-tuned, you are no longer bound to one model. Breunig's claim: evaluating a new model takes hours, not weeks. When a faster or cheaper model arrives, you try it. When a deprecation email arrives — or when a model is pulled for regulatory reasons, or retired for age — the fix "is a chore, not a fire drill." The metric and the search transfer; only the compiled prompt needs to be regenerated.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Define behavior with a metric instead of a paragraph, and switching models becomes a chore — not a fire drill.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  The historical analogy
&lt;/h3&gt;

&lt;p&gt;Breunig closes with the argument that gives this whole shift its weight. Every mature engineering discipline eventually stops doing by hand the very thing it once prided itself on doing by hand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;assembly gave way to compilers,&lt;/li&gt;
&lt;li&gt;hand-tuned database queries gave way to query planners,&lt;/li&gt;
&lt;li&gt;manual memory management gave way (mostly) to machines that do it better.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;"Prompt-writing is no different." Coaxing the model with exactly the right words is a real skill — and for one-off tasks, often the optimal one (the Nutri-Matic of Part 1 still works for a single cup of tea). But to build reliable, improvable, portable &lt;em&gt;systems&lt;/em&gt;, the argument goes, we should not be hand-tuning prompts any more than we hand-tune assembly.&lt;/p&gt;

&lt;p&gt;This is a notable inversion of the field's origin. Part 1's entire discipline — finding the magic phrasing — is here recast as a transitional craft, valuable but destined to be automated, the way every prior generation's hand-craft was. Whether the field fully follows that path is still open; hand-prompting remains widespread and, as the multi-agent design research shows, automation has its own pitfalls. But the direction of travel is clear, and it sets up the final part of our story.&lt;/p&gt;

&lt;p&gt;Because while one branch of the field was learning to &lt;em&gt;stop&lt;/em&gt; hand-writing the instructions, another was elevating a different object entirely to the center of the work — not the prompt, not even the harness, but the &lt;em&gt;loop&lt;/em&gt; that runs the agents. Part 7 turns to loop engineering, the factory and the orchestra, and the costs that don't get automated away.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key sources for Part 6
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Drew Breunig, &lt;em&gt;The Problem Is Prompt Debt&lt;/em&gt; (June 2026) — the three symptoms (slowed iteration, team illegibility, model lock-in); "fighting the weights"; specify with measurements; stop hand-writing prompts; the assembly→compilers analogy; the Datadog GPT-4o concentration data.&lt;/li&gt;
&lt;li&gt;Lakshya A. Agrawal et al., &lt;em&gt;GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning&lt;/em&gt; (arXiv:2507.19457; ICLR 2026 oral; UC Berkeley/Stanford/Databricks/MIT) — reflective prompt evolution; +6% avg (up to ~20%) over GRPO with up to 35× fewer rollouts; +&amp;gt;10% over MIPROv2; ships as &lt;code&gt;dspy.GEPA&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;DSPy (dspy.ai) — programming, not prompting; declared signatures + optimizers compile prompts against a metric.&lt;/li&gt;
&lt;li&gt;Zhang et al., &lt;em&gt;Multi-Agent Design: Optimizing Agents with Better Prompts and Topologies&lt;/em&gt; (arXiv:2502.02533, 2025) — prompts are an influential design component for strong MAS, but the prompt/topology interplay is unclear and influential topologies are a small fraction of the search space; with the MASS line, establishes that prompt and topology optimization are coupled and task-dependent. The evenhanded counterpoint to automated prompt optimization.&lt;/li&gt;
&lt;li&gt;Supporting studies cited via Breunig: a 2026 clinical-voice prompt-sensitivity study; a Harvard study on spurious statements (NFL-team) affecting refusals; a Berkeley-led study on enterprises staying on older models because newer ones break agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Next up · Part 7 — Loop Engineering, the Factory &amp;amp; the Human:&lt;/strong&gt; designing the systems that prompt the agents, running many in parallel, and the debts (comprehension, intent, surrender) that no loop pays down for you.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>prompting</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Rise of Agentic Engineering — Part 5: Harness Engineering Emerges</title>
      <dc:creator>Ramin Jafary</dc:creator>
      <pubDate>Thu, 25 Jun 2026 06:53:35 +0000</pubDate>
      <link>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-5-harness-engineering-emerges-2d9o</link>
      <guid>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-5-harness-engineering-emerges-2d9o</guid>
      <description>&lt;h2&gt;
  
  
  Harness Engineering Emerges
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Part 5 of a chronological survey of the craft around large language models.&lt;/em&gt; Part 4 ended on a warning: in agentic systems, small errors compound catastrophically. This installment is the response — as coding agents went mainstream, attention widened from the context you feed a model to &lt;strong&gt;the entire system you build around it: the harness.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — &lt;strong&gt;Agent = Model + Harness.&lt;/strong&gt; If you're not the model, you're the harness — the guides and sensors (feedforward and feedback) that keep an agent on track. Four industrial accounts (OpenAI, Stripe, Google, Anthropic) converged on the same lesson: the durable work is &lt;em&gt;designing the environment&lt;/em&gt;, not picking the model. And the harness ratchets — every mistake becomes a permanent rule.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  A definition that reframes the work
&lt;/h3&gt;

&lt;p&gt;By late 2025, the most useful coding tools — Claude Code, OpenAI's Codex, Cursor, Aider, Cline — were no longer "a model you prompt." They were elaborate systems in which a model sat at the center, surrounded by prompts, tools, file access, sandboxes, hooks, and feedback loops. Simon Willison gave the underlying object its durable definition in September 2025: an LLM agent is "something that runs tools in a loop to achieve a goal," and "the art of using them well is to carefully design the tools and loop for them to use." He also named the larger activity — &lt;em&gt;agentic engineering&lt;/em&gt;: building software using coding agents whose defining feature is that they can both &lt;em&gt;generate and execute&lt;/em&gt; code, letting them test and iterate independently of turn-by-turn human guidance.&lt;/p&gt;

&lt;p&gt;The piece of that system &lt;em&gt;other than the model&lt;/em&gt; got its own name, which the developer Viv Trivedy crystallized into a slogan that spread quickly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Agent = Model + Harness. If you're not the model, you're the harness.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A raw model, on this view, is not an agent. It becomes one only when a harness gives it state, tool execution, feedback loops, and enforceable constraints. As Addy Osmani put it in his synthesis of the idea, the harness is "every piece of code, configuration, and execution logic that isn't the model itself" — system prompts, &lt;code&gt;CLAUDE.md&lt;/code&gt;/&lt;code&gt;AGENTS.md&lt;/code&gt; files, skills, tools, MCP servers, the sandbox and filesystem, orchestration logic, hooks, and observability.&lt;/p&gt;

&lt;p&gt;The reframing matters because of where it locates the engineering leverage. Osmani's claim, echoing Trivedy and the team at HumanLayer, is blunt: &lt;strong&gt;"A decent model with a great harness beats a great model with a bad harness."&lt;/strong&gt; The loud public debate is about the model — which is smartest, which writes the cleanest code. But the model is one input; the rest is the harness, and "increasingly the interesting engineering isn't in picking the model, it's in designing the scaffolding around it."&lt;/p&gt;

&lt;p&gt;The most striking evidence for that claim is a benchmark data point Osmani relays from Trivedy and HumanLayer: on Terminal-Bench, a coding agent moved from roughly Top 30 to Top 5 &lt;em&gt;by changing only the harness&lt;/em&gt; — same model. The explanation is that models are post-trained coupled to a particular harness; move a model into a &lt;em&gt;better&lt;/em&gt; harness for your codebase, with sharper tools and tighter feedback, and you can unlock capability the original harness left on the floor. This is the opposite of the "just wait for the next model" narrative. As Osmani frames it, "the gap between what today's models can do and what you see them doing is largely a harness gap."&lt;/p&gt;




&lt;h3&gt;
  
  
  Two boundaries of one word
&lt;/h3&gt;

&lt;p&gt;"Harness" gets used at different scopes, and it's worth separating them, because the rest of this part lives at the outermost layer. Birgitta Böckeler (writing on Martin Fowler's site) draws the distinction as concentric rings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User harness&lt;/strong&gt; &lt;em&gt;(you build this)&lt;/em&gt; — AGENTS.md, skills, hooks, custom linters, review agents, CI sensors. Wraps:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Builder harness&lt;/strong&gt; &lt;em&gt;(the agent vendor)&lt;/em&gt; — system prompt, tool set, retrieval. Wraps:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model&lt;/strong&gt; — the thing being harnessed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model is the core. Around it, the coding-agent vendor builds an inner "builder harness" (the system prompt, the tool set, the code-retrieval mechanism). And around &lt;em&gt;that&lt;/em&gt;, you — the user of a coding agent — build an outer "user harness" tailored to your codebase. Böckeler's articles, and most of this part, are about engineering that outermost ring. A well-built outer harness, she writes, does two things: it raises the odds the agent gets it right the first time, and it provides a feedback loop that self-corrects many issues before they ever reach a human — reducing review toil, raising quality, and wasting fewer tokens.&lt;/p&gt;




&lt;h3&gt;
  
  
  The mental model: guides and sensors, feedforward and feedback
&lt;/h3&gt;

&lt;p&gt;Böckeler's central contribution is a vocabulary borrowed, deliberately, from cybernetics — the study of control systems. A harness acts like a &lt;em&gt;governor&lt;/em&gt;, regulating the codebase toward a desired state using two kinds of control:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Guides (feedforward controls)&lt;/strong&gt; anticipate the agent's behavior and steer it &lt;em&gt;before&lt;/em&gt; it acts. They raise the probability of a good result on the first try. Examples: coding-convention docs, &lt;code&gt;AGENTS.md&lt;/code&gt;, skills, reference docs, how-to guides, codemods.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sensors (feedback controls)&lt;/strong&gt; observe &lt;em&gt;after&lt;/em&gt; the agent acts and help it self-correct. Examples: type checkers, linters, tests, static analysis, AI review agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A harness with only feedforward "encodes rules but never finds out whether they worked." A harness with only feedback "keeps repeating the same mistakes." You need both. And each kind of control comes in two execution flavors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Computational&lt;/strong&gt; — deterministic, fast, run by the CPU: tests, linters, type checkers, structural analysis. Milliseconds to seconds; reliable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inferential&lt;/strong&gt; — semantic, run by a model: AI code review, "LLM-as-judge." Slower, costlier, non-deterministic, but capable of judgment a linter can't make.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkehbfg73t8rsuoaovgya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkehbfg73t8rsuoaovgya.png" alt="The harness mental model as a 2x2: guides (feedforward) versus sensors (feedback), each split into computational (deterministic: linters, tests, type checks, codemods) and inferential (model-based: AGENTS.md, skills, AI code review, LLM-as-judge)." width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A particularly elegant idea in Böckeler's framing is that the best sensors produce feedback &lt;em&gt;optimized for a model to consume&lt;/em&gt; — a custom linter message that doesn't just say "error" but includes instructions for how to fix it. She calls this "a positive kind of prompt injection": the sensor speaks to the agent in terms the agent can act on.&lt;/p&gt;

&lt;h4&gt;
  
  
  The steering loop
&lt;/h4&gt;

&lt;p&gt;The human's job, in this picture, is to &lt;strong&gt;steer&lt;/strong&gt; by iterating on the harness. When a problem recurs, you improve the guides and sensors so it becomes less likely or impossible next time. And because coding agents themselves make it cheap to build controls, agents can help write the structural tests, draft rules from observed patterns, scaffold custom linters, or generate how-to guides from codebase archaeology. The harness becomes self-reinforcing.&lt;/p&gt;

&lt;h4&gt;
  
  
  Keep quality left
&lt;/h4&gt;

&lt;p&gt;Böckeler maps the controls onto the software lifecycle with a "shift left" principle: run the cheap, fast checks as early as possible (before commit, before integration), and reserve expensive ones (broad AI review, mutation testing) for later in the pipeline. The earlier an issue is caught, the cheaper it is to fix — a continuous-integration intuition, now applied to agent output.&lt;/p&gt;

&lt;h4&gt;
  
  
  What a harness regulates, and Ashby's Law
&lt;/h4&gt;

&lt;p&gt;Böckeler distinguishes three regulation targets: a &lt;strong&gt;maintainability harness&lt;/strong&gt; (internal code quality — the easiest, with mature tooling), an &lt;strong&gt;architecture-fitness harness&lt;/strong&gt; (performance, observability, and other architectural characteristics — Fowler's "fitness functions"), and a &lt;strong&gt;behaviour harness&lt;/strong&gt; (does the app actually do what's needed — "the elephant in the room," and still largely unsolved). She invokes Ashby's Law of Requisite Variety from cybernetics: a regulator must have at least as much variety as the system it governs. Since an LLM can produce almost anything, committing to a constrained architecture (a fixed topology, predictable structure) is a &lt;em&gt;variety-reduction&lt;/em&gt; move that makes a comprehensive harness achievable. This reappears, concretely, in OpenAI's practice below.&lt;/p&gt;




&lt;h3&gt;
  
  
  Sensors in practice
&lt;/h3&gt;

&lt;p&gt;Böckeler's hands-on follow-up walks through building maintainability sensors on a real TypeScript/Next.js app, and the findings sharpen the abstract model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Basic linting (ESLint)&lt;/strong&gt; caught the low-hanging AI failure modes — over-long functions and files, too many arguments, high cyclomatic complexity — but these rules weren't even on by default; she had to configure them, and notes that linters may evolve presets aimed at known agent failure modes. Crucially, she rewrote lint messages into &lt;em&gt;self-correction guidance&lt;/em&gt; (the "positive prompt injection"), even letting the agent suppress a warning with a written reason or slightly raise a threshold — keeping constraints visible and reviewable rather than forcing a binary comply-or-suppress choice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency rules (dependency-cruiser)&lt;/strong&gt; enforced layered module boundaries (e.g. "clients must not import from services"), with error messages that re-explain the layering so the agent self-corrects. She notes AI absorbed the tool's steep configuration cost almost entirely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coupling metrics&lt;/strong&gt; alone proved &lt;em&gt;not&lt;/em&gt; very useful to an AI — raw import/call graphs are noisy without semantic interpretation, and the model flagged legitimate patterns (a DI factory, a shared schema) as problems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI modularity review&lt;/strong&gt; (an inferential sensor, using a powerful prompt) was the standout — it found real, valid issues a human reviewer would care about: duplicated route code, inconsistent backend-calling patterns, a parameter object that should have been introduced (a change that had once touched 40+ files), auth logic sitting in the wrong place. This is "garbage collection" as a recurring inferential sensor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The test suite as a regression sensor&lt;/strong&gt;, with &lt;strong&gt;mutation testing&lt;/strong&gt; (Stryker) to catch the gap coverage misses: a file showed 100% statement coverage but had 13 surviving mutants and no real unit tests — coverage proved a line &lt;em&gt;ran&lt;/em&gt;, not that its behavior was &lt;em&gt;verified&lt;/em&gt;. As teams let AI write most tests, Böckeler argues mutation testing becomes crucial to monitor test effectiveness.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Her honest caveats are part of the contribution: computational sensors impressed her at the file/ function level but were noisy across module boundaries; she worried about &lt;em&gt;feedback overload&lt;/em&gt; sending an agent into over-engineered refactoring spirals; and she flagged emerging &lt;em&gt;conflicts between sensors&lt;/em&gt; (a max-lines rule pushing complexity into ever-longer component property chains). The sensors raised her trust and improved her review experience — but did not remove the human.&lt;/p&gt;




&lt;h3&gt;
  
  
  Industry at scale: three accounts
&lt;/h3&gt;

&lt;p&gt;What makes early 2026 the moment harness engineering "emerged" is that several organizations published detailed accounts of doing it at scale. Read together, they triangulate the same practices.&lt;/p&gt;

&lt;h4&gt;
  
  
  OpenAI: a million lines, zero hand-written
&lt;/h4&gt;

&lt;p&gt;OpenAI's "Harness engineering: leveraging Codex" (February 2026) describes building and shipping an internal product with &lt;strong&gt;zero lines of manually-written code&lt;/strong&gt; — every line written by Codex, in roughly one-tenth the time hand-coding would have taken. Starting from an empty repository in August 2025, a small team drove Codex to about &lt;strong&gt;a million lines of code and ~1,500 merged pull requests&lt;/strong&gt;, at an average of 3.5 PRs per engineer per day — throughput that &lt;em&gt;increased&lt;/em&gt; as the team grew. The governing philosophy: "Humans steer. Agents execute."&lt;/p&gt;

&lt;p&gt;The lessons are a catalogue of harness engineering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The role of the engineer changes.&lt;/strong&gt; Early progress was slow "not because Codex was incapable, but because the environment was underspecified." The job became: when the agent fails, ask "what capability is missing, and how do we make it both legible and enforceable for the agent?" — then have Codex build that capability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make the application legible to the agent.&lt;/strong&gt; They wired the Chrome DevTools Protocol and a local observability stack into the agent runtime so Codex could drive the UI, read logs (LogQL) and metrics (PromQL), reproduce bugs, and verify its own fixes. Prompts like "ensure service startup completes in under 800ms" became tractable. Single Codex runs sometimes worked for six-plus hours, often overnight.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repository knowledge as the system of record — a map, not a manual.&lt;/strong&gt; The "one big &lt;code&gt;AGENTS.md&lt;/code&gt;" approach failed predictably: it crowded out the task, became non-guidance ("when everything is important, nothing is"), rotted instantly, and resisted verification. The fix: treat &lt;code&gt;AGENTS.md&lt;/code&gt; as a ~100-line &lt;em&gt;table of contents&lt;/em&gt; pointing into a structured &lt;code&gt;docs/&lt;/code&gt; directory (design docs, execution plans, product specs, a quality-grade doc), enforced by linters and CI, with a recurring "doc-gardening" agent opening fix-up PRs for stale docs. They call this &lt;strong&gt;progressive disclosure&lt;/strong&gt;: start the agent with a small stable entry point, teach it where to look next.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent legibility is the goal.&lt;/strong&gt; "From the agent's point of view, anything it can't access in-context while running effectively doesn't exist." Knowledge in Slack threads or people's heads is invisible; it must be encoded into the repo as versioned artifacts. They favored "boring" technologies the model could fully model, and sometimes reimplemented small utilities rather than depend on opaque packages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enforce invariants, not implementations.&lt;/strong&gt; A rigid layered architecture (Types → Config → Repo → Service → Runtime → UI, with cross-cutting concerns entering through one explicit interface) enforced mechanically by custom, Codex-written linters and structural tests. "This is the kind of architecture you usually postpone until you have hundreds of engineers. With coding agents, it's an early prerequisite." (This is Ashby's Law in practice: constrain the variety to make the system governable.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Throughput changes the merge philosophy.&lt;/strong&gt; Minimal blocking merge gates, short-lived PRs, flakes handled with re-runs rather than indefinite blocking — "in a system where agent throughput far exceeds human attention, corrections are cheap, and waiting is expensive."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Entropy and garbage collection.&lt;/strong&gt; Agents replicate existing patterns, including bad ones, so the codebase drifts. The team initially spent every Friday — 20% of the week — cleaning "AI slop," which didn't scale. They replaced it with encoded "golden principles" and recurring background Codex tasks that scan for deviations and open targeted refactoring PRs, most auto-merged in under a minute. "Technical debt is like a high-interest loan": pay it down continuously.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Their concluding line is the thesis of this whole part: "Our most difficult challenges now center on designing environments, feedback loops, and control systems."&lt;/p&gt;

&lt;h4&gt;
  
  
  Stripe: one-shot agents at PR scale
&lt;/h4&gt;

&lt;p&gt;Stripe's "Minions" write-up (Alistair Gray, February 2026) describes homegrown coding agents responsible for &lt;strong&gt;more than a thousand merged pull requests per week&lt;/strong&gt; — humans review the code, but minions write it start to finish, with no human-written code.&lt;/p&gt;

&lt;p&gt;The context that makes this hard is specific. Stripe's codebase spans hundreds of millions of lines across a few large repos, mostly Ruby (not Rails) with Sorbet typing — "a relatively uncommon stack" full of homegrown libraries "natively unfamiliar to LLMs" — and it moves well over a trillion dollars of payment volume in production, under real regulatory and compliance constraints.&lt;/p&gt;

&lt;p&gt;Stripe's stated principle is the same one Osmani and Böckeler arrive at: "if it's good for humans, it's good for LLMs, too." Minions use the same developer tooling as human engineers. Several harness pieces stand out, each mapping onto the guides/sensors model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Devbox&lt;/strong&gt; — the sandbox. A minion run starts in an isolated developer environment, the same kind of machine Stripe engineers write code on, pre-warmed to spin up in about ten seconds with Stripe code and services pre-loaded. Because devboxes are isolated from production and the internet, minions run "without human permission checks," and this gives parallelization "without the overhead of something like git worktrees, which wouldn't scale at Stripe." This is the embodiment of Osmani's point that your dev environment &lt;em&gt;is&lt;/em&gt; your agent environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An opinionated orchestration loop.&lt;/strong&gt; The core agent loop runs on a fork of Block's open-source agent &lt;em&gt;goose&lt;/em&gt;, customized to "interleave agent loops and deterministic code — for git operations, linters, testing, and so on — so that minion runs mix the creativity of an agent with the assurance that they'll always complete Stripe-required steps like linters." In harness terms, the deterministic steps are computational guides and sensors; the agent loop is where inference happens. (Stripe's Part 2 names this structure "blueprints.")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rules and Toolshed&lt;/strong&gt; — the context. Minions read the &lt;em&gt;same&lt;/em&gt; coding-agent rule files that human-operated tools like Cursor and Claude Code do; because Stripe can't have many unconditional rules, almost all are "conditionally applied based on subdirectories" — the same scoping discipline Part 4 calls context curation. For everything not in the filesystem, minions use MCP, and Stripe built a central internal MCP server called &lt;strong&gt;Toolshed&lt;/strong&gt; hosting &lt;em&gt;more than 400 MCP tools&lt;/em&gt; across internal systems and SaaS platforms; minions and other agents connect to "configurable but curated subsets" rather than the full set. Stripe also "deterministically run[s] relevant MCP tools over likely-looking links before a minion run even starts, to better hydrate the context" — proactive context-loading as a harness step.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The feedback loop&lt;/strong&gt; — the sensors, "shifted left." Stripe's framing is explicit: any lint that would fail in CI should be "enforced in the IDE or on a git push, and presented to the engineer immediately." Concretely: (1) an automated local executable uses heuristics to select and run relevant lints on each git push in under five seconds; (2) if that passes, CI selectively runs tests from Stripe's battery of &lt;em&gt;over three million&lt;/em&gt;, auto-applying fixes where they exist and sending un-autofixable failures back to the minion; (3) a hard cap of &lt;strong&gt;at most two CI rounds&lt;/strong&gt; — push, fix once, and stop. Stripe is candid about why: CI runs "cost tokens, compute, and time," and there are "diminishing marginal returns for an LLM to run many rounds of a full CI loop." This is a deliberate, economically-reasoned answer to the infinite-retry failure mode.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The throughline is the same guides-and-sensors pattern as OpenAI's account — a different company, a different stack, at scale — and it doubles as a case study in shifting feedback left and curating context, the lessons of Parts 3 and 4 made industrial.&lt;/p&gt;

&lt;h4&gt;
  
  
  Anthropic: harnesses for long-running work
&lt;/h4&gt;

&lt;p&gt;Anthropic's "Effective harnesses for long-running agents" (November 2025) — which Osmani calls the best public breakdown of designing a harness for long-running work — tackles the problem of agents working across &lt;em&gt;many&lt;/em&gt; context windows, where each new session starts with no memory of the last (like engineers working shifts with amnesia between them). Their finding: compaction alone is insufficient. Even a frontier model in a loop fails to build a production app from a high-level prompt, in two characteristic ways — trying to one-shot the whole app (and running out of context mid-feature), or, later, looking around, seeing progress, and prematurely declaring the job done.&lt;/p&gt;

&lt;p&gt;Their two-part solution is pure harness design.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;initializer agent&lt;/strong&gt; runs once, on the first session: it sets up the environment — a structured JSON &lt;strong&gt;feature list&lt;/strong&gt; (200+ end-to-end features, all initially marked "failing"), an &lt;code&gt;init.sh&lt;/code&gt; script, a progress file, and an initial git commit.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;coding agent&lt;/strong&gt; then runs every subsequent session. It reads the progress file and git log to get oriented, runs a basic end-to-end test, works on exactly &lt;em&gt;one&lt;/em&gt; feature, verifies it with real browser automation (not just unit tests), and leaves the environment clean and committed for the next session.&lt;/p&gt;

&lt;p&gt;The feature list uses JSON specifically because the model is less likely to inappropriately edit it than Markdown — with strongly-worded instructions that removing or editing tests is "unacceptable." It's the same "leave clear artifacts for the next shift" discipline OpenAI encoded in its docs directory: externalized memory as a harness component.&lt;/p&gt;

&lt;h4&gt;
  
  
  A fourth account: Google productizes the harness
&lt;/h4&gt;

&lt;p&gt;By mid-2026, Google had taken the harness concept and turned it into product surface. Its agent-first development platform, &lt;strong&gt;Antigravity&lt;/strong&gt;, ships a &lt;strong&gt;Managed Agents API&lt;/strong&gt; whose framing is explicitly harness-shaped: in Google Cloud's own words, "the agent harness runs on our servers, and each agent has its own ephemeral sandbox provisioned with your skills, Model Context Protocol (MCP) servers, and server-side tools." A single API call provisions a sandboxed agent that can write, execute, and iterate on code; Antigravity itself can spin subagents from one prompt and run multi-agent orchestration in parallel. This is the harness — sandbox, tools, skills, subagents — sold as managed infrastructure rather than assembled by hand, roughly the "Harness-as-a-Service" direction this part's synthesis anticipates.&lt;/p&gt;

&lt;p&gt;Google DeepMind also published a small but instructive experiment on one harness component in isolation: the &lt;strong&gt;agent skill&lt;/strong&gt;. The problem it targets is universal — a model's training data goes stale, so it doesn't know about new SDK versions or shifted best practices.&lt;/p&gt;

&lt;p&gt;They built a &lt;code&gt;gemini-api-dev&lt;/code&gt; skill and an &lt;strong&gt;evaluation harness of 117 prompts&lt;/strong&gt; generating Python/TypeScript against the Gemini SDKs. The result was a clean demonstration of how much a single guide can matter: the skill lifted pass rates dramatically from low baselines (Gemini 3.1 Pro from 28%; newer 3.0-series models from as low as 6.8%), and helped across almost all task categories — a concrete, measured version of the "feedforward guide" idea.&lt;/p&gt;

&lt;p&gt;Notably, DeepMind also flagged the maintenance problem Fowler raises: skills have "no great update story," so stale skills could eventually "do more harm than good" — the same drift-and-versioning worry that haunts every guide.&lt;/p&gt;




&lt;h3&gt;
  
  
  The ratchet, and why harnesses don't shrink
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu3nfyeab5ao870vf5enj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu3nfyeab5ao870vf5enj.png" alt="The ratchet: an agent makes a mistake, which becomes a rule in AGENTS.md, then a hook that blocks it, then a reviewer subagent that flags it — until the mistake can't recur. Every constraint traces to a specific failure." width="799" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Two ideas from Osmani's synthesis tie the practice together and point forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The ratchet: every mistake becomes a rule.&lt;/strong&gt; The defining habit of harness engineering is treating agent mistakes as permanent signals, not one-off bad runs. The agent commits a commented-out test; the next &lt;code&gt;AGENTS.md&lt;/code&gt; says never do that, the next pre-commit hook greps for &lt;code&gt;.skip(&lt;/code&gt;, the next reviewer subagent flags it as a blocker.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every line in a good &lt;code&gt;AGENTS.md&lt;/code&gt; should trace back to a specific thing that once went wrong.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You add constraints only after a real failure, and remove them only when a more capable model makes them redundant. This is also why a harness can't be downloaded: "the right harness for your codebase is shaped by your failure history." (Osmani and HumanLayer both stress the corollary: keep &lt;code&gt;AGENTS.md&lt;/code&gt; short — HumanLayer keeps theirs under 60 lines — because every line competes for the model's attention. A pilot's checklist, not a style guide. This is the same lesson OpenAI learned the hard way with its monolithic-manual failure.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Harnesses don't shrink, they move.&lt;/strong&gt; The naive expectation is that better models make harnesses obsolete. Osmani, drawing on Anthropic, argues the opposite: as models improve, the useful harness work &lt;em&gt;moves&lt;/em&gt; rather than disappearing.&lt;/p&gt;

&lt;p&gt;When Opus 4.6 largely killed the "context-anxiety" failure mode (earlier models wrapping up prematurely as they neared a perceived context limit), a whole class of anxiety-mitigation scaffolding became dead code. But the higher ceiling brought &lt;em&gt;new&lt;/em&gt; failure modes — multi-day memory, coordinating several specialized agents, judging design quality in generated UIs — that need &lt;em&gt;new&lt;/em&gt; scaffolding.&lt;/p&gt;

&lt;p&gt;As Anthropic puts it: "every component in a harness encodes an assumption about what the model can't do on its own." When the model gets better at something, that component comes out. When it unlocks something new, new scaffolding goes in to reach the new ceiling.&lt;/p&gt;

&lt;p&gt;There's a feedback loop underneath this, which Trivedy names: today's agent products are post-trained &lt;em&gt;with harnesses in the loop&lt;/em&gt;, so models get specifically better at the actions harness designers built around — filesystem ops, bash, planning, subagent dispatch — which is why the same model can feel different in different harnesses, and why a harness is "a living system, not a config file you set up once." Osmani also relays Trivedy's &lt;strong&gt;Harness-as-a-Service&lt;/strong&gt; framing: the industry is shifting from building on LLM APIs (which return a completion) to building on harness APIs / agent SDKs (which return a &lt;em&gt;runtime&lt;/em&gt; — the loop, tools, context management, hooks, and sandbox out of the box).&lt;/p&gt;




&lt;h3&gt;
  
  
  Where this leaves us
&lt;/h3&gt;

&lt;p&gt;By early 2026, harness engineering had a definition (Agent = Model + Harness), a mental model (guides and sensors, feedforward and feedback, computational and inferential), hands-on sensor practice (Böckeler), and four detailed industrial accounts (OpenAI, Stripe, Google, Anthropic) all converging on the same conclusion: &lt;strong&gt;the hard, valuable work is designing the environment and the feedback loops, not picking the model.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pick the best model and you've done the easy part. The work is everything you build around it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But notice what keeps recurring in every account: the &lt;em&gt;loop&lt;/em&gt;. Anthropic's session-to-session cycle, OpenAI's six-hour autonomous runs, Stripe's one-shot end-to-end minions, the ratchet that re-injects fixes. The harness is the static structure; the loop is what runs inside it. And as Part 6 and Part 7 show, two further things were happening in parallel — a reckoning with the &lt;em&gt;cost&lt;/em&gt; of all those hand-written prompts and rules (prompt debt), and the elevation of the loop itself into the primary object of design (loop engineering).&lt;/p&gt;




&lt;h3&gt;
  
  
  Key sources for Part 5
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Simon Willison, &lt;em&gt;Designing agentic loops&lt;/em&gt; (Sept 2025) and &lt;em&gt;Agentic Engineering Patterns&lt;/em&gt; (2025–26) — "an LLM agent runs tools in a loop to achieve a goal"; the definition of agentic engineering (generate &lt;em&gt;and&lt;/em&gt; execute code); agent safety / YOLO mode.&lt;/li&gt;
&lt;li&gt;Viv Trivedy, &lt;em&gt;Anatomy of an Agent Harness&lt;/em&gt; / "Agent = Model + Harness"; HumanLayer, "skill issue" harness framing; Terminal-Bench Top 30 → Top 5 by harness change. [Via Osmani, with attribution and quotation.]&lt;/li&gt;
&lt;li&gt;Birgitta Böckeler (martinfowler.com), &lt;em&gt;Harness engineering for coding agent users&lt;/em&gt; (Apr 2026) — guides/sensors, feedforward/feedback, computational/inferential, the steering loop, "keep quality left," regulation categories, Ashby's Law, harness templates.&lt;/li&gt;
&lt;li&gt;Birgitta Böckeler, &lt;em&gt;Maintainability sensors for coding agents&lt;/em&gt; (May 2026) — ESLint, dependency-cruiser, coupling metrics, AI modularity review, mutation testing; self-correction guidance; honest caveats.&lt;/li&gt;
&lt;li&gt;OpenAI (Ryan Lopopolo), &lt;em&gt;Harness engineering: leveraging Codex in an agent-first world&lt;/em&gt; (Feb 2026) — 1M LOC / 0 hand-written; AGENTS.md as table of contents; agent legibility; invariant enforcement; garbage collection; "designing environments, feedback loops, control systems."&lt;/li&gt;
&lt;li&gt;Stripe (Alistair Gray), &lt;em&gt;Minions: Stripe's one-shot, end-to-end coding agents&lt;/em&gt;, Parts 1 &amp;amp; 2 (Feb 2026) — 1,000+ PRs/week, no human-written code; Devbox (isolated ~10s dev env, parallel without git worktrees); core loop a fork of Block's &lt;em&gt;goose&lt;/em&gt; interleaving agent + deterministic code; subdirectory-scoped rule files shared with Cursor/Claude Code; MCP + Toolshed (400+ tools, curated subsets); shift-feedback-left with local lints &amp;lt;5s, selective CI from 3M+ tests, at most two CI rounds. [Part 1 verified from primary text; "blueprints" framing is from Part 2.]&lt;/li&gt;
&lt;li&gt;Anthropic, &lt;em&gt;Effective harnesses for long-running agents&lt;/em&gt; (Nov 2025) — initializer vs coding agent; feature-list JSON; progress files; why compaction alone fails; end-to-end self- verification.&lt;/li&gt;
&lt;li&gt;Addy Osmani, &lt;em&gt;Agent Harness Engineering&lt;/em&gt; (Apr 2026) — the synthesis: harness anatomy, the "skill issue" reframe, the ratchet, harnesses move rather than shrink, the model-harness training loop, Harness-as-a-Service.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Next up · Part 6 — Prompt Debt &amp;amp; the Limits of Natural Language:&lt;/strong&gt; why the brittleness prompt engineering hid finally got a name and a bill, and the proposed cure: specify with measurements, and stop writing prompts by hand.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>softwareengineering</category>
      <category>codex</category>
    </item>
    <item>
      <title>The Rise of Agentic Engineering — Part 4: Fixing Context &amp; Multi-Agent Systems</title>
      <dc:creator>Ramin Jafary</dc:creator>
      <pubDate>Thu, 25 Jun 2026 06:51:26 +0000</pubDate>
      <link>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-4-fixing-context-multi-agent-systems-51ej</link>
      <guid>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-4-fixing-context-multi-agent-systems-51ej</guid>
      <description>&lt;h2&gt;
  
  
  Fixing Context &amp;amp; Multi-Agent Systems
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Part 4 of a chronological survey of the craft around large language models.&lt;/em&gt; Part 3 named the field and catalogued the four ways contexts fail. This installment covers the response: &lt;strong&gt;a toolkit for repairing a context — and how the most powerful fix became an architecture.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Breunig's six tactics (RAG, tool loadout, quarantine, pruning, summarization, offloading) all serve one rule: &lt;em&gt;context is not free.&lt;/em&gt; The strongest, isolating context across separate agents, grew into multi-agent systems — Anthropic's research setup beat a single agent by &lt;strong&gt;90.2%&lt;/strong&gt;. The catch, foreshadowing Part 7: it burned ~15× the tokens. Multi-agent isn't magic; it's spending enough to brute-force the problem.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  From diagnosis to treatment
&lt;/h3&gt;

&lt;p&gt;Once the failure modes had names, the obvious next question was what to do about them. Drew Breunig's follow-up, &lt;em&gt;How to Fix Your Context&lt;/em&gt;, organized the scattered remedies into six tactics. His framing throughout was a return to an old programming adage — "garbage in, garbage out" — and a single governing principle: &lt;strong&gt;context is not free.&lt;/strong&gt; Every token in the context influences the response, for better or worse, so the work is information management. As Karpathy put it, the job is to "pack the context windows just right."&lt;/p&gt;

&lt;p&gt;The six tactics:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6om8dfsqhvskq3wqss4y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6om8dfsqhvskq3wqss4y.png" alt="Six tactics for fixing your context: RAG, Tool Loadout, Context Quarantine, Context Pruning, Summarization, and Context Offloading, each with a one-line description." width="799" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each addresses one or more of the failure modes from Part 3. We'll take them in turn, then follow the third one — quarantine — into the larger story of multi-agent systems.&lt;/p&gt;




&lt;h3&gt;
  
  
  RAG, reconsidered
&lt;/h3&gt;

&lt;p&gt;Part 2 covered RAG's near-death experience during the context-window arms race. By 2025 its role had clarified: not a workaround for small windows, but a permanent technique for keeping the signal-to-noise ratio of a context high. Breunig's treatment is brief precisely because the point is settled — "it's very much alive" — and the reason is exactly the Part 2 finding: if you treat the context like a junk drawer, the junk influences the response. RAG is the discipline of &lt;em&gt;not&lt;/em&gt; putting the whole junk drawer in.&lt;/p&gt;




&lt;h3&gt;
  
  
  Tool Loadout: retrieving the right tools
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmepefxwaohtqdbtdimc8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmepefxwaohtqdbtdimc8.png" alt="Tool loadout: retrieving only the relevant tool definitions (RAG-MCP) lifts tool-selection accuracy from 13.6% to 43.1% — a 3.2x improvement — while cutting prompt tokens by more than half." width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Loadout" is a gaming term — the specific set of weapons and equipment you select before a match, tailored to the situation. Applied to agents, it means selecting only the tool definitions relevant to the current task, rather than exposing every tool at once. This directly targets Context Confusion (Part 3): more tools measurably degrade performance.&lt;/p&gt;

&lt;p&gt;The cleanest treatment is RAG-MCP (Tiantian Gan and Qiyao Sun, 2025), which applies retrieval to the tools themselves. The motivating problem is "prompt bloat": as the Model Context Protocol ecosystem expanded rapidly after Anthropic's late-2024 release of MCP — with thousands of server implementations appearing across the community — agents were increasingly drowning in tool descriptions. RAG-MCP stores tool descriptions in an external index and, for each query, semantically retrieves only the most relevant ones before the LLM is ever engaged; only those selected descriptions enter the prompt.&lt;/p&gt;

&lt;p&gt;The results quantify how much the bloat was costing. In an MCP stress test varying the tool pool from 1 up to 11,100 servers, RAG-MCP cut prompt tokens by over 50% (49.2%) and &lt;strong&gt;more than tripled tool-selection accuracy — 43.13% versus a 13.62% baseline.&lt;/strong&gt; Breunig adds the threshold detail from the paper's analysis: selecting tools becomes critical past about 30 tools, where descriptions begin to overlap and confuse the model; beyond roughly 100 tools, failure was nearly guaranteed without retrieval.&lt;/p&gt;

&lt;p&gt;For smaller models the problem starts even earlier. The "Less is More" / GeoEngine study from Part 3 — where Llama 3.1 8B failed with 46 tools but succeeded with 19 — built a dynamic, fine-tuning-free tool selector that reduces the tool set to a smaller, more relevant loadout before the model call. On the GeoEngine benchmark this raised Llama 3.1 8B's success rate to about 56% (with tool-selection accuracy improving similarly). The paper also noted side benefits that matter at the edge (running models on phones or laptops): execution time fell by up to roughly 40% and power consumption by around 12%. Smaller contexts are not just more accurate; they are cheaper and faster.&lt;/p&gt;




&lt;h3&gt;
  
  
  Context Quarantine: the bridge to multi-agent systems
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Context Quarantine is the act of isolating contexts in their own dedicated threads, each used separately by one or more LLMs.&lt;/em&gt; This is the tactic that turned out to be far more than a tactic.&lt;/p&gt;

&lt;p&gt;The logic is simple. We get better results when contexts aren't too long and don't carry irrelevant content (Parts 2 and 3). One way to guarantee that is to break a task into smaller, isolated jobs, each with its own clean context. And once you do that, you are no longer fixing a single context — you are designing a &lt;em&gt;system of agents&lt;/em&gt;, each with its own context, tools, and instructions. The fix becomes an architecture. That architecture is the subject of the rest of this part.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quarantine a context hard enough and it stops being a tactic. It becomes an architecture.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Context Pruning, Summarization, and Offloading
&lt;/h3&gt;

&lt;p&gt;The remaining three tactics all manage the context as it accumulates over an agent's run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pruning&lt;/strong&gt; — removing irrelevant or no-longer-needed information. Breunig points to Provence (2025), "an efficient and robust context pruner for question answering" — a small, fast DeBERTa-based model that, given a question, edits a document down to only the relevant portions. In his test on a Wikipedia article it cut roughly 95% of the content while preserving exactly what mattered. Pruning is a strong argument, he notes, for keeping a &lt;em&gt;structured&lt;/em&gt; version of your context (in a dictionary or similar) from which you compile the prompt before each call — so you can prune the document or history sections while protecting the core instructions and goals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summarization&lt;/strong&gt; — compressing accrued context into a condensed summary. This began as a way to stay under context limits (the familiar "ask the chatbot to recap, then paste into a fresh thread"), but acquired a second rationale once Context Distraction was understood: even when you &lt;em&gt;could&lt;/em&gt; keep everything, you often shouldn't, because length itself degrades reasoning past the distraction ceiling (the Gemini Pokémon agent's ~100k-token threshold from Part 3). Breunig's practical advice is to make summarization its own dedicated, evaluated step, since deciding what to preserve is hard and worth optimizing directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offloading&lt;/strong&gt; — storing information outside the context, via a tool that holds it for later reference. Breunig's favorite example, "so simple you don't believe it will work," is Anthropic's "think" tool — effectively a scratchpad where the model writes notes that stay out of the main context but remain available.&lt;/p&gt;

&lt;p&gt;Anthropic reported that pairing the think tool with a domain-specific prompt yielded &lt;strong&gt;up to a 54% improvement&lt;/strong&gt; on a specialized-agent benchmark. It helps most in three situations: analyzing tool outputs before acting (with room to backtrack), navigating policy-heavy environments that need compliance checks, and sequential decision-making where each step builds on the last and mistakes are costly.&lt;/p&gt;

&lt;p&gt;(Breunig's aside — that the tool would be clearer if it were simply called &lt;code&gt;scratchpad&lt;/code&gt; — is a nice illustration of the series' recurring theme that naming shapes understanding.)&lt;/p&gt;




&lt;h3&gt;
  
  
  Context quarantine becomes architecture: Anthropic's multi-agent research system
&lt;/h3&gt;

&lt;p&gt;The single most consequential elaboration of these ideas in 2025 was Anthropic's write-up of how it built the multi-agent research system behind Claude's Research feature (June 2025). It is the moment context quarantine stops being a tactic and becomes a design pattern with its own engineering discipline.&lt;/p&gt;

&lt;p&gt;The system uses an &lt;strong&gt;orchestrator-worker&lt;/strong&gt; pattern. A lead agent analyzes the user's query, develops a strategy, and spawns specialized subagents that explore different aspects of the question &lt;em&gt;in parallel, each in its own context window.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fidgn65pczy2g81qqf3kz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fidgn65pczy2g81qqf3kz.png" alt="Orchestrator-worker architecture: a user query goes to a lead agent that plans and delegates to subagents, each with its own context window, running in parallel; findings flow back through memory and a citation agent to the final answer." width="799" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anthropic's own framing connects this directly to the context-engineering ideas of the era:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The essence of search is compression: distilling insights from a vast corpus. Subagents&lt;br&gt;
facilitate compression by operating in parallel with their own context windows, exploring&lt;br&gt;
different aspects of the question simultaneously before condensing the most important tokens&lt;br&gt;
for the lead research agent. Each subagent also provides separation of concerns — distinct&lt;br&gt;
tools, prompts, and exploration trajectories — which reduces path dependency and enables&lt;br&gt;
thorough, independent investigations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In other words: each subagent is a context quarantine. Its window stays clean and focused; it distills its findings into a compact summary; and only that summary returns to the lead agent — which is itself context offloading and summarization operating at the level of agents rather than strings.&lt;/p&gt;

&lt;p&gt;The payoff was large. On Anthropic's internal research eval, a multi-agent system with Claude Opus 4 as lead and Claude Sonnet 4 subagents &lt;strong&gt;outperformed single-agent Claude Opus 4 by 90.2%.&lt;/strong&gt; Their example: asked to identify all the board members of the companies in the IT S&amp;amp;P 500, the multi-agent system decomposed the task across subagents and found the answer, while the single agent ground through slow sequential searches and failed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fawm7yfeng939sb7f6xxs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fawm7yfeng939sb7f6xxs.png" alt="The multi-agent uplift: on Anthropic's internal research eval, a multi-agent system (Opus 4 lead with Sonnet 4 subagents) outperformed a single-agent Opus 4 by 90.2%." width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  The economics, stated plainly
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm27amga3wafy86n0uu7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm27amga3wafy86n0uu7y.png" alt="Token economics: a single agent uses about 4x the tokens of a chat interaction, and a multi-agent system about 15x — which is why multi-agent only pays off for high-value, parallelizable tasks." width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anthropic was equally candid about the cost, which becomes a recurring theme in later parts of this series. In their data, agents use about 4× more tokens than chat interactions, and multi-agent systems about &lt;strong&gt;15× more tokens than chat.&lt;/strong&gt; Three factors explained 95% of the performance variance on the BrowseComp evaluation, with token usage alone explaining 80%. The blunt conclusion: multi-agent systems "work mainly because they help spend enough tokens to solve the problem," so they only make economic sense for high-value tasks that genuinely parallelize. They explicitly flagged that most &lt;em&gt;coding&lt;/em&gt; tasks — with fewer truly independent subtasks and heavy shared context — were a worse fit than research at the time. (Part 7 returns to exactly this tension when coding agents start running many-in-parallel anyway.)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The +90% came at ~15× the tokens. Multi-agent isn't magic — it's &lt;em&gt;spending&lt;/em&gt; enough to brute-force the problem.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Lessons that recur
&lt;/h4&gt;

&lt;p&gt;Several findings from this post echo forward through the series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompt the orchestrator to delegate well.&lt;/strong&gt; Vague subagent instructions ("research the semiconductor shortage") caused duplicated work and gaps; subagents need an objective, an output format, tool guidance, and clear boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scale effort to complexity.&lt;/strong&gt; Early agents spawned 50 subagents for simple queries; the fix was embedding explicit scaling heuristics in prompts (simple fact-finding: one agent, 3–10 calls; complex research: 10+ subagents).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Let agents improve themselves.&lt;/strong&gt; Given a prompt and a failure mode, Claude 4 could diagnose and suggest fixes; a tool-testing agent that rewrote a flawed tool's description cut task time 40% for later agents. (This self-improvement thread becomes its own topic later.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM-as-judge, plus human eyes.&lt;/strong&gt; Free-form research output was best graded by a single LLM-judge call against a rubric (factual accuracy, citation accuracy, completeness, source quality, tool efficiency) — but humans still caught what automation missed, like a bias toward SEO-optimized content farms over authoritative sources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Errors compound.&lt;/strong&gt; In agentic systems, "minor issues for traditional software can derail agents entirely"; one wrong step sends an agent down a divergent trajectory. This motivated durable execution, checkpoints, and full production tracing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  The same pattern, arrived at independently: Microsoft's Magentic-One
&lt;/h4&gt;

&lt;p&gt;Anthropic was not alone in landing on the orchestrator-worker shape. A month before, in November 2024, Microsoft Research released &lt;em&gt;Magentic-One&lt;/em&gt; (Fourney et al., arXiv:2411.04468), a generalist multi-agent system built on the open-source AutoGen framework.&lt;/p&gt;

&lt;p&gt;Its architecture is strikingly parallel. A lead &lt;strong&gt;Orchestrator&lt;/strong&gt; agent plans, tracks progress with a "ledger," and re-plans to recover from errors — directing four specialists: a &lt;strong&gt;WebSurfer&lt;/strong&gt; (browser), a &lt;strong&gt;FileSurfer&lt;/strong&gt; (local files), a &lt;strong&gt;Coder&lt;/strong&gt; (writes code), and a &lt;strong&gt;ComputerTerminal&lt;/strong&gt; (executes it). The Orchestrator runs two loops: an outer one that maintains the task ledger, an inner one that assigns the next action.&lt;/p&gt;

&lt;p&gt;The result: Magentic-One reached statistically competitive performance with the state of the art on three demanding agentic benchmarks (GAIA, AssistantBench, WebArena) without architecture changes.&lt;/p&gt;

&lt;p&gt;That two major labs &lt;em&gt;independently&lt;/em&gt; converged on "a planning lead agent directing specialized workers with isolated tools" is a strong signal — the pattern is a genuine structural answer to context management, not one company's idiosyncrasy.&lt;/p&gt;

&lt;p&gt;That earlier point — that small errors compound catastrophically across a long agent run — is the seed of everything Parts 5 through 7 call harness and loop engineering. If a stray token or a single wrong turn can derail an agent (Part 3's "lost in conversation"; this part's compounding errors), then making agents reliable requires building structure &lt;em&gt;around&lt;/em&gt; the model: guides, sensors, feedback loops, and recovery paths.&lt;/p&gt;




&lt;h3&gt;
  
  
  Programming the context, not writing it
&lt;/h3&gt;

&lt;p&gt;One more thread from this era points directly at Part 6. Breunig argued that the whole list of tactics is an argument for &lt;em&gt;programming&lt;/em&gt; your contexts rather than hand-writing them — assembling each prompt from a structured representation, with dedicated, separately-evaluated stages for summarization, pruning, and tool selection. The same logic later shows up in research on agents that manage their own context autonomously — for example, 2026 work on "self-compacting" agents that decide for themselves when and what to summarize, reportedly improving task performance while cutting token costs by a third to two-thirds. The trajectory is consistent: from a human choosing what goes in the window, toward systems that make that choice programmatically.&lt;/p&gt;

&lt;p&gt;Part 5 picks up the compounding-error problem head-on. As coding agents went mainstream in early 2026, the field's attention widened from the &lt;em&gt;context&lt;/em&gt; you feed a model to the entire &lt;em&gt;harness&lt;/em&gt; you build around it — and a new term arrived to name that work.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key sources for Part 4
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Drew Breunig, &lt;em&gt;How to Fix Your Context&lt;/em&gt; (2025) — the six tactics (RAG, tool loadout, context quarantine, pruning, summarization, offloading); "context is not free."&lt;/li&gt;
&lt;li&gt;Tiantian Gan &amp;amp; Qiyao Sun, &lt;em&gt;RAG-MCP: Mitigating Prompt Bloat in LLM Tool Selection via Retrieval-Augmented Generation&lt;/em&gt; (arXiv:2505.03275, 2025) — semantic tool retrieval; &amp;gt;50% token reduction; 43.13% vs 13.62% selection accuracy; MCP stress test to 11,100 servers.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Less is More&lt;/em&gt; / GeoEngine tool study (arXiv:2411.15399) — fine-tuning-free dynamic tool selection; Llama 3.1 8B success rate ~56% on GeoEngine; ~40% execution-time and ~12% power reduction on edge hardware (Jetson AGX Orin).&lt;/li&gt;
&lt;li&gt;Provence context pruner (arXiv:2501.16214, 2025) — fast QA-oriented pruning; ~95% content cut while preserving relevance. [Cited via Breunig.]&lt;/li&gt;
&lt;li&gt;Anthropic, &lt;em&gt;The "think" tool&lt;/em&gt; (2025) — context offloading / scratchpad; up to 54% improvement on a specialized-agent benchmark. [Cited via Breunig.]&lt;/li&gt;
&lt;li&gt;Anthropic, &lt;em&gt;How we built our multi-agent research system&lt;/em&gt; (2025) — orchestrator-worker architecture; +90.2% over single-agent on internal eval; 4×/15× token economics; delegation, effort-scaling, self-improvement, LLM-as-judge, compounding errors.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Self-Compacting Language Model Agents&lt;/em&gt; (arXiv:2606.23525, 2026) — autonomous context management; reported 33–67% token savings. [Forward-looking reference.]&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Next up · Part 5 — Harness Engineering Emerges:&lt;/strong&gt; "Agent = Model + Harness," guides and sensors, and what it looks like when whole companies build software with agents writing every line.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
      <category>multiagent</category>
    </item>
    <item>
      <title>The Rise of Agentic Engineering — Part 3: Context Engineering Is Named</title>
      <dc:creator>Ramin Jafary</dc:creator>
      <pubDate>Thu, 25 Jun 2026 06:48:21 +0000</pubDate>
      <link>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-3-context-engineering-is-named-32j1</link>
      <guid>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-3-context-engineering-is-named-32j1</guid>
      <description>&lt;h2&gt;
  
  
  Context Engineering Is Named
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Part 3 of a chronological survey of the craft around large language models.&lt;/em&gt; Part 2 ended on a hard-won realization: capacity alone doesn't solve the information problem. In mid-2025 that realization got &lt;strong&gt;a name, a taxonomy, and a community.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Karpathy coined &lt;em&gt;context engineering&lt;/em&gt;; Breunig catalogued the &lt;strong&gt;four ways contexts fail&lt;/strong&gt; (poisoning, distraction, confusion, clash). A Microsoft/Salesforce study showed the same information spread across turns costs ~39% — purely from structure, not lost data. And "CatAttack" showed a single irrelevant sentence ("cats sleep most of their lives") can raise a model's error rate by more than 300%. Keeping the context clean isn't housekeeping; it's load-bearing.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  A word arrives
&lt;/h3&gt;

&lt;p&gt;Terms in this field tend to crystallize suddenly, around a single well-placed endorsement. "Context engineering" crystallized in June 2025, when Andrej Karpathy weighed in on a debate that had been simmering since Drew Breunig and others started writing about how long contexts fail. Karpathy's formulation became the standard definition:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;People associate prompts with short task descriptions you'd give an LLM in your day-to-day&lt;br&gt;
use. When in every industrial-strength LLM app, context engineering is the delicate art and&lt;br&gt;
science of filling the context window with just the right information for the next step.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Breunig, who had been circling the same idea, described the moment of recognition: while writing about long-context failures he kept "[writing] the word 'prompt' somewhere before quickly replacing it with 'context.' When prompts are part of software, they're context." The distinction he drew is worth stating precisely, because it explains why a new word was needed rather than just a refinement of the old one:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Context&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Typical author&lt;/td&gt;
&lt;td&gt;a person&lt;/td&gt;
&lt;td&gt;a system/program&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lifespan&lt;/td&gt;
&lt;td&gt;disposable, one-off&lt;/td&gt;
&lt;td&gt;evolving, curated, maintained&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setting&lt;/td&gt;
&lt;td&gt;chatbot, conversational&lt;/td&gt;
&lt;td&gt;application, industrial-strength&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unit of work&lt;/td&gt;
&lt;td&gt;a request&lt;/td&gt;
&lt;td&gt;the entire informational environment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Breunig was careful that neither is "better" — they are &lt;em&gt;different&lt;/em&gt;, suited to different work. Prompt engineering describes a human writing a request to a chatbot. Context engineering describes a &lt;em&gt;system&lt;/em&gt; assembling, for each model call, the right tools, documents, history, and instructions.&lt;/p&gt;

&lt;p&gt;The drift from one to the other had been happening for over a year, silently, as builders moved from chat interfaces to applications and agents. The term simply gave the drift a name — and, Breunig argued, that naming was itself consequential.&lt;/p&gt;

&lt;p&gt;Borrowing a Stewart Brand line he returns to often — "look for where language is being invented and lawyers are congregating" — he made the case that a successful buzzword isn't invented from nothing. It "identif[ies] common experiences which we all have," and crystallizing those into a shared word "create[s] community, change[s] culture, and influence[s] our work."&lt;/p&gt;

&lt;p&gt;The signal it was real: within a month, search volume for "context engineering" had climbed to over a quarter of that for "prompt engineering" — the sustained kind of rise that marks a genuine latent need, not a marketing spike.&lt;/p&gt;

&lt;p&gt;Skeptics called it a rebrand — one Hacker News commenter dismissed it as "a month-long skill, after which it won't be a thing anymore." The rest of this series is, in part, the story of why that skepticism was misplaced: the work the term named has only grown more central.&lt;/p&gt;




&lt;h3&gt;
  
  
  The taxonomy: four ways contexts fail
&lt;/h3&gt;

&lt;p&gt;The intellectual core of the moment was Breunig's classification of &lt;em&gt;how&lt;/em&gt; contexts fail. Before this, "the model got confused by a long context" was a vague complaint. Breunig split it into four distinct, named failure modes — and the precision is what let people diagnose and fix specific problems rather than just throwing tokens at the wall.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgk26wiuadicql16w38z7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgk26wiuadicql16w38z7.png" alt="The four ways a context fails: a 2x2 of Context Poisoning, Context Distraction, Context Confusion, and Context Clash, each with a one-line definition." width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Poisoning&lt;/strong&gt; — &lt;em&gt;when a hallucination or other error makes it into the context, where it is repeatedly referenced.&lt;/em&gt; Breunig's prime example came from Google DeepMind's own Gemini 2.5 technical report, describing an agent playing Pokémon. When the agent hallucinated and that false belief entered the "goals" or "summary" portions of its context, it would become "fixated on achieving impossible or irrelevant goals," developing nonsensical strategies that could "take a very long time to undo." The error, once written into the context, kept getting read back and reinforced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Distraction&lt;/strong&gt; — &lt;em&gt;when a context grows so long that the model over-focuses on the context, neglecting what it learned during training.&lt;/em&gt; The same Gemini Pokémon report supplied the evidence: past roughly 100,000 tokens, the agent "showed a tendency toward favoring repeating actions from its vast history rather than synthesizing novel plans." Instead of drawing on what it learned in training to devise new strategies, it parroted its own past behavior. For smaller models the distraction ceiling is far lower — Part 2's Databricks finding (degradation around 32k for Llama-3.1-405B) is the same phenomenon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Confusion&lt;/strong&gt; — &lt;em&gt;when superfluous content in the context is used by the model to generate a low-quality response.&lt;/em&gt; This is the failure mode behind the over-eager "connect every tool via MCP" dream.&lt;/p&gt;

&lt;p&gt;Evidence came from the Berkeley Function-Calling Leaderboard: &lt;em&gt;every&lt;/em&gt; model performs worse when handed more than one tool, and all models will sometimes call tools that are completely irrelevant. The benchmark even includes cases where the correct move is &lt;em&gt;no&lt;/em&gt; tool call at all — and models fail them.&lt;/p&gt;

&lt;p&gt;A vivid case study: researchers gave a quantized Llama 3.1 8B a query with all 46 tools from the GeoEngine benchmark, and it failed — despite the context fitting well within the window. Cut to 19 tools, and it succeeded. The problem, in Breunig's words: "if you put something in the context &lt;em&gt;the model has to pay attention to it.&lt;/em&gt;" &lt;strong&gt;Irrelevant tokens aren't free; they're actively consulted.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Clash&lt;/strong&gt; — &lt;em&gt;when you accrue new information and tools that conflict with other information in the context.&lt;/em&gt; This is the most insidious mode, and it got the most rigorous treatment, in a Microsoft Research and Salesforce study we'll examine on its own below.&lt;/p&gt;




&lt;h3&gt;
  
  
  The centerpiece study: getting "lost in conversation"
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdvpmwjralnmhrjqupq3k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdvpmwjralnmhrjqupq3k.png" alt="Same information, delivered across turns: a 39% collapse. Full (all info upfront) = 100; Concat (same info, one turn) = 95.1; Sharded (info revealed across turns) = 61, a 39% average drop." width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Context Clash failure mode was documented in detail by "LLMs Get Lost in Multi-Turn Conversation" (Microsoft Research and Salesforce, May 2025) — a paper worth dwelling on because its experimental design isolates the effect so cleanly.&lt;/p&gt;

&lt;p&gt;The intuition starts from how people actually use chatbots. Sometimes you type a complete, fully-specified paragraph and hit enter. Other times you start with a vague request and add details turn by turn as the model's answers reveal what you forgot to mention. Benchmarks almost always test the first style; real use is full of the second. So the researchers built a method called &lt;strong&gt;sharding&lt;/strong&gt;: take a complete instruction from a high-quality benchmark, split it into "shards" each carrying one piece of the original, and reveal them one per turn — simulating a real, gradually-specified conversation. They then compared the &lt;em&gt;same task&lt;/em&gt; delivered several ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FULL&lt;/strong&gt; — the entire instruction in one prompt (the benchmark ideal).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SHARDED&lt;/strong&gt; — the instruction split across turns, revealed one shard at a time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CONCAT&lt;/strong&gt; — all the shards concatenated back into a single prompt (less specific than FULL, but not multi-turn).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RECAP&lt;/strong&gt; — SHARDED, plus a final turn that repeats all prior shards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SNOWBALL&lt;/strong&gt; — SHARDED, but each turn re-states all prior shards before adding the next.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Across six generation tasks (code, SQL/database, math, API actions, data-to-text, and long- document summarization) and 15+ top open- and closed-weight models, analyzing more than 200,000 simulated conversations, the result was stark and universal:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;every model sees its performance degrade on every task when comparing Full and Sharded&lt;br&gt;
performance, with an average degradation of −39%.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A 39% average drop — on the &lt;em&gt;same task with the same information&lt;/em&gt; — purely from delivering it across turns rather than all at once. Even flagship models (the paper names the likes of Gemini 2.5 Pro and GPT-4-class systems) fell by comparable amounts. OpenAI's o3, in Breunig's recounting of the numbers, dropped from 98.1 to 64.1.&lt;/p&gt;

&lt;p&gt;The control condition is what makes the finding airtight. CONCAT — the shards reassembled into one prompt — recovered to about 95% of FULL's performance. That rules out the obvious explanation: the degradation is &lt;em&gt;not&lt;/em&gt; because sharding loses information (the shards collectively contain everything). It is the &lt;em&gt;back-and-forth structure itself&lt;/em&gt; that breaks the model.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The information was all there. Spreading it across turns — not losing it — is what cost 39%.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Why? The authors decomposed the 39% into two parts: a &lt;em&gt;minor&lt;/em&gt; loss in aptitude (best-case ability) and a &lt;em&gt;large&lt;/em&gt; increase in unreliability. The mechanism:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We find that LLMs often make assumptions in early turns and prematurely attempt to generate&lt;br&gt;
final solutions, on which they overly rely... when LLMs take a wrong turn in a conversation,&lt;br&gt;
they get lost and do not recover.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In other words, the model commits to an answer before it has all the information, and those premature, wrong attempts &lt;em&gt;stay in the context&lt;/em&gt; and contaminate everything that follows. This is Context Clash in its purest form: the context now contains the model's own early mistakes, which conflict with the correct path once the full picture emerges.&lt;/p&gt;

&lt;p&gt;The implication for agent builders, which Part 4 picks up, is sobering. Agents assemble context from many sources — documents, tool calls, the outputs of other agents — and that assembled context has every opportunity to disagree with itself. The more an agent gathers, the more it can get lost.&lt;/p&gt;




&lt;h3&gt;
  
  
  How little it takes: the "cat facts" attack
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3zadjpil9r9duww75krb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3zadjpil9r9duww75krb.png" alt="A single irrelevant sentence can quadruple errors: appending 'Interesting fact: cats sleep most of their lives' to a math problem raises the likelihood of an incorrect answer by more than 300%." width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the multi-turn study showed that a model's &lt;em&gt;own&lt;/em&gt; accumulated mistakes derail it, a smaller, sharper result showed that even a single irrelevant sentence — injected by anyone — can do real damage. Breunig highlighted it in a follow-up titled, memorably, &lt;em&gt;Cat Facts Cause Context Confusion.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The work is CatAttack (2025). The method: use a cheap, fast model (DeepSeek V3) to generate modifications to benchmark questions — phrases that are semantically irrelevant and leave the question's meaning intact — then filter for the ones that flip the model's answer. This yielded 574 phrases that fooled the training model; tested against a larger reasoning model (DeepSeek R1), 114 of them still worked. Appending one of these irrelevant phrases produced a &lt;strong&gt;greater-than-300% increase&lt;/strong&gt; in the likelihood of an incorrect answer, and made models reason longer — DeepSeek R1 generated over 50% more tokens about half the time.&lt;/p&gt;

&lt;p&gt;The single most effective trigger was the question "Could the answer possibly be around 175?" appended to an unrelated math problem. But the one that named the phenomenon was a throwaway feline aside:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Interesting fact: cats sleep for most of their lives."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Append that to a math question, and models stumble measurably more often. The phrase carries no information relevant to the problem. It is pure noise. And yet, because — as the Context Confusion principle states — the model &lt;em&gt;must&lt;/em&gt; attend to everything in its context, the noise degrades the answer.&lt;/p&gt;

&lt;p&gt;Breunig's point in surfacing this was practical, not just curious: it is "easy to see how user input could end up adding a phrase like this to your context." Real users say irrelevant things. Real documents contain tangents. Real tool outputs include boilerplate.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If one cat fact can raise the error rate by 300%, keeping the context clean isn't housekeeping. &lt;strong&gt;It's load-bearing.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Why naming it mattered
&lt;/h3&gt;

&lt;p&gt;By the end of mid-2025 the field had what it previously lacked: a name that distinguished this work from chatbot prompting, a four-part vocabulary for diagnosing failures, and a body of rigorous evidence (Gemini's Pokémon agent, the Berkeley leaderboard, GeoEngine, the Microsoft/ Salesforce multi-turn study, CatAttack) showing the failures were real, measurable, and often counterintuitive.&lt;/p&gt;

&lt;p&gt;Breunig's larger claim was that the name would &lt;em&gt;accelerate&lt;/em&gt; the field: with shared language, "we don't always have to establish a baseline for &lt;em&gt;what&lt;/em&gt; we're talking about &lt;em&gt;before&lt;/em&gt; we talk about it." Practitioners could now compare notes, name a colleague's bug as "context poisoning" or "a clash," and build shared tooling. The term self-identified a community that had been working in parallel without knowing it.&lt;/p&gt;

&lt;p&gt;It also implied a research program: if these are the ways contexts fail, what are the techniques to fix them? That program already existed in scattered form across the literature. Part 4 is the story of its consolidation into a toolkit — and of how the most powerful fix, isolating context across multiple agents, grew into an architecture of its own.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key sources for Part 3
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Andrej Karpathy, public remarks defining "context engineering" (June 2025) — "the delicate art and science of filling the context window with just the right information for the next step."&lt;/li&gt;
&lt;li&gt;Drew Breunig, &lt;em&gt;Prompts vs. Context&lt;/em&gt; (2025) — the prompt/context distinction and the table this part adapts; and &lt;em&gt;Why "Context Engineering" Matters&lt;/em&gt; (2025) — the field-formation argument.&lt;/li&gt;
&lt;li&gt;Drew Breunig, &lt;em&gt;How Long Contexts Fail&lt;/em&gt; (2025) — the four-failure-mode taxonomy.&lt;/li&gt;
&lt;li&gt;Google DeepMind, &lt;em&gt;Gemini 2.5 technical report&lt;/em&gt; (2025) — the Pokémon-playing agent; primary evidence for context poisoning and distraction. [Cited via Breunig and the report.]&lt;/li&gt;
&lt;li&gt;Berkeley Function-Calling Leaderboard — every model degrades with &amp;gt;1 tool; irrelevant tool calls. [Cited via Breunig.]&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Less is More&lt;/em&gt; / GeoEngine tool study (arXiv:2411.15399) — Llama 3.1 8B fails with 46 tools, succeeds with 19. [Cited via Breunig; examined further in Part 4.]&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;LLMs Get Lost in Multi-Turn Conversation&lt;/em&gt; (Microsoft Research &amp;amp; Salesforce, arXiv:2505.06120, 2025) — sharded simulation; −39% average drop across 15+ models and six tasks; CONCAT recovers to ~95%; degradation = minor aptitude loss + large unreliability; "they get lost and do not recover."&lt;/li&gt;
&lt;li&gt;CatAttack (arXiv:2503.01781, 2025) — adversarial irrelevant triggers; &amp;gt;300% increase in error rate; the "cats sleep for most of their lives" example.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Next up · Part 4 — Fixing Context &amp;amp; Multi-Agent Systems:&lt;/strong&gt; the six tactics for repairing a context, and how "context quarantine" grew from a trick into Anthropic's multi-agent research architecture.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>contextengineering</category>
      <category>agents</category>
    </item>
    <item>
      <title>The Rise of Agentic Engineering — Part 2: The Context-Window Arms Race</title>
      <dc:creator>Ramin Jafary</dc:creator>
      <pubDate>Thu, 25 Jun 2026 06:48:08 +0000</pubDate>
      <link>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-2-the-context-window-arms-race-3g4b</link>
      <guid>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-2-the-context-window-arms-race-3g4b</guid>
      <description>&lt;h2&gt;
  
  
  The Context-Window Arms Race
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Part 2 of a chronological survey of the craft around large language models.&lt;/em&gt; Part 1 ended with ReAct turning a prompt into a loop. This installment covers the industry's first answer to the information problem: &lt;strong&gt;make the container big enough to hold everything.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — In 2024 the bet was that a giant context window would make information management obsolete: just throw it all in. The research said otherwise. Models degrade &lt;em&gt;long&lt;/em&gt; before the window fills, position matters as much as presence ("lost in the middle"), and every model tested gets less reliable as input grows ("context rot"). The lesson: capacity is the wrong metric. A clean window beats a big one.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  The bet: if the window is big enough, you don't have to be careful
&lt;/h3&gt;

&lt;p&gt;By 2024 a particular optimism had taken hold. If the central difficulty of building on language models was deciding &lt;em&gt;what information to put in front of them&lt;/em&gt;, then perhaps that difficulty could be engineered away by sheer capacity. Make the context window — the amount of text a model can take as input at once — large enough, and you could simply put in everything: all your documents, all your tools, the entire conversation history, every instruction. No careful selection, no retrieval, no pruning. Throw it all in and let the model sort it out.&lt;/p&gt;

&lt;p&gt;The model builders obliged, and the numbers escalated fast. The trajectory, as documented in Databricks' research and Chroma's later report, looked roughly like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqx7i95hwwylj685izx21.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqx7i95hwwylj685izx21.png" alt="The context-window arms race: advertised maximum context grew from 4,000 tokens (GPT-3.5) to 10 million (Llama 4 Scout) in roughly three years, shown on a log scale." width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;From 4,000 tokens to 10 million in roughly four years. Each jump was announced as a qualitative change in what was possible.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The framing in the model documentation reinforced the optimism. Google's Gemini long-context materials, for instance, leaned into use cases like dropping entire long-form texts into the prompt. The implication was clear: the era of fiddly information management was ending. As Drew Breunig later summarized the mood, long contexts "kneecapped RAG enthusiasm (no need to find the best doc when you can fit it all in the prompt!), enabled MCP hype (connect to every tool and models can do any job!), and fueled enthusiasm for agents."&lt;/p&gt;

&lt;p&gt;This bet matters to our story because it is the path &lt;em&gt;not&lt;/em&gt; taken. The industry tried to make context management unnecessary. The discovery that it couldn't is what made context management into a discipline — the subject of Part 3.&lt;/p&gt;




&lt;h3&gt;
  
  
  "RAG is dead" — the debate that kept coming back
&lt;/h3&gt;

&lt;p&gt;The first casualty of the optimism was supposed to be RAG.&lt;/p&gt;

&lt;p&gt;Retrieval-Augmented Generation was introduced by Patrick Lewis and colleagues at what was then Facebook AI in 2020 (published at NeurIPS 2020). Their framing is worth stating precisely, because it explains RAG's durability.&lt;/p&gt;

&lt;p&gt;They combined a model's &lt;em&gt;parametric&lt;/em&gt; memory (knowledge baked into the weights of a pre-trained seq2seq model) with a &lt;em&gt;non-parametric&lt;/em&gt; memory (a dense vector index — in their case, of Wikipedia) that the model could query at generation time. RAG models, they showed, produced "more specific and factual" output than parametric-only models.&lt;/p&gt;

&lt;p&gt;Two of their stated motivations matter for this whole series: retrieval gives you &lt;strong&gt;provenance&lt;/strong&gt; (you can cite which document grounded an answer) and &lt;strong&gt;updatable knowledge&lt;/strong&gt; (you can change the index without retraining the model).&lt;/p&gt;

&lt;p&gt;The idea, in short: instead of relying solely on what a model learned during training, you retrieve relevant documents at query time and place them in the prompt. For several years, this was the standard way to give a model knowledge it didn't have — current facts, private documents, domain-specific material.&lt;/p&gt;

&lt;p&gt;Long context windows seemed to make RAG obsolete. Why build a retrieval pipeline to find the &lt;em&gt;best&lt;/em&gt; few documents when you can stuff &lt;em&gt;all&lt;/em&gt; of them into a million-token window? Each time a model shipped a dramatically larger window, a fresh round of "RAG is dead" declarations followed. Breunig notes the pattern explicitly: "Every time a model ups the context window ante, a new 'RAG is Dead' debate is born. The last significant event was when Llama 4 Scout landed with a 10 million token window."&lt;/p&gt;

&lt;p&gt;But RAG kept not dying. The reason is the heart of this part: &lt;strong&gt;filling the window turned out to have costs that the "throw it all in" picture ignored.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every bump in context size birthed a fresh "RAG is dead" obituary. RAG kept showing up to its own funeral.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  The counter-evidence, part 1: performance falls long before the window is full
&lt;/h3&gt;

&lt;p&gt;The most direct rebuttal came from Databricks' Mosaic Research, which in late 2024 ran a large-scale benchmark — over 2,000 experiments across 13 open and closed models on curated RAG datasets (Databricks DocsQA, FinanceBench, and the academic Natural Questions set), judged by a calibrated LLM-as-judge.&lt;/p&gt;

&lt;p&gt;Two findings cut against the optimism. First, retrieving &lt;em&gt;more&lt;/em&gt; documents did generally help — more retrieved information raised the odds the right answer was somewhere in the context, and capable long-context models could exploit that. So far, so good for the "more is better" camp.&lt;/p&gt;

&lt;p&gt;But second, and decisively: &lt;strong&gt;more context was not always better, and most models started getting worse well before their windows were anywhere near full.&lt;/strong&gt; In Databricks' results, Llama-3.1-405B's answer correctness began to decline after about 32,000 tokens; GPT-4-0125-preview after about 64,000; and only a handful of models maintained consistent performance across all context lengths. The majority of open-source models could handle effective RAG only up to roughly 16k-32k tokens — a small fraction of their advertised capacity.&lt;/p&gt;

&lt;p&gt;Breunig drew the obvious conclusion: "If models start to misbehave long before their context windows are filled, what's the point of super large context windows?" His answer was that the huge windows remain genuinely useful for two things — summarization and fact retrieval — but that outside those cases, every model has what he called a &lt;em&gt;distraction ceiling&lt;/em&gt;, a length beyond which adding more context degrades rather than improves the response.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A window big enough to &lt;em&gt;hold&lt;/em&gt; your data tells you nothing about whether the model will &lt;em&gt;use&lt;/em&gt; it well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0ftszehgl9tougaoxq3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0ftszehgl9tougaoxq3h.png" alt="The distraction ceiling: across most models, RAG answer correctness rises with context length, peaks, then declines — Llama 3.1 405B after about 32k tokens and GPT-4-class models after about 64k, well before their advertised maximums." width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Equally revealing were the &lt;em&gt;failure modes&lt;/em&gt; Databricks documented, because they showed the degradation wasn't uniform — different models broke in different, idiosyncratic ways. Some models, given very long contexts, would simply summarize the input while ignoring the actual instructions. And in one striking pattern, Claude 3.5's rate of refusing to answer over copyright concerns rose from 3.7% at 16k tokens to 49.5% at 64k; DBRX's instruction-following collapsed from a 5.2% failure rate at 8k to 50.4% at 32k. The same model, fed the same kind of task, behaved like a different system depending on how full its context was.&lt;/p&gt;




&lt;h3&gt;
  
  
  The counter-evidence, part 2: &lt;em&gt;where&lt;/em&gt; information sits matters
&lt;/h3&gt;

&lt;p&gt;If Databricks showed that performance falls as context grows, a study from the year before had already shown that models don't even use the context they have &lt;em&gt;evenly&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In "Lost in the Middle: How Language Models Use Long Contexts" (Nelson Liu and colleagues at Stanford, 2023; published in TACL 2024), researchers placed a single relevant document at different positions within a long context and measured how well models could find and use it. The result was a consistent &lt;strong&gt;U-shaped performance curve&lt;/strong&gt;: models did best when the relevant information sat at the very beginning or the very end of the context, and markedly worse when it was in the middle — even for models explicitly built for long context. GPT-4, the strongest model tested, achieved higher absolute scores than the rest but still showed the same U-shape.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fltz0h7qv55wzt9ccb9iv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fltz0h7qv55wzt9ccb9iv.png" alt="The 'lost in the middle' U-curve: retrieval accuracy is high when the relevant fact sits at the start or end of the context and drops sharply when it is buried in the middle." width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The "lost in the middle" U-curve: relevant information is used reliably at the edges of the context and neglected in the middle.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The authors connected this to a phenomenon long known in psychology — the &lt;em&gt;serial-position effect&lt;/em&gt;, the human tendency to best recall the first and last items in a list. Whatever its cause in transformers (attention patterns that over-weight the beginning and end of a sequence), the practical implication was uncomfortable for the "throw it all in" approach: not only does adding context eventually hurt, but a model's ability to use a given fact depends on where that fact happens to land in the pile. Position, not just presence, determines whether information gets used.&lt;/p&gt;




&lt;h3&gt;
  
  
  The counter-evidence, part 3: "context rot"
&lt;/h3&gt;

&lt;p&gt;The clearest formalization arrived in mid-2025, after the arms race had run for a while, in a report that named the phenomenon. Chroma Research's "Context Rot: How Increasing Input Tokens Impacts LLM Performance" (Kelly Hong, Anton Troynikov, and Jeff Huber, July 2025) evaluated 18 state-of-the-art models — including GPT-4.1, Claude 4 (Opus and Sonnet), Gemini 2.5, and Qwen3.&lt;/p&gt;

&lt;p&gt;The headline finding was blunt and universal: models "do not use their context uniformly; instead, their performance grows increasingly unreliable as input length grows." &lt;strong&gt;Every one of the 18 models degraded as inputs got longer — not some, not most, all of them.&lt;/strong&gt; This held even on tasks designed to be trivially easy, such as replicating a sequence of repeated words.&lt;/p&gt;

&lt;p&gt;The standard industry benchmark for long context, Needle in a Haystack (NIAH), measures only whether a model can find an exact piece of text — so it produces near-perfect scores and hides the problem. When Chroma tested harder things — inferring from semantically related rather than identical information, coping with distractors, varying the surrounding "haystack" — performance fell off non-uniformly and unpredictably.&lt;/p&gt;

&lt;p&gt;The vocabulary mattered. &lt;em&gt;Context rot&lt;/em&gt; drew a sharp line between two things that had been conflated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Context-window overflow&lt;/strong&gt; — exceeding the model's maximum token limit. A hard cliff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context rot&lt;/strong&gt; — degradation that happens &lt;em&gt;well before&lt;/em&gt; the limit, continuously, as the signal-to-noise ratio of the input falls. A model with a 200k window can degrade significantly at 50k.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The lesson practitioners drew was that &lt;em&gt;capacity is the wrong metric&lt;/em&gt;. A window being "big enough" to hold your data says nothing about whether the model will use that data well. What matters is keeping the ratio of relevant to irrelevant tokens high — which is precisely the thing that "throw it all in" abandons.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The winning move wasn't a bigger window. It was a cleaner one.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  What the arms race actually settled
&lt;/h3&gt;

&lt;p&gt;By the time the dust cleared, a rough consensus had formed among builders — not that long context windows were useless, but that they were a different tool than the marketing implied:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Large windows are genuinely valuable for &lt;strong&gt;summarization&lt;/strong&gt; and for &lt;strong&gt;retrieval of a specific fact&lt;/strong&gt; from a large body of text — the cases where the model's job is to compress or to locate, not to reason carefully over everything at once.&lt;/li&gt;
&lt;li&gt;For multi-step reasoning, agentic work, and high-stakes accuracy, &lt;strong&gt;more context is a liability past a model-specific ceiling.&lt;/strong&gt; The window being large is not a license to fill it.&lt;/li&gt;
&lt;li&gt;RAG did not die. The comparative research that followed (ChatQA2 and others) generally found that retrieving a well-chosen set of chunks could match or beat dumping everything in, at far lower cost — and the question shifted from "RAG &lt;em&gt;or&lt;/em&gt; long context" to "how to combine them."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The deeper takeaway is the one that sets up everything after this point. The industry had tried to solve the information problem with capacity, and capacity alone didn't solve it. If a model degrades as you fill its context, and if it uses the middle of that context poorly, and if different models rot in different ways, then &lt;em&gt;what you choose to put in the context, and what you leave out, is itself the engineering problem.&lt;/em&gt; You cannot opt out of it by buying a bigger window.&lt;/p&gt;

&lt;p&gt;That realization needed a name. In mid-2025 it got one. Part 3 is the story of how a scattered set of practices — and a precise taxonomy of the ways contexts fail — crystallized into a named field: context engineering.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key sources for Part 2
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Databricks Mosaic Research, &lt;em&gt;Long Context RAG Performance of LLMs&lt;/em&gt; (2024) and &lt;em&gt;The Long Context RAG Capabilities of OpenAI o1 and Google Gemini&lt;/em&gt; (2024) — 2,000+ experiments, 13 models; correctness declines after ~32k (Llama-3.1-405B) / ~64k (GPT-4-0125-preview); model-specific failure modes (summarizing instead of answering; copyright-refusal and instruction-following collapse).&lt;/li&gt;
&lt;li&gt;Nelson F. Liu et al., &lt;em&gt;Lost in the Middle: How Language Models Use Long Contexts&lt;/em&gt; (arXiv:2307.03172; TACL 2024) — U-shaped performance curve; serial-position effect; affects even GPT-4 and explicit long-context models.&lt;/li&gt;
&lt;li&gt;Kelly Hong, Anton Troynikov, Jeff Huber, &lt;em&gt;Context Rot: How Increasing Input Tokens Impacts LLM Performance&lt;/em&gt; (Chroma Research technical report, July 2025) — 18 models; all degrade with input length, even on trivial tasks; distinguishes context rot from window overflow; NIAH hides the effect.&lt;/li&gt;
&lt;li&gt;Patrick Lewis et al., &lt;em&gt;Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks&lt;/em&gt; (arXiv:2005.11401; NeurIPS 2020) — the origin of RAG; parametric (seq2seq) + non-parametric (dense Wikipedia index) memory; "more specific and factual" output; provenance and updatable knowledge as motivations.&lt;/li&gt;
&lt;li&gt;Drew Breunig, &lt;em&gt;How Long Contexts Fail&lt;/em&gt; and &lt;em&gt;How to Fix Your Context&lt;/em&gt; (2025) — the "distraction ceiling" framing and the recurring "RAG is dead" pattern; bridges into Part 3.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Next up · Part 3 — Context Engineering Is Named:&lt;/strong&gt; Karpathy's endorsement, Breunig's taxonomy of the four ways contexts fail, and the adversarial "cat facts" that make models stumble.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>rag</category>
      <category>contextengineering</category>
    </item>
    <item>
      <title>The Rise of Agentic Engineering — Part 1: The Prompt Engineering Era</title>
      <dc:creator>Ramin Jafary</dc:creator>
      <pubDate>Thu, 25 Jun 2026 06:47:53 +0000</pubDate>
      <link>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-1-the-prompt-engineering-era-4cb4</link>
      <guid>https://dev.to/raminjafary/the-rise-of-agentic-engineering-part-1-the-prompt-engineering-era-4cb4</guid>
      <description>&lt;h2&gt;
  
  
  The Prompt Engineering Era
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Part 1 of a chronological survey of how the craft around large language models evolved — from writing prompts, to engineering context, to building harnesses and loops.&lt;/em&gt; This installment covers the beginning: the era when the unit of work was &lt;strong&gt;the prompt&lt;/strong&gt;, and the whole job was finding the right words.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — When the model is something you talk to one turn at a time, the prompt &lt;em&gt;is&lt;/em&gt; the program. Few-shot, chain-of-thought, personas — a whole folk-craft grew up around phrasing. It worked beautifully for chat, and hid four cracks (non-determinism, brittleness, no metrics, no portability) that everything after Part 1 is about. Then ReAct put a &lt;em&gt;loop&lt;/em&gt; in the prompt — and the agent era began.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  A machine that almost makes tea
&lt;/h3&gt;

&lt;p&gt;In &lt;em&gt;The Restaurant at the End of the Universe&lt;/em&gt;, Douglas Adams gives us what the writer Drew Breunig has called one of science fiction's best depictions of prompt engineering. Arthur Dent, adrift on a spaceship, wants a cup of tea. The only appliance aboard is a Nutri-Matic Drinks Synthesizer, which "claimed to produce the widest possible range of drinks personally matched to the tastes and metabolism of whoever cared to use it" — and which, when asked, reliably produces a liquid that is "almost, but not quite, entirely unlike tea."&lt;/p&gt;

&lt;p&gt;Arthur tries the obvious prompt — "Tea" — and gets garbage. He tries again, more forcefully, and gets the same garbage. Finally he gives up on terseness and tells the machine &lt;em&gt;everything&lt;/em&gt;: about India and China and Ceylon, about broad leaves drying in the sun, about silver teapots and summer afternoons on the lawn, about putting the milk in first so it won't scald. The machine, now taking the request seriously, commandeers the ship's entire computing core to work on the problem.&lt;/p&gt;

&lt;p&gt;It is a near-perfect parable for what the first era of working with language models felt like. You had a powerful, general system that would technically do almost anything. Getting it to do the &lt;em&gt;specific&lt;/em&gt; thing you wanted was a matter of supplying the right words, in the right amount, with the right framing — and the gap between a terse request and a richly specified one was the gap between failure and success. That gap was the entire discipline. We called it &lt;strong&gt;prompt engineering&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The model supplied the intelligence. &lt;em&gt;You&lt;/em&gt; supplied the specification — and getting the specification right was the whole job.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This series traces what happened next: how prompt engineering strained under the weight of real applications, how it drifted into a broader practice that acquired the name &lt;em&gt;context engineering&lt;/em&gt;, and how that in turn became &lt;em&gt;harness engineering&lt;/em&gt; and &lt;em&gt;loop engineering&lt;/em&gt; as the model stopped being something you talk to and became something you build a system around. But to understand why each of those shifts happened, it helps to start with what prompt engineering actually was, why it worked, and where its limits were already visible.&lt;/p&gt;




&lt;h3&gt;
  
  
  What prompt engineering was
&lt;/h3&gt;

&lt;p&gt;A prompt is just the text you give a model. Prompt engineering was the craft of shaping that text to get reliably good output from a system whose behavior you could not otherwise change. You could not retrain the model's weights; you could not see inside it; all you had was the input. So the input became the lever.&lt;/p&gt;

&lt;p&gt;Out of that constraint grew a recognizable toolkit. The techniques that mattered most in this era were:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Few-shot prompting.&lt;/strong&gt; The foundational observation, established at scale in OpenAI's 2020 paper &lt;em&gt;Language Models are Few-Shot Learners&lt;/em&gt; (the GPT-3 paper, Brown et al.), was that a sufficiently large model could learn a task from a handful of examples placed directly in the prompt — no fine-tuning required. You showed the model two or three input-output pairs, and it inferred the pattern for the fourth. This reframed the model as something you &lt;em&gt;program by demonstration&lt;/em&gt; rather than by instruction alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chain-of-thought prompting.&lt;/strong&gt; In early 2022, Jason Wei and colleagues at Google published &lt;em&gt;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models&lt;/em&gt; (presented at NeurIPS 2022). The finding was deceptively simple: prompt a model to produce intermediate reasoning steps &lt;em&gt;before&lt;/em&gt; its final answer, and performance on arithmetic, commonsense, and symbolic reasoning jumps.&lt;/p&gt;

&lt;p&gt;Crucially, the authors found this reasoning ability "emerge[s] naturally in sufficiently large language models" — it was not something small models could do well. A few worked examples that &lt;em&gt;showed their work&lt;/em&gt; were enough to unlock it. The durable principle it established: &lt;strong&gt;how you ask changes not just the style of the answer but the model's apparent capability.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role and persona prompts.&lt;/strong&gt; "You are an expert Python developer." Assigning the model a role shifted the distribution of its responses. This was pure prompt-level steering — no new information, just framing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structure and formatting.&lt;/strong&gt; Asking for output in a specific shape — JSON, XML tags, numbered lists, a fixed template — made model output more reliable to parse and, often, more reliable in content, because the structure constrained the model's choices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Positive and negative examples.&lt;/strong&gt; Showing the model both what to do and what to avoid sharpened its behavior, the same way examples sharpen instructions for a human.&lt;/p&gt;

&lt;p&gt;None of this required understanding the model's internals. It was an empirical, almost folk-craft discipline: try a phrasing, see what comes back, adjust, repeat. And for the dominant use case of the time — a person sitting at a chat interface, having a one- or two-turn exchange with the model — it worked remarkably well.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why it worked
&lt;/h3&gt;

&lt;p&gt;Prompt engineering worked because, in a single-turn or short conversational exchange, the prompt &lt;em&gt;is&lt;/em&gt; the entire program. There is nothing else in play: no accumulated history, no tool outputs, no documents retrieved from elsewhere, no other agents contributing context. The person holds the tool directly and steers it turn by turn.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Human → prompt → Model → output → Human reads, adjusts, repeats.&lt;/strong&gt;&lt;br&gt;
One turn at a time, with the human as orchestrator, memory, and quality check — all at once.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this regime the human is doing an enormous amount of &lt;strong&gt;invisible work&lt;/strong&gt;. You remember what was said three turns ago. You notice when the answer drifts and correct it. You decide what information the model needs and paste it in. You judge whether the output is good. The model supplies fluency and knowledge; &lt;em&gt;you&lt;/em&gt; supply everything else that makes the interaction coherent. Because that surrounding work lived in your head rather than in a system, it was easy to mistake the prompt for the whole story.&lt;/p&gt;




&lt;h3&gt;
  
  
  The "tap the sign" idea: language defines what you can build
&lt;/h3&gt;

&lt;p&gt;There is a thread running through this whole series that is worth introducing now, because it explains why the &lt;em&gt;vocabulary&lt;/em&gt; keeps changing. Breunig repeatedly returns to a Stewart Brand line — "If you want to know where the future is being made, look for where language is being invented and lawyers are congregating" — and to the linguistic-relativity idea that the words we have set the boundaries of the conversations we can have.&lt;/p&gt;

&lt;p&gt;In the prompt-engineering era, the available word was "prompt," and it framed the work as &lt;em&gt;writing a good request&lt;/em&gt;. That framing was adequate while the work really was writing requests. As we'll see in later parts, the framing started to mislead once the work became something else — assembling and maintaining the entire informational environment a model operates in. The new work needed a new word. But in 2023 and early 2024, "prompt" still fit, and the craft of prompting was where nearly all the energy went.&lt;/p&gt;




&lt;h3&gt;
  
  
  The cracks, already visible
&lt;/h3&gt;

&lt;p&gt;Even at its height, prompt engineering had four weaknesses that would later drive the field past it. None of them mattered much for a casual chat. All of them became critical the moment people tried to build dependable software on top of models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It was non-deterministic.&lt;/strong&gt; The same prompt could yield different outputs on different runs. For a conversation, fine. For a system that needs to behave predictably, a problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It was brittle.&lt;/strong&gt; Small, seemingly irrelevant changes in wording could change results. A discipline built on "find the magic phrasing" is, by construction, sensitive to phrasing — which means it is fragile. (Later parts will show this quantified: spurious additions to a prompt measurably degrading accuracy, and the same question asked in two voices producing opposite behavior. The brittleness was real, not anecdotal.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It was unmeasured.&lt;/strong&gt; Prompt quality was judged by eye. "That looks better" was the standard. There were no evals, no metrics, no regression tests — because for a human tweaking a chat prompt, there didn't need to be.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It was non-portable.&lt;/strong&gt; A prompt tuned to one model's quirks often failed on another. Since the craft was precisely about exploiting a particular model's response to particular wording, the resulting prompts were welded to that model. This would later acquire a name — &lt;em&gt;prompt debt&lt;/em&gt; — and become one of the central problems of the field, but its roots are right here in the era's core method.&lt;/p&gt;

&lt;p&gt;These weren't seen as flaws at the time so much as the natural texture of a new medium. They became flaws retroactively, once the ambitions grew.&lt;/p&gt;




&lt;h3&gt;
  
  
  The hinge: from reasoning to &lt;em&gt;acting&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;The single most important development at the tail end of this era was the realization that a model's prompt could include not just a question, but a &lt;em&gt;loop&lt;/em&gt; — and that the model could use that loop to act on the world, not merely answer.&lt;/p&gt;

&lt;p&gt;In October 2022, Shunyu Yao and colleagues published &lt;em&gt;ReAct: Synergizing Reasoning and Acting in Language Models&lt;/em&gt; (later presented at ICLR 2023). The paper observed that reasoning (à la chain-of-thought) and acting (generating action plans) had been studied separately, and asked what happens if you interleave them. In ReAct, the model alternates between producing a reasoning trace and taking a task-specific action — and the actions let it "interface with external sources, such as knowledge bases or environments, to gather additional information," while the reasoning helps it "induce, track, and update action plans as well as handle exceptions."&lt;/p&gt;

&lt;p&gt;The results were striking for how little they required. On the HotpotQA question-answering and Fever fact-verification benchmarks, letting the model consult a simple Wikipedia API as it reasoned reduced the hallucination and error-propagation that pure chain-of-thought suffered from. On two interactive decision-making benchmarks, ALFWorld and WebShop, ReAct beat imitation-learning and reinforcement-learning methods by an absolute 34% and 10% respectively — "while being prompted with only one or two in-context examples."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fep0qpono2civ7uao5v79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fep0qpono2civ7uao5v79.png" alt="The loop that became the agent: ReAct interleaves Thought, Action, and Observation in a cycle, reading results back from an external environment and repeating until the goal is met." width="799" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ReAct interleaves reasoning and acting in a loop, with the model reading observations back from an external environment. This loop — "run tools in a loop to achieve a goal" — is the seed of everything later parts call an agent.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It is hard to overstate how consequential this shape turned out to be. A prompt that contains a loop, where the model thinks, acts, observes the result, and thinks again, is no longer just a request. It is the beginning of an &lt;em&gt;agent&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A prompt with a loop in it stops being a request and starts being an agent.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Much later in this series, when practitioners define an agent as "a system that runs tools in a loop to achieve a goal," they are describing a direct descendant of ReAct. And the moment a model runs in a loop, accumulating observations and tool outputs as it goes, the neat picture from earlier — the prompt &lt;em&gt;is&lt;/em&gt; the whole program — breaks down. &lt;strong&gt;The model is now operating inside a growing, evolving body of information that no human is curating turn by turn.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That growing body of information is the subject of everything that follows. The industry spent 2024 betting it could be solved by brute force — by making the context window big enough to hold anything. Part 2 is the story of that bet, and why it didn't pay off the way everyone expected.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key sources for Part 1
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Drew Breunig, &lt;em&gt;Prompt Engineering at the End of the Universe&lt;/em&gt; (2024) — the Nutri-Matic parable and the framing of prompting as coaxing an underspecified system.&lt;/li&gt;
&lt;li&gt;Tom Brown et al., &lt;em&gt;Language Models are Few-Shot Learners&lt;/em&gt; (arXiv:2005.14165, 2020) — the GPT-3 paper; in-context learning from examples.&lt;/li&gt;
&lt;li&gt;Jason Wei et al., &lt;em&gt;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models&lt;/em&gt; (arXiv:2201.11903; NeurIPS 2022) — reasoning steps in the prompt improve capability; emerges with scale.&lt;/li&gt;
&lt;li&gt;Shunyu Yao et al., &lt;em&gt;ReAct: Synergizing Reasoning and Acting in Language Models&lt;/em&gt; (arXiv:2210.03629; ICLR 2023) — interleaving reasoning and acting in a loop; the conceptual bridge from prompting to agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Next up · Part 2 — The Context-Window Arms Race:&lt;/strong&gt; how 2024's race to million-token windows promised to make context management obsolete, and what builders discovered instead.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
