<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>The Harness</title><description>Notes on harness engineering. Harness engineering, agentic AI evaluation, and the practical work of making AI agents reliable in architecture, engineering, and construction (AEC).</description><link>https://theharness.blog/</link><item><title>The Harness Is All You Need</title><link>https://theharness.blog/blog/the-harness-is-all-you-need/</link><guid isPermaLink="true">https://theharness.blog/blog/the-harness-is-all-you-need/</guid><description>Why domain-specific agent harnesses, not bigger models, are what close the AI performance gap on real engineering tasks — and why the AEC industry needs proper benchmarks to prove it.</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Estimated reading time: 5 minutes&lt;/p&gt;
&lt;p&gt;There is a genre of LinkedIn post that goes something like this: &quot;I gave GPT my floor plan and it produced a schedule in 30 seconds. The industry will never be the same.&quot;&lt;/p&gt;
&lt;p&gt;It&apos;s a compelling demo but not much more than anecdotal evidence.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The gap between a model producing a plausible-looking answer on a single prompt and actually performing reliably across a wide range of real engineering tasks is enormous. But we don&apos;t have the means to measure it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have written about this before. In &lt;a href=&quot;/blog/where-capability-actually-lives-in-agentic-engineering/&quot;&gt;Where Capability Actually Lives&lt;/a&gt;, the argument was that in domain-specific work, performance is not a property of the model alone — it is distributed across the model, the tools, the verification, the orchestration, and the output contracts around it. In &lt;a href=&quot;/blog/benchmarking-agents-on-real-engineering-work/&quot;&gt;Benchmarking Agents on Real Engineering Work&lt;/a&gt;, early empirical results supported that claim: when harness support was removed, capability didn&apos;t degrade gracefully. It collapsed. And in &lt;a href=&quot;/blog/what-if-the-harness-could-improve-itself/&quot;&gt;What If the Harness Could Improve Itself?&lt;/a&gt;, we showed that automated improvement of the harness environment compounds in ways that model upgrades alone don&apos;t.&lt;/p&gt;
&lt;p&gt;Those were arguments and early experiments. What we didn&apos;t have was a proper benchmark — one broad enough, multimodal enough, and rigorous enough to make the case at scale.&lt;/p&gt;
&lt;p&gt;Now we do. Or at least a solid start at it.&lt;/p&gt;
&lt;h2&gt;AEC-Bench&lt;/h2&gt;
&lt;p&gt;Together with &lt;a href=&quot;https://www.nomic.ai/news/aec-bench-a-multimodal-benchmark-for-agentic-systems-in-architecture-engineering-and-construction&quot;&gt;Nomic AI&lt;/a&gt;, we have released &lt;a href=&quot;https://github.com/nomic-ai/aec-bench&quot;&gt;&lt;strong&gt;AEC-Bench&lt;/strong&gt;&lt;/a&gt;: the first multimodal benchmark for evaluating AI agents on real-world architecture, engineering, and construction tasks. It is open source under Apache 2.0, and it covers 196 task instances across three complexity levels, from single-sheet understanding to cross-document coordination across drawings, specifications, and RFIs.&lt;/p&gt;
&lt;p&gt;Real documents, real decisions. The kind AEC professionals deal with every day: reading construction drawings, cross-referencing detail callouts, navigating sheet indices, reconciling specs with RFIs. Work where getting the gist doesn&apos;t cut it.&lt;/p&gt;
&lt;p&gt;We evaluated multiple frontier agent configurations — including Claude Code (Opus 4.6, Sonnet 4.6), OpenAI Codex (GPT-5.2, GPT-5.4), and Nomic&apos;s domain-specific agent — across all three complexity tiers. The full results are in the paper, and they are worth reading. But the headline finding has nothing to do with which model scored highest.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The headline finding is that the harness matters more than the model.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Retrieval Is the Bottleneck, Not Reasoning&lt;/h2&gt;
&lt;p&gt;Agents frequently fail before they get to the hard part — before any engineering judgment is required — because they cannot reliably locate the right sheet or the right cross-reference within a complex multimodal document set. Retrieval has to be embedded in the agent&apos;s logic and reasoning approach. Without the right harness, agents defaulted to treating rich construction drawings as flat text files via pdftotext, a fundamental mismatch with the structure and visual density of real AEC documents.&lt;/p&gt;
&lt;p&gt;The model was fine. The harness was wrong.&lt;/p&gt;
&lt;p&gt;But when equipped with domain-specific document parsing and retrieval, performance jumped dramatically. Gains of twenty to thirty points on the hardest task families, far exceeding what any model upgrade alone could deliver.&lt;/p&gt;
&lt;p&gt;That&apos;s the empirical version of the claim I have been making for months: &lt;strong&gt;in domain-specific work, the operating environment is part of the capability.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Benchmarks Are Not Leaderboards&lt;/h2&gt;
&lt;p&gt;This matters because it changes what benchmarks are for.&lt;/p&gt;
&lt;p&gt;If you think a benchmark is a leaderboard — a place to crown a winner — then AEC-Bench tells you which agent configuration scored highest. Fine. But that is the least interesting thing it does.&lt;/p&gt;
&lt;p&gt;The more important function of a benchmark like this is diagnostic. It tells you &lt;em&gt;where&lt;/em&gt; the system breaks, &lt;em&gt;why&lt;/em&gt; it breaks, and &lt;em&gt;what kind of intervention&lt;/em&gt; would fix it. Retrieval matters more than reasoning on these tasks. Document understanding is a harder unsolved problem than calculation or code generation. And the difference between a model that scores 40% and a model that scores 70% might not be the model at all — it might be the tools it was given.&lt;/p&gt;
&lt;p&gt;That diagnostic function is why the &quot;it works on my example&quot; style of evaluation is so dangerous. An anecdote has no control group. It has no complexity tiers. It does not distinguish between a model that got lucky on a simple case and a system that performs reliably across difficulty levels and task types. The anecdote tells you what happened once. The benchmark tells you what to expect, and more importantly, what to fix.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you want AI to work in engineering, stop collecting demos and start building benchmarks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Benchmarks can ossify. They can reward gaming over genuine capability. But they&apos;re still the only tool that separates signal from anecdote.&lt;/p&gt;
&lt;p&gt;For anyone building AI systems for AEC, or for any domain where the work is artifact-bound and intolerant of plausibly generic answers: rigorous evaluation on real documents at real complexity is the minimum. And the full system has to be in scope — that&apos;s where the capability actually lives.&lt;/p&gt;
&lt;h2&gt;What Comes Next&lt;/h2&gt;
&lt;p&gt;AEC-Bench is a start, but it is only a start. The industry needs benchmarks that evolve — that grow with more task families, more disciplines, and document types the current set doesn&apos;t cover. It needs evaluation infrastructure that supports reproducibility, trajectory analysis, and systematic comparison of harness designs. Tooling that lets you understand &lt;em&gt;how&lt;/em&gt; an agent succeeded or failed, and what that means for the next iteration.&lt;/p&gt;
&lt;p&gt;This is what &lt;strong&gt;aec-bench&lt;/strong&gt; is supposed to be — an open platform for AEC agent evaluation — and we will have more to share soon.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/aec-bench/aec-bench-tui.png&quot; alt=&quot;aec-bench: from task templates and instance generation to experiment orchestration, evaluation, and comparison across harness designs — all from the terminal.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the meantime, the &lt;a href=&quot;https://arxiv.org/abs/2603.29199&quot;&gt;paper&lt;/a&gt; and benchmark &lt;a href=&quot;https://huggingface.co/datasets/nomic-ai/aec-bench&quot;&gt;dataset&lt;/a&gt; are available now. If you&apos;re interested making AI work in the built environment, take a look and share your thoughts! And if you&apos;re still relying on anecdotes to judge what these systems can do, consider that you might be optimising for demos when you should be optimising for deployment.&lt;/p&gt;
</content:encoded><author>Theodoros Galanos</author></item><item><title>What If the Harness Could Improve Itself?</title><link>https://theharness.blog/blog/what-if-the-harness-could-improve-itself/</link><guid isPermaLink="true">https://theharness.blog/blog/what-if-the-harness-could-improve-itself/</guid><description>Applying the autoresearch pattern to self-improve an engineering agent harness. Automated prompt optimisation across HVAC audit tasks on Claude and GPT-4.1-mini, showing how harness engineering compounds when the improvement loop runs itself.</description><pubDate>Sat, 14 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Estimated reading time: 25 minutes&lt;/p&gt;
&lt;p&gt;About a week ago, Andrej Karpathy released &lt;a href=&quot;https://github.com/karpathy/autoresearch&quot;&gt;autoresearch&lt;/a&gt;: a system where an LLM agent improves a model training pipeline overnight. The agent edits code, trains for five minutes, checks whether the result improved, and keeps or discards the change. Over roughly 700 experiments, it found around 20 real improvements and cut GPT-2 training time by 11%.&lt;/p&gt;
&lt;p&gt;The design is compact: one markdown file, one editable target (&lt;code&gt;train.py&lt;/code&gt;), one metric (&lt;code&gt;val_bpb&lt;/code&gt;), and a greedy keep-or-revert loop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But training code is not the only thing that determines how well an AI system performs.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;/blog/where-capability-actually-lives-in-agentic-engineering/&quot;&gt;Where Capability Actually Lives in Agentic Engineering&lt;/a&gt;, I argued that in domain-specific work, performance is distributed across the whole system: model, tools, prompts, verification, and output contracts. In &lt;a href=&quot;/blog/benchmarking-agents-on-real-engineering-work/&quot;&gt;Benchmarking Agents on Real Engineering Work&lt;/a&gt;, initial results supported that claim. When workflow support was removed, capability did not degrade gracefully. It collapsed.&lt;/p&gt;
&lt;p&gt;That finding raises a question this article tries to answer: &lt;strong&gt;if the environment around the model carries a meaningful share of the capability, can part of that environment begin improving itself?&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If the operating environment carries capability, then improving the environment is improving the capability. And if the improvement loop can be automated, it compounds.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This article applies that pattern to only one part of an engineering evaluation harness: the system prompt that guides audit behaviour. It lays out the design, reports four early experiment blocks on HVAC audit tasks, and examines what this kind of recursive improvement actually surfaces.&lt;/p&gt;
&lt;h2&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;We applied the autoresearch pattern to one surface of our harness: the system prompt that guides audit behaviour.&lt;/li&gt;
&lt;li&gt;The system uses an information barrier so the autoresearcher agent sees patterns in outcomes, not task answers.&lt;/li&gt;
&lt;li&gt;Behavioural feedback from an agentic-bonds classifier gives a richer signal than reward alone by showing how the agent distributed effort across execution, deliberation, exploration, and verification.&lt;/li&gt;
&lt;li&gt;Across the Claude full-reference runs, one prompt change improved mean reward from 0.94 to 0.98 across five task instances. The entire change was two sentences: an explicit per-room verification checklist.&lt;/li&gt;
&lt;li&gt;On Claude at &lt;code&gt;L0&lt;/code&gt;, that full-reference winner backfired. Confidence thresholds and cross-room consistency instead improved reward from 0.73 to 1.0 on one instance.&lt;/li&gt;
&lt;li&gt;On GPT-4.1-mini at &lt;code&gt;L0&lt;/code&gt;, the same high-level strategy transferred, but the wording had to become a hard verification gate, and the model still topped out at 0.83.&lt;/li&gt;
&lt;li&gt;For Claude, perfect runs were &lt;em&gt;more&lt;/em&gt; execution-heavy and &lt;em&gt;less&lt;/em&gt; verification-heavy than partial ones. The difference was timing, not quantity: the strongest runs executed first and verified later in concentrated blocks.&lt;/li&gt;
&lt;li&gt;The main lesson is conditional. Prompt strategy depends both on the information available and on the model receiving the prompt.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why Autoresearch Works&lt;/h2&gt;
&lt;p&gt;Karpathy&apos;s design works because it fixes the evaluation loop into a form that can run unattended.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fixed time budget.&lt;/strong&gt; Every experiment runs for exactly five minutes. Scores are comparable because improvements cannot hide behind longer training.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Single artefact.&lt;/strong&gt; The agent edits one file. That constrains the search space and keeps diffs reviewable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Binary keep/discard.&lt;/strong&gt; The metric improved or it did not. No subjective judgement required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git as memory.&lt;/strong&gt; Every experiment is a commit, so the branch tip stays at the best known configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As &lt;a href=&quot;https://delip.github.io/mini-apps/annotated-autoresearch/&quot;&gt;Delip Rao&apos;s prompt anatomy&lt;/a&gt; notes, &lt;code&gt;program.md&lt;/code&gt; is not a loose prompt but an operating procedure: context, constraints, target, audit trail, loop, and safety valves. That is why the system works.&lt;/p&gt;
&lt;p&gt;As &lt;a href=&quot;https://www.philschmid.de/autoresearch&quot;&gt;Philipp Schmid&lt;/a&gt; notes, when experiments run far faster than a human can manage, the bottleneck becomes the evaluation system. If the harness is a bottleneck, improving the harness becomes a high-leverage move.&lt;/p&gt;
&lt;h2&gt;Why Engineering Harnesses Are Different from Software Agent Harnesses&lt;/h2&gt;
&lt;p&gt;Translating the autoresearch pattern to engineering harnesses requires three design changes.&lt;/p&gt;
&lt;h3&gt;The information barrier&lt;/h3&gt;
&lt;p&gt;In autoresearch, the autoresearcher agent sees everything: full training logs, exact loss curves, model weights. In our case, the artefact is a system prompt. If the autoresearcher could see the task content or planted errors, it could bake that knowledge into the prompt and overfit the benchmark.&lt;/p&gt;
&lt;p&gt;So we need an information barrier between raw trial outputs and the autoresearcher. The autoresearcher sees &lt;em&gt;patterns&lt;/em&gt; — &quot;3 of the last 5 runs had incomplete coverage&quot; — but never &lt;em&gt;answers&lt;/em&gt;. That is the key structural difference from autoresearch.&lt;/p&gt;
&lt;h3&gt;More Than One Score&lt;/h3&gt;
&lt;p&gt;Autoresearch has one scalar: &lt;code&gt;val_bpb&lt;/code&gt;. Engineering harnesses need more. A score of 0.7 could mean missed findings, formatting errors, or a timeout. The autoresearcher needs to know not just how well the agent scored, but &lt;em&gt;how it behaved&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;We address this with three feedback channels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reward&lt;/strong&gt; — a float between 0.0 and 1.0 produced by a deterministic verifier that scores how completely and correctly the agent completed the audit task.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failure categories&lt;/strong&gt; — abstracted failure modes without task-specific details: &lt;code&gt;incomplete_coverage&lt;/code&gt;, &lt;code&gt;incorrect_values&lt;/code&gt;, &lt;code&gt;format_error&lt;/code&gt;, &lt;code&gt;timeout&lt;/code&gt;, &lt;code&gt;false_positives&lt;/code&gt;, &lt;code&gt;clean_miss&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Behavioural profile&lt;/strong&gt; — a classification of each turn in the trace using our &lt;a href=&quot;https://arxiv.org/abs/2601.06002&quot;&gt;agentic-bonds classifier&lt;/a&gt;. It labels turns as execution, deliberation, exploration, or verification, and returns the distribution, temporal sequence, and a short narrative summary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That gives the autoresearcher more than a score drop. It can tell whether the agent stopped verifying, front-loaded execution, or spent too long deliberating.&lt;/p&gt;
&lt;h3&gt;The Target Is the Workflow Prompt&lt;/h3&gt;
&lt;p&gt;Autoresearch optimises model architecture and hyperparameters. The artefact is code that defines how a neural network trains. In our case, the artefact is a system prompt: workflow instructions for audit work. It changes how the agent works, not what it knows. Prompts were the easiest surface to start with: easy to isolate, easy to diff, and easy to evaluate. As the harness becomes more structured, other surfaces like task generation, scoring rubrics, and tool workflows become plausible optimisation targets too.&lt;/p&gt;
&lt;p&gt;This is closer to optimising an organisation&apos;s operating procedure than to optimising code. The question is not &quot;what parameters produce the lowest loss?&quot; but &quot;what workflow instructions produce the most reliable engineering review?&quot;&lt;/p&gt;
&lt;h2&gt;The Design: Automated Prompt Optimisation for HVAC Audit Tasks&lt;/h2&gt;
&lt;p&gt;The system has three layers with a strict information flow.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/autoresearch/architecture_information_flow.svg&quot; alt=&quot;Architecture of the autoresearch setup. A local autoresearcher agent edits the workflow prompt and reads sanitised feedback, support scripts enforce the information barrier and produce summaries, and the experiment sandbox runs the unchanged evaluation harness behind that boundary.&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The autoresearcher agent&lt;/strong&gt; runs locally, driven by Claude Code following a &lt;code&gt;program.md&lt;/code&gt; — the same pattern as autoresearch. It edits system prompts, makes git commits, reads sanitised feedback, and decides whether to keep or revert each change. It never sees task content, verifier code, or raw conversation transcripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support scripts&lt;/strong&gt; handle the structured mechanics. &lt;code&gt;run_experiment.py&lt;/code&gt; triggers a Harbor job in a Docker sandbox with the current system prompt. &lt;code&gt;feedback.py&lt;/code&gt; enforces the information barrier: it reads the raw trial outputs, strips task-specific content, runs the bonds classifier, and returns a sanitised JSON summary. &lt;code&gt;results.py&lt;/code&gt; manages the TSV audit trail.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The experiment sandbox&lt;/strong&gt; is unchanged from the existing evaluation harness — the same Docker containers, agents, verifiers, and output contracts used in the benchmark work from the previous article. The only thing that changes between iterations is the system prompt file mounted into the container.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The loop mirrors autoresearch exactly:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit the system prompt&lt;/li&gt;
&lt;li&gt;Git commit&lt;/li&gt;
&lt;li&gt;Run experiment in sandbox&lt;/li&gt;
&lt;li&gt;Read sanitised feedback&lt;/li&gt;
&lt;li&gt;Keep if reward improved, revert if not&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The &lt;code&gt;program.md&lt;/code&gt; is organised into eleven sections: purpose, setup, scope constraints, artefact definition, experiment execution, feedback reading, optimisation targets, the loop itself, logging, autonomy mandate, and information discipline. The information discipline section is the one that has no analogue in Karpathy&apos;s version: it explicitly instructs the autoresearcher not to attempt reading task files or verifier code, and frames any desire to know specific task details as a signal to focus on process guidance instead.&lt;/p&gt;
&lt;h2&gt;What Behavioural Feedback Adds to Agent Evaluation&lt;/h2&gt;
&lt;p&gt;The agentic-bonds classifier gives the autoresearcher something autoresearch does not have: a temporal view of how the agent distributed its effort across the trace.&lt;/p&gt;
&lt;p&gt;Each assistant turn in the conversation trace is classified as one of four types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Execution&lt;/strong&gt; — doing the obvious next step: calling tools, formatting output, writing results&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deliberation&lt;/strong&gt; — committed reasoning about &lt;em&gt;how&lt;/em&gt; to solve a problem, step by step&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exploration&lt;/strong&gt; — comparing alternatives, deciding &lt;em&gt;what&lt;/em&gt; to do&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verification&lt;/strong&gt; — checking backward at its own work, comparing results against expectations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The autoresearcher sees this at three levels: the &lt;strong&gt;bond profile&lt;/strong&gt; (distribution), the &lt;strong&gt;bond sequence&lt;/strong&gt; (temporal pattern), and a short &lt;strong&gt;bond narrative&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;What the classifier actually found&lt;/h3&gt;
&lt;p&gt;We classified all 30 Claude Sonnet 4.6 traces from these runs — 12 perfect (reward 1.0) and 18 partial (reward 0.9). The classifier should be read as a behavioural lens rather than ground truth about cognition, but even on that basis the headline finding was counterintuitive.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/autoresearch/bonds_comparison.svg&quot; alt=&quot;Behavioural comparison across 30 traces. Perfect traces were more execution-heavy and less verification-heavy than partial traces, with deliberation remaining low in both groups.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Perfect traces are more execution-heavy, not more verification-heavy.&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Execution&lt;/th&gt;
&lt;th&gt;Verification&lt;/th&gt;
&lt;th&gt;Deliberation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Perfect (1.0)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;55.5%&lt;/td&gt;
&lt;td&gt;41.9%&lt;/td&gt;
&lt;td&gt;2.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Partial (0.9)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;45.3%&lt;/td&gt;
&lt;td&gt;49.0%&lt;/td&gt;
&lt;td&gt;5.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Exploration was effectively absent in this set of traces, which is why it does not appear as a meaningful part of the comparison.&lt;/p&gt;
&lt;p&gt;The agents that scored perfectly spent &lt;em&gt;less&lt;/em&gt; time verifying than the ones that missed an error. The execution-to-verification ratio shows the same pattern: 1.71 for perfect traces versus 1.06 for partial ones. This does not mean verification is unhelpful. It means badly timed verification correlates with worse performance.&lt;/p&gt;
&lt;p&gt;Other patterns we see in the data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Perfect traces execute first, verify later.&lt;/strong&gt; In the first half of the trace, perfect agents spent only 28% of turns on verification, compared to 41% for partial agents. By the second half, both groups converged around 55%. Perfect agents front-loaded decisive execution, then verified in concentrated blocks. Partial agents hedged earlier — which appears to reflect uncertainty rather than thoroughness.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perfect traces build momentum.&lt;/strong&gt; The average longest uninterrupted execution streak was 3.8 turns for perfect traces, compared to 2.4 for partial. Perfect agents commit to a direction and sustain it. Partial agents interrupt themselves to verify before they have built enough context for verification to be useful.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deliberation correlates with imperfection.&lt;/strong&gt; Only 25% of perfect traces contained any deliberation turns, compared to 56% of partial traces. When the agent pauses to reason about &lt;em&gt;how&lt;/em&gt; to proceed, it is more likely to miss something. This suggests that deliberation in these traces signals uncertainty or confusion, not carefulness.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start patterns diverge.&lt;/strong&gt; 58% of perfect traces opened with three consecutive execution turns (&lt;code&gt;exec | exec | exec&lt;/code&gt;). Only 28% of partial traces did the same — most interrupted with verification or deliberation by the third turn.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;What this means for prompt design&lt;/h3&gt;
&lt;p&gt;The behavioural data sharpens the prompt improvement story. The successful change — adding a systematic checklist &lt;code&gt;(a) inputs, (b) components, (c) ventilation, (d) totals&lt;/code&gt; — did not add verification. It structured the execution phase so the agent could work systematically before verifying.&lt;/p&gt;
&lt;p&gt;In other words, the checklist made the agent behave more like the perfect traces already did: decisive execution, then concentrated verification.&lt;/p&gt;
&lt;h2&gt;Early Results: How Small Harness Changes Moved HVAC Audit Performance&lt;/h2&gt;
&lt;p&gt;We ran four experiment blocks on the system prompt that guides HVAC schedule audit tasks. One established the single-instance trap, one found a prompt improvement across five full-reference instances, one showed that the best strategy changes at &lt;code&gt;L0&lt;/code&gt;, and one repeated the &lt;code&gt;L0&lt;/code&gt; setup on a weaker model.&lt;/p&gt;
&lt;h3&gt;Claude on One Full-Reference Task&lt;/h3&gt;
&lt;p&gt;The first Claude Sonnet 4.6 run tested five prompt modifications against a single task instance (adelaide-15rm). The baseline scored 0.9 — four of five planted errors detected.&lt;/p&gt;
&lt;p&gt;Five strategies were tried: a planning step, cascade-error reporting, field-by-field verification, larger batches, and a re-verification pass. None moved the reward.&lt;/p&gt;
&lt;p&gt;The autoresearcher reasonably concluded that the fifth error looked like a model capability boundary rather than a prompt issue. The one useful finding was about efficiency: the larger-batch approach achieved the same accuracy with fewer turns and tokens — 9 turns and 98k tokens versus the baseline&apos;s 10 turns and 105k.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;That conclusion turned out to be wrong.&lt;/strong&gt; Not because the reasoning was poor, but because the evidence was insufficient. Single-instance evaluation made a task-specific ceiling look like a universal one.&lt;/p&gt;
&lt;h3&gt;Claude on Five Full-Reference Tasks&lt;/h3&gt;
&lt;p&gt;The second Claude Sonnet 4.6 run tested four modifications against five instances simultaneously (Adelaide, Brisbane, Darwin, Melbourne, Perth). The baseline mean reward was 0.94: three instances at 0.9 and two at 1.0.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/autoresearch/session2_trajectory.svg&quot; alt=&quot;Claude full-reference trajectory across five task instances. Most prompt changes only added cost, while the systematic checklist improved mean reward to 0.98 with a modest token increase.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Three approaches failed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Iteration 1&lt;/strong&gt; added a completeness rule: &quot;verify every room, do not skip rooms, a missed error costs more than an extra turn.&quot; No reward change. The instruction was redundant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Iteration 2&lt;/strong&gt; added zero tolerance for numerical mismatches: &quot;report ANY difference, do not dismiss as rounding.&quot; No reward change, but efficiency degraded sharply — 64 turns and 685k tokens versus the baseline&apos;s 52 turns and 553k. The agent re-checked more and found nothing new.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Iteration 3&lt;/strong&gt; restructured the workflow to a two-pass approach: sweep all totals first, then deep-dive flagged rooms. No reward improvement, and efficiency nearly doubled — 79 turns and 1.08 million tokens. It mostly shuffled which errors were caught without improving overall coverage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Iteration 4 worked.&lt;/strong&gt; The change was small: two sentences extended. The orient step added design conditions. The verify step added an explicit per-room checklist: (a) input parameters, (b) each heat gain component, (c) ventilation terms, (d) totals. Mean reward rose from 0.94 to 0.98. Adelaide and Melbourne both jumped from 0.9 to 1.0. Only Darwin remained at 0.9. The efficiency cost was modest: 55 turns and 613k tokens, an 11% increase over baseline.&lt;/p&gt;
&lt;p&gt;Here is the actual diff — the entire improvement:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-1. **Orient (1 turn):** Read the schedule and identify the number of rooms
-   and available tools. Count your rooms — this determines your turn budget.
-2. **Verify (1 turn per 2-3 rooms):** For each batch of rooms, call the
-   calculation tool, then compare results against the schedule values.
-   Note discrepancies immediately.
+1. **Orient (1 turn):** Read the schedule and identify the number of rooms
+   and available tools. Count your rooms — this determines your turn budget.
+   Before proceeding, note the design conditions: outdoor temperature,
+   humidity, and any building-level parameters.
+2. **Verify (1 turn per 2-3 rooms):** For each batch of rooms, call the
+   calculation tool, then compare results against the schedule values.
+   For each room, systematically check: (a) input parameters (occupancy,
+   area, volume), (b) each heat gain component, (c) ventilation terms,
+   (d) totals. Note discrepancies immediately.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The improvement came from making an implicit checking procedure explicit.&lt;/p&gt;
&lt;h3&gt;What the failed approaches have in common&lt;/h3&gt;
&lt;p&gt;The three failed approaches all tried to &lt;strong&gt;add more work&lt;/strong&gt;. The successful one &lt;strong&gt;structured the existing work differently&lt;/strong&gt;.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Iteration&lt;/th&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Reward&lt;/th&gt;
&lt;th&gt;Token cost vs baseline&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Baseline&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;0.94&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Add completeness rule&lt;/td&gt;
&lt;td&gt;0.94&lt;/td&gt;
&lt;td&gt;-1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Zero tolerance&lt;/td&gt;
&lt;td&gt;0.94&lt;/td&gt;
&lt;td&gt;+24%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Two-pass restructure&lt;/td&gt;
&lt;td&gt;0.94&lt;/td&gt;
&lt;td&gt;+95%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Systematic checklist&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.98&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+11%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That pattern — structure matters more than volume — echoes the previous article&apos;s result that the strongest models did not simply verify more; they verified as part of a structured workflow.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/autoresearch/strategy_contrast.svg&quot; alt=&quot;Strategy contrast between the full-reference and L0 winners. The full-reference prompt benefits from systematic granular verification, while the L0 prompt benefits from uncertainty management and cross-room consistency.&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Claude at L0&lt;/h3&gt;
&lt;p&gt;The Claude &lt;code&gt;L0&lt;/code&gt; run targeted the hardest reference level: &lt;code&gt;audit-office-building-L0&lt;/code&gt;. Here the agent receives only room type, floor area, ceiling height, and location. It does not receive design conditions, formulas, or lookup tables. The prompt is operating in a much thinner information environment.&lt;/p&gt;
&lt;p&gt;The baseline reward on the Adelaide &lt;code&gt;L0&lt;/code&gt; instance was 0.73. The agent found 2 of 3 issues, but it also produced false positives.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/autoresearch/session3_l0_trajectory.svg&quot; alt=&quot;Claude L0 trajectory. Confidence thresholds removed false positives, the five-instance full-reference checklist backfired, and cross-room consistency delivered a perfect score with sharply lower token usage.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The first useful change was not a better checking procedure. It was a confidence threshold: &lt;strong&gt;only report an error if the model can identify the specific assumption, parameter, or formula that appears to be wrong&lt;/strong&gt;. That lifted reward from 0.73 to 0.83 by eliminating false positives.&lt;/p&gt;
&lt;p&gt;The next result was the important one. The full-reference winner — the systematic per-room checklist — did not generalise. It backfired. Reward dropped from 0.83 to 0.53, and false positives returned. At full-reference levels, granular checks help because the agent can anchor them against formulas and tables. At &lt;code&gt;L0&lt;/code&gt;, the same granularity forces the agent to compare schedule values against assumptions it is partly reconstructing from memory.&lt;/p&gt;
&lt;p&gt;The winning change was different in kind. Adding a cross-room consistency rule — compare similar rooms against one another and investigate large relative differences — lifted reward from 0.83 to 1.0 on this instance, while also reducing token usage sharply.&lt;/p&gt;
&lt;p&gt;That is a strong result, but it is still single-instance. It shows that the strategy can change sharply when reference material is removed. It does not yet prove that we have the generally best &lt;code&gt;L0&lt;/code&gt; prompt.&lt;/p&gt;
&lt;p&gt;What it does show is that prompt optimisation is reference-level-specific. At high reference levels, the prompt benefited from explicit granular verification. At &lt;code&gt;L0&lt;/code&gt;, the better strategy was uncertainty management plus relative comparison.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;L0 Iteration&lt;/th&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;Reward&lt;/th&gt;
&lt;th&gt;Tokens In&lt;/th&gt;
&lt;th&gt;Outcome&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Baseline&lt;/td&gt;
&lt;td&gt;Original prompt&lt;/td&gt;
&lt;td&gt;0.73&lt;/td&gt;
&lt;td&gt;304k&lt;/td&gt;
&lt;td&gt;2/3 findings + false positives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Confidence threshold&lt;/td&gt;
&lt;td&gt;0.83&lt;/td&gt;
&lt;td&gt;248k&lt;/td&gt;
&lt;td&gt;False positives removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Systematic checklist&lt;/td&gt;
&lt;td&gt;0.53&lt;/td&gt;
&lt;td&gt;407k&lt;/td&gt;
&lt;td&gt;Backfired&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Cross-room consistency&lt;/td&gt;
&lt;td&gt;1.00&lt;/td&gt;
&lt;td&gt;104k&lt;/td&gt;
&lt;td&gt;3/3 findings, no false positives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Add design-conditions note&lt;/td&gt;
&lt;td&gt;1.00&lt;/td&gt;
&lt;td&gt;258k&lt;/td&gt;
&lt;td&gt;Same reward, worse efficiency&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;GPT-4.1-mini at L0&lt;/h3&gt;
&lt;p&gt;The GPT-4.1-mini &lt;code&gt;L0&lt;/code&gt; run repeated the same task on the weakest model from the earlier benchmark. The baseline was much worse than Claude&apos;s: reward 0.37, only 1 of 3 planted errors found, and 18 false positives.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/autoresearch/session4_gpt41mini_trajectory.svg&quot; alt=&quot;GPT-4.1-mini L0 trajectory. The winning verification-gate iteration eliminates false positives and reaches 0.83, while several later prompt additions degrade or crash performance entirely.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What transferred was the strategy, not the exact wording. The soft confidence-threshold language that helped Claude did not work here. But once &lt;strong&gt;the instruction was rewritten as a hard verification gate&lt;/strong&gt; — do not report a discrepancy unless the tool confirms it — false positives disappeared and reward jumped to 0.83.&lt;/p&gt;
&lt;p&gt;That shows two things at once. First, the underlying prompt idea generalises across model families: reduce unsupported claims, rely on internal consistency, and force the model to ground discrepancies. Second, the wording still has to match the model&apos;s instruction-following style.&lt;/p&gt;
&lt;p&gt;The ceiling also remained model-specific. GPT-4.1-mini improved dramatically, but it did not reach Claude&apos;s &lt;code&gt;L0&lt;/code&gt; result. The best run found 2 of 3 issues with no false positives.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/autoresearch/crossmodel_l0_contrast.svg&quot; alt=&quot;Cross-model L0 contrast. The same broad L0 strategy transfers across Claude Sonnet 4.6 and GPT-4.1-mini, but the prompt wording and final ceiling differ substantially.&quot; /&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Baseline&lt;/th&gt;
&lt;th&gt;Best&lt;/th&gt;
&lt;th&gt;Winning strategy&lt;/th&gt;
&lt;th&gt;Constraint style&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Sonnet 4.6&lt;/td&gt;
&lt;td&gt;0.73&lt;/td&gt;
&lt;td&gt;1.00&lt;/td&gt;
&lt;td&gt;Confidence threshold + cross-room consistency&lt;/td&gt;
&lt;td&gt;Advisory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4.1-mini&lt;/td&gt;
&lt;td&gt;0.37&lt;/td&gt;
&lt;td&gt;0.83&lt;/td&gt;
&lt;td&gt;Verification gate + cross-room consistency&lt;/td&gt;
&lt;td&gt;Prohibitive&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The early behavioural picture suggests the two wins differ not only in wording, but also in how the models stabilise. Claude&apos;s successful &lt;code&gt;L0&lt;/code&gt; run remained relatively execution-compatible. GPT-4.1-mini&apos;s best run was much more verification-heavy.&lt;/p&gt;
&lt;h2&gt;What the Results Suggest for Harness Engineering in AEC&lt;/h2&gt;
&lt;h3&gt;Self-improving harnesses are feasible&lt;/h3&gt;
&lt;p&gt;The system worked. The autoresearcher agent formed hypotheses from sanitised feedback, made targeted prompt changes, measured their effect, and advanced the branch when something improved. The information barrier appeared to hold, and some improvements generalised across instances.&lt;/p&gt;
&lt;p&gt;This is obviously a small result, but it validates the basic mechanism.&lt;/p&gt;
&lt;h3&gt;The environment is improvable, not just measurable&lt;/h3&gt;
&lt;p&gt;The previous two articles established that the operating environment carries capability and that this dependence is measurable. This article adds a narrower claim: at least one important part of that environment, the workflow prompt, is improvable through automated search. &lt;strong&gt;If harness improvement can be partially automated, investment in evaluation infrastructure compounds&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Single-instance evaluation misleads&lt;/h3&gt;
&lt;p&gt;The single-instance Claude run concluded that the reward ceiling was a model capability boundary. The five-instance Claude run proved that wrong. The ceiling was instance-specific. Multi-instance evaluation was necessary to discover that the prompt could improve, and which prompt changes actually generalised.&lt;/p&gt;
&lt;p&gt;This point travels beyond this setup. Evaluating on a single test case can make genuine improvement opportunities look like hard limits.&lt;/p&gt;
&lt;h3&gt;Structure beats volume&lt;/h3&gt;
&lt;p&gt;The most expensive failed approach cost nearly twice the baseline in tokens and produced no improvement. The successful approach cost 11% more and raised reward by 4 percentage points. It is possible that, in engineering review work, telling an agent &lt;em&gt;how&lt;/em&gt; to check is more effective than telling it to check &lt;em&gt;more&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;That said, the Claude &lt;code&gt;L0&lt;/code&gt; run adds an important qualifier. The right structure depends on the reference level. On full-reference tasks, structure meant explicit component-by-component verification. On &lt;code&gt;L0&lt;/code&gt;, structure meant constraining when the agent should trust its own judgement and shifting toward relative comparisons inside the schedule itself.&lt;/p&gt;
&lt;h3&gt;Prompt optimisation is reference-level-specific&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;L0&lt;/code&gt; run is the strongest evidence in the whole set that there may be no single best workflow prompt. The same checklist that helped at full reference actively hurt at &lt;code&gt;L0&lt;/code&gt;. Removing reference material changed what kind of prompt guidance was useful.&lt;/p&gt;
&lt;p&gt;That suggests a more general rule: prompt quality is conditional on information availability. A prompt that works well when the environment supplies formulas, tables, and design conditions may fail when the model has to reconstruct too much of that context from memory.&lt;/p&gt;
&lt;h3&gt;Strategy transfers across models, wording does not&lt;/h3&gt;
&lt;p&gt;The GPT-4.1-mini run adds a second qualifier. The high-level idea that worked at &lt;code&gt;L0&lt;/code&gt; transferred across model families: suppress unsupported discrepancies and use relative comparisons when absolute references are weak. But the wording had to change. GPT-4.1-mini did not respond reliably to soft advisory language. It improved only when the same idea was expressed as a hard gate.&lt;/p&gt;
&lt;p&gt;That suggests prompt portability has two layers. Strategy may travel. Surface phrasing may not. It also suggests that prompt optimisation has a ceiling. GPT-4.1-mini improved much more in relative terms than Claude, but it still stopped well short of Claude&apos;s absolute result.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/autoresearch/bonds_comparison_crossmodel_l0.svg&quot; alt=&quot;Cross-model behavioural comparison at L0. Claude&apos;s better traces remain more execution-heavy, while GPT-4.1-mini&apos;s failure cases carry more deliberation and its best run leans heavily on verification.&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Behavioural analysis inverted our assumptions&lt;/h3&gt;
&lt;p&gt;Before classifying the traces, we assumed that more verification would correlate with better performance. The data showed the opposite: perfect traces were execution-dominant, while partial traces were roughly balanced. The goal is not to maximise verification. It is to make execution decisive enough that verification can happen in concentrated blocks rather than as reactive interruptions.&lt;/p&gt;
&lt;h2&gt;Honest Limitations&lt;/h2&gt;
&lt;p&gt;This is early work. The scope is narrow and the results are preliminary.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Single task type, single domain.&lt;/strong&gt; All experiments targeted HVAC audit tasks. We do not know whether the checklist approach generalises to other engineering task types.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small iteration count.&lt;/strong&gt; Four experiment blocks are enough to validate the mechanism and expose two important conditionalities, but not enough to map the full improvement frontier.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bonds data is still thin outside the Claude run and has no human-annotated validation set here.&lt;/strong&gt; The 30-trace behavioural analysis is for Claude Sonnet 4.6 on one task family. The GPT-4.1-mini read is directionally useful, but much smaller.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The information barrier is untested against adversarial pressure.&lt;/strong&gt; The autoresearcher followed the information discipline in these runs, but we have not stress-tested whether a sufficiently capable autoresearcher agent might infer task-specific content from the feedback patterns.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The &lt;code&gt;L0&lt;/code&gt; result is still single-instance.&lt;/strong&gt; The 1.0 score is encouraging, and it was reproduced once with a slightly more expensive prompt variant, but we have not yet tested the &lt;code&gt;L0&lt;/code&gt;-optimised prompt across multiple cities. The five-instance Claude run already showed how misleading single-instance conclusions can be.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The GPT-4.1-mini comparison is also single-instance.&lt;/strong&gt; We do not yet know whether the 0.83 ceiling or the prompt fragility pattern will hold across other cities or adjacent task families.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Darwin remains at 0.9.&lt;/strong&gt; One instance did not improve across any prompt change. This may be a genuine model capability limit for that specific error type, but we would need to break the information barrier to investigate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stochastic variance is bounded but real.&lt;/strong&gt; Iteration 3 showed Brisbane and Melbourne swapping scores, suggesting approximately 5-10% variance per instance. Larger sample sizes would help distinguish signal from noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What Comes Next&lt;/h2&gt;
&lt;p&gt;The system currently optimises one surface: system prompts. Two obvious new surfaces remain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Task generation&lt;/strong&gt; — using the loop to generate new task instances that produce useful signal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scoring rubrics&lt;/strong&gt; — iterating on how agent output is evaluated, especially for tasks with qualitative judgement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The prompt surface itself can also become more adaptive:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Level-adaptive prompts&lt;/strong&gt; — switching workflow strategy based on how much reference material is available. The contrast between the five-instance full-reference Claude run and the Claude &lt;code&gt;L0&lt;/code&gt; run suggests that prompt selection may need to be conditional rather than global.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model-adaptive prompts&lt;/strong&gt; — varying the instruction style as well as the workflow strategy. The GPT-4.1-mini run suggests that the same conceptual rule may need different wording for different models.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The longer-term question is whether prompts, tasks, and rubrics can be improved jointly. That is where recursive harness improvement starts to look more like a research programme.&lt;/p&gt;
&lt;p&gt;For now, the result is small and specific: an autonomous loop, an information barrier, behavioural feedback that inverted our assumptions about verification, one prompt change that helped at full reference, another that worked for a very different reason at &lt;code&gt;L0&lt;/code&gt;, and a cross-model comparison showing that prompt ideas can transfer even when prompt wording does not. The environment was improvable in each case, but the successful strategy depended on what information the environment already supplied and which model was inside it. The agents that scored best were not simply the ones that checked the most. They were the ones whose workflow matched the structure of the task, the information available, and the model&apos;s own behavioural constraints.&lt;/p&gt;
&lt;p&gt;That, at least, is consistent with everything we have been learning about where capability actually lives.&lt;/p&gt;
</content:encoded><author>Theodoros Galanos</author></item><item><title>Benchmarking Agents on Real Engineering Work Is Already Teaching Us Something Important</title><link>https://theharness.blog/blog/benchmarking-agents-on-real-engineering-work/</link><guid isPermaLink="true">https://theharness.blog/blog/benchmarking-agents-on-real-engineering-work/</guid><description>Benchmarking AI agents on real HVAC engineering tasks across Claude and GPT models. Results on harness-dependent capability, agent evaluation design, and why AEC-domain benchmarks reveal what general benchmarks miss.</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Estimated reading time: 15 minutes&lt;/p&gt;
&lt;p&gt;Current frontier model performance is still heavily concentrated in a narrow band of well-covered domains, especially code, math, and adjacent text-heavy tasks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Engineering is not one of them.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That is the starting point for this work.&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;/blog/where-capability-actually-lives-in-agentic-engineering/&quot;&gt;Where Capability Actually Lives in Agentic Engineering&lt;/a&gt;, I argued that progress in this domain will not come from better models alone. It will come from better operating conditions: better tools, better harnesses, and better environments for reliable work. This article is a first empirical step in that direction.&lt;/p&gt;
&lt;p&gt;That earlier piece made a conceptual claim about where capability lives. &lt;strong&gt;This one asks whether that claim survives contact with measured performance.&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In domain-specific work, the environments agents operate in are part of the capability.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The aim here is to start measuring that claim on real engineering tasks. The longer-term goal is a benchmark, but this piece reports an early run toward one: a single task, from a single discipline, using one agent harness setup, tested across a small set of models.&lt;/p&gt;
&lt;p&gt;Concretely, the work focuses on &lt;strong&gt;HVAC heat load calculations and schedule audits&lt;/strong&gt;, grounded in the kinds of structured documents that show up in actual AEC workflows, and includes nearly 480 trials with the same harness, the same tools, and the same output contract. The harness was a tool-using agent, and the tool itself was deliberately strong: the calculation procedure was reverse engineered into code, the relevant lookup values were exposed, and the models were given something close to an oracle calculator rather than being asked to derive the whole method from scratch.&lt;/p&gt;
&lt;p&gt;That is narrow by design, and still early. But it is already enough to surface useful patterns. The point of sharing it now is not to pretend the benchmark is finished. It is to put the initial results and the early methodology in the open, get feedback, and sharpen the next iterations while the benchmark is still taking shape.&lt;/p&gt;
&lt;p&gt;What follows is a first look at what current agents are good at, where they still break, and why evaluation design matters almost as much as model quality. It is also an early step in turning a vague domain gap into a concrete improvement programme.&lt;/p&gt;
&lt;h2&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;This benchmark is best read as evidence about conditional capability.&lt;/strong&gt; Inside a strong harness, current frontier agents can do meaningful engineering review work. Once guidance and tool support are stripped away, performance often collapses rather than degrading gracefully.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The model ranking is clear, but it is not the deepest result.&lt;/strong&gt; Sonnet 4.6 is strongest overall, and Haiku 4.5 is the most attractive quality-per-dollar option in this setup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The most informative tasks were audit tasks, not calculation tasks.&lt;/strong&gt; Once the harness supplied something close to an oracle calculator, the real separation moved into checking, discrepancy detection, and reliable completion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verification behaviour appears to matter a lot.&lt;/strong&gt; The strongest model did not just verify when it was in trouble. It verified as part of its default workflow, which looks like part of the mechanism behind its recall advantage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;This is an empirical counterpart to the argument in the previous article, and the beginning of a broader benchmark effort.&lt;/strong&gt; It supports the claim that in engineering, capability is not just a model property. It is distributed across the model, the harness, the tools, the verifiers, and the output contract. The longer-term goal is to build high-quality benchmarks with enough coverage to support meaningful progress in agentic engineering.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/agentic-eval/hero-headline-reward.png&quot; alt=&quot;Left: overall reward across the four models. Right: Sonnet 4.6 under budget and guidance ablations. The benchmark ranks models, but it also shows how much capability depends on the environment around the model.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That is the core result in compressed form: &lt;strong&gt;the benchmark ranks models, but more importantly, it makes the system dependence visible.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;The Benchmark Was Simple on Purpose: HVAC Heat Load Tasks as a Starting Point&lt;/h2&gt;
&lt;p&gt;That narrow setup matters because it tells us something specific.&lt;/p&gt;
&lt;p&gt;Within this first experiment, the focus was one meaningful slice of engineering work: mechanical heat-load tasks. Even inside that small scope, two task families behaved very differently.&lt;/p&gt;
&lt;p&gt;Calculation tasks ask the agent to compute loads correctly from structured room inputs.&lt;/p&gt;
&lt;p&gt;Audit tasks ask the agent to inspect schedules, identify discrepancies, and propose the correct fixes.&lt;/p&gt;
&lt;p&gt;That distinction ended up being crucial.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The calculation tasks were close to saturated for the Anthropic models.&lt;/strong&gt; They are useful as a baseline, but they do not separate strong agents from stronger ones.&lt;/p&gt;
&lt;p&gt;That result is even more telling once you know the setup. The method was not hidden inside the task and left for the model to rediscover. The calculation approach was encoded directly into the harness as a near-oracle tool: a coded procedure plus the relevant lookup table values and calculator logic. Even with that help, not every model was perfect, and the harder audit tasks still separated the field clearly.&lt;/p&gt;
&lt;p&gt;That is where the real spread appears: &lt;strong&gt;systematic checking, consistency across many rows, and enough discipline to finish with the correct structured output.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/agentic-eval/audit-mixed-use-frontier.png&quot; alt=&quot;Performance on the hardest audit task. This is where the benchmark starts to separate strong agents from stronger ones.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;They also give us a useful improvement gradient. When an agent fails, the failure is usually legible. It missed a discrepancy, checked too shallowly, used the tools badly, ran out of turns, or never made it cleanly into the required output format. That is exactly what you want from a benchmark aimed at building better agent environments around real domain tasks.&lt;/p&gt;
&lt;p&gt;For AEC practitioners, that should feel familiar. The painful mistakes in practice are often not a single wrong formula. They are missed discrepancies, skipped checks, and brittle review processes.&lt;/p&gt;
&lt;p&gt;For agent evaluation people, it is a reminder that task design determines what you learn. If the task is too easy, you are mostly benchmarking formatting and latency. If it is too synthetic, you may learn very little about deployed usefulness.&lt;/p&gt;
&lt;h2&gt;The Model Ranking Is Clear, but It Is Not the Whole Story&lt;/h2&gt;
&lt;p&gt;At the headline level, the ranking is straightforward.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/agentic-eval/outcome-distribution.png&quot; alt=&quot;Outcome distributions by model. The important difference is not just average score, but failure shape, especially GPT-4.1-mini&apos;s heavy zero-score tail.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sonnet 4.6 was best overall. It was the only model to clear both near-perfect calculation performance and clearly best-in-class audit recall. It also had zero zero-score trials.&lt;/p&gt;
&lt;p&gt;Haiku 4.5 came second on accuracy and first on value. Its overall reward was 96.3%, and while it trailed Sonnet 4.6 on audit recall, it stayed strong enough that its much lower per-trial cost changes the deployment conversation.&lt;/p&gt;
&lt;p&gt;Sonnet 4 remains solid. It is cheaper than 4.6 and more accurate than GPT-4.1-mini by a wide margin, but the newer generation models have moved the frontier.&lt;/p&gt;
&lt;p&gt;GPT-4.1-mini was not competitive for this workload. Its overall reward was 34.1%, with a 64% zero-rate. The issue was broader than engineering reasoning. A large share of failures were format failures, truncated outputs, or prose that never turned into the required JSON result.&lt;/p&gt;
&lt;p&gt;That last detail matters. In an eval setting, people sometimes treat format failures as a nuisance variable. In deployed agent systems, they are part of the failure surface. &lt;strong&gt;If an agent can reason but cannot reliably finish the job in the required structure, it still failed.&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If your eval is shallow, your conclusions will be shallow too.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The Biggest Lesson Was About the System, Not the Model&lt;/h2&gt;
&lt;p&gt;One of the clearest findings in this benchmark is that harness choices materially change measured capability.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This is the most direct continuity with the previous article.&lt;/strong&gt; There, the claim was conceptual: the harness is part of the capability story. Here, the same point shows up empirically in the numbers.&lt;/p&gt;
&lt;p&gt;Even simple harness changes moved results. In the early setup, a 10-turn cap made one audit workload look almost impossible for an otherwise capable model, but turn budget was only part of the problem. With weaker guidance, the default strategy was to decompose the audit room by room and spend roughly two turns per room in an execute-then-verify rhythm. That produced real work, but it was the wrong workflow for the budget. The fix combined a higher cap with guidance that pushed the agent toward batching rather than treating every room as its own mini-loop.&lt;/p&gt;
&lt;p&gt;The same pattern showed up elsewhere. Verifier fixes mattered. Prompt refinements mattered. Prompt caching mattered for cost. Better output instructions reduced avoidable formatting zeros for the Anthropic models. And the tool design mattered too: even when the harness provides something close to an oracle for the core calculation, model differences do not disappear. They move into disciplined checking, orchestration, and reliable completion.&lt;/p&gt;
&lt;p&gt;The ablation results make the point more sharply. Reducing the turn budget from 20 to 10 is one kind of degradation. Removing guidance and tool support is another. The first makes the task harder. The second starts to expose the capability boundary. On this task family, the gap between strong-harness performance and low-guidance performance is larger than many of the model-to-model differences people usually focus on.&lt;/p&gt;
&lt;p&gt;Those are not side details. They are part of the measured system. &lt;strong&gt;The harness is not neutral background. It is an active ingredient in whether a model can express the capability it already has.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For practitioners, this means you should be skeptical of any claim that a model simply can or cannot do a workflow based on a weak first-pass eval.&lt;/p&gt;
&lt;p&gt;For evaluation researchers, it means benchmark design has to be treated with the same rigor as model comparison itself.&lt;/p&gt;
&lt;h2&gt;What Happened When We Removed Harness Guidance&lt;/h2&gt;
&lt;p&gt;This is also where the setup gets more interesting.&lt;/p&gt;
&lt;p&gt;From the beginning, one of the key questions was how much of the measured capability depended on the operating conditions around the model, not just which model performed best inside the strongest harness.&lt;/p&gt;
&lt;p&gt;So after the main tool-enabled runs, a small guidance-ablation ladder was set up around the same office-building audit family.&lt;/p&gt;
&lt;p&gt;The idea was simple. Keep the underlying task family fixed, then remove support in stages.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Support removed or added&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;L0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;bare problem statement, no embedded formulas or lookup table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;L1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;effectively the same as &lt;code&gt;L0&lt;/code&gt; in the current task set, which turned out to be informative in its own right&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;L2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;adds the psychrometric constants and explicit outside-air rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;L3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;replaces that with a compact AS 1668.2 reference table and general calculation guidance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;no-tool&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;removes the calculation tool entirely and asks the model to do the audit directly from the prompt context&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This was not meant to be a polished benchmark surface. It was a probe. The point was to see how quickly the task collapses once the environment starts losing structure.&lt;/p&gt;
&lt;p&gt;The results were blunt.&lt;/p&gt;
&lt;p&gt;On the tool-enabled baseline, Sonnet 4.6 averaged 0.966 reward on the office-building audit set. Dropping the turn budget from 20 to 10 lowered that to 0.943. That is a real degradation, but it still leaves the task clearly inside the model&apos;s workable envelope.&lt;/p&gt;
&lt;p&gt;The guidance ladder was a different story.&lt;/p&gt;
&lt;p&gt;In the direct no-tool reference run, the current partial results look like this:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Mean reward&lt;/th&gt;
&lt;th&gt;What happened&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tool-enabled baseline&lt;/td&gt;
&lt;td&gt;0.966&lt;/td&gt;
&lt;td&gt;Strong performance, many perfect trials&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Budget-10 counterfactual&lt;/td&gt;
&lt;td&gt;0.943&lt;/td&gt;
&lt;td&gt;Measurable quality drop, but still viable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;L0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.000&lt;/td&gt;
&lt;td&gt;All zero-score trials&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;L1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.000&lt;/td&gt;
&lt;td&gt;All zero-score trials&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;L2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.000&lt;/td&gt;
&lt;td&gt;All zero-score trials&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;L3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.000&lt;/td&gt;
&lt;td&gt;All zero-score trials&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;no-tool&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.153&lt;/td&gt;
&lt;td&gt;One perfect trial, one partial trial, eight zeroes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That tells us a few things. The cleanest way to read it is as three different regimes: a workable strong-harness regime, a mildly degraded budget-constrained regime, and a collapse regime once the environment stops carrying enough of the method.&lt;/p&gt;
&lt;p&gt;First, the budget ablation and the guidance ablation are not the same phenomenon. Reducing turns hurts, but the agent still basically knows what kind of work it is doing. Removing guidance and tool support is much harsher. &lt;strong&gt;Most of those conditions do not degrade gracefully. They collapse.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Second, this is exactly the kind of out-of-distribution behaviour we were worried about.&lt;/p&gt;
&lt;p&gt;In-distribution domains are the places where models have already seen enough adjacent structure that they can interpolate their way through the task even when the scaffold is weak. Engineering audit work did not behave like that here. Once the environment stopped carrying key pieces of the method, performance did not taper off a little. It mostly went to zero.&lt;/p&gt;
&lt;p&gt;Third, the surviving &lt;code&gt;no-tool&lt;/code&gt; signal matters precisely because it is weak. There was a small amount of non-zero performance there. That suggests the capability is not entirely absent. But it is nowhere near robust enough to treat the task as natively solved. In other words, the environment is still doing real cognitive work for the model.&lt;/p&gt;
&lt;p&gt;That is the larger point.&lt;/p&gt;
&lt;p&gt;When people say a model can do engineering, they often leave unspoken how much hidden structure is being provided by the harness, the tools, the prompt, or the reference data. Our ablation run makes that visible. In this task family, capability is highly conditional on the operating environment. &lt;strong&gt;Remove the support and the system does not simply get a bit worse. It often stops functioning in a useful way.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That is not a failure of evaluation. It is exactly what good evaluation is supposed to reveal.&lt;/p&gt;
&lt;p&gt;It is also why the out-of-distribution framing matters so much. If the domain were already well-covered by the model&apos;s native priors, these ablations would look like inconvenience tests. Instead they look like capability boundary tests. &lt;strong&gt;That is a strong sign that for real engineering work, at least today, the harness is not a wrapper around the capability. It is part of the capability.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;What the Strongest Model Did Differently&lt;/h2&gt;
&lt;p&gt;The cleanest behavioural finding in this work is about verification.&lt;/p&gt;
&lt;p&gt;All models increased checking when they were struggling. But Sonnet 4.6 did something more interesting: it verified even when it was succeeding.&lt;/p&gt;
&lt;p&gt;In our behavioural analysis, Sonnet 4.6 spent 23% of its successful traces in verification behaviour. The other strong models were much lower. Haiku showed the steepest verification gradient between success and failure, which makes it interesting for runtime monitoring, but Sonnet 4.6 made verification part of its default operating mode.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/agentic-eval/verification-gradient.png&quot; alt=&quot;Verification behaviour in success and failure. Sonnet 4.6 verifies as part of its normal workflow, while Haiku shows the steepest verification jump when traces start to struggle.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That appears to be the mechanism behind its recall lead.&lt;/p&gt;
&lt;p&gt;In plain engineering terms, it behaved less like a model that checked at the end and more like one that treated review as part of execution. It did not only check when it sensed danger. It checked because checking was built into the workflow.&lt;/p&gt;
&lt;p&gt;That matters in both practical engineering terms and evaluation terms.&lt;/p&gt;
&lt;p&gt;For SMEs, it matches a familiar truth: good review practice is not a panic move. It is routine.&lt;/p&gt;
&lt;p&gt;For agentic-eval people, it suggests that model quality may show up less in raw chain-of-thought style reasoning and more in when and how an agent decides to revisit earlier work. Reliability here depends on whether verification is part of the default workflow before failure starts to accumulate.&lt;/p&gt;
&lt;h2&gt;A Behavioural Lens From Reasoning Research&lt;/h2&gt;
&lt;p&gt;To get beyond simple success rates, we adapted the Agentic Bonds framework from &lt;a href=&quot;https://arxiv.org/abs/2601.06002&quot;&gt;Du et al.&apos;s work on the molecular structure of thought&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/agentic-eval/four-bond-types.png&quot; alt=&quot;The four bond types used in the behavioural analysis: execution, verification, deliberation, and exploration.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The basic idea is that quality does not come only from individual steps. It comes from the pattern of transitions between types of steps.&lt;/p&gt;
&lt;p&gt;We classified agent turns into four categories: execution, verification, deliberation, and exploration.&lt;/p&gt;
&lt;p&gt;That gave us a behavioural fingerprint for each model.&lt;/p&gt;
&lt;p&gt;Sonnet 4 looked like a rigid workhorse: high execution share, low exploration, highly predictable structure.&lt;/p&gt;
&lt;p&gt;Haiku looked more adaptive, but also more verbose. It often spent more turns and generated a stronger distress signal when things were going badly.&lt;/p&gt;
&lt;p&gt;GPT-4.1-mini produced the strangest result: success and failure were behaviourally almost indistinguishable. It did not seem to have a readable internal signal that it was in trouble.&lt;/p&gt;
&lt;p&gt;That is a serious limitation if you want runtime monitoring or intervention. You cannot reliably rescue a model that does not behaviourally reveal when it is failing.&lt;/p&gt;
&lt;p&gt;This kind of analysis complements task-level scoring. Accuracy tells you what happened. Behavioural structure starts to tell you why.&lt;/p&gt;
&lt;p&gt;That framing came from the tool-loop traces. The no-tool runs exposed a different but complementary failure surface.&lt;/p&gt;
&lt;h2&gt;What The No-Tool Traces Revealed&lt;/h2&gt;
&lt;p&gt;The tool-loop traces gave us one kind of behavioural visibility: turn-by-turn structure. The no-tool and low-guidance runs gave us a different one. There we often only had the final written artefact, so the analysis had to be more forensic. We were no longer asking which turn type came next. We were asking a simpler and harsher question: did the model stay attached to the instance at all?&lt;/p&gt;
&lt;p&gt;That ended up being one of the clearest behavioural signals in the whole project.&lt;/p&gt;
&lt;p&gt;Once we read a broader sample of the direct no-tool and guidance-ladder traces, the main split was not simply success versus failure. It was anchored audit behaviour versus free-running domain narration.&lt;/p&gt;
&lt;p&gt;The successful no-tool traces stayed tightly locked to the assigned schedule. They rebuilt the formulas from the prompt, carried the instance-specific constants through the arithmetic, and converged toward compact findings. Even without the calculator tool, they still behaved like audits. The single perfect Sydney no-tool trace is the clearest example of that pattern: it stayed on the given schedule, reconstructed the formulas locally, and still landed a verifier-clean result.&lt;/p&gt;
&lt;p&gt;The failed traces were more interesting than simple arithmetic misses. They often looked superficially impressive. They used the right vocabulary. They wrote long engineering-sounding explanations. They sometimes did coherent local arithmetic. But many of them had already slipped off the actual task. They started substituting room programmes, changing climate conditions, inventing alternate schedules, or confidently asserting standard lookups that were not stably grounded in the prompt.&lt;/p&gt;
&lt;p&gt;One Adelaide &lt;code&gt;L3&lt;/code&gt; trace, for example, stopped auditing the office-building schedule and began analyzing hotel rooms and hotel suites instead. A Brisbane no-tool failure turned into a different classroom-and-library schedule with its own invented occupancy logic. Both traces remained fluent. Neither stayed on the job.&lt;/p&gt;
&lt;p&gt;That is the important distinction. &lt;strong&gt;The failure mode was often not &quot;cannot calculate.&quot; It was &quot;cannot stay on the instance.&quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That gave us a simple rubric for reading these traces. The key dimensions were instance fidelity, standards grounding, formula grounding, causal compression, and output discipline. The strongest traces stayed close to the presented schedule and compressed toward verifier-relevant findings. The weakest traces did the opposite: they drifted into generic HVAC explanation, expanded in length, and lost the contract.&lt;/p&gt;
&lt;p&gt;From that manual read, a few recurring failure labels stood out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instance substitution:&lt;/strong&gt; the model silently stopped auditing the presented office-building schedule and solved a different problem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generic-domain takeover:&lt;/strong&gt; the trace remained fluent and domain-aware, but it had turned into an HVAC essay rather than an audit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Standard hallucination:&lt;/strong&gt; the model introduced confident but weakly grounded claims about AS 1668.2 lookups, occupant densities, or OA rates to justify a path it had invented.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verbosity runaway:&lt;/strong&gt; the trace expanded toward the output-token ceiling without improving task fidelity or output quality.&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Failure shape&lt;/th&gt;
&lt;th&gt;What it looks like in practice&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Instance substitution&lt;/td&gt;
&lt;td&gt;The trace silently swaps in a different schedule, room mix, or city conditions&lt;/td&gt;
&lt;td&gt;The model is no longer auditing the assigned artefact&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Generic-domain takeover&lt;/td&gt;
&lt;td&gt;The writing stays fluent and technical but turns into generic HVAC explanation&lt;/td&gt;
&lt;td&gt;Domain fluency masks loss of task control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard hallucination&lt;/td&gt;
&lt;td&gt;The trace confidently asserts unsupported lookup values or code interpretations&lt;/td&gt;
&lt;td&gt;It manufactures justification for the wrong path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Verbosity runaway&lt;/td&gt;
&lt;td&gt;The trace expands toward the token ceiling without converging toward findings&lt;/td&gt;
&lt;td&gt;Length substitutes for control&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A few lines from the traces make the pattern obvious.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;### Room 1 — Hotel Room A (Hotel Bedrooms, 30 m²)&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That line came from an Adelaide &lt;code&gt;L3&lt;/code&gt; run that was supposed to be auditing an office-building schedule. By that point the trace was no longer on the assigned task at all.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;### Room 1 — Classroom A&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That came from a Brisbane no-tool failure. The model remained fluent and organized, but it had drifted into a classroom-and-library problem that was never in the prompt.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Room 3 Errors: - Conduction W: given 4320, correct = 1600&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That comes from the successful Sydney no-tool trace. It is much less ornate, but it stays attached to the actual schedule and compresses toward the discrepancies that matter.&lt;/p&gt;
&lt;p&gt;That pattern matters because it changes how to read the weak positive signal in the no-tool condition. The surviving no-tool traces suggest something specific: the model can sometimes reconstruct enough of the method to succeed, but only when it keeps a very tight lock on the actual instance. Once that lock breaks, domain fluency is not enough to rescue the audit.&lt;/p&gt;
&lt;p&gt;This is exactly the kind of behaviour you would expect in an out-of-distribution domain. The model does not fail by becoming incoherent. It fails by becoming plausibly generic.&lt;/p&gt;
&lt;p&gt;That matters for cost too, because these are not always short failures. Some of them are long, fluent, and expensive failures.&lt;/p&gt;
&lt;h2&gt;Time and Cost Need To Be Measured Together&lt;/h2&gt;
&lt;p&gt;The cheapest model per trial is not automatically the best value.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/blog/agentic-eval/quality-vs-cost.png&quot; alt=&quot;Quality versus cost. Sonnet 4.6 buys the highest quality, Haiku offers the strongest quality-per-dollar tradeoff, and GPT-4.1-mini shows why low price alone is misleading.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;GPT-4.1-mini was cheapest in raw dollar terms, but too much of that spend was wasted because the outputs were unusable or incomplete.&lt;/p&gt;
&lt;p&gt;Sonnet 4.6 was the most expensive, and part of that cost came from output verbosity. It generated much more output than the other Anthropic models, which limits how much prompt caching can save. The no-tool traces make the broader point clearly: a long failing trace is also a cost event.&lt;/p&gt;
&lt;p&gt;Haiku 4.5 hit the most interesting middle ground. It was fast, much cheaper than Sonnet 4.6, and accurate enough that it dominated on reward-squared-per-dollar.&lt;/p&gt;
&lt;p&gt;That metric matters because it punishes low accuracy sharply. &lt;strong&gt;A cheap wrong answer is not a bargain in review-heavy engineering workflows.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That matters especially in AEC, where the near-term deployment shape is often low request volume and very high task value. These are usually not million-QPS workloads. They are bounded but complex tasks that take skilled people real time to complete, and where the cost of a bad result can easily dominate the cost of the model run itself. In that setting, quality comes first.&lt;/p&gt;
&lt;p&gt;The practical sequence is usually two-stage. First, you pay for quality in order to discover which tasks agents can actually do well enough to be useful. Only later, once those workflows are stable and you start scaling them across teams or organisations, does cost become the main optimisation target. At that point the question changes from can this task be done well to how broadly can we deploy it without losing quality or blowing up spend.&lt;/p&gt;
&lt;p&gt;In this small experiment, if you want the highest ceiling, Sonnet 4.6 is the answer.&lt;/p&gt;
&lt;p&gt;In the same narrow setting, if you want the strongest quality-per-dollar tradeoff, Haiku 4.5 is hard to ignore.&lt;/p&gt;
&lt;p&gt;If you want a deployable system, the right answer probably depends on where in the workflow the agent sits and how much review coverage a human still provides.&lt;/p&gt;
&lt;h2&gt;What This Means for AI Agents in AEC&lt;/h2&gt;
&lt;p&gt;The practical takeaway is not that AI can now replace engineering judgement. That would be the wrong lesson.&lt;/p&gt;
&lt;p&gt;The stronger result is narrower and more useful: &lt;strong&gt;on bounded, well-instrumented tasks, evaluation quality already matters as much as model selection.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The models were not most differentiated by calculation. They were differentiated by disciplined checking, completeness, and reliable finish behaviour. Those are exactly the traits that matter in real QA workflows.&lt;/p&gt;
&lt;p&gt;So if you are trying to bring agents into AEC practice, one sensible near-term path is not full autonomy. It is scoped, auditable assistance on tasks where you can define the inputs, the expected outputs, and the failure modes clearly.&lt;/p&gt;
&lt;p&gt;That is also where benchmarks can be genuinely useful: as a way to test whether an agent is ready for a specific class of work.&lt;/p&gt;
&lt;h2&gt;What This Means for Agentic Evaluation and Benchmarks&lt;/h2&gt;
&lt;p&gt;What this benchmark suggests is that three parts of the eval design matter especially strongly.&lt;/p&gt;
&lt;p&gt;First, real task grounding. The benchmark should represent work that people actually care about getting right.&lt;/p&gt;
&lt;p&gt;Second, harness transparency. &lt;strong&gt;Turn limits, verifier design, tool affordances, and output contracts are not implementation trivia. They are part of the measured system.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Third, behavioural instrumentation. If two agents get similar scores but fail in different ways, that difference matters. If one model exposes a strong distress signal and another does not, that matters too.&lt;/p&gt;
&lt;p&gt;This is why benchmarks are most useful when those layers are visible together: domain realism, outcome quality, and agent behaviour. In that sense, AEC is a good stress case. It can be highly digitised in important workflow slices, it is economically important, and it is awkward enough to expose real capability gaps.&lt;/p&gt;
&lt;h2&gt;What Comes Next&lt;/h2&gt;
&lt;p&gt;The obvious next step is scale. One task in one discipline is enough to surface a potential pattern, but not enough to define a field. If this work is going to mature into a useful benchmark, it needs to grow into thousands of task instances across multiple disciplines, with enough breadth to distinguish narrow task skill from more general domain competence.&lt;/p&gt;
&lt;p&gt;It also needs multimodality much earlier than many evals do. Design and engineering work are not purely text workflows. Drawings, schedules, details, markups, diagrams, and spatial context are central to the job. A serious benchmark for this domain will need multimodal inputs and multimodal tool use as part of the core design, not as an optional extension added later.&lt;/p&gt;
&lt;p&gt;Then there is the harder evaluation problem: &lt;strong&gt;tasks where there is no single clean quantitative answer&lt;/strong&gt;. A lot of real engineering work is about adequacy, judgement, prioritisation, and review quality rather than one exact number. That is where expert-authored rubrics, and eventually rubric-driven reward systems, become crucial. Recent work such as &lt;a href=&quot;https://arxiv.org/abs/2507.17746&quot;&gt;Rubrics as Rewards: Reinforcement Learning Beyond Verifiable Domains&lt;/a&gt; points in that direction. If we want to benchmark useful domain work rather than only easily scored work, we will need much better machinery for structured qualitative evaluation.&lt;/p&gt;
&lt;p&gt;And beyond single tasks, there is process. Many real workflows are long-horizon and compositional: they are made of many smaller tasks chained together across time, artefacts, and decisions. That is part of why starting with sharply scoped task instances still makes sense. They are the building blocks. Over time, the harder benchmark will be the composition problem: whether agents can string those capabilities together reliably across longer processes without losing quality, context, or control.&lt;/p&gt;
&lt;h2&gt;The Current Bottom Line&lt;/h2&gt;
&lt;p&gt;If you force a one-line conclusion, it is this:&lt;/p&gt;
&lt;p&gt;Current agent capability on real engineering tasks is still highly conditional on the operating environment: the best systems verify better, finish more reliably, and look much weaker once the scaffold is removed.&lt;/p&gt;
&lt;p&gt;That is encouraging, but it is also a warning.&lt;/p&gt;
&lt;p&gt;You can learn the wrong lesson from a bad eval.&lt;/p&gt;
&lt;p&gt;And you can misunderstand both strength and weakness if you are only looking at model names instead of the full system around them.&lt;/p&gt;
&lt;p&gt;This work is still in its early phases and still narrow. But it is already telling us something useful: &lt;strong&gt;the next layer of progress will not come from bigger scoreboards alone. It will come from better tasks, better harnesses, and a clearer view of how much of domain capability is native to the model and how much is being supplied by the environment around it.&lt;/strong&gt;&lt;/p&gt;
</content:encoded><author>Theodoros Galanos</author></item><item><title>Where Capability Actually Lives in Agentic Engineering</title><link>https://theharness.blog/blog/where-capability-actually-lives-in-agentic-engineering/</link><guid isPermaLink="true">https://theharness.blog/blog/where-capability-actually-lives-in-agentic-engineering/</guid><description>In AEC and domain-specific engineering, AI agent capability lives not in the model alone but in harness engineering — the tools, verifiers, orchestration, and process design that make agentic work reliable.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Estimated reading time: 16 minutes&lt;/p&gt;
&lt;p&gt;Engineering is a useful stress test for agentic systems because it exposes a kind of weakness that general demos often hide. The problem is not that the domain is technical in the abstract. &lt;strong&gt;It is that the work is instance-bound, constraint-heavy, and intolerant of plausibly generic answers.&lt;/strong&gt; To be useful here, an agent has to do more than sound competent. It has to stay attached to the artifact, preserve the method, survive verification, and finish in a form that another system or person can trust.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To be useful here, an agent has to do more than sound competent. It has to stay attached to the artifact, preserve the method, survive verification, and finish in a form that another system or person can trust.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That changes the way we should think about progress. &lt;strong&gt;In domains like engineering, capability cannot be understood as a property of the base model alone.&lt;/strong&gt; What matters is whether the full system can remain faithful to the specific document, drawing, assumptions, standards, and constraints that define the task in front of it. The question is not just whether a model can reason in the neighborhood of the work. It is whether the operating environment lets reliable work happen at all.&lt;/p&gt;
&lt;p&gt;This broader shift is already visible across AI development. State-of-the-art behaviour increasingly comes from &lt;a href=&quot;https://bair.berkeley.edu/blog/2024/02/18/compound-ai-systems/&quot;&gt;compound systems (BAIR, 2024)&lt;/a&gt; rather than single model calls, and actual work-related use still occupies a much narrower space than theoretical capability would suggest, which is part of why deployment questions matter so much &lt;a href=&quot;https://www.anthropic.com/research/labor-market-impacts&quot;&gt;Anthropic, 2026&lt;/a&gt;. Engineering sharpens that pattern. It forces a harder question than many benchmark settings do: where does reliable capability actually live? How much is native to the model, how much is supplied by tools and verifiers, and how much emerges only when the environment is designed correctly, especially in a landscape where &lt;a href=&quot;https://arxiv.org/html/2603.01203&quot;&gt;benchmark coverage is still skewed toward more convenient task domains&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That is the question this essay is really about.&lt;/p&gt;
&lt;h2&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;In engineering, useful agent performance depends less on generic fluency than on staying attached to the specific artifact, assumptions, constraints, and output format of the task at hand.&lt;/li&gt;
&lt;li&gt;That means capability does not live in the base model alone. It is distributed across the full system: tools, verifiers, control flow, output contracts, interfaces, and human review structure.&lt;/li&gt;
&lt;li&gt;The real design problem is therefore not just model selection. It is harness design: deciding what the agent should infer, what should be externalised into tools, what should be checked, and how the work should remain controllable.&lt;/li&gt;
&lt;li&gt;Many important engineering workflows are better understood as processes rather than isolated tasks, which makes orchestration, UX, visibility, and intervention part of the capability story too.&lt;/li&gt;
&lt;li&gt;If we want meaningful progress in engineering and AEC, we need better experimental environments and benchmarks that reflect real artifacts, real failure modes, and the actual conditions required for reliable work.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why AEC Engineering Breaks Most AI Agent Approaches&lt;/h2&gt;
&lt;p&gt;It is tempting to treat engineering as one more expert domain that large models will gradually absorb as they become smarter and better trained. There is some truth in that. Engineering work is full of technical language, quantitative reasoning, standards, and procedural knowledge, all of which are at least partially representable in text, math, and code. But that description misses the thing that makes the domain difficult in practice.&lt;/p&gt;
&lt;p&gt;Engineering is not hard only because it contains specialized knowledge. It is hard because the work is tied to particular artifacts and particular consequences. A calculation is not just a calculation. It belongs to a drawing set, a schedule, a climate zone, a standard, a collection of assumptions, and a downstream chain of decisions that may depend on it being right for this case and not some nearby case. In that environment, generic competence is not enough. A system can sound perfectly fluent and still fail the job by drifting away from the assigned instance.&lt;/p&gt;
&lt;p&gt;That is why instance fidelity matters so much. In many tasks, being approximately in the right conceptual neighborhood is enough to be useful. In engineering, that can be the beginning of failure rather than the end of it. A model that substitutes a different design scenario, silently shifts a governing assumption, applies the wrong interpretation of a standard, or answers in a way that cannot be checked by another party has not produced a near miss. It has broken attachment to the artifact. That kind of failure is especially dangerous because it can still look competent on a casual read.&lt;/p&gt;
&lt;p&gt;This is also why engineering is a more interesting challenge than a simple test of mathematical or coding ability. The hard part is often not deriving a formula. It is staying inside the bounds of the real task while carrying the correct assumptions all the way through to a legible output. That starts to look less like raw problem solving and more like a problem of task control: can the system monitor what object it is operating on, track which assumptions still govern the case, notice when more checking is needed, and converge on a form of completion that another party can actually use? General-purpose capability does not automatically guarantee that kind of discipline, and one of the open questions is how much of it is native to the model versus supplied by the surrounding harness.&lt;/p&gt;
&lt;p&gt;Seen that way, the question is not whether models can do engineering in some broad, promotional sense. The question is what conditions make engineering work stay controllable. That is a narrower question, but it is also the one that matters if the goal is not spectacle but dependable use.&lt;/p&gt;
&lt;h2&gt;The Harness Is Where Engineering Capability Gets Made&lt;/h2&gt;
&lt;p&gt;Once engineering is framed as artifact-bound and verification-sensitive work, the role of the harness looks different. It is no longer reasonable to think of the harness as a thin wrapper around model capability. The harness determines what the system can see, what method it can invoke, what constraints are explicit, what gets checked, what counts as a recoverable error, and what form the final answer must take. In other words, it helps determine not just how the system runs, but what kind of cognition the system is able to express.&lt;/p&gt;
&lt;p&gt;That matters because many of the hardest parts of engineering workflows live in precisely those layers. Tools can carry method that would otherwise need to be reconstructed unreliably from prompt context. &lt;strong&gt;More than that, many tools are artifacts of accumulated domain expertise.&lt;/strong&gt; They are places where a field has already embedded procedures, assumptions, checks, tolerances, and accepted ways of doing work. In some cases that expertise is explicit and executable, as in calculations, lookups, and verification routines. In other cases it is more qualitative, showing up as workflows, review habits, and best-practice sequences. Verifiers can enforce habits of checking that a model may not apply consistently on its own. Output contracts can force the system to conclude in a format that is inspectable, comparable, and operationally usable. Turn budgets and control flow can decide whether an agent has enough room to complete a careful review or whether it will collapse into partial work and malformed output.&lt;/p&gt;
&lt;p&gt;In that sense, the harness is not just infrastructure. It is part of the cognitive system. It allocates where reasoning happens, where discipline comes from, and how failure is surfaced. Recent work from OpenAI on &lt;a href=&quot;https://openai.com/index/harness-engineering/&quot;&gt;harness engineering&lt;/a&gt; makes the same point from another angle: once agents are doing real work, progress depends heavily on the legibility of the environment, the structure of the feedback loops, and the extent to which knowledge has been made accessible and enforceable inside the system. A calculator tool is not merely a convenience. It is a decision about which parts of the method should be made stable and externalised. A verifier is not just a quality filter. It is a decision to make certain forms of checking structurally available to the agent. Even the shape of the prompt matters less as isolated wording than as one part of a larger control architecture.&lt;/p&gt;
&lt;p&gt;This is why questions about orchestration in engineering cannot be reduced to prompt engineering. The meaningful design problem is architectural. What should the agent infer versus look up? What should be encoded in tools versus policy? Which checks should happen during reasoning and which should happen after? When should the system stop and ask for clarification instead of filling gaps with plausible narration? These are not implementation details to be cleaned up after capability arrives. They are part of how capability is built.&lt;/p&gt;
&lt;p&gt;Once you see that clearly, a lot of standard debates start to look underspecified. Asking which model is best without asking what environment it is operating in is often the wrong question. In engineering, the more useful question is where the capability actually lives. Some of it lives in the model. Some of it lives in the tools, verifiers, and control policies around it. And some of it may only emerge when those pieces are composed in the right way. If that is true, then progress in this domain will depend not only on better models, but on better harness engineering for engineering.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If that is true, then progress in this domain will depend not only on better models, but on better harness engineering for engineering.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Open Questions for AI Agents in Engineering and AEC&lt;/h2&gt;
&lt;p&gt;This is where the real research agenda begins. If we are serious about agentic engineering, there are several questions that still look underexplored and experimentally open. They are not small implementation questions. They are structural questions about where competence comes from, how reliability is made, and what exactly we are trying to optimise for.&lt;/p&gt;
&lt;p&gt;The first question is where domain knowledge should live. Some engineering method can be carried in the prompt, some in retrieved standards, some in dedicated tools, and some in verifier logic or decomposition policy. Those choices are not equivalent. A method embedded in prose instructions is available in a very different way from a method embedded in a tool or a structured reference. One of the central design problems in this domain is deciding which knowledge should remain internal to the model&apos;s reasoning and which should be stabilised outside it.&lt;/p&gt;
&lt;p&gt;The second question is the unit of work. We still do not know the right granularity for engineering agents. Some tasks may be small enough to support reliable execution but too narrow to create useful leverage. Others may be large enough to matter operationally but so broad that the agent starts drifting, skipping checks, or losing attachment to the governing artifact. The choice is not between tiny tasks and ambitious autonomy as abstract ideals. It is about finding the span of work within which an agent can still remain controllable. &lt;strong&gt;And once the relevant unit turns out not to be a task but a process, questions of decomposition, review structure, and interaction design move from the margins to the centre.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The third question is what actually predicts reliability. Final scores matter, but they are not enough. A system that arrives at a good answer through a fragile process may be much less useful than a system that exposes when it is uncertain, revisits questionable steps, compresses toward clear findings, and behaves differently when it is in trouble. We do not yet know which trace-level signals are robust enough to support runtime monitoring or intervention, but that is exactly the kind of question that becomes important once you care about real workflows instead of static evaluation alone. Recent work on reasoning structure and agent behaviour is starting to point in this direction, treating intermediate behaviour as something analysable rather than just an opaque path to the final score, as in &lt;a href=&quot;https://arxiv.org/abs/2601.06002&quot;&gt;Du et al.&apos;s Agentic Bonds framework&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The fourth question is how failure should be described. It is too coarse to talk about engineering failures as if they were all reasoning failures. In practice, the failure may be loss of task attachment, substitution of the instance, unsupported use of standards, malformed completion, or verbose but weakly grounded narration. Those are different breakdowns, and they imply different remedies. If we do not distinguish them, we will end up measuring systems in ways that hide the mechanisms we most need to improve.&lt;/p&gt;
&lt;p&gt;The fifth question is how much capability a well-designed environment can supply. This is one of the most important and most delicate unknowns. A good harness can clearly unlock behaviour that would not reliably appear in a weak setup. But that raises a harder interpretive problem. When does scaffolding help a model express real competence, and when does it effectively perform too much of the task on the model&apos;s behalf? We need to know that boundary, because it affects how we read both benchmark results and deployment claims.&lt;/p&gt;
&lt;p&gt;Each question changes what we should build, what we should measure, and how we should interpret success. Taken together, they suggest that the real frontier in agentic engineering is not just model improvement. It is experimental clarity about how capability is distributed across the whole system.&lt;/p&gt;
&lt;h2&gt;From Tasks to Processes: Why Engineering Workflows Need More Than Single-Step Agents&lt;/h2&gt;
&lt;p&gt;One reason this design space is easy to misunderstand is that we often talk about work as if it arrives in neatly bounded tasks. Sometimes it does. But many of the workflows that matter most in engineering are not really tasks in that sense. They are processes: longer-horizon structures with multiple artifacts, multiple experts, natural gates of review and control, and repeated moments where uncertainty has to be managed rather than ignored.&lt;/p&gt;
&lt;p&gt;That distinction matters because a process creates a different design problem from a task. A task invites a question like: can the system complete this unit of work correctly? A process invites harder questions. How should work be decomposed across time? Where should evidence accumulate? When should one expert intervene directly, and when should the system continue on its own? What kind of intermediate state has to be visible for redirection, challenge, or sign-off to be meaningful? The moment you move from tasks to processes, orchestration stops being a thin implementation layer and becomes part of the substance of the work.&lt;/p&gt;
&lt;p&gt;This is especially visible in workflows that look simple when described at a distance. A due diligence engagement can sound like one task: review the available material and produce a judgment. In practice it is nothing like a single bounded action. It is a process of evidence gathering, interpretation, cross-checking, escalation, synthesis, and review, often with several experts working in parallel and stepping in at different moments for different reasons. The important problem is not just whether an agent can perform one inference. It is whether the overall system can support the sequence of inferences, checks, and interventions that make the result trustworthy.&lt;/p&gt;
&lt;p&gt;That is also why LLM UX becomes more important, not less, once agents enter the picture. If the real unit of work is a process, then the interaction pattern between humans and the system becomes part of the capability. We need to know what it means for an expert to drive the loop rather than merely appear in the loop at pre-specified checkpoints. We need to know how a system should request judgment, how it should expose uncertainty, and how it should allow redirection without forcing the human to reconstruct the entire state of the process from scratch.&lt;/p&gt;
&lt;p&gt;This is not just a matter of convenience. It is a cognitive issue. These systems can already accumulate more intermediate state, more branching hypotheses, and more raw evidence than any single human can comfortably keep in working memory. So the question becomes: what is the control surface for a process like that? What is the communication layer that abstracts complexity without hiding the very evidence a reviewer may need to inspect? What kinds of summaries, provenance views, exception queues, and escalation mechanisms let a human meaningfully steer a process they cannot fully replay in their head?&lt;/p&gt;
&lt;p&gt;Seen this way, agentic engineering is not only about building systems that can do tasks. It is about building systems that can participate in processes without dissolving the human capacity to understand, direct, and verify what is happening. That may be one of the deepest reasons harness design matters so much in engineering. The harness is not just coordinating tools around a model. It is helping define the structure through which work, judgment, and control move over time.&lt;/p&gt;
&lt;h2&gt;AEC Needs Better Benchmarks, Not Better Demos&lt;/h2&gt;
&lt;p&gt;If capability is environmentally expressed, then environment design has to become an empirical science rather than a collection of intuitions. In engineering, and especially in AEC, that point still has not been fully absorbed. Too much of the current conversation remains stuck at the level of demos, generic prompting claims, or isolated examples of model fluency. What the field needs instead is controlled experimentation on engineering task environments. Instead of asking whether a model can solve a cherry-picked problem, we need task families that let us vary conditions deliberately, observe what changes, and learn which combinations of tools, constraints, interfaces, and verification loops actually produce dependable work.&lt;/p&gt;
&lt;p&gt;That starts with grounding. The tasks have to come from artifacts people actually use, and they have to reflect the problem spaces and value spaces that matter in practice. Every benchmark task is not just an isolated prompt. It is an instance of a broader problem class, and part of the job is identifying those classes deliberately rather than sampling whatever happens to be easy to score. From there, the environment itself has to become legible to experimentation: harness variants, tool access, verifier behaviour, output constraints, turn budgets, and other control variables need to be adjustable so we can see what is actually driving performance. And the measurements cannot stop at end scores. We need outcome metrics, but also trace-level analysis and explicit failure taxonomies that tell us what kind of process the system used and what kind of breakdown occurred when it failed.&lt;/p&gt;
&lt;p&gt;The evaluation target also has to expand beyond isolated tasks. In many real settings, the important object is a process: a longer-horizon workflow with multiple artifacts, multiple actors, parallel workstreams, and repeated gates of review and redirection. The benchmark surface therefore cannot stop at correctness on a single step. It has to ask how control is handed off, how intermediate state is exposed, how uncertainty is surfaced, and how the system behaves when a human expert needs to redirect the work without redoing it from scratch.&lt;/p&gt;
&lt;p&gt;That pushes evaluation toward a more realistic style. Engineering work is not purely textual, rarely single-step, and often only partly verifiable by one exact answer. Drawings, schedules, specifications, details, markups, diagrams, and spatial context are part of the task, not decorative extras. A serious research program in this space will need multimodal inputs much earlier than many current evals do. It will also need better machinery for tasks where adequacy, prioritisation, and review quality matter more than one final number.&lt;/p&gt;
&lt;p&gt;It also raises a cognitive problem as well as a technical one. Once these systems are processing more state, more evidence, and more branching intermediate work than any human can comfortably hold in mind, the design challenge shifts again. What is the communication layer between the system and the expert? How should complexity be abstracted without hiding the very evidence a reviewer may need to see? What summaries, state representations, provenance trails, and escalation patterns let a human steer a process they cannot fully replay in their head? Those questions sit at the boundary between interface design, cognition, and control, and they are likely to matter just as much as the underlying model or toolchain.&lt;/p&gt;
&lt;p&gt;The point is not to make benchmarks larger for their own sake. The point is to make them shaped enough like the work that they can teach us something real. If the benchmark is too convenient, it will mainly reward convenience. If the environment is too unlike practice, it will tell us very little about what systems can actually be trusted to do.&lt;/p&gt;
&lt;h2&gt;Reliability Before Autonomy: What AEC Firms Actually Need from AI Agents&lt;/h2&gt;
&lt;p&gt;The most useful near-term goal is probably not full engineering autonomy. It is reliable leverage on bounded tasks. Systems that can assist with scoped review, structured checking, discrepancy detection, and well-instrumented analysis may already create value long before end-to-end automation becomes plausible.&lt;/p&gt;
&lt;p&gt;That is also a more useful way to think about autonomy itself. &lt;strong&gt;In practice, autonomy is not just a property of the model. It is an achievement of the system.&lt;/strong&gt; A workflow becomes more autonomous when the surrounding environment makes the task legible, encodes the relevant constraints, exposes the right tools, and provides enough feedback for the agent to act with bounded independence rather than uncontrolled freedom.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In practice, autonomy is not just a property of the model. It is an achievement of the system.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That framing matters because it keeps the work tied to real workflow value instead of speculative theatre. Engineering organisations do not need a general claim that an agent is intelligent. They need to know whether a system can reduce time on a defined task while preserving reviewability and limiting failure cost. In many cases, the right near-term design is not autonomy but disciplined assistance inside a human-controlled process.&lt;/p&gt;
&lt;p&gt;That is also why reliability has to come before ambition. A narrower system that stays attached to the artifact, exposes its work clearly, and fails in legible ways is often more valuable than a broader one that produces impressive but weakly controllable outputs. &lt;strong&gt;In engineering, trust is not a cosmetic feature added after the fact. It is part of the product.&lt;/strong&gt; If a system cannot show why it acted, preserve the assumptions it relied on, and support meaningful intervention when things go wrong, then the path to autonomy runs through fragility rather than leverage.&lt;/p&gt;
&lt;p&gt;This is especially important in domains like AEC, where the work is high consequence, low volume, and deeply review-shaped. The near-term question is not whether a system can replace expertise wholesale. It is whether it can make expert time more powerful without dissolving accountability. The prize is not a machine that replaces engineering judgment in the abstract. It is a system that can participate in engineering workflows in ways that are inspectable, recoverable, and worth trusting on defined slices of the job.&lt;/p&gt;
&lt;h2&gt;Why Harness Engineering for AEC Matters Now&lt;/h2&gt;
&lt;p&gt;This is the kind of work that matters if we want progress in engineering AI to be meaningful rather than theatrical. The glamorous parts of this field are easy to spot. The &lt;a href=&quot;https://www.linkedin.com/pulse/when-expert-systems-need-coordination-building-workflow-galanos-zrudc/&quot;&gt;boring middle&lt;/a&gt; is not. &lt;strong&gt;But the boring middle is where much of the real leverage lives: task selection, workflow design, harness construction, interface design, verification, and evaluation.&lt;/strong&gt; If we skip that layer, we do not get reliable systems. We get better demos.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If we skip that layer, we do not get reliable systems. We get better demos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The interesting frontier is not another round of vague claims that models are getting smarter. It is the slower and more consequential work of identifying valuable problem spaces, building task environments around them, designing the right control surfaces, and learning how capability is distributed across models, tools, interfaces, and human judgment.&lt;/p&gt;
&lt;p&gt;That is also what makes this an unusually exciting moment to work on these problems. The design space is still open. The operational patterns are not settled. The important domains are still underexplored. That means there is real room to shape the field: not just by building better models, but by building better harnesses, better evaluations, better interfaces, and better ways for experts and autonomous systems to work together on real tasks and real processes.&lt;/p&gt;
&lt;p&gt;If engineering and AEC are going to benefit meaningfully from these systems, that work cannot be left to benchmark convenience or generic product abstractions. It will require people who understand the domains, the artifacts, the review practices, and the economics of real workflows to help define what good looks like. Before this becomes a field of grand claims, it should become a field of good experiments, good environments, and good judgment about where these systems can actually be trusted.&lt;/p&gt;
</content:encoded><author>Theodoros Galanos</author></item></channel></rss>