vn6295337 Claude Opus 4.5 commited on
Commit
6ab9879
·
1 Parent(s): 95ae0b4

Fix revision loop exit: change > 3 to >= 3, handle ESCALATE

Browse files

Bug: Loop didn't exit after 3 revisions because:
1. revision_count > 3 was False when count = 3
2. ESCALATE status wasn't checked in should_continue

Fix:
- Change revision_count > 3 to >= 3
- Add check for critique_details.status == "ESCALATE"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Files changed (1) hide show
  1. src/utils/conditions.py +10 -4
src/utils/conditions.py CHANGED
@@ -10,10 +10,11 @@ def should_continue(state) -> Literal["exit", "retry"]:
10
  - Error set (LLM providers failed - abort immediately)
11
  - Analyzer revision skipped (LLM failed but using fallback draft - exit gracefully)
12
  - Score >= 6 (good quality)
13
- - Revision count > 3 (max attempts reached)
 
14
 
15
  Continue conditions:
16
- - No error AND No revision skip AND Score < 6 AND Revisions <= 3
17
  """
18
  # Abort immediately if error is set (critical failure)
19
  if state.get("error"):
@@ -23,11 +24,16 @@ def should_continue(state) -> Literal["exit", "retry"]:
23
  if state.get("analyzer_revision_skipped"):
24
  return "exit"
25
 
 
 
 
 
 
26
  current_score = state.get("score", 0)
27
  revision_count = state.get("revision_count", 0)
28
 
29
- # Exit if quality is good enough or max revisions exceeded
30
- if current_score >= 6 or revision_count > 3:
31
  return "exit"
32
 
33
  # Continue the loop for improvement
 
10
  - Error set (LLM providers failed - abort immediately)
11
  - Analyzer revision skipped (LLM failed but using fallback draft - exit gracefully)
12
  - Score >= 6 (good quality)
13
+ - Revision count >= 3 (max attempts reached)
14
+ - Status is ESCALATE (critic escalated for human review)
15
 
16
  Continue conditions:
17
+ - No error AND No revision skip AND Score < 6 AND Revisions < 3
18
  """
19
  # Abort immediately if error is set (critical failure)
20
  if state.get("error"):
 
24
  if state.get("analyzer_revision_skipped"):
25
  return "exit"
26
 
27
+ # Exit if critic escalated (max iterations reached)
28
+ critique_details = state.get("critique_details", {})
29
+ if critique_details.get("status") == "ESCALATE":
30
+ return "exit"
31
+
32
  current_score = state.get("score", 0)
33
  revision_count = state.get("revision_count", 0)
34
 
35
+ # Exit if quality is good enough or max revisions reached
36
+ if current_score >= 6 or revision_count >= 3:
37
  return "exit"
38
 
39
  # Continue the loop for improvement