---
title: Fork your agent's harness, keep the winner
description: Everything around a coding agent that you can change is just code and text. At AGNTCon + MCPCon Europe, Fausto Albers showed how his team improves it. The eval sits outside the loop, cost per accepted change says when a busy loop has stalled, and a meta agent runs several harness variants on the same task and keeps the best.
date: 2026-10-11
tags: AI agents, harness engineering, evals, Claude Code, agentic engineering
---

Everything around a coding agent that you can change is just code and text: the CLAUDE.md, the subagents, the skills, the tools, the memory policy. So when your agent loop stalls, don't guess one fix. At AGNTCon + MCPCon Europe in Amsterdam, Fausto Albers showed his team's move: a meta agent writes several versions of the harness, runs them all on the same task against an eval that sits outside the loop, and keeps the one that wins on whatever you count as cost. The losers get stored too.

He opens with the irony. Attention is all you need, and now attention is the scarce resource. Since 2022 the work he can hand to AI has grown enormously, and his attention didn't follow that curve. His agents make thousands of decisions toward goals he gives them, and he isn't there for most of them. So the question of the talk: how do you build a system that knows what you find important, and what you count as a cost?

## A steel beam, drawn in 2D

Fausto runs WonderWhy, which works closely with the applied AI lab for industrial digital twins at the Amsterdam University of Applied Sciences, and he co-founded AI Builders Club in Amsterdam. He has a background in sociology and used to own cocktail bars and restaurants. That's how he got into tech: a startup using machine learning to predict the flavor preferences of hospitality customers.

His case came from a steel company. Its CNC machines know what to do once they get directions compiled from a valid 3D model. But a lot of its clients never get a 3D CAD model. They get a 2D PDF drawing of the beam, a lossy copy of the 3D model, and a trained engineer works out the rest by hand.

Only months ago, turning that drawing into a 3D model wasn't possible, and his team got stuck. So they interviewed the engineers. Each one had the PDF on the left and a CAD program on the right, and rebuilt the beam step by step: making mistakes, correcting them, building a spatial model of the part in their head. That's exactly what they let the agents do, and it works. They delivered it in September. It still costs some money to run, and they're training an open-source model on the Dutch supercomputer so it'll cost almost nothing.

<figure class="fd-fig hx-case" aria-labelledby="hx1-cap" data-desc="The steel case. What the client sends: a 2D PDF drawing of the beam, a lossy copy of the 3D model that takes a trained engineer to read. What the CNC machine needs: directions compiled from a valid 3D CAD model. The engineers work with the PDF on the left and CAD on the right, rebuilding the beam step by step: draw a part, spot the mistake, correct it, keep building. Fausto's team let the agents run that same loop.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">What the client sends</p>
<p class="mp-two-name">2D PDF</p>
<svg class="mp-two-art" viewBox="0 0 300 120" aria-hidden="true">
<path class="hx-axis" d="M10,54 H250"/>
<rect class="hx-drw" x="20" y="34" width="220" height="40"/>
<path class="hx-fl" d="M20,40 H240 M20,68 H240"/>
<circle class="hx-hole" cx="44" cy="54" r="4"/><circle class="hx-hole" cx="216" cy="54" r="4"/>
<path class="hx-dim" d="M20,92 H240 M20,86 V98 M240,86 V98"/>
<text class="mp-art-t" x="130" y="110" text-anchor="middle">L</text>
<path class="hx-dim" d="M234,34 L256,14 H290"/>
<path class="hx-sym" d="M266,14 L272,23 L278,14 Z"/>
<rect class="hx-sym-ring" x="259" y="5" width="26" height="24"/>
</svg>
<p class="mp-two-line">A lossy copy of the 3D model</p>
<p class="mp-two-line">Takes a trained engineer to read</p>
</div>
<p class="mp-two-vs hx-cycle" aria-hidden="true">⇄</p>
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">What the CNC machine needs</p>
<p class="mp-two-name">3D CAD</p>
<svg class="mp-two-art" viewBox="0 0 300 120" aria-hidden="true">
<polygon class="hx-face hx-top" points="30,52 72,52 252,12 210,12"/>
<polygon class="hx-face-wrong hx-wrong" points="30,52 72,52 226,30 184,30"/>
<polygon class="hx-face hx-side hx-right" points="72,52 72,94 252,54 252,12"/>
<g class="hx-holes"><circle class="hx-hole" cx="99" cy="67" r="3.5"/><circle class="hx-hole" cx="225" cy="39" r="3.5"/></g>
<rect class="hx-face-front" x="30" y="52" width="42" height="42"/>
<text class="mp-art-t hx-t1" x="30" y="114">draw the end</text>
<text class="mp-art-t hx-t2" x="30" y="114">spot the mistake</text>
<text class="mp-art-t hx-t3" x="30" y="114">correct it</text>
<text class="mp-art-t hx-t4" x="30" y="114">keep building</text>
</svg>
<p class="mp-two-line">Directions compile from a valid 3D model</p>
<p class="mp-two-line">Rebuilt step by step, mistakes and all</p>
</div>
</div>
<p class="mp-strip"><b>The loop</b><span>Engineers: PDF on the left, CAD on the right. Now the agents run that same loop.</span></p>
<figcaption id="hx1-cap">The steel case, drawn for this note rather than taken from the client's files. Keep an eye on the small symbol at the top right of the drawing: it comes back later.</figcaption>
</figure>

