Build1 distinct publisher3 min readPublished
Across 4,150 calls and four analyzer sizes, every proposal landed in the same corner of the prompt, and the edit the failure data pointed at never got written. Search strategy sets the ceiling here.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Look at the delta column before the model column. Every nonzero mean delta in both tables is a multiple of 0.025 [3][4], which puts the scoring unit at one fortieth [13]. Mistral 24B's three positive iterations each moved exactly one of those units [4][5]. A paired comparison that shifts one unit does not clear p < 0.05 on a suite that coarse, and none of them came close: the lowest p-value across the ten reported iterations was 0.46, roughly nine times the gate [14].
The suite size itself is not recoverable from the post, and it is the first number I would want. Sixty percent is a clean count on 40 items. Sixty-four percent is 25.6 items, and on the 10-task set used for the earlier 9B and gpt-4o-mini spot checks it would be 6.4 [11][15]. So the accuracy column and the delta column are not counts over the same set, and the denominator is what decides the smallest effect the gate can ever see.
Now the loop. Each iteration the analyzer reads the failures, emits one proposal, the harness A/B tests it, the gate rejects it, and the next round is handed the same failure list [8]. Nothing in that sequence records which class of edit just died. So the analyzer re-derives the same diagnosis from the same evidence and rephrases it: add "active" to security breach, add "only if critical to business continuity", add "requires immediate intervention" [7]. That is one candidate with a thesaurus attached.
The interesting edit is the one nobody wrote. Multi-label tasks return single labels, and the author's own estimate is that forcing comma-separated pair output would move three tasks straight away [10]. If a scoring unit is a task, that is a delta of 0.075, three times the largest any model produced [16]. It sits inside a failure family the analyzer had already named in its own report [9].
For this result to transfer to your loop, three conditions have to hold: your promotion gate is a significance test over a suite small enough that a one-item gain fails it, your analyzer sees only the previous round's failures, and you sample one candidate per round [8]. Widen the suite and a single-task edit becomes provable. Sample k candidates with a ban on previously rejected classes and the local optimum stops being an absorbing state. Neither change needs more parameters, which is about what the 1B-to-30B sweep showed: the 1B could barely function as an analyzer, and above that floor the extra weight bought latency rather than better proposals [2].
This is one author's project across two releases [1][9]. Take the mechanism and leave the effect size. Single-candidate hill climbing with no memory of rejected moves gets stuck in a local neighbourhood, which was true long before any of these checkpoints existed [12]; what the 4,150 calls contribute is a price for confirming it the expensive way [1].
Ranked by verification strength, evidence, and original report placement.
Debashish Ghosal reports on dev.to that he tested 4 models across 4,150 LLM calls on a self-improving prompt agent, resolving 31 v0.1.0 bugs and 26 v0.2.0 issues, and produced zero promotable prompt edits.
Per the author, the 4B model was fast and free but shallow, the 24B explored more thoughtfully but stayed in a weak local neighborhood, the 30B added latency without improvement, and the 1B model could barely function as an analyzer at all.
Qwen 4B (local), 5 iterations: p-values 0.73, 0.71, 0.46, 0.67, 1.0; mean deltas -0.05, -0.025, +0.025, -0.025, 0.0; accuracy 60% in every iteration.
Mistral 24B, 5 iterations: p-values 0.55, 0.52, 1.0, 0.52, 0.77; mean deltas +0.025, +0.025, 0.0, +0.025, -0.025; accuracy 64% in every iteration.
Mistral 24B produced positive mean deltas in 3 of 5 iterations, which the author calls real signal rather than hallucinated progress, but it never cleared p < 0.05 and so was never promoted.
Every model tested produced edits in the same local region of the prompt: billing disambiguation rules, urgency constraint wording, and output format tightening.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · September 2, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
A self-editing prompt agent promoted noise because its gate tested p < 0.951 distinct publisher
build
Eleven agent sessions on one machine settled CPU contention by writing to each other1 distinct publisher
build
Five discordant pairs cap what a self-improving prompt loop can prove1 distinct publisher
build
912MB to 108MB is mostly typing now, and that weakens the base-image excuse in review1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Granular, single-handed
The specificity is unusual for a blog post — ten rows of p-values and deltas, a call count to the unit, three verbatim rejected edits — and it all originates with the one person who ran it. No code, prompt, or task corpus travels with the numbers, so the ten iterations cannot be rerun by anyone else, and two of the reported columns do not sit comfortably together: a 0.025 delta step implies a 40-unit denominator while 64% is not a whole-number count on 40 tasks. Detailed enough to argue with, thin enough that arguing is all an outsider can do.
One project, one operator
The entire observed footprint is a single developer's pipeline — a local 4B, a hosted 24B, a Docker check, two internal release tags. Nobody else is reported to be running this analyzer loop, and no downstream user, team, or dependent project appears anywhere in the reporting. The 4,150 calls measure effort, not uptake.
Slightly under-sold
A post titled 'All 4 Failed' that publishes its own flat accuracy column is not inflating anything, and the sharpest finding — the fix sitting in plain sight in the failure data that no analyzer ever proposed — is buried mid-piece rather than led with. The one place reach exceeds grip is the flat verdict that model size is irrelevant, drawn from four models topping out at 30B on a single 40-task corpus, with the exploration-based alternative not yet run. Net, the reporting claims less than its numbers earn.
Reputational, not commercial
This is a numbered instalment in an ongoing dev.to series, and the format rewards a well-told postmortem with a cliffhanger fix for v0.3.0 — an audience incentive that shapes the framing and the arc. What is absent is money: no vendor, no product for sale, no benchmark anyone needs to win, and none of the four models under test belongs to the author. Writing up your own two wasted releases cuts against the interest that would otherwise pad the results.
Coherent, unaudited
We are fairly confident about what was reported and much less confident about what it proves. The mechanism story hangs together and the quoted variants make the local-optimum diagnosis concrete, but everything rests on one practitioner's self-report, the arithmetic has a loose thread, and the experiment that would separate 'search is the bottleneck' from 'these four models are the bottleneck' has not happened yet.