fix(adaptive): a mechanically broken run cannot be judged terminal - #64
fix(adaptive): a mechanically broken run cannot be judged terminal#64sanil-23 wants to merge 1 commit into
Conversation
Field observation: a shell step exited nonzero, the judge answered missing_evidence, and the episode ended with two of its three attempts unused — when rewriting the script was the whole fix. The taxonomy already says mechanical failures are goal_not_met (tinyhumansai#59). Saying it is not enough: a model that misreads the instruction ends the episode, and no later round can undo that. So the loop now overrules the judge on this one point, and does it on a fact rather than an opinion — the RUNNER reported the run broke. Evidence carries that report; a non-continuable blocker over a failed run becomes GoalNotMet. NeedsInput and ExternalWait survive, because both mean something outside the loop must move, which a broken run does not change; a run that completed keeps whatever the judge decided, so this is not a blanket refusal to stand down. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 5 minutes Limit details: You’ve used all 1 included review currently available under your plan. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
How this change flows3 changed behaviours across 10 relationships. 4 surrounding behaviours are shown (60 graph nodes walked). 40 further behaviours left out to keep the diagram readable. flowchart LR
n0["judge<br/>changed"]:::changed
n1["without_a_model<br/>changed"]:::changed
n2["Ran<br/>changed"]:::changed
n3["evidence"]:::impacted
n4["verdict_for"]:::impacted
n5["Evidence"]:::impacted
n6["Diagnosis"]:::impacted
n0 -->|calls| n1
n0 -->|uses| n5
n1 -->|uses| n5
n2 -->|uses| n6
n3 -->|uses| n5
n3 -->|uses| n6
n4 -->|calls| n0
n4 -->|tests| n0
n4 -->|uses| n5
n5 -->|uses| n6
classDef changed fill:#0d4429,stroke:#238636,color:#e6edf3
classDef impacted fill:#161b22,stroke:#6e7681,color:#c9d1d9
classDef flagged fill:#5a1e02,stroke:#d93f0b,color:#ffffff
classDef blocking fill:#67060c,stroke:#f85149,color:#ffffff
Green: changed behaviour. Grey: surrounding behaviour. Arrows name the call, use, implementation, or test relationship. Orange: has findings. Red: has a finding that blocks the merge. |
Field observation: a
shellstep exited nonzero, the judge answeredmissing_evidence, and the episode ended with two of its three attempts unused — when rewriting the script was the whole fix.The taxonomy already says mechanical failures are
goal_not_met(#59). Saying it is not enough: a model that misreads the instruction ends the episode, and no later round can undo that. This is the failure mode the crate normally answers with a mechanical gate rather than prompt hope, so:Evidencenow carries the runner's own failure report (failed), separately from the outcome, because it decides something the model may not: whether another attempt is worth making.judge, a non-continuable blocker over a failed run becomesGoalNotMet.NeedsInput/ExternalWaitsurvive the downgrade — both mean something outside the loop must move, which a broken run does not change.Three regression tests pin all three arms.
🤖 Generated with Claude Code