Then the line that sets up the rest of the talk: his team didn't write a single line of that application. They designed the system that built it.

## The harness is the part you can edit

His short history of the last few years: prompt engineering, then context engineering, and now it's about designing the harness and running the loop.

He's precise about what "harness" means here. Two things he can't change: the foundation model, and the outer harness, meaning the coding environment, Claude Code or Codex or whatever you run. Everything inside that is his to change, and it's just code and text:

- the instructions, CLAUDE.md and AGENTS.md
- the subagents, their roles and how they coordinate
- the context
- the memory policy ("there's no learning without memory")
- the skills and functions

That's a lot of knobs. Set them up differently and the same task comes out different. And in practice, he says, agents already build these harnesses too.

<figure class="fd-fig hx-anat" aria-labelledby="hx2-cap" data-desc="What you can and can't change. Can't change: the foundation model, and the coding environment such as Claude Code or Codex. Can change, because it's just code and text: the instructions in CLAUDE.md and AGENTS.md, the subagents and their roles, how they coordinate, the context, the memory policy, since there's no learning without memory, the skills and the functions. Set those knobs differently and the same task comes out different.">
<div class="hx-anat-in">
<div class="hx-fixed">
<p class="hx-k">Can't change</p>
<p class="hx-fixed-row"><b>Foundation model</b></p>
<p class="hx-fixed-row"><b>Coding environment</b><span>Claude Code, Codex…</span></p>
</div>
<div class="hx-edit">
<p class="hx-k">Can change · just code and text</p>
<ul class="hx-knobs">
<li><i aria-hidden="true"></i>Instructions<span>CLAUDE.md, AGENTS.md</span></li>
<li><i aria-hidden="true"></i>Subagents<span>their roles</span></li>
<li><i aria-hidden="true"></i>Coordination<span>how they work together</span></li>
<li><i aria-hidden="true"></i>Context<span>what each one sees</span></li>
<li class="hx-knob-mem"><i aria-hidden="true"></i>Memory policy<span>no learning without memory</span></li>
<li><i aria-hidden="true"></i>Skills and functions<span>what they can do</span></li>
</ul>
</div>
</div>
<p class="mp-strip"><b>Same task</b><span>Turn the knobs differently and the output comes out different.</span></p>
<figcaption id="hx2-cap">His split of the harness, at 6:29 in the talk. The memory policy is marked because of his line about it.</figcaption>
</figure>

## Keep the judge outside the loop

Around the harness runs the loop: act, check the result, go again. The check can't live inside the harness. The more capable the models get, the better they get at reward hacking, so the eval has to sit outside the system. It can be an agent or plain deterministic code. What matters is that it isn't the thing being graded.

