Summary
Every claude-code run ever recorded has ended partial with error_max_turns. Four for
four. Because partial counts as a result rather than a failure, it terminates the
fallback chain — the third tier is never reached — and the run posts a comment that says
only that the agent failed.
Combined with #64 (codex has not authenticated since July), this means the proactive lane
has produced nothing usable since early July, at roughly $1 per attempt.
Evidence
| agent |
model |
outcome |
failure_reason |
n |
last |
| claude-code |
claude-opus-4-8 |
partial |
error_max_turns |
4 |
2026-08-28T06:25:05Z |
There is no success row for claude-code at any point.
The 2026-08-28 run (b5a7c4eb, issue #63):
06:25:15 invoking agent claude-code (slug=claude-code:claude-opus-4-8)
06:26:56 WARNING claude error subtype: error_max_turns
06:27:00 labelled issue #63: +ai-failed +ai-contributed
06:27:00 run complete: outcome=partial dur=116s turns=16 cost=$1.0714 tokens=471,909
turns_used=16 against max_turns=15, actions_taken=[], wip_branch_url empty. 101
seconds of agent time, $1.07 and 472k tokens spent to produce the comment "investigated
this suggestion but reported failure. Reason: error_max_turns".
Two distinct defects
1. max_turns = 15 is too low for the proactive persona
[defaults] max_turns = 15 in labro.toml, with no override on any
proactive-improvement task source. A perspective audit asks the agent to explore an
unfamiliar repo, form a thesis, and then act on it. Fifteen turns is plausible for a
labelled-issue task with a known target; it is not enough to read a codebase from cold.
The 100% failure rate across four runs and two repos suggests this is systematic, not bad
luck.
Worth deciding whether the fix is a higher max_turns on the proactive sources
specifically, or a tighter prompt that narrows what the agent has to read before it can act.
2. partial terminates the fallback chain
The proactive model list is:
model = ["codex", "claude-code:claude-opus-4-8", "opencode:opencode/deepseek-v4-flash-free"]
Tier 3 has never run. Codex 401s (a hard failure, so the chain advances); claude-code
returns partial (a result, so the chain stops). The cheap free-tier fallback that exists
precisely for this case is unreachable in practice.
Whether error_max_turns should advance the chain is a genuine design question — a
partial result carries real work and re-running from scratch discards it. But the current
behaviour means a permanently-degraded tier-2 agent silently consumes every proactive run
and the configured safety net never engages. At minimum error_max_turns with
actions_taken=[] is indistinguishable from a failure and should be treated as one.
Related
Summary
Every
claude-coderun ever recorded has endedpartialwitherror_max_turns. Four forfour. Because
partialcounts as a result rather than a failure, it terminates thefallback chain — the third tier is never reached — and the run posts a comment that says
only that the agent failed.
Combined with #64 (codex has not authenticated since July), this means the proactive lane
has produced nothing usable since early July, at roughly $1 per attempt.
Evidence
There is no
successrow forclaude-codeat any point.The 2026-08-28 run (
b5a7c4eb, issue #63):turns_used=16againstmax_turns=15,actions_taken=[],wip_branch_urlempty. 101seconds of agent time, $1.07 and 472k tokens spent to produce the comment "investigated
this suggestion but reported failure. Reason: error_max_turns".
Two distinct defects
1.
max_turns = 15is too low for the proactive persona[defaults] max_turns = 15inlabro.toml, with no override on anyproactive-improvementtask source. A perspective audit asks the agent to explore anunfamiliar repo, form a thesis, and then act on it. Fifteen turns is plausible for a
labelled-issue task with a known target; it is not enough to read a codebase from cold.
The 100% failure rate across four runs and two repos suggests this is systematic, not bad
luck.
Worth deciding whether the fix is a higher
max_turnson the proactive sourcesspecifically, or a tighter prompt that narrows what the agent has to read before it can act.
2.
partialterminates the fallback chainThe proactive model list is:
Tier 3 has never run. Codex 401s (a hard failure, so the chain advances); claude-code
returns
partial(a result, so the chain stops). The cheap free-tier fallback that existsprecisely for this case is unreachable in practice.
Whether
error_max_turnsshould advance the chain is a genuine design question — apartial result carries real work and re-running from scratch discards it. But the current
behaviour means a permanently-degraded tier-2 agent silently consumes every proactive run
and the configured safety net never engages. At minimum
error_max_turnswithactions_taken=[]is indistinguishable from a failure and should be treated as one.Related
skippedmasks crashes and total source failures — a broken run is indistinguishable from an idle one #60 — outcome reporting hides broken runs; this is the same class of masking one layer uppartialrun with an emptywip_branch_urlis more evidence that WIPpreservation is not doing the job it exists for