{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Domain Loop Analyst Verdict", "type": "object", "additionalProperties": false, "required": [ "summary", "quality_score", "loop_decision", "requires_user_decision", "user_decision_type", "user_decision_prompt", "unresolved_p0_count", "regression_detected", "priority_targets", "acceptance_criteria", "notes" ], "properties": { "summary": { "type": "string" }, "quality_score": { "type": "integer", "minimum": 0, "maximum": 100 }, "loop_decision": { "type": "string", "enum": ["accepted", "continue", "partial", "blocked", "needs_exact_capability"] }, "requires_user_decision": { "type": "boolean", "description": "Set true only when the autonomous loop must stop and ask the user because the next step is an architecture fork, important business question, scope tradeoff, or another non-autonomous decision." }, "user_decision_type": { "type": "string", "enum": ["none", "architecture_fork", "important_business_question", "scope_tradeoff", "data_truth_gap", "missing_required_observation", "risky_workaround", "risky_complexity", "other"], "description": "Explain why the loop needs user input. Use none when requires_user_decision is false." }, "user_decision_prompt": { "type": ["string", "null"], "description": "Short user-facing question to unblock the loop when requires_user_decision is true, otherwise null." }, "unresolved_p0_count": { "type": "integer", "minimum": 0 }, "regression_detected": { "type": "boolean" }, "priority_targets": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["scenario_id", "step_id", "severity", "problem_type", "fix_goal"], "properties": { "scenario_id": { "type": "string" }, "step_id": { "type": ["string", "null"] }, "severity": { "type": "string", "enum": ["P0", "P1", "P2"] }, "problem_type": { "type": "string", "enum": ["route_gap", "capability_gap", "evidence_gap", "presentation_gap", "regression", "other"] }, "fix_goal": { "type": "string" } } } }, "acceptance_criteria": { "type": "array", "items": { "type": "string" } }, "notes": { "type": "array", "items": { "type": "string" } } } }