The feedback lands in files on disk, and those files are the input to the next iteration. So every turn of the loop can start from a fresh context window instead of an ever longer conversation. That matters for cost too: my [TokenOps note](/notes/tokenops-agent-cost-curve.html) is about how a long agent conversation's input cost grows with the square of its turns.

<figure class="fd-fig hxl" aria-labelledby="hx3-cap" data-desc="The loop around the harness, with the judge outside it. A dashed boundary marks the system being improved. Inside it: the harness, the part you can edit, which runs the task, and the files on disk where the feedback is saved. Outside it: the eval, an agent or plain deterministic code, never the thing being graded. It has to sit outside because the more capable the model, the better it gets at gaming a check it can reach. The loop: the harness's result crosses the boundary to the eval; the eval's score crosses back and is saved as files; the next iteration reads those files and starts with a fresh context window, and the loop goes round again.">
<div class="hxl-in">
<div class="hxl-grid" role="group" aria-label="The harness acts, its result goes out to an eval outside the system, the score comes back as files on disk, and the next run starts from those files in a fresh context window">
  <p class="hxl-sys">The system being improved</p>
  <p class="hxl-out">Outside it</p>
  <div class="hxl-node hxl-act">
    <p class="hxl-step"><b>1</b> Act</p>
    <h3>Harness</h3>
    <p>Runs the task. The part you can edit.</p>
  </div>
  <div class="hxl-link hxl-l1" aria-hidden="true"><span>result</span><i></i></div>
  <div class="hxl-node hxl-eval">
    <p class="hxl-step"><b>2</b> Check</p>
    <h3>Eval</h3>
    <p>An agent or deterministic code. Never the thing being graded.</p>
  </div>
  <div class="hxl-link hxl-l2" aria-hidden="true"><span>score</span><i></i></div>
  <div class="hxl-node hxl-mem">
    <p class="hxl-step"><b>3</b> Remember</p>
    <h3>Files on disk</h3>
    <p>The feedback, saved as files.</p>
  </div>
  <div class="hxl-link hxl-l3" aria-hidden="true"><span>next run, fresh context</span><i></i></div>
</div>
</div>
<figcaption id="hx3-cap">The loop he described. The harness and its files sit inside the dashed line; the eval sits outside it, because the more capable the model, the better it gets at gaming a check it can reach.</figcaption>
</figure>

## Watch the cost per accepted change

The number he finds most useful is the cost per accepted change. Each iteration costs something, and the eval is your proxy for progress toward the goal. When the cost keeps rising and the progress stalls, you've hit diminishing returns. The loop still looks very busy. Your credit card is burning.

That's the moment to stop and ask what the harness is missing, because it's just code and text you can change.

And cost doesn't only mean euros. If a client has a six-figure budget and time is the problem, spending a lot of tokens can be the sensible call.

<figure class="fd-fig hx-cost-fig" aria-labelledby="hx4-cap" data-desc="A schematic of cost per accepted change, with no real data. Over the loop's iterations, progress as the eval scores it rises fast and then flattens. The cost per accepted change stays low at first, then climbs. Past the point where progress stalls is the zone of diminishing returns: the loop still looks busy, and the credit card is burning. That's the signal to ask what the harness is missing.">
<div class="fd-canvas">
<svg viewBox="0 0 440 228" role="img" aria-labelledby="hx4-title hx4-desc">
<title id="hx4-title">Cost per accepted change, schematic</title>
<desc id="hx4-desc">Over the loop's iterations, progress rises fast and then flattens, while the cost per accepted change stays low and then climbs. Past the stall is the zone of diminishing returns: the loop looks busy and the card is burning.</desc>
<rect class="hx-band" x="262" y="20" width="162" height="200"/>
<path class="hx-axis-l" d="M40,20 V220 H424"/>
<path id="hx4-cost" class="hx-cost" d="M40,212 C140,210 220,200 262,180 S370,128 424,104"/>
<path class="hx-prog" d="M40,216 C100,130 170,84 262,72 S380,66 424,64"/>
<rect class="hx-stall" x="256" y="66" width="12" height="12"/>
<g class="fd-token fd-token-ui"><rect x="-5" y="-5" width="10" height="10"><animateMotion dur="6s" repeatCount="indefinite"><mpath href="#hx4-cost"/></animateMotion></rect></g>
</svg>
</div>
<p class="hx-axis-x" aria-hidden="true">loop iterations →</p>
<ul class="hx-key" aria-hidden="true">
<li><i></i>progress, as the eval scores it</li>
<li><i class="hx-key-cost"></i>cost per accepted change</li>
<li><i class="hx-key-band"></i>diminishing returns: the loop looks busy, the card is burning</li>
</ul>
<p class="mp-strip"><b>When it bends</b><span>Stop and ask what the harness is missing.</span></p>
<figcaption id="hx4-cap">The shape he described at 8:47, drawn as a schematic with no data: the curves are illustrative, not measured. The square marks where progress stalls.</figcaption>
</figure>

