{
  "type": "object",
  "properties": {
    "message": {"type": "string"},
    "move": {"type": "string", "enum": ["clarify", "probe_evidence", "probe_alternative", "probe_assumption", "probe_consequence", "calibrate", "hint", "explain_apply", "synthesise", "ready", "redirect", "safety_pause"]},
    "concept_id": {"type": "string"},
    "hint_level": {"type": "integer", "enum": [0, 1, 2, 3, 4]},
    "evidence": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "criterion_id": {"type": "string"},
          "status": {"type": "string", "enum": ["not_observed", "partial", "demonstrated", "misconception", "contradicted"]},
          "message_id": {"type": ["string", "null"]},
          "quote": {"type": ["string", "null"]},
          "note": {"type": "string"}
        },
        "required": ["criterion_id", "status", "message_id", "quote", "note"],
        "additionalProperties": false
      }
    },
    "source_refs": {"type": "array", "items": {"type": "string"}},
    "content_basis": {"type": "string", "enum": ["source", "case", "general", "mixed", "none"]},
    "recommendation": {"type": "string", "enum": ["continue", "stage_ready", "finish_ready", "pause"]},
    "suggested_challenge": {"type": ["integer", "null"], "enum": [1, 2, 3, 4, 5, null]},
    "uncertainty_note": {"type": ["string", "null"]}
  },
  "required": ["message", "move", "concept_id", "hint_level", "evidence", "source_refs", "content_basis", "recommendation", "suggested_challenge", "uncertainty_note"],
  "additionalProperties": false
}
