@@ -1178,6 +1178,10 @@ async def _evaluate_coding_plan(
11781178 conversation_history : list [dict ],
11791179 task_metadata : TaskMetadata ,
11801180 ctx : Context ,
1181+ problem_domain : str | None = None ,
1182+ problem_non_goals : list [str ] | None = None ,
1183+ library_plan : list [dict ] | None = None ,
1184+ internal_reuse_components : list [dict ] | None = None ,
11811185) -> JudgeResponse :
11821186 """Evaluate coding plan using AI judge.
11831187
@@ -1216,6 +1220,11 @@ async def _evaluate_coding_plan(
12161220 else False ,
12171221 identified_risks = task_metadata .identified_risks or [],
12181222 risk_mitigation_strategies = task_metadata .risk_mitigation_strategies or [],
1223+ # Domain focus and reuse maps (optional explicit inputs)
1224+ problem_domain = problem_domain or "" ,
1225+ problem_non_goals = problem_non_goals or [],
1226+ library_plan = library_plan or [],
1227+ internal_reuse_components = internal_reuse_components or [],
12191228 )
12201229 messages = create_separate_messages (
12211230 "system/judge_coding_plan.md" ,
@@ -1252,6 +1261,11 @@ async def judge_coding_plan(
12521261 context : str = "" ,
12531262 # OPTIONAL override
12541263 user_requirements : str | None = None ,
1264+ # OPTIONAL explicit inputs to avoid rejection on missing deliverables
1265+ problem_domain : str | None = None ,
1266+ problem_non_goals : list [str ] | None = None ,
1267+ library_plan : list [dict ] | None = None ,
1268+ internal_reuse_components : list [dict ] | None = None ,
12551269) -> JudgeResponse :
12561270 """Coding plan evaluation tool - description loaded from tool_description_provider."""
12571271 # Log tool execution start
@@ -1265,6 +1279,10 @@ async def judge_coding_plan(
12651279 "research" : research ,
12661280 "context" : context ,
12671281 "research_urls" : research_urls ,
1282+ "problem_domain" : problem_domain ,
1283+ "problem_non_goals" : problem_non_goals ,
1284+ "library_plan" : library_plan ,
1285+ "internal_reuse_components" : internal_reuse_components ,
12681286 }
12691287
12701288 try :
@@ -1522,6 +1540,10 @@ async def judge_coding_plan(
15221540 history_json_array ,
15231541 task_metadata , # Pass task metadata for conditional features
15241542 ctx ,
1543+ problem_domain = problem_domain ,
1544+ problem_non_goals = problem_non_goals ,
1545+ library_plan = library_plan ,
1546+ internal_reuse_components = internal_reuse_components ,
15251547 )
15261548
15271549 # Additional research validation if approved
@@ -1556,17 +1578,22 @@ async def judge_coding_plan(
15561578 # If missing but the plan was approved, convert to required improvements
15571579 missing_deliverables : list [str ] = []
15581580 try :
1581+ # Fill from explicit inputs if LLM omitted them in metadata
1582+ if problem_domain and not getattr (updated_task_metadata , "problem_domain" , "" ).strip ():
1583+ updated_task_metadata .problem_domain = problem_domain # type: ignore[attr-defined]
1584+ if problem_non_goals and not getattr (updated_task_metadata , "problem_non_goals" , None ):
1585+ updated_task_metadata .problem_non_goals = problem_non_goals # type: ignore[attr-defined]
1586+ if library_plan and (not getattr (updated_task_metadata , "library_plan" , None ) or len (getattr (updated_task_metadata , "library_plan" , [])) == 0 ):
1587+ updated_task_metadata .library_plan = library_plan # type: ignore[attr-defined]
1588+ if internal_reuse_components and (not getattr (updated_task_metadata , "internal_reuse_components" , None ) or len (getattr (updated_task_metadata , "internal_reuse_components" , [])) == 0 ):
1589+ updated_task_metadata .internal_reuse_components = internal_reuse_components # type: ignore[attr-defined]
1590+
1591+ # Now check for missing deliverables
15591592 if not getattr (updated_task_metadata , "problem_domain" , "" ).strip ():
15601593 missing_deliverables .append ("Add a clear Problem Domain Statement with explicit non-goals" )
1561- # library_plan is a list of LibraryPlanItem entries
1562- if not getattr (updated_task_metadata , "library_plan" , []) or len (
1563- getattr (updated_task_metadata , "library_plan" , [])
1564- ) == 0 :
1565- missing_deliverables .append (
1566- "Provide a Library Selection Map (purpose → internal/external library with justification)"
1567- )
1594+ if not getattr (updated_task_metadata , "library_plan" , []) or len (getattr (updated_task_metadata , "library_plan" , [])) == 0 :
1595+ missing_deliverables .append ("Provide a Library Selection Map (purpose → internal/external library with justification)" )
15681596 except Exception :
1569- # Be resilient; do not crash on schema variations
15701597 pass
15711598
15721599 effective_approved = evaluation_result .approved and not missing_deliverables
0 commit comments