## Three harnesses, one task

Here's the part I'd steal. When a loop stalls, the usual move is to think about what could be different, write one new version of the harness and try it. Fausto's team hands that to a meta agent instead: one agent, or a bigger system, that reads every signal the coding harness produces.

The meta agent doesn't write one new harness. It writes three, or many. One gets different instructions, one changes the order of work, one adds or removes a tool. Each version runs the same task, the eval scores it, and you compare outcome and cost against the original.

Every version goes into a database as a snapshot of the coding environment. The one that does best, by whatever you find important, becomes the new harness. The others stay in the database with their evals and traces, because they might come in handy: what fixed a problem in one project might fix one in the next.

<figure class="fd-fig hx-var" aria-labelledby="hx5-cap" data-desc="Three harnesses, one task. A meta agent reads every signal the coding harness produces and writes variants: one with different instructions, one with a different order of work, one with a tool added or removed. The original and the variants all run the same task, and an eval outside scores each on outcome and cost, where cost means whatever matters to you right now. The best one is kept as the new harness. Every version goes into a snapshot database with its eval and traces, the losers too, so what worked can be found in the next project.">
<div class="hx-var-in">
<p class="hx-meta"><b>Meta agent</b><span>reads the signals, writes the variants</span></p>
<ol class="hx-lanes">
<li class="hx-lane"><p class="hx-lane-name">Original<span>the harness as it is</span></p><p class="hx-run" aria-hidden="true"><i></i></p><p class="hx-score">stored</p></li>
<li class="hx-lane"><p class="hx-lane-name">Variant A<span>different instructions</span></p><p class="hx-run" aria-hidden="true"><i></i></p><p class="hx-score">stored</p></li>
<li class="hx-lane hx-lane-win"><p class="hx-lane-name">Variant B<span>different order of work</span></p><p class="hx-run" aria-hidden="true"><i></i></p><p class="hx-score">kept</p></li>
<li class="hx-lane"><p class="hx-lane-name">Variant C<span>a tool added or removed</span></p><p class="hx-run" aria-hidden="true"><i></i></p><p class="hx-score">stored</p></li>
</ol>
<div class="hx-db">
<p class="hx-db-h">Snapshot database</p>
<p class="hx-db-row">Every version, its eval and its traces. The losers too.</p>
<p class="hx-cells" aria-hidden="true"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i class="new"></i><i class="new"></i><i class="new on"></i><i class="new"></i></p>
</div>
</div>
<p class="mp-strip"><b>Same task</b><span>Outcome and cost, where cost is whatever matters to you right now.</span></p>
<figcaption id="hx5-cap">A schematic of the variant step, at 10:01 in the talk. Which variant wins here is arbitrary; in his telling, it's the one the eval rates best on what you care about.</figcaption>
</figure>

