{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Domain Loop Analyst Verdict", "type": "object", "additionalProperties": false, "required": [ "summary", "user_intent_summary", "expected_direct_answer", "actual_direct_answer", "quality_score", "direct_answer_ok", "business_usefulness_ok", "business_utility_score", "direct_answer_priority_score", "state_continuity_score", "answer_shape_score", "evidence_clarity_score", "focus_object_continuity_ok", "bundle_reuse_ok", "followup_action_resolution_ok", "recommended_state_objects", "loop_decision", "requires_user_decision", "user_decision_type", "user_decision_prompt", "unresolved_p0_count", "regression_detected", "root_cause_layers", "broken_edge_ids", "violated_invariants", "priority_targets", "acceptance_criteria", "notes" ], "properties": { "summary": { "type": "string" }, "user_intent_summary": { "type": "string" }, "expected_direct_answer": { "type": "string" }, "actual_direct_answer": { "type": ["string", "null"] }, "quality_score": { "type": "integer", "minimum": 0, "maximum": 100 }, "direct_answer_ok": { "type": "boolean" }, "business_usefulness_ok": { "type": "boolean" }, "business_utility_score": { "type": "integer", "minimum": 0, "maximum": 100 }, "direct_answer_priority_score": { "type": "integer", "minimum": 0, "maximum": 100 }, "state_continuity_score": { "type": "integer", "minimum": 0, "maximum": 100 }, "answer_shape_score": { "type": "integer", "minimum": 0, "maximum": 100 }, "evidence_clarity_score": { "type": "integer", "minimum": 0, "maximum": 100 }, "focus_object_continuity_ok": { "type": "boolean" }, "bundle_reuse_ok": { "type": "boolean" }, "followup_action_resolution_ok": { "type": "boolean" }, "recommended_state_objects": { "type": "array", "items": { "type": "string" } }, "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" }, "root_cause_layers": { "type": "array", "items": { "type": "string", "enum": [ "semantic_understanding_gap", "runtime_capability_gap", "edge_carryover_gap", "object_memory_gap", "followup_action_resolution_gap", "bundle_reuse_gap", "field_mapping_gap", "answer_shape_mismatch", "ordering_semantics_mismatch", "business_utility_gap", "loop_coverage_gap", "domain_anchor_gap", "other" ] } }, "broken_edge_ids": { "type": "array", "items": { "type": "string" } }, "violated_invariants": { "type": "array", "items": { "type": "string" } }, "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", "semantic_understanding_gap", "edge_carryover_gap", "object_memory_gap", "followup_action_resolution_gap", "bundle_reuse_gap", "field_mapping_gap", "answer_shape_mismatch", "ordering_semantics_mismatch", "business_utility_gap", "loop_coverage_gap", "domain_anchor_gap", "regression", "other" ] }, "fix_goal": { "type": "string" } } } }, "acceptance_criteria": { "type": "array", "items": { "type": "string" } }, "notes": { "type": "array", "items": { "type": "string" } } } }