Published · 2d agoBuild3 min read
157 plans, one real model: the expensive agent failures land before the first tool call
A dev.to field test of 157 planning traces argues teams are hardening tools, memory and orchestration while single-pass decomposition ships plans missing one ordering constraint.
Written for builders.See today for builders

What happened
- The author ran 157 agent plans against a real LLM as a field test.
- The author's conclusion: the failures that actually matter often happen before the first tool call, and an agent can execute perfectly and still fail because the plan it was handed was never good.
- The author argues the agent ecosystem is obsessed with execution - tools, memory, orchestration, RAG, function calling, evals - and that many teams are optimizing the wrong layer first.
- Described failure pattern: an agent gets a goal like 'migrate this service to the new auth provider', decomposes it in a single hidden chain-of-thought pass, starts moving, and three steps later discovers the database schema was never checked, the outage window was never coordinated, or the rollback path was never real.
- The author notes that at the point of collapse you are not debugging the agent, you are cleaning up the state it already mutated.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
A developer writing on dev.to published a field test of 157 agent planning traces run against a real LLM and concluded that the failures worth caring about happened before the agent's first tool call [1] [2]. If that holds, the standard investment pattern in agent stacks is hardening a layer that was not the one breaking [3].
The mechanism he describes is mundane. An agent takes a goal like "migrate this service to the new auth provider," decomposes it in a single hidden chain-of-thought pass, and starts moving; three steps later the database schema was never checked, the outage window was never coordinated, or the rollback path was never real [4]. The cost is not a wrong answer. It is mutated state: by then you are not debugging the agent, you are cleaning up what it already changed [5].
The sharpest artifact in the piece is one trace, a blockchain recovery goal labelled bch-02-chain-split-recovery. The planner's first draft had four tasks: pause_attestation, identify_canonical, resync_node, verify_attestation [6]. The critic returned four BLOCKER findings, all of type unsafe_sequencing, one per task: pause ordered before its prerequisite detect_split, identify_canonical before pause, resync before identify_canonical, verify before resync [7]. Every step sat in front of the thing it depended on [8], which means every task in the plan was flagged [9]. The author's reading is that the planner knew the right steps but could not reliably order them, and that this is more dangerous than a dumb plan because the plausible one survives a glance at the task list [10]. The planner revised, the critic found the same blockers, and after two revisions the loop escalated [11].
The tool built around this, PlannerCritic, treats a plan like a pull request [12]: one model drafts, a separate model reviews, deterministic gates check structure, and the planner revises until the plan is approved or escalated to a human [13]. Two design choices travel even if you never install it. The deterministic gates run first and check ordering, branch sanity, rollback coverage, verification, preconditions and high-risk completeness, and because they never read the goal text the author calls them injection-immune [14]. The critic is a different model on purpose, because same-model self-review is too easy to fool [15]; his formulation is that a model reviewing its own plan is "agreement with extra steps" [16]. The loop is bounded by a revision cap, convergence detection and budget enforcement [17], and when it cannot converge it emits one minimal human question instead of guessing [18].
Now the evidence discount. The test plan defined 156 scenarios and produced 157 traces because one goal was renamed during the build, with all planned scenarios covered [19] - so the headline number is 156 planned scenarios plus one bookkeeping artifact, not extra coverage [20]. More importantly, the material available here stops before the aggregate results: we get the architecture and one trace, not a distribution of how many of the 157 drafts drew blockers, nor a false positive rate for the critic [21]. The author also cites existing research that self-correction fails often when a model cannot independently verify its own answer, as prior support rather than as his own measurement [22].
What to watch: whether the published field test results break down blockers by scenario and finding type, how often the deterministic gates catch ordering errors without a second model in the loop, and the escalation rate, because a planner that escalates constantly is a human review queue with added latency.
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
The author ran 157 agent plans against a real LLM as a field test.
- [2]
The author's conclusion: the failures that actually matter often happen before the first tool call, and an agent can execute perfectly and still fail because the plan it was handed was never good.
- [3]
The author argues the agent ecosystem is obsessed with execution - tools, memory, orchestration, RAG, function calling, evals - and that many teams are optimizing the wrong layer first.
- [4]
Described failure pattern: an agent gets a goal like 'migrate this service to the new auth provider', decomposes it in a single hidden chain-of-thought pass, starts moving, and three steps later discovers the database schema was never checked, the outage window was never coordinated, or the rollback path was never real.
ReportedView cited source - [5]
The author notes that at the point of collapse you are not debugging the agent, you are cleaning up the state it already mutated.
ReportedView cited source - [6]
The most useful trace in the field test came from a blockchain recovery goal, bch-02-chain-split-recovery; the planner's first draft had four tasks: pause_attestation, identify_canonical, resync_node, verify_attestation.
ReportedView cited source
Sources & coverage · 1 publisher
The reporting this story was synthesized from, earliest first. Every link goes to the original.
- dev.toDebashish Ghosal2d agoI Ran 157 Agent Plans Against a Real LLM. The Problem Wasn't Execution. It Was Planning.
Cited in this coverage: dev.to post by the author of PlannerCritic
Cited in this coverage: dev.to post
- dev.toDebashish Ghosal2d agoI Told My LLM Critic to Be Adversarial. It Started Blocking Plans for Being 'Not Thorough Enough.'

