0.03FF0001 / LAT 36.1684 / LON −86.7816
BUILD 39e7b1a / 2026-08-03 / NASHVILLE, TN
visualfinesse
email github linkedin
§ Work / IDIIDOComplete

IDIIDO

2026-01 → ongoing · Python · Claude CLI · Codex CLI · OpenRouter

The problem

An autonomous coding harness fails constantly. That is the normal operating condition, not the exception. What separates a cheap harness from a ruinous one is what it does next.

The naive answer is to re-prompt the model. That is also the most expensive answer available, and it is what most harnesses do for every failure regardless of cause. Re-running a full generation because a generated file is stale, or because a 401 came back, spends real money to solve a problem no model was needed for.

Two questions decide the bill: what counts as done, and what is the cheapest action that could fix this specific failure.

What was built

A harness that works a TODO.md overnight, driving the Claude CLI, the Codex CLI, or a routed list of OpenRouter models, with fallback across all three. Each task is attempted, then validated against a Definition of Done before it is allowed to be marked complete.

Definition of Done, enforced rather than requested

The agent is told not to mark tasks complete. It is also not trusted to comply. The executor mechanically resets every task to pending, discarding whatever the agent wrote, and re-derives completion from its own checks. Instruction and enforcement, deliberately both.

Only when validation passes does the task get marked.

Routing failures by cost

This is where the money is. A failure is not a prompt. It is a diagnosis, and each diagnosis has a cheapest fix:

  • A stale code atlas regenerates directly, with no model call at all.
  • A failing test suite is re-run locally first. An agent is spawned only if it still fails, because the common case is that the previous attempt already fixed it.
  • Anything else builds a remediation prompt naming the one failing criterion, with the instruction to fix only that. Not a fresh attempt at the whole task.

The same logic governs the model router. A 429 or a 5xx is retryable, so it advances to the next model. A 4xx is not. It aborts immediately, because retrying a malformed request or a bad key across six models just spends the budget six times to learn the same thing.

Everything is bounded twice: each attempt gets its own timeout, and the whole request gets a second ceiling checked both before each attempt and after each failure. Every attempt appends a telemetry record (model, duration, outcome, reason, HTTP status) so the cost of a run is inspectable afterward rather than inferred.

Speed

Failure context is assembled once and carried forward: the failed criteria, per-criterion detail, suggestions, hook output, and test output from both the validation and remediation passes, each truncated independently so one runaway test dump cannot crowd out everything else in the window. The next attempt starts informed instead of starting over.

Where it stands

Public on GitHub, working. Two caveats worth stating rather than discovering: only three of the seven named checks do real work on the executor's current call path, and an architectural consolidation, collapsing a nine-file analyzer package back into a single script, broke the integration with the atlas regeneration it depends on. The idea and its mechanism are sound; that seam needs reconnecting.