{
  "case_id": "E09",
  "passed": true,
  "errors": [],
  "raw_model_passed": false,
  "raw_model_contract_errors": [
    "F2: size与样本事实不符",
    "F3: status与样本事实不符",
    "F3: size与样本事实不符"
  ],
  "raw_model_errors": [
    "F2: size与样本事实不符",
    "F3: status与样本事实不符",
    "F3: size与样本事实不符"
  ],
  "human_review_findings": [],
  "human_corrections": [
    {
      "id": "F2",
      "field": "size",
      "from": "S",
      "to": "M",
      "reason": "90+10=100cm，满足要求的最小成衣胸围100cm对应M，原size和解释自相矛盾。"
    },
    {
      "id": "F2",
      "field": "explanation",
      "from": "身体胸围90cm + 松量10cm = 目标成衣胸围100cm。知识表中S码成衣胸围为96cm（小于100cm，不满足），M码成衣胸围为100cm（等于100cm，满足）。根据规则选择满足条件的最小成衣胸围，即M码。等等，重新检查逻辑：目标是找满足 >= (body+ease) 的最小 size。Body=90, Ease=10 -> Required Garment Chest = 100. Sizes: S=96 (<100, fail), M=100 (>=100, pass), L=104 (>=100, pass). Smallest passing is M.",
      "to": "身体胸围90cm加10cm松量需100cm成衣胸围；S为96cm不满足，M为100cm满足，候选为M。",
      "reason": "将原自我纠错长文收敛为可核对计算，不改原响应。"
    },
    {
      "id": "F3",
      "field": "status",
      "from": "candidate",
      "to": "no_match",
      "reason": "所需108cm大于最大104cm，无匹配。"
    },
    {
      "id": "F3",
      "field": "size",
      "from": "L",
      "to": null,
      "reason": "L为104cm不足108cm，不能推荐L。"
    },
    {
      "id": "F3",
      "field": "explanation",
      "from": "身体胸围98cm + 松量10cm = 目标成衣胸围108cm。知识表中S码96cm、M码100cm均小于108cm，不满足；L码104cm也小于108cm，不满足。因此没有匹配尺码？再仔细看知识表：{",
      "to": "身体胸围98cm加10cm松量需108cm；现有最大L为104cm，没有满足给定松量的尺码。",
      "reason": "原解释止于未完成的知识表片段；依据输入数字补成明确结论。"
    }
  ],
  "scope": "只校验本例合同、编号、指定事实与格式；不证明业务事实在现实世界成立。",
  "checked_rows": 3,
  "checks": [
    "HTTP200且唯一完整stop响应",
    "输入/响应SHA-256一致",
    "行ID完整且无重复",
    "来源编号必须存在",
    "指定事实断言核对",
    "CSV标准解析器往返：行数一致",
    "专用CSV与实际export.csv内容一致：fit-review.csv"
  ],
  "negative_tests": {
    "changed_row_id_detected": true,
    "fabricated_source_detected": true
  },
  "human_review_required": true
}
