feat: further increased budgets for adversary and code reviewer agents
This commit is contained in:
4 files changed
+26
-4
No files matched your search
@@ -52,6 +52,7 @@ settings:
|
||||
|
||||
initial_state:
|
||||
project_dir_in: ''
|
||||
parse_retries: 0
|
||||
criteria: []
|
||||
diff_spec: auto
|
||||
plan_notes: ''
|
||||
@@ -88,6 +89,10 @@ nodes:
|
||||
Split compound criteria ("A and B") into separate entries when they are
|
||||
independently verifiable. When the caller supplied NO plan/criteria at
|
||||
all, emit an empty array — downstream fails closed.
|
||||
An empty array is ONLY correct when the prompt genuinely contains no
|
||||
plan/criteria section — when the prompt carries one (a "Plan /
|
||||
acceptance criteria:" or "PLAN —" block), returning zero criteria is
|
||||
an extraction FAILURE, never a valid result.
|
||||
The caller's explicit enumeration is AUTHORITATIVE: when the caller
|
||||
declares "these N are the (only) criteria" or supplies a numbered
|
||||
criteria list, extract EXACTLY those N — never add entries they did
|
||||
@@ -348,7 +353,7 @@ nodes:
|
||||
observations:
|
||||
type: string
|
||||
required: [extra_complaints, observations]
|
||||
max_iterations: 30
|
||||
max_iterations: 45
|
||||
max_attempts: 2
|
||||
state_updates:
|
||||
holistic_failure: '{{output}}'
|
||||
|
||||
@@ -8,6 +8,7 @@ review proceeds fail-closed rather than crashing.
|
||||
"""
|
||||
|
||||
import json
|
||||
import re
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
@@ -22,6 +23,22 @@ def load_state():
|
||||
|
||||
|
||||
state = load_state()
|
||||
|
||||
# Zero criteria from a prompt that visibly carries a plan is an extraction
|
||||
# failure (observed non-deterministically live), not a fail-closed no-plan
|
||||
# run — re-run the parse ONCE before the verdict fails closed on it.
|
||||
_crit = state.get("criteria") or []
|
||||
_prompt = state.get("initial_prompt") or ""
|
||||
if not _crit and isinstance(_prompt, str) and re.search(
|
||||
r"acceptance criteria|PLAN\s*—|Plan / acceptance", _prompt, re.I
|
||||
):
|
||||
try:
|
||||
_pr = int(state.get("parse_retries") or 0)
|
||||
except (TypeError, ValueError):
|
||||
_pr = 0
|
||||
if _pr < 1:
|
||||
print(json.dumps({"_next": "parse", "parse_retries": _pr + 1}))
|
||||
raise SystemExit(0)
|
||||
proj = os.path.expanduser(
|
||||
(state.get("project_dir_in") or "").strip() or state.get("project_dir") or "."
|
||||
)
|
||||
|
||||
@@ -147,7 +147,7 @@ nodes:
|
||||
extra_context:
|
||||
type: string
|
||||
required: [diff_spec, intent, rigor_in, surfaces_in, project_dir_in, extra_context]
|
||||
max_iterations: 3
|
||||
max_iterations: 6
|
||||
max_attempts: 2
|
||||
state_updates:
|
||||
parse_failure: '{{output}}'
|
||||
@@ -228,7 +228,7 @@ nodes:
|
||||
type: string
|
||||
required: [domain, files]
|
||||
required: [groups]
|
||||
max_iterations: 3
|
||||
max_iterations: 6
|
||||
max_attempts: 2
|
||||
state_updates:
|
||||
refine_failure: '{{output}}'
|
||||
|
||||
Reference in new issue
Block a user