In the Q&A someone asked about prompt optimizers like GEPA. He's used them in MLflow on another project, and DSPy, and calls all of it a form of reinforcement learning, of evolutionary algorithms. For more, he pointed to Meta's [Hyperagents](https://arxiv.org/abs/2603.19461) paper, which builds on the [Darwin Gödel Machine](https://arxiv.org/abs/2505.22954), and to [JIT-Agent](https://arxiv.org/abs/2608.25593), which trains an open-source model to generate harnesses. He uses that one as well.

## The symbol nobody put in the harness

The example that made it concrete came from the steel project. One harness gave the pipeline, version A, a way to crop the technical drawings and zoom in on details. What it didn't know was that some very small symbols on those drawings are very important. That knowledge wasn't in the harness.

The evals stalled. That's a signal, but it doesn't tell you what's wrong or what to change. They explored many directions and landed on a database of those symbols. The next harness gave the pipeline a way to look them up, and that became the policy from then on.

<figure class="fd-fig hx-sym-fig" aria-labelledby="hx6-cap" data-desc="The symbol story in three steps. One: harness version A lets the pipeline crop the drawing and zoom into details, but it doesn't know the small symbols matter. Two: the evals stall, which is a signal but not a diagnosis, since it doesn't say what's missing. Three: the next harness gives the pipeline a way to look the symbols up in a database. That lookup became the policy for the harnesses after it.">
<ol class="mp-trio">
<li class="mp-trio-step">
<svg class="mp-grow-art" viewBox="0 0 120 110" aria-hidden="true">
<rect class="hx-drw" x="8" y="10" width="104" height="30"/>
<circle class="hx-hole" cx="24" cy="25" r="3"/><circle class="hx-hole" cx="96" cy="25" r="3"/>
<path class="hx-sym" d="M100,3 L104,9 L108,3 Z"/>
<rect class="hx-crop" x="14" y="15" width="20" height="20"/>
<path class="hx-dim" d="M14,35 L20,56 M34,35 L100,56"/>
<rect class="hx-zoom" x="20" y="56" width="80" height="46"/>
<circle class="hx-hole" cx="60" cy="79" r="12"/>
</svg>
<p class="mp-trio-n"><b>1</b>Version A</p>
<p class="mp-trio-what">Crops and zooms into the drawing. Doesn't know the small symbols matter</p>
</li>
<li class="mp-trio-step">
<svg class="mp-grow-art" viewBox="0 0 120 110" aria-hidden="true">
<path class="hx-axis-l" d="M10,10 V96 H112"/>
<path class="hx-prog" d="M10,90 C28,62 48,46 68,44 L112,44"/>
<rect class="hx-stall" x="64" y="40" width="8" height="8"/>
<text class="hx-q" x="92" y="30" text-anchor="middle">?</text>
</svg>
<p class="mp-trio-n"><b>2</b>Evals stall</p>
<p class="mp-trio-what">A signal, not a diagnosis: it doesn't say what's missing</p>
</li>
<li class="mp-trio-step">
<svg class="mp-grow-art" viewBox="0 0 120 110" aria-hidden="true">
<rect class="hx-drw" x="4" y="44" width="28" height="28"/>
<path class="hx-sym" d="M11,52 L18,64 L25,52 Z"/>
<path class="hx-dim" d="M34,58 H44"/><path class="hx-sym" d="M44,54 L50,58 L44,62 Z"/>
<rect class="hx-drw" x="54" y="14" width="60" height="80"/>
<path class="hx-fl" d="M54,30 H114 M54,46 H114 M54,62 H114 M54,78 H114"/>
<circle class="hx-mini" cx="62" cy="22" r="3"/><rect class="mp-ln" x="70" y="21" width="36" height="3"/>
<rect class="hx-mini" x="59" y="35" width="6" height="6"/><rect class="mp-ln" x="70" y="37" width="30" height="3"/>
<path class="hx-sym" d="M58,51 L62,58 L66,51 Z"/><rect class="mp-ln" x="70" y="53" width="38" height="3"/>
<path class="hx-mini" d="M58,70 H66 M62,66 V74"/><rect class="mp-ln" x="70" y="69" width="26" height="3"/>
<circle class="hx-mini" cx="62" cy="86" r="3"/><rect class="mp-ln" x="70" y="85" width="34" height="3"/>
<rect class="hx-scan" x="55" y="15" width="58" height="14"/>
</svg>
<p class="mp-trio-n"><b>3</b>Look it up</p>
<p class="mp-trio-what">The next harness can look the symbols up in a database</p>
</li>
</ol>
<p class="mp-strip"><b>After that</b><span>The lookup became the policy for the harnesses that followed.</span></p>
<figcaption id="hx6-cap">The symbol story, at 11:59 in the talk, drawn for this note: the small mark at the top of the first drawing is the kind of detail version A never looked at.</figcaption>
</figure>

## Cost is a state of mind

Keeping every version raises the next problem. With a thousand harnesses in the database, how do you find the one that fits a new situation? His answer leans on how people remember. We don't recall by piling up detail, and the systems we build work very differently from human recall. He thinks we can learn from that.

His example is the same situation, handed to two agents, human or AI. One knows money isn't the problem and there's enough time. It can afford to be curious. Curiosity is expensive, learning is expensive, and it can pay off big. The other knows the project has to ship. There's no room to explore anymore: things just need to be checked.

He's careful here. He doesn't say an AI has emotions. He says states of mind like curiosity, concern or urgency can stand in for what we count as cost. Today a coding agent with a goal is barely aware of what's important to you. It just tries to complete the goal against some eval.

<figure class="fd-fig hx-mind" aria-labelledby="hx7-cap" data-desc="The same situation, two senses of cost. Curious: money isn't the problem and there's enough time, so the agent can explore several paths and try things; learning is expensive, and it can pay off big. Urgent: the project has to ship, so there's no room to explore and things just need to be checked, one after another. These states of mind aren't emotions in the AI. They stand in for what you count as cost, which today's coding agents rarely know.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">Money's fine, there's time</p>
<p class="mp-two-name">Curious</p>
<svg class="mp-two-art" viewBox="0 0 300 96" aria-hidden="true">
<path id="hx7-p1" class="mp-thin" d="M24,48 L110,16 L200,6"/>
<path id="hx7-p2" class="mp-thin" d="M24,48 L110,48 L200,58 L262,48"/>
<path id="hx7-p3" class="mp-thin" d="M24,48 L110,80 L200,90"/>
<path class="mp-thin" d="M110,16 L200,26 M110,48 L200,38 M110,80 L200,70"/>
<g class="hx-nodes"><rect x="18" y="42" width="12" height="12"/><rect x="107" y="13" width="6" height="6"/><rect x="107" y="45" width="6" height="6"/><rect x="107" y="77" width="6" height="6"/><rect x="197" y="3" width="6" height="6"/><rect x="197" y="23" width="6" height="6"/><rect x="197" y="35" width="6" height="6"/><rect x="197" y="55" width="6" height="6"/><rect x="197" y="67" width="6" height="6"/><rect x="197" y="87" width="6" height="6"/></g>
<path class="mp-pole" d="M268,62 V30"/><path class="mp-flag" d="M268,30 H286 L281,36 L286,42 H268 Z"/>
<g class="fd-token fd-token-ui"><rect x="-4" y="-4" width="8" height="8"><animateMotion dur="4.5s" repeatCount="indefinite"><mpath href="#hx7-p1"/></animateMotion></rect>
<rect x="-4" y="-4" width="8" height="8"><animateMotion dur="4.5s" begin="-1.5s" repeatCount="indefinite"><mpath href="#hx7-p2"/></animateMotion></rect>
<rect x="-4" y="-4" width="8" height="8"><animateMotion dur="4.5s" begin="-3s" repeatCount="indefinite"><mpath href="#hx7-p3"/></animateMotion></rect></g>
</svg>
<p class="mp-two-line">It can afford to explore and try things</p>
<p class="mp-two-line">Learning is expensive, and it can pay off big</p>
</div>
<p class="mp-two-vs" aria-hidden="true">same task</p>
<div class="mp-two-card">
<p class="mp-two-who">The project has to ship</p>
<p class="mp-two-name">Urgent</p>
<svg class="mp-two-art" viewBox="0 0 300 96" aria-hidden="true">
<path class="mp-track" d="M14,48 H268"/>
<g class="hx-boxes"><rect x="52" y="40" width="16" height="16"/><rect x="112" y="40" width="16" height="16"/><rect x="172" y="40" width="16" height="16"/><rect x="232" y="40" width="16" height="16"/></g>
<path class="hx-tick hx-tick-0" d="M55,48 L59,52 L66,43"/><path class="hx-tick hx-tick-1" d="M115,48 L119,52 L126,43"/><path class="hx-tick hx-tick-2" d="M175,48 L179,52 L186,43"/><path class="hx-tick hx-tick-3" d="M235,48 L239,52 L246,43"/>
<path class="mp-pole" d="M274,62 V30"/><path class="mp-flag" d="M274,30 H292 L287,36 L292,42 H274 Z"/>
<g class="fd-token"><rect x="-4" y="-4" width="8" height="8"><animateMotion dur="4s" repeatCount="indefinite" path="M14,48 H268"/></rect></g>
</svg>
<p class="mp-two-line">No room to explore anymore</p>
<p class="mp-two-line">Things just need to be checked</p>
</div>
</div>
<p class="mp-strip"><b>Not emotions</b><span>A stand-in for what you count as cost. Today's coding agents rarely know it.</span></p>
<figcaption id="hx7-cap">His two agents in the same situation, at 14:00 in the talk. Same task, different sense of what's expensive.</figcaption>
</figure>

## Where my own harness sits

He ended on four things to take home: let useful methods outlive the task, think hard about what costs mean because it's a lot more than tokens, let competing perspectives shape the next move, and learn.

My own setup is the inside of his diagram. A CLAUDE.md per folder, 26 skills of my own, a hook that refuses to open a pull request without an issue number, and a memory folder of about 200 one-fact files. When I correct an agent, it saves the lesson with a why, and the next session reads it. So part of my harness is already written by agents.

But every change is one variant, kept because I said so. No snapshots, no two versions racing on the same task. Reviews judge each code change; nothing judges the harness itself. That's the single-hunch habit Fausto's team moved past.

<div class="levels" role="group" aria-label="Three ways to change a harness. One, where I am today: one fix at a time, by hand, a rule written after a mistake. With an eval outside the loop it becomes two, a judged loop where every run is scored from outside and the cost per accepted change is visible. With a meta agent it becomes three, Fausto's setup: several harness variants on the same task, the best kept and every snapshot stored">
  <div class="level level--focus">
    <p class="level-num">1 · me, today</p>
    <h3>One fix, by hand</h3>
    <p>A rule written after a mistake, kept because I said so.</p>
  </div>
  <div class="level-step"><span>An eval outside</span></div>
  <div class="level">
    <p class="level-num">2</p>
    <h3>A judged loop</h3>
    <p>Every run scored from outside, cost per accepted change in view.</p>
  </div>
  <div class="level-step"><span>A meta agent</span></div>
  <div class="level">
    <p class="level-num">3 · Fausto's team</p>
    <h3>Variants, keep the best</h3>
    <p>Several harnesses on the same task, every snapshot stored.</p>
  </div>
</div>

The number I'm missing is his cost per accepted change. [Meterlex](/projects/meterlex.html) already prices every session I run, but nothing joins that to which changes got merged.

The [talk](https://www.youtube.com/watch?v=kic8ijrzxLI) is 18 minutes. The harness split is at [6:29](https://www.youtube.com/watch?v=kic8ijrzxLI&t=389s), the variants at [10:01](https://www.youtube.com/watch?v=kic8ijrzxLI&t=601s) and the symbol story at [11:59](https://www.youtube.com/watch?v=kic8ijrzxLI&t=719s). If you've raced two versions of a CLAUDE.md on the same task, I'd love to hear which one won, and why.
