{
  "schema_version": 1,
  "validation_kind": "cut_spacing_ladder_validation",
  "proof_type": "cut_spacing_ladder_v1",
  "status": "passed",
  "passed": true,
  "page": {
    "preset": "us_letter",
    "width_mm": 215.9,
    "height_mm": 279.4,
    "orientation": "portrait",
    "dpi": 600
  },
  "spacing_policy": {
    "production_min_cut_spacing_mm": 1.8,
    "production_spacing_unchanged": false,
    "production_spacing_source": "cut_spacing_ladder_v1",
    "targets_mm": [
      2.95,
      2.75,
      2.5,
      2.25,
      2.0,
      1.8
    ],
    "target_applies_to": "kerf_adjusted_cut_path_distance",
    "minimum_bleed_spacing_mm": 0.0
  },
  "active_setup_snapshot": {
    "calibration_setup_id": "calsetup_20260517_182621_c54446de4941",
    "calibration_setup_path": "calibration/setups/calsetup_20260517_182621_c54446de4941.json",
    "calibration_setup_sha256": "8886ffb2d353cef97f4ea259fa9fd4565ca8b1cd04c164f286b52d520d83a2aa",
    "calibration_profile_id": "cal_20260516_223213_982682889c87",
    "calibration_profile_sha256": "592fa32a7c03dff07b26cd3d50c6bddcc0b3e55e6642a45f929778f59d8065c4",
    "material_fit_profile_id": "matcal_20260517_061755_7d7370129bb0",
    "material_fit_profile_sha256": "99f1a76f25c195fb4a409acfe951099411a225f2f55cab6d63aaf510d0ef0540",
    "x_correction_mm": 0.7,
    "y_correction_mm": -0.1,
    "full_kerf_mm": 0.2,
    "outward_cut_offset_mm": 0.1,
    "xcs_kerf_offset_instruction": "0"
  },
  "cases": [
    {
      "case_id": "spacing-2p95",
      "target_cut_spacing_mm": 2.95,
      "extra_separation_mm": 12.347,
      "actual_min_cut_spacing_mm": 2.953969,
      "actual_min_bleed_spacing_mm": 1.153309,
      "active_bounds_mm": {
        "min_x_mm": 42.0,
        "min_y_mm": 38.0,
        "max_x_mm": 126.347,
        "max_y_mm": 70.0,
        "width_mm": 84.347,
        "height_mm": 32.0
      }
    },
    {
      "case_id": "spacing-2p75",
      "target_cut_spacing_mm": 2.75,
      "extra_separation_mm": 12.13,
      "actual_min_cut_spacing_mm": 2.753314,
      "actual_min_bleed_spacing_mm": 0.953109,
      "active_bounds_mm": {
        "min_x_mm": 42.0,
        "min_y_mm": 73.0,
        "max_x_mm": 126.13,
        "max_y_mm": 105.0,
        "width_mm": 84.13,
        "height_mm": 32.0
      }
    },
    {
      "case_id": "spacing-2p50",
      "target_cut_spacing_mm": 2.5,
      "extra_separation_mm": 11.859,
      "actual_min_cut_spacing_mm": 2.503295,
      "actual_min_bleed_spacing_mm": 0.70309,
      "active_bounds_mm": {
        "min_x_mm": 42.0,
        "min_y_mm": 108.0,
        "max_x_mm": 125.859,
        "max_y_mm": 140.0,
        "width_mm": 83.859,
        "height_mm": 32.0
      }
    },
    {
      "case_id": "spacing-2p25",
      "target_cut_spacing_mm": 2.25,
      "extra_separation_mm": 11.588,
      "actual_min_cut_spacing_mm": 2.253661,
      "actual_min_bleed_spacing_mm": 0.453071,
      "active_bounds_mm": {
        "min_x_mm": 42.0,
        "min_y_mm": 143.0,
        "max_x_mm": 125.588,
        "max_y_mm": 175.0,
        "width_mm": 83.588,
        "height_mm": 32.0
      }
    },
    {
      "case_id": "spacing-2p00",
      "target_cut_spacing_mm": 2.0,
      "extra_separation_mm": 11.317,
      "actual_min_cut_spacing_mm": 2.003642,
      "actual_min_bleed_spacing_mm": 0.203051,
      "active_bounds_mm": {
        "min_x_mm": 42.0,
        "min_y_mm": 178.0,
        "max_x_mm": 125.317,
        "max_y_mm": 210.0,
        "width_mm": 83.317,
        "height_mm": 32.0
      }
    },
    {
      "case_id": "spacing-1p80",
      "target_cut_spacing_mm": 1.8,
      "extra_separation_mm": 11.1,
      "actual_min_cut_spacing_mm": 1.803969,
      "actual_min_bleed_spacing_mm": 0.005849,
      "active_bounds_mm": {
        "min_x_mm": 42.0,
        "min_y_mm": 213.0,
        "max_x_mm": 125.1,
        "max_y_mm": 245.0,
        "width_mm": 83.1,
        "height_mm": 32.0
      }
    }
  ],
  "print": {
    "pdf_path": "calibration/artifacts/cut-spacing-ladder-v1/print.pdf",
    "png_path": "calibration/artifacts/cut-spacing-ladder-v1/print.png",
    "png_size_px": [
      5100,
      6600
    ],
    "png_mode": "RGB",
    "png_dpi": [
      599.9988,
      599.9988
    ]
  },
  "svg": {
    "alignment_svg_path": "calibration/artifacts/cut-spacing-ladder-v1/alignment.svg",
    "cut_only_svg_path": "calibration/artifacts/cut-spacing-ladder-v1/cut-only.svg",
    "alignment_cut_path_count": 12,
    "cut_only_path_count": 12,
    "cut_group_id": "cut_spacing_ladder_cut_paths",
    "registration_group_id": "cut_spacing_ladder_registration_reference",
    "registration_check_group_id": "cut_spacing_ladder_registration_check"
  },
  "preview": {
    "path": "calibration/artifacts/cut-spacing-ladder-v1/preview.webp"
  },
  "hashes": {
    "print_pdf_sha256": "de8ce9d612b487d06c853344462764e9d0b5243aaf196fc29787460cfae05fd9",
    "print_png_sha256": "46d646f63febe0ef259dddd4522e89f80199830e181c1d12751787d93df28d80",
    "alignment_svg_sha256": "46b62d9ea3c2e8fe7a98b1aee6118541efb05c872d1ee1bf66d16c3720610f71",
    "cut_only_svg_sha256": "282b1753635d9e3f52023fc45a720315b0f6faa332be2fc5dfb79e8713c88afd",
    "preview_sha256": "171eaf22b73677ddce874479f7819f4c8e69c288906790ea4afb98b9eb236347"
  },
  "manual_measurement": {
    "status": "pending_owner_cut_spacing_ladder_test",
    "instructions": "Print at 100% actual size using the same glued-paper-on-MDF workflow, import the alignment SVG, align A/B/C to the printed marks, inspect D, then cut red vectors only. Record the lowest target that separates cleanly without paper lift, charring, weak tabs, or edge damage."
  },
  "checks": [
    {
      "name": "print_pdf_exists",
      "passed": true,
      "message": "Print PDF exists.",
      "details": {}
    },
    {
      "name": "print_png_exists",
      "passed": true,
      "message": "Print PNG exists.",
      "details": {}
    },
    {
      "name": "alignment_svg_exists",
      "passed": true,
      "message": "Alignment SVG exists.",
      "details": {}
    },
    {
      "name": "cut_only_svg_exists",
      "passed": true,
      "message": "Cut-only SVG exists.",
      "details": {}
    },
    {
      "name": "preview_exists",
      "passed": true,
      "message": "Preview image exists.",
      "details": {}
    },
    {
      "name": "png_letter_size",
      "passed": true,
      "message": "PNG is US Letter at 600 DPI.",
      "details": {
        "size": [
          5100,
          6600
        ]
      }
    },
    {
      "name": "png_rgb",
      "passed": true,
      "message": "PNG is RGB.",
      "details": {
        "mode": "RGB"
      }
    },
    {
      "name": "png_dpi",
      "passed": true,
      "message": "PNG records 600 DPI.",
      "details": {
        "dpi": [
          599.9988,
          599.9988
        ]
      }
    },
    {
      "name": "pdf_letter_media_box",
      "passed": true,
      "message": "PDF media box is US Letter.",
      "details": {}
    },
    {
      "name": "alignment_svg_has_no_artwork_text_or_style",
      "passed": true,
      "message": "Alignment SVG has no artwork, text, or style tags.",
      "details": {}
    },
    {
      "name": "cut_only_svg_has_no_artwork_text_or_style",
      "passed": true,
      "message": "Cut-only SVG has no artwork, text, or style tags.",
      "details": {}
    },
    {
      "name": "svg_has_no_transforms",
      "passed": true,
      "message": "SVGs do not use transforms.",
      "details": {}
    },
    {
      "name": "svg_has_no_filled_geometry",
      "passed": true,
      "message": "SVG geometry has no fills.",
      "details": {}
    },
    {
      "name": "svg_viewbox_letter_mm",
      "passed": true,
      "message": "SVG viewBox is Letter-size mm.",
      "details": {}
    },
    {
      "name": "alignment_cut_path_count",
      "passed": true,
      "message": "Alignment SVG has one cut path per ladder piece.",
      "details": {
        "actual": 12,
        "expected": 12
      }
    },
    {
      "name": "cut_only_path_count",
      "passed": true,
      "message": "Cut-only SVG has one cut path per ladder piece.",
      "details": {
        "actual": 12,
        "expected": 12
      }
    },
    {
      "name": "alignment_and_cut_only_paths_match",
      "passed": true,
      "message": "Alignment and cut-only SVG cut paths match.",
      "details": {}
    },
    {
      "name": "active_setup_not_changed",
      "passed": true,
      "message": "Active calibration setup did not change during proof generation.",
      "details": {}
    },
    {
      "name": "spacing-2p95_minimum_cut_spacing",
      "passed": true,
      "message": "Case meets its target kerf-adjusted cut spacing.",
      "details": {
        "target_mm": 2.95,
        "actual_mm": 2.953969
      }
    },
    {
      "name": "spacing-2p95_minimum_bleed_spacing",
      "passed": true,
      "message": "Case keeps print bleed envelopes non-overlapping.",
      "details": {
        "actual_mm": 1.153309
      }
    },
    {
      "name": "spacing-2p95_inside_safe_page",
      "passed": true,
      "message": "Case bleed geometry stays inside the page safe area.",
      "details": {
        "min_x_mm": 42.0,
        "min_y_mm": 38.0,
        "max_x_mm": 126.347,
        "max_y_mm": 70.0,
        "width_mm": 84.347,
        "height_mm": 32.0
      }
    },
    {
      "name": "spacing-2p75_minimum_cut_spacing",
      "passed": true,
      "message": "Case meets its target kerf-adjusted cut spacing.",
      "details": {
        "target_mm": 2.75,
        "actual_mm": 2.753314
      }
    },
    {
      "name": "spacing-2p75_minimum_bleed_spacing",
      "passed": true,
      "message": "Case keeps print bleed envelopes non-overlapping.",
      "details": {
        "actual_mm": 0.953109
      }
    },
    {
      "name": "spacing-2p75_inside_safe_page",
      "passed": true,
      "message": "Case bleed geometry stays inside the page safe area.",
      "details": {
        "min_x_mm": 42.0,
        "min_y_mm": 73.0,
        "max_x_mm": 126.13,
        "max_y_mm": 105.0,
        "width_mm": 84.13,
        "height_mm": 32.0
      }
    },
    {
      "name": "spacing-2p50_minimum_cut_spacing",
      "passed": true,
      "message": "Case meets its target kerf-adjusted cut spacing.",
      "details": {
        "target_mm": 2.5,
        "actual_mm": 2.503295
      }
    },
    {
      "name": "spacing-2p50_minimum_bleed_spacing",
      "passed": true,
      "message": "Case keeps print bleed envelopes non-overlapping.",
      "details": {
        "actual_mm": 0.70309
      }
    },
    {
      "name": "spacing-2p50_inside_safe_page",
      "passed": true,
      "message": "Case bleed geometry stays inside the page safe area.",
      "details": {
        "min_x_mm": 42.0,
        "min_y_mm": 108.0,
        "max_x_mm": 125.859,
        "max_y_mm": 140.0,
        "width_mm": 83.859,
        "height_mm": 32.0
      }
    },
    {
      "name": "spacing-2p25_minimum_cut_spacing",
      "passed": true,
      "message": "Case meets its target kerf-adjusted cut spacing.",
      "details": {
        "target_mm": 2.25,
        "actual_mm": 2.253661
      }
    },
    {
      "name": "spacing-2p25_minimum_bleed_spacing",
      "passed": true,
      "message": "Case keeps print bleed envelopes non-overlapping.",
      "details": {
        "actual_mm": 0.453071
      }
    },
    {
      "name": "spacing-2p25_inside_safe_page",
      "passed": true,
      "message": "Case bleed geometry stays inside the page safe area.",
      "details": {
        "min_x_mm": 42.0,
        "min_y_mm": 143.0,
        "max_x_mm": 125.588,
        "max_y_mm": 175.0,
        "width_mm": 83.588,
        "height_mm": 32.0
      }
    },
    {
      "name": "spacing-2p00_minimum_cut_spacing",
      "passed": true,
      "message": "Case meets its target kerf-adjusted cut spacing.",
      "details": {
        "target_mm": 2.0,
        "actual_mm": 2.003642
      }
    },
    {
      "name": "spacing-2p00_minimum_bleed_spacing",
      "passed": true,
      "message": "Case keeps print bleed envelopes non-overlapping.",
      "details": {
        "actual_mm": 0.203051
      }
    },
    {
      "name": "spacing-2p00_inside_safe_page",
      "passed": true,
      "message": "Case bleed geometry stays inside the page safe area.",
      "details": {
        "min_x_mm": 42.0,
        "min_y_mm": 178.0,
        "max_x_mm": 125.317,
        "max_y_mm": 210.0,
        "width_mm": 83.317,
        "height_mm": 32.0
      }
    },
    {
      "name": "spacing-1p80_minimum_cut_spacing",
      "passed": true,
      "message": "Case meets its target kerf-adjusted cut spacing.",
      "details": {
        "target_mm": 1.8,
        "actual_mm": 1.803969
      }
    },
    {
      "name": "spacing-1p80_minimum_bleed_spacing",
      "passed": true,
      "message": "Case keeps print bleed envelopes non-overlapping.",
      "details": {
        "actual_mm": 0.005849
      }
    },
    {
      "name": "spacing-1p80_inside_safe_page",
      "passed": true,
      "message": "Case bleed geometry stays inside the page safe area.",
      "details": {
        "min_x_mm": 42.0,
        "min_y_mm": 213.0,
        "max_x_mm": 125.1,
        "max_y_mm": 245.0,
        "width_mm": 83.1,
        "height_mm": 32.0
      }
    }
  ],
  "warnings": []
}
