{
  "provenance": {
    "inputs_sha256": "41b7d2202704308e00dae3be8d42da93b20c9aa447ba7295eb9d17b319b490bd",
    "readings_sha256": "b4918c150cb448614f0e6b0009ccd810ea18d861cb91ca232e299efc8d07050a",
    "table_sha256": "448d3ff74f428758ef59f0bc0d7e87b8892273f838fc46915491696791b631aa",
    "source_size": [
      1683,
      1190
    ],
    "policy_sha256": "9a7280d5e52a78249926f339fe0efc51e5d64a8acb8242f08b6189123ba53795",
    "rules_code_sha256": "26fa2d606bcc55e24b2598dff1306a5d2a613cfdc4e66d62d8d4f6c1f1ed0bd1",
    "source_fingerprints": {
      "drawing_sha256": "1c2788d63b65944ceabf5245cabbf1e843dbafaff235f1ca1c1cab5efc96b19f",
      "tolerance_sha256": "0c3789fa8b05a8e603c08649b4fe17f088d42c4107ff36a8dc7c25fcb733e3ac",
      "pairs_sha256": "9f1a9db2df9a9eaacce47211b218d924dfcc04168f2a89e88c2303f701ee0dba"
    },
    "transcription_provenance": "Assistant visually transcribed the saved PDF crops and checked feature identity against the full drawing. Values are observations, not expected OK/NG labels. No spatial scoring reference was loaded. Original model outputs are retained separately. Red table marks are ignored per user instruction. Not independently human verified. Matching revision 2026-11-03: four unsupported assignment regressions restored from the earlier SFT model run, then visually rechecked. All other observation records retained.",
    "pair_file": "data/sources/pairs.json",
    "spatial_reference_used": false,
    "model_decides_ok_ng": false,
    "red_marks_select_grade": false
  },
  "id": "B010",
  "black": {
    "id": "B010",
    "class_id": 37,
    "box": [
      289.165,
      837.6649999999998,
      355.295,
      853.875
    ]
  },
  "red_regions": [
    {
      "id": "R047",
      "box": [
        303,
        855,
        374,
        891
      ],
      "ink_area": 856,
      "center": [
        337.87967289719626,
        873.0046728971963
      ]
    }
  ],
  "original_crop": "data/crops/B010.png",
  "observation": {
    "pair_red_ids": [
      "R047"
    ],
    "black_text": "4×2-C4",
    "requirement_type": "chamfer",
    "nominal": "4",
    "measured_values": [
      "4.0",
      "4.0",
      "4.0",
      "4.0",
      "4.0",
      "4.0",
      "4.0",
      "4.0"
    ],
    "red_text": "4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0",
    "lower_deviation": null,
    "upper_deviation": null,
    "required_measurement_count": 8,
    "unit": "mm",
    "black_readable": true,
    "red_readable": true,
    "association": "plausible",
    "notes": "Bốn vị trí, hai mép mỗi vị trí: tám số đo C4. Các số bằng nhau vẫn là tám quan sát riêng.",
    "review_source": "debug/context/B010.png; debug/black/B010.png; supplied drawing PDF",
    "review_method": "assistant_visual_transcription; not independently human verified"
  },
  "decision": {
    "status": "OK",
    "rule_ids": [
      "R04_EXPLICIT_FIRST",
      "R08_TABLE",
      "R09_ALL_VALUES",
      "R10_ANY_NG",
      "R11_INCLUSIVE_DECIMAL"
    ],
    "reason": "Tất cả 8 số đo đọc được nằm trong giới hạn của toàn bộ 5 rule/cột có thể áp dụng.",
    "unit": "mm",
    "scope": "numeric_conformance",
    "measurements": [],
    "candidate_rules": [
      {
        "column": "machining_medium",
        "heading": "削 / 中",
        "family": "machining",
        "nominal_interval": "(0, 6] mm",
        "half_width": "0.1",
        "lower": "3.9",
        "upper": "4.1",
        "source": "/content/検証サンプル②の公差表.pdf, trang 1, 削 / 中, dòng ≤6 mm",
        "measurements": [
          {
            "measurement_index": 1,
            "value": "4",
            "lower": "3.9",
            "upper": "4.1",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.9 ≤ 4 ≤ 4.1: đúng"
          },
          {
            "measurement_index": 2,
            "value": "4",
            "lower": "3.9",
            "upper": "4.1",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.9 ≤ 4 ≤ 4.1: đúng"
          },
          {
            "measurement_index": 3,
            "value": "4",
            "lower": "3.9",
            "upper": "4.1",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.9 ≤ 4 ≤ 4.1: đúng"
          },
          {
            "measurement_index": 4,
            "value": "4",
            "lower": "3.9",
            "upper": "4.1",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.9 ≤ 4 ≤ 4.1: đúng"
          },
          {
            "measurement_index": 5,
            "value": "4",
            "lower": "3.9",
            "upper": "4.1",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.9 ≤ 4 ≤ 4.1: đúng"
          },
          {
            "measurement_index": 6,
            "value": "4",
            "lower": "3.9",
            "upper": "4.1",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.9 ≤ 4 ≤ 4.1: đúng"
          },
          {
            "measurement_index": 7,
            "value": "4",
            "lower": "3.9",
            "upper": "4.1",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.9 ≤ 4 ≤ 4.1: đúng"
          },
          {
            "measurement_index": 8,
            "value": "4",
            "lower": "3.9",
            "upper": "4.1",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.9 ≤ 4 ≤ 4.1: đúng"
          }
        ],
        "numeric_status": "OK",
        "status": "OK"
      },
      {
        "column": "machining_coarse",
        "heading": "削 / 粗",
        "family": "machining",
        "nominal_interval": "(0, 6] mm",
        "half_width": "0.3",
        "lower": "3.7",
        "upper": "4.3",
        "source": "/content/検証サンプル②の公差表.pdf, trang 1, 削 / 粗, dòng ≤6 mm",
        "measurements": [
          {
            "measurement_index": 1,
            "value": "4",
            "lower": "3.7",
            "upper": "4.3",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.7 ≤ 4 ≤ 4.3: đúng"
          },
          {
            "measurement_index": 2,
            "value": "4",
            "lower": "3.7",
            "upper": "4.3",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.7 ≤ 4 ≤ 4.3: đúng"
          },
          {
            "measurement_index": 3,
            "value": "4",
            "lower": "3.7",
            "upper": "4.3",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.7 ≤ 4 ≤ 4.3: đúng"
          },
          {
            "measurement_index": 4,
            "value": "4",
            "lower": "3.7",
            "upper": "4.3",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.7 ≤ 4 ≤ 4.3: đúng"
          },
          {
            "measurement_index": 5,
            "value": "4",
            "lower": "3.7",
            "upper": "4.3",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.7 ≤ 4 ≤ 4.3: đúng"
          },
          {
            "measurement_index": 6,
            "value": "4",
            "lower": "3.7",
            "upper": "4.3",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.7 ≤ 4 ≤ 4.3: đúng"
          },
          {
            "measurement_index": 7,
            "value": "4",
            "lower": "3.7",
            "upper": "4.3",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.7 ≤ 4 ≤ 4.3: đúng"
          },
          {
            "measurement_index": 8,
            "value": "4",
            "lower": "3.7",
            "upper": "4.3",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.7 ≤ 4 ≤ 4.3: đúng"
          }
        ],
        "numeric_status": "OK",
        "status": "OK"
      },
      {
        "column": "sheet_grade_1",
        "heading": "板金 / 1級 / 寸法",
        "family": "sheet_metal",
        "nominal_interval": "(0, 6] mm",
        "half_width": "0.25",
        "lower": "3.75",
        "upper": "4.25",
        "source": "/content/検証サンプル②の公差表.pdf, trang 1, 板金 / 1級 / 寸法, dòng ≤6 mm",
        "measurements": [
          {
            "measurement_index": 1,
            "value": "4",
            "lower": "3.75",
            "upper": "4.25",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.75 ≤ 4 ≤ 4.25: đúng"
          },
          {
            "measurement_index": 2,
            "value": "4",
            "lower": "3.75",
            "upper": "4.25",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.75 ≤ 4 ≤ 4.25: đúng"
          },
          {
            "measurement_index": 3,
            "value": "4",
            "lower": "3.75",
            "upper": "4.25",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.75 ≤ 4 ≤ 4.25: đúng"
          },
          {
            "measurement_index": 4,
            "value": "4",
            "lower": "3.75",
            "upper": "4.25",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.75 ≤ 4 ≤ 4.25: đúng"
          },
          {
            "measurement_index": 5,
            "value": "4",
            "lower": "3.75",
            "upper": "4.25",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.75 ≤ 4 ≤ 4.25: đúng"
          },
          {
            "measurement_index": 6,
            "value": "4",
            "lower": "3.75",
            "upper": "4.25",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.75 ≤ 4 ≤ 4.25: đúng"
          },
          {
            "measurement_index": 7,
            "value": "4",
            "lower": "3.75",
            "upper": "4.25",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.75 ≤ 4 ≤ 4.25: đúng"
          },
          {
            "measurement_index": 8,
            "value": "4",
            "lower": "3.75",
            "upper": "4.25",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.75 ≤ 4 ≤ 4.25: đúng"
          }
        ],
        "numeric_status": "OK",
        "status": "OK"
      },
      {
        "column": "sheet_grade_2",
        "heading": "板金 / 2級 / 寸法",
        "family": "sheet_metal",
        "nominal_interval": "(0, 6] mm",
        "half_width": "0.4",
        "lower": "3.6",
        "upper": "4.4",
        "source": "/content/検証サンプル②の公差表.pdf, trang 1, 板金 / 2級 / 寸法, dòng ≤6 mm",
        "measurements": [
          {
            "measurement_index": 1,
            "value": "4",
            "lower": "3.6",
            "upper": "4.4",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.6 ≤ 4 ≤ 4.4: đúng"
          },
          {
            "measurement_index": 2,
            "value": "4",
            "lower": "3.6",
            "upper": "4.4",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.6 ≤ 4 ≤ 4.4: đúng"
          },
          {
            "measurement_index": 3,
            "value": "4",
            "lower": "3.6",
            "upper": "4.4",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.6 ≤ 4 ≤ 4.4: đúng"
          },
          {
            "measurement_index": 4,
            "value": "4",
            "lower": "3.6",
            "upper": "4.4",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.6 ≤ 4 ≤ 4.4: đúng"
          },
          {
            "measurement_index": 5,
            "value": "4",
            "lower": "3.6",
            "upper": "4.4",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.6 ≤ 4 ≤ 4.4: đúng"
          },
          {
            "measurement_index": 6,
            "value": "4",
            "lower": "3.6",
            "upper": "4.4",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.6 ≤ 4 ≤ 4.4: đúng"
          },
          {
            "measurement_index": 7,
            "value": "4",
            "lower": "3.6",
            "upper": "4.4",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.6 ≤ 4 ≤ 4.4: đúng"
          },
          {
            "measurement_index": 8,
            "value": "4",
            "lower": "3.6",
            "upper": "4.4",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.6 ≤ 4 ≤ 4.4: đúng"
          }
        ],
        "numeric_status": "OK",
        "status": "OK"
      },
      {
        "column": "sheet_grade_3",
        "heading": "板金 / 3級 / 寸法",
        "family": "sheet_metal",
        "nominal_interval": "(0, 6] mm",
        "half_width": "0.7",
        "lower": "3.3",
        "upper": "4.7",
        "source": "/content/検証サンプル②の公差表.pdf, trang 1, 板金 / 3級 / 寸法, dòng ≤6 mm",
        "measurements": [
          {
            "measurement_index": 1,
            "value": "4",
            "lower": "3.3",
            "upper": "4.7",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.3 ≤ 4 ≤ 4.7: đúng"
          },
          {
            "measurement_index": 2,
            "value": "4",
            "lower": "3.3",
            "upper": "4.7",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.3 ≤ 4 ≤ 4.7: đúng"
          },
          {
            "measurement_index": 3,
            "value": "4",
            "lower": "3.3",
            "upper": "4.7",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.3 ≤ 4 ≤ 4.7: đúng"
          },
          {
            "measurement_index": 4,
            "value": "4",
            "lower": "3.3",
            "upper": "4.7",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.3 ≤ 4 ≤ 4.7: đúng"
          },
          {
            "measurement_index": 5,
            "value": "4",
            "lower": "3.3",
            "upper": "4.7",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.3 ≤ 4 ≤ 4.7: đúng"
          },
          {
            "measurement_index": 6,
            "value": "4",
            "lower": "3.3",
            "upper": "4.7",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.3 ≤ 4 ≤ 4.7: đúng"
          },
          {
            "measurement_index": 7,
            "value": "4",
            "lower": "3.3",
            "upper": "4.7",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.3 ≤ 4 ≤ 4.7: đúng"
          },
          {
            "measurement_index": 8,
            "value": "4",
            "lower": "3.3",
            "upper": "4.7",
            "status": "OK",
            "outside_by": "0",
            "comparison": "3.3 ≤ 4 ≤ 4.7: đúng"
          }
        ],
        "numeric_status": "OK",
        "status": "OK"
      }
    ],
    "nominal": "4",
    "warnings": [],
    "rule_resolution": "all_applicable_columns",
    "required_information": [],
    "deltas_from_nominal": [
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0"
    ],
    "observed_measurement_count": 8,
    "required_measurement_count": 8
  },
  "explanation": [
    "Yêu cầu: 4×2-C4.",
    "Số đo đỏ: 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 mm.",
    "Kết quả: OK. Tất cả 8 số đo đọc được nằm trong giới hạn của toàn bộ 5 rule/cột có thể áp dụng.",
    "削 / 中: [3.9, 4.1] mm → OK. 3.9 ≤ 4 ≤ 4.1: đúng; 3.9 ≤ 4 ≤ 4.1: đúng; 3.9 ≤ 4 ≤ 4.1: đúng; 3.9 ≤ 4 ≤ 4.1: đúng; 3.9 ≤ 4 ≤ 4.1: đúng; 3.9 ≤ 4 ≤ 4.1: đúng; 3.9 ≤ 4 ≤ 4.1: đúng; 3.9 ≤ 4 ≤ 4.1: đúng. Nguồn: /content/検証サンプル②の公差表.pdf, trang 1, 削 / 中, dòng ≤6 mm.",
    "削 / 粗: [3.7, 4.3] mm → OK. 3.7 ≤ 4 ≤ 4.3: đúng; 3.7 ≤ 4 ≤ 4.3: đúng; 3.7 ≤ 4 ≤ 4.3: đúng; 3.7 ≤ 4 ≤ 4.3: đúng; 3.7 ≤ 4 ≤ 4.3: đúng; 3.7 ≤ 4 ≤ 4.3: đúng; 3.7 ≤ 4 ≤ 4.3: đúng; 3.7 ≤ 4 ≤ 4.3: đúng. Nguồn: /content/検証サンプル②の公差表.pdf, trang 1, 削 / 粗, dòng ≤6 mm.",
    "板金 / 1級 / 寸法: [3.75, 4.25] mm → OK. 3.75 ≤ 4 ≤ 4.25: đúng; 3.75 ≤ 4 ≤ 4.25: đúng; 3.75 ≤ 4 ≤ 4.25: đúng; 3.75 ≤ 4 ≤ 4.25: đúng; 3.75 ≤ 4 ≤ 4.25: đúng; 3.75 ≤ 4 ≤ 4.25: đúng; 3.75 ≤ 4 ≤ 4.25: đúng; 3.75 ≤ 4 ≤ 4.25: đúng. Nguồn: /content/検証サンプル②の公差表.pdf, trang 1, 板金 / 1級 / 寸法, dòng ≤6 mm.",
    "板金 / 2級 / 寸法: [3.6, 4.4] mm → OK. 3.6 ≤ 4 ≤ 4.4: đúng; 3.6 ≤ 4 ≤ 4.4: đúng; 3.6 ≤ 4 ≤ 4.4: đúng; 3.6 ≤ 4 ≤ 4.4: đúng; 3.6 ≤ 4 ≤ 4.4: đúng; 3.6 ≤ 4 ≤ 4.4: đúng; 3.6 ≤ 4 ≤ 4.4: đúng; 3.6 ≤ 4 ≤ 4.4: đúng. Nguồn: /content/検証サンプル②の公差表.pdf, trang 1, 板金 / 2級 / 寸法, dòng ≤6 mm.",
    "板金 / 3級 / 寸法: [3.3, 4.7] mm → OK. 3.3 ≤ 4 ≤ 4.7: đúng; 3.3 ≤ 4 ≤ 4.7: đúng; 3.3 ≤ 4 ≤ 4.7: đúng; 3.3 ≤ 4 ≤ 4.7: đúng; 3.3 ≤ 4 ≤ 4.7: đúng; 3.3 ≤ 4 ≤ 4.7: đúng; 3.3 ≤ 4 ≤ 4.7: đúng; 3.3 ≤ 4 ≤ 4.7: đúng. Nguồn: /content/検証サンプル②の公差表.pdf, trang 1, 板金 / 3級 / 寸法, dòng ≤6 mm.",
    "Ghi chú chứng cứ: Bốn vị trí, hai mép mỗi vị trí: tám số đo C4. Các số bằng nhau vẫn là tám quan sát riêng."
  ]
}