Pimp My IDE / Garage Dispatch
← Back to the garage
September 8, 2026 · agents / testing / review

Your agent wrote tests. Cool. What did they try to kill?

New agent-testing data makes the uncomfortable point plain: naming a technique can produce the costume of rigor without the behavior. A green loop is not a test strategy until the defects, oracle, attacks, and replay receipt are explicit.

The take: stop asking whether the agent “used TDD.” Ask which failure family it hunted, what independent thing judged the answer, which ugly inputs were generated, and whether another driver can replay the wreck.
Put the suite on the load bank ↓

Technique names are not magic words.

Dan Luu’s September 2026 experiment ran a Rust Zstd implementation task under 26 prompt conditions—including TDD, fuzzing, property-based testing, mutation testing, formal methods, named libraries, and no extra instruction. Most condition-and-effort cells used 80 runs. Nothing “wildly” outperformed, and the no-instruction default landed above the equal-condition average. More important than the leaderboard: inspection found agents often wrapped ordinary weak tests in the requested technique, proved irrelevant properties, or generated random cases dominated by invalid inputs.[1]

That does not prove that property tests, fuzzers, formal methods, or TDD are weak. It shows that invoking their names is not equivalent to applying their leverage. A torque wrench used as a hammer does not invalidate torque.

A test framework is a machine. The defect model is the driver.

The harness changes what “done” looks like.

A separate public hangar experiment sent the same self-contained Three.js prompt through ten model-and-harness combinations. The table records duration, token traffic, tool calls, tool errors, whether the result opened in a browser, and whether screenshots were checked. Some runs did both visual steps; some did neither.[2]

That table is a useful process receipt, not a universal quality ranking: one prompt, heterogeneous models, and no common correctness score cannot crown a winner. But it exposes something dashboards usually hide. “Generated a file” and “opened the file and looked at it” are different operational states. The harness decides whether inspection is natural, optional, or absent.

Autonomous repair loops need a sharper brake.

VS Code 1.136 introduced Agent Merge in preview: an agent can address review feedback, failed checks, and merge conflicts, rerun workflows, and repeat until the pull request is ready to merge. The same release organizes delegated chats and pending approvals across sessions.[3] GitHub also announced that Copilot code review can approve pull requests when its comments are resolved; GitHub says approvals do not override branch protection or required human approvals.[4]

These are real workflow upgrades. They also make weak checks more dangerous, because the loop can efficiently optimize toward whatever the checks reward. If the oracle only asks “does the code compile and satisfy examples?”, the repair loop becomes a very fast theater company.

Build a test contract before a test pile.

  1. Name the likely defect: boundary error, state leak, ordering bug, numerical drift, concurrency race, malformed input, compatibility break.
  2. Choose an independent oracle: reference implementation, executable specification, metamorphic relation, invariant, differential peer, or human-visible artifact.
  3. Attack the shape: boundaries, degenerate cases, structured mutations, long sequences, interruption points, and combinations—not random noise for its own sake.
  4. Preserve the smallest wreck: seed, fixture, environment, command, observed output, expected output, and the minimized counterexample.
  5. Keep approval outside the same blind spot: the actor that writes the patch should not be the only actor defining success.

Tell the agent to use tools, sure. Then inspect whether it used their leverage. The goal is not a more ceremonial green check. The goal is a failure that had somewhere to hide and got dragged into fluorescent light anyway.

Interactive makeover / verification contract

Test Theater Load Bank.

Traditional purpose replaced: a checkbox that says “tests added.” Better version: choose the defect you fear, close four evidence circuits, watch the suite take load, and print a replayable test contract.

Failure-shape selector

Start with a defect family. Then close only the circuits your suite can actually demonstrate. Native radio buttons and checkboxes keep the whole rig keyboard, touch, and screen-reader operable.

Choose a target defect family
Test evidence circuits
THE LOAD BANK DOES NOT MEASURE COVERAGE. It reports selected evidence planes and prints the claims you still owe.

Suite load

Circuit count is exact. Needle position and state names are explanatory teaching signals—not production telemetry and not a quality score.

BOUNDARYselected defect family
1 circuitdeclared evidence planes
  1. 0 No theory · green has no named target
  2. 1 Label only · defect named
  3. 2 Judged · independent oracle attached
  4. 3 Under attack · cases target the shape
  5. 4 Replay ready · wreck keeps coordinates
TEACHING PROXY — selection does not prove useful generators, oracle independence, complete state coverage, deterministic replay, or release safety.
Open the four-source test log
[1] Dan Luu — “How well do agents use test/verification techniques?” (September 2026): Zstd and RFC experiments, condition results, behavioral inspection, and limitations. [2] Hangar Harness / Model Tests — one Three.js prompt across ten model/harness runs, with tool, browser-open, and screenshot-check receipts. [3] Visual Studio Code 1.136 release notes (September 2, 2026): Agent Merge preview, multi-root agent sessions, related chats, and pending approvals. [4] GitHub Changelog (September 1, 2026): Copilot code review approvals and stated branch-protection boundaries.