[
  {
    "region_id": "r002",
    "status": "pass",
    "check_results": [
      {
        "check": "not_in_ass",
        "passed": true,
        "message": "not in ASS (passthrough)"
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r002.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r002.jpg",
    "bbox": {
      "x": 0,
      "y": 510,
      "w": 706,
      "h": 570
    },
    "summary": "Ignored title card (Remake of 10 Million...). Must not appear in ASS — excluded via ignore_regions."
  },
  {
    "region_id": "r003",
    "status": "pass",
    "check_results": [
      {
        "check": "panel_covers_text",
        "passed": true,
        "message": "no panel or text"
      },
      {
        "check": "within_bounds",
        "passed": true,
        "message": "no positioned text"
      },
      {
        "check": "frame_bounds",
        "passed": true,
        "message": ""
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r003.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r003.jpg",
    "bbox": {
      "x": 1210,
      "y": 820,
      "w": 688,
      "h": 254
    },
    "summary": "Info card panel (Dance Workout). Single-line text on panel (custom render)."
  },
  {
    "region_id": "r027",
    "status": "pass",
    "check_results": [
      {
        "check": "within_bounds",
        "passed": true,
        "message": "no positioned text"
      },
      {
        "check": "frame_bounds",
        "passed": true,
        "message": ""
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r027.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r027.jpg",
    "bbox": {
      "x": 746,
      "y": 860,
      "w": 438,
      "h": 220
    },
    "summary": "Wide coaching text near bottom. Text centered at bbox, fits within frame."
  },
  {
    "region_id": "r031",
    "status": "pass",
    "check_results": [
      {
        "check": "single_line",
        "passed": true,
        "message": "\"\""
      },
      {
        "check": "font_size_range",
        "passed": true,
        "message": "no text lines"
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r031.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r031.jpg",
    "bbox": {
      "x": 804,
      "y": 852,
      "w": 1116,
      "h": 228
    },
    "summary": "Wide coaching text near bottom. Should stay single line with large font, not split into small 2-line."
  },
  {
    "region_id": "r033",
    "status": "pass",
    "check_results": [
      {
        "check": "line_spacing",
        "passed": true,
        "message": "single line, skip"
      },
      {
        "check": "top_edge_alignment",
        "passed": true,
        "message": "not top-edge, skip"
      },
      {
        "check": "within_bounds",
        "passed": true,
        "message": "no positioned text"
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r033.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r033.jpg",
    "bbox": {
      "x": 806,
      "y": 852,
      "w": 1114,
      "h": 228
    },
    "summary": "Two-line text at top edge. Should align from top down, not float in middle."
  },
  {
    "region_id": "r040",
    "status": "pass",
    "check_results": [
      {
        "check": "no_duplicate_overlap",
        "passed": true,
        "message": "no overlapping fragment duplicates"
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r040.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r040.jpg",
    "bbox": {
      "x": 806,
      "y": 852,
      "w": 1114,
      "h": 228
    },
    "summary": "Merged coaching telop. Should render alone (no overlapping split fragments like r037/r038)."
  },
  {
    "region_id": "r055",
    "status": "fail",
    "check_results": [
      {
        "check": "no_render_overlap",
        "passed": false,
        "message": "no dialogue lines found"
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r055.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r055.jpg",
    "bbox": {
      "x": 236,
      "y": 0,
      "w": 1394,
      "h": 196
    },
    "summary": "Coaching text 'Tighten your abs!' overlaps r040 at same screen position. Should not stack."
  },
  {
    "region_id": "r075",
    "status": "pass",
    "check_results": [
      {
        "check": "line_spacing",
        "passed": true,
        "message": "single line, skip"
      },
      {
        "check": "top_edge_alignment",
        "passed": true,
        "message": "not top-edge, skip"
      },
      {
        "check": "within_bounds",
        "passed": true,
        "message": "no positioned text"
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r075.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r075.jpg",
    "bbox": {
      "x": 50,
      "y": 900,
      "w": 1818,
      "h": 180
    },
    "summary": "Two-line text at very top (y=0). Font must be small enough for both lines to fit."
  },
  {
    "region_id": "r093",
    "status": "fail",
    "check_results": [
      {
        "check": "text_content",
        "passed": false,
        "message": "no text lines found in ASS"
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r093.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r093.jpg",
    "bbox": {
      "x": 1256,
      "y": 12,
      "w": 344,
      "h": 136
    },
    "summary": "Coaching text with translation override. Must render 'Reverse Arm Lifts' (override), not 'Gentle Bird Exercise' (base AI)."
  },
  {
    "region_id": "r102",
    "status": "pass",
    "check_results": [
      {
        "check": "bbox_centered",
        "passed": true,
        "message": "no positioned text"
      },
      {
        "check": "within_bounds",
        "passed": true,
        "message": "no positioned text"
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r102.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r102.jpg",
    "bbox": {
      "x": 32,
      "y": 914,
      "w": 1860,
      "h": 166
    },
    "summary": "Right-side coaching text. Should be positioned at bbox (right half), not frame center."
  },
  {
    "region_id": "r105",
    "status": "pass",
    "check_results": [
      {
        "check": "unsplit_multiline",
        "passed": true,
        "message": ""
      },
      {
        "check": "within_bounds",
        "passed": true,
        "message": "no positioned text"
      },
      {
        "check": "frame_bounds",
        "passed": true,
        "message": ""
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r105.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r105.jpg",
    "bbox": {
      "x": 480,
      "y": 910,
      "w": 952,
      "h": 168
    },
    "summary": "Single-line coaching text near bottom. Should stay one line, not get re-broken."
  },
  {
    "region_id": "r119",
    "status": "pass",
    "check_results": [
      {
        "check": "frame_bounds",
        "passed": true,
        "message": ""
      },
      {
        "check": "fill_ratio",
        "passed": true,
        "message": "no text"
      },
      {
        "check": "within_bounds",
        "passed": true,
        "message": "no positioned text"
      }
    ],
    "orig_url": "/data/p1/7-render/en/regression_frames/original/orig_r119.jpg",
    "trans_url": "/data/p1/7-render/en/regression_frames/translated/trans_r119.jpg",
    "bbox": {
      "x": 1648,
      "y": 268,
      "w": 270,
      "h": 180
    },
    "summary": "Narrow left-side region. Should break to 2-line and stay near bbox, not extend across frame."
  }
]