{
  "type": "object",
  "additionalProperties": false,
  "required": ["verdict", "summary", "dimensions", "findings", "recommended_action"],
  "properties": {
    "verdict": { "enum": ["pass", "pass_with_risk", "should_fix", "needs_fix", "block"] },
    "summary": { "type": "string", "maxLength": 200 },
    "dimensions": {
      "type": "array",
      "minItems": 7,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["name", "status"],
        "properties": {
          "name": { "type": "string" },
          "status": { "enum": ["ok", "warn", "block", "n/a"] },
          "note": { "type": "string", "maxLength": 200 }
        }
      }
    },
    "findings": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["severity", "category", "message", "stable_id"],
        "properties": {
          "stable_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{2,63}$",
            "description": "稳定语义 ID，kebab-case 3-64 字符。同一 PR 内跨多轮 review 指同一问题必须复用同一 ID（让 state 增量去重生效，#259 新发现 1）。命名建议：<category-slug>-<问题短描述>，如 'contract-07api-missing-verify-endpoint'。"
          },
          "severity": { "enum": ["hard_block", "risk", "suggestion"] },
          "category": { "type": "string" },
          "message": { "type": "string" },
          "file": { "type": "string" },
          "line": { "type": "integer", "minimum": 0 }
        }
      }
    },
    "recommended_action": { "type": "string", "maxLength": 200 }
  }
}
