{
  "schema_version": 1,
  "kind": "registration_xy_ladder_proof",
  "proof_type": "registration_xy_ladder_v1",
  "job_id": "lps_20260515_015718_f841c17c4a3b",
  "created_at": "2026-05-15T17:01:47Z",
  "units": "mm",
  "status": "passed",
  "passed": true,
  "page": {
    "preset": "us_letter",
    "width_mm": 215.9,
    "height_mm": 279.4,
    "origin": "top_left"
  },
  "print": {
    "pdf_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/xy-ladder-v1/registration-xy-ladder-v1-letter-600dpi.pdf",
    "png_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/xy-ladder-v1/registration-xy-ladder-v1-letter-600dpi.png",
    "png_width_px": 5100,
    "png_height_px": 6600,
    "png_dpi": 600
  },
  "svg": {
    "svg_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/xy-ladder-v1/registration-xy-ladder-v1.svg",
    "width": "215.9mm",
    "height": "279.4mm",
    "viewBox": "0 0 215.9 279.4",
    "registration_group_id": "registration_reference_local",
    "registration_check_group_id": "registration_check_local",
    "cut_group_id": "calibration_ladder_cut_paths",
    "metrics": {
      "width_attr": "215.9mm",
      "height_attr": "279.4mm",
      "viewbox_attr": "0 0 215.9 279.4",
      "path_count": 22,
      "image_count": 0,
      "foreign_object_count": 0,
      "style_count": 0,
      "transform_count": 0,
      "filled_geometry_count": 0,
      "x_candidate_count": 9,
      "y_candidate_count": 5
    }
  },
  "preview": {
    "path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/xy-ladder-v1/registration-xy-ladder-v1-preview.webp"
  },
  "scale_prerequisite": {
    "required": true,
    "status": "passed",
    "source": "jobs/lps_20260515_015718_f841c17c4a3b/calibration/calibration-measurements.json",
    "override": false
  },
  "v1_preservation": {
    "proof_type": "registration_coupon_v1",
    "pdf_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/registration-coupon-letter-600dpi.pdf",
    "png_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/registration-coupon-letter-600dpi.png",
    "svg_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/registration-coupon.svg",
    "preview_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/registration-coupon-preview.webp",
    "validation_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/registration-coupon-validation.json",
    "pdf_sha256": "a0e194f8e9090459b56327d153786ad1a983cef046d71e1128d9bd9951ba3dab",
    "png_sha256": "e8ef290871f9e2708308c83b581a4351925427e88131a68f9d01fd6cc849656c",
    "svg_sha256": "c6ce591d5228b88ca5bb36320303938b59fe7ffe59c1795d222ca7b741703a9d",
    "preview_sha256": "8363c1e3c898bc505e20f0e93442a3999e3fa4bb987a238f815b964d9c2fd4f7",
    "validation_sha256": "f07338fd1435831d54a4e97a73411eefc25d84129b8795215134d1f9d36f2418"
  },
  "local_v2_preservation": {
    "proof_type": "registration_coupon_local_v2",
    "pdf_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/local-v2/registration-coupon-local-v2-letter-600dpi.pdf",
    "png_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/local-v2/registration-coupon-local-v2-letter-600dpi.png",
    "svg_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/local-v2/registration-coupon-local-v2.svg",
    "preview_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/local-v2/registration-coupon-local-v2-preview.webp",
    "validation_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/local-v2/registration-coupon-local-v2-validation.json",
    "pdf_sha256": "498f666b798540f1e84bb57eedb06487825a296d8178b0570f8d311f895e9054",
    "png_sha256": "8ad4de533a66dccf8cdabb84539c3f3db92d8c4eb8adfcbb4674fc97cf49fdac",
    "svg_sha256": "47a321151f2bdfb9ae7062daff6b31da521e44e92267e76eb9e95b7e99aa08a5",
    "preview_sha256": "a6ddcb283bb0f610a6a431544f6654a588c899c196e5a2e4a7d5e4f74ae992e3",
    "validation_sha256": "85c86f6dbc831d7ab9ef592039a96edf9f9ed117847952540dc6f7751d4c2889"
  },
  "registration_marks": {
    "required": [
      {
        "id": "A",
        "center_mm": [
          67.95,
          104.7
        ]
      },
      {
        "id": "B",
        "center_mm": [
          147.95,
          104.7
        ]
      },
      {
        "id": "C",
        "center_mm": [
          67.95,
          184.7
        ]
      }
    ],
    "check_only": [
      {
        "id": "D",
        "center_mm": [
          147.95,
          184.7
        ]
      }
    ],
    "local_frame_width_mm": 80.0,
    "local_frame_height_mm": 80.0
  },
  "ladder": {
    "x_candidates_mm": [
      0.4,
      0.5,
      0.6,
      0.65,
      0.7,
      0.75,
      0.8,
      0.9,
      1.0
    ],
    "y_candidates_mm": [
      -0.5,
      -0.25,
      0.0,
      0.25,
      0.5
    ],
    "expected_starting_x_mm": 0.7,
    "expected_starting_y_mm": 0.0,
    "selection_rule": "Pick the label where the red cut line lands closest to the printed black reference line.",
    "x_items": [
      {
        "axis": "x",
        "label": "+0.40",
        "id": "x-plus-0p40",
        "offset_mm": 0.4,
        "reference_x_mm": 76.0,
        "reference_y0_mm": 117.5,
        "reference_y1_mm": 130.5,
        "cut_x_mm": 76.4,
        "cut_y0_mm": 117.5,
        "cut_y1_mm": 130.5
      },
      {
        "axis": "x",
        "label": "+0.50",
        "id": "x-plus-0p50",
        "offset_mm": 0.5,
        "reference_x_mm": 84.0,
        "reference_y0_mm": 117.5,
        "reference_y1_mm": 130.5,
        "cut_x_mm": 84.5,
        "cut_y0_mm": 117.5,
        "cut_y1_mm": 130.5
      },
      {
        "axis": "x",
        "label": "+0.60",
        "id": "x-plus-0p60",
        "offset_mm": 0.6,
        "reference_x_mm": 92.0,
        "reference_y0_mm": 117.5,
        "reference_y1_mm": 130.5,
        "cut_x_mm": 92.6,
        "cut_y0_mm": 117.5,
        "cut_y1_mm": 130.5
      },
      {
        "axis": "x",
        "label": "+0.65",
        "id": "x-plus-0p65",
        "offset_mm": 0.65,
        "reference_x_mm": 100.0,
        "reference_y0_mm": 117.5,
        "reference_y1_mm": 130.5,
        "cut_x_mm": 100.65,
        "cut_y0_mm": 117.5,
        "cut_y1_mm": 130.5
      },
      {
        "axis": "x",
        "label": "+0.70",
        "id": "x-plus-0p70",
        "offset_mm": 0.7,
        "reference_x_mm": 108.0,
        "reference_y0_mm": 117.5,
        "reference_y1_mm": 130.5,
        "cut_x_mm": 108.7,
        "cut_y0_mm": 117.5,
        "cut_y1_mm": 130.5
      },
      {
        "axis": "x",
        "label": "+0.75",
        "id": "x-plus-0p75",
        "offset_mm": 0.75,
        "reference_x_mm": 116.0,
        "reference_y0_mm": 117.5,
        "reference_y1_mm": 130.5,
        "cut_x_mm": 116.75,
        "cut_y0_mm": 117.5,
        "cut_y1_mm": 130.5
      },
      {
        "axis": "x",
        "label": "+0.80",
        "id": "x-plus-0p80",
        "offset_mm": 0.8,
        "reference_x_mm": 124.0,
        "reference_y0_mm": 117.5,
        "reference_y1_mm": 130.5,
        "cut_x_mm": 124.8,
        "cut_y0_mm": 117.5,
        "cut_y1_mm": 130.5
      },
      {
        "axis": "x",
        "label": "+0.90",
        "id": "x-plus-0p90",
        "offset_mm": 0.9,
        "reference_x_mm": 132.0,
        "reference_y0_mm": 117.5,
        "reference_y1_mm": 130.5,
        "cut_x_mm": 132.9,
        "cut_y0_mm": 117.5,
        "cut_y1_mm": 130.5
      },
      {
        "axis": "x",
        "label": "+1.00",
        "id": "x-plus-1p00",
        "offset_mm": 1.0,
        "reference_x_mm": 140.0,
        "reference_y0_mm": 117.5,
        "reference_y1_mm": 130.5,
        "cut_x_mm": 141.0,
        "cut_y0_mm": 117.5,
        "cut_y1_mm": 130.5
      }
    ],
    "y_items": [
      {
        "axis": "y",
        "label": "-0.50",
        "id": "y-minus-0p50",
        "offset_mm": -0.5,
        "reference_y_mm": 148.0,
        "reference_x0_mm": 99.0,
        "reference_x1_mm": 121.0,
        "cut_y_mm": 147.5,
        "cut_x0_mm": 99.0,
        "cut_x1_mm": 121.0
      },
      {
        "axis": "y",
        "label": "-0.25",
        "id": "y-minus-0p25",
        "offset_mm": -0.25,
        "reference_y_mm": 155.0,
        "reference_x0_mm": 99.0,
        "reference_x1_mm": 121.0,
        "cut_y_mm": 154.75,
        "cut_x0_mm": 99.0,
        "cut_x1_mm": 121.0
      },
      {
        "axis": "y",
        "label": "+0.00",
        "id": "y-plus-0p00",
        "offset_mm": 0.0,
        "reference_y_mm": 162.0,
        "reference_x0_mm": 99.0,
        "reference_x1_mm": 121.0,
        "cut_y_mm": 162.0,
        "cut_x0_mm": 99.0,
        "cut_x1_mm": 121.0
      },
      {
        "axis": "y",
        "label": "+0.25",
        "id": "y-plus-0p25",
        "offset_mm": 0.25,
        "reference_y_mm": 169.0,
        "reference_x0_mm": 99.0,
        "reference_x1_mm": 121.0,
        "cut_y_mm": 169.25,
        "cut_x0_mm": 99.0,
        "cut_x1_mm": 121.0
      },
      {
        "axis": "y",
        "label": "+0.50",
        "id": "y-plus-0p50",
        "offset_mm": 0.5,
        "reference_y_mm": 176.0,
        "reference_x0_mm": 99.0,
        "reference_x1_mm": 121.0,
        "cut_y_mm": 176.5,
        "cut_x0_mm": 99.0,
        "cut_x1_mm": 121.0
      }
    ]
  },
  "manual_measurement": {
    "required": true,
    "status": "pending_owner_selection",
    "instructions": "Print the XY ladder coupon, align local SVG marks A/B/C in xTool Creative Space, inspect D, cut only red ladder paths, then record the X and Y labels whose cuts land closest to the printed black reference lines."
  },
  "xcs_operation_warning": {
    "required": true,
    "message": "Confirm blue local registration vectors are not assigned to a cut operation before running the laser."
  },
  "artifacts": {
    "pdf_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/xy-ladder-v1/registration-xy-ladder-v1-letter-600dpi.pdf",
    "png_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/xy-ladder-v1/registration-xy-ladder-v1-letter-600dpi.png",
    "svg_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/xy-ladder-v1/registration-xy-ladder-v1.svg",
    "preview_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/xy-ladder-v1/registration-xy-ladder-v1-preview.webp"
  },
  "hashes": {
    "pdf_sha256": "dbe5bc97030d0b8ee1fac39a8233a94a8da35bc8b8aafc3fbc112aeb85513f68",
    "png_sha256": "3d08c2732bc7f4a111132600cb7cea0cd0949de18142a686ad0ec5ea25dd76e7",
    "svg_sha256": "e26a9a61efbb688226ff135c6a5fb04ea77ad84ffa73a4b96283f3baca367427",
    "preview_sha256": "5c391241c42e8919e41d6abe592033e50cf14841024c63ea962b7985f9059aa1"
  },
  "checks": [
    {
      "name": "v1_pdf_still_exists",
      "passed": true,
      "message": "V1 registration PDF is still present.",
      "details": {}
    },
    {
      "name": "v1_svg_still_exists",
      "passed": true,
      "message": "V1 registration SVG is still present.",
      "details": {}
    },
    {
      "name": "v1_pdf_hash_preserved",
      "passed": true,
      "message": "V1 registration PDF hash is unchanged.",
      "details": {}
    },
    {
      "name": "v1_svg_hash_preserved",
      "passed": true,
      "message": "V1 registration SVG hash is unchanged.",
      "details": {}
    },
    {
      "name": "local_v2_pdf_still_exists",
      "passed": true,
      "message": "Local V2 registration PDF is still present.",
      "details": {}
    },
    {
      "name": "local_v2_svg_still_exists",
      "passed": true,
      "message": "Local V2 registration SVG is still present.",
      "details": {}
    },
    {
      "name": "local_v2_pdf_hash_preserved",
      "passed": true,
      "message": "Local V2 registration PDF hash is unchanged.",
      "details": {}
    },
    {
      "name": "local_v2_svg_hash_preserved",
      "passed": true,
      "message": "Local V2 registration SVG hash is unchanged.",
      "details": {}
    },
    {
      "name": "pdf_exists",
      "passed": true,
      "message": "XY ladder calibration PDF exists.",
      "details": {}
    },
    {
      "name": "png_exists",
      "passed": true,
      "message": "XY ladder calibration PNG exists.",
      "details": {}
    },
    {
      "name": "svg_exists",
      "passed": true,
      "message": "XY ladder calibration SVG exists.",
      "details": {}
    },
    {
      "name": "preview_exists",
      "passed": true,
      "message": "XY ladder calibration preview exists.",
      "details": {}
    },
    {
      "name": "artifact_hashes_exist",
      "passed": true,
      "message": "All XY ladder artifact hashes exist.",
      "details": {}
    },
    {
      "name": "png_dimensions_match",
      "passed": true,
      "message": "PNG is exactly 5100 x 6600 px.",
      "details": {
        "actual": [
          5100,
          6600
        ],
        "expected": [
          5100,
          6600
        ]
      }
    },
    {
      "name": "png_mode_matches",
      "passed": true,
      "message": "PNG is RGB.",
      "details": {
        "actual": "RGB",
        "expected": "RGB"
      }
    },
    {
      "name": "png_dpi_matches",
      "passed": true,
      "message": "PNG DPI metadata is 600 DPI.",
      "details": {
        "actual": [
          599.9988,
          599.9988
        ],
        "expected": [
          600,
          600
        ]
      }
    },
    {
      "name": "pdf_page_size_matches",
      "passed": true,
      "message": "PDF MediaBox is 612 x 792 pt.",
      "details": {}
    },
    {
      "name": "svg_xml_parses",
      "passed": true,
      "message": "XY ladder SVG parses as XML.",
      "details": {
        "error": ""
      }
    },
    {
      "name": "svg_root_dimensions_match",
      "passed": true,
      "message": "SVG root has explicit Letter dimensions in millimeters.",
      "details": {}
    },
    {
      "name": "svg_viewbox_matches",
      "passed": true,
      "message": "SVG viewBox matches the Letter mm coordinate frame.",
      "details": {}
    },
    {
      "name": "registration_reference_local_group_exists",
      "passed": true,
      "message": "Blue local A/B/C registration reference group exists.",
      "details": {}
    },
    {
      "name": "registration_check_local_group_exists",
      "passed": true,
      "message": "Blue local D check group exists.",
      "details": {}
    },
    {
      "name": "calibration_ladder_cut_group_exists",
      "passed": true,
      "message": "Red XY ladder cut group exists.",
      "details": {}
    },
    {
      "name": "svg_no_prohibited_content",
      "passed": true,
      "message": "SVG contains no image, foreignObject, or style elements.",
      "details": {}
    },
    {
      "name": "svg_no_transforms",
      "passed": true,
      "message": "SVG contains no transforms.",
      "details": {}
    },
    {
      "name": "svg_no_filled_geometry",
      "passed": true,
      "message": "SVG geometry has no fills.",
      "details": {}
    },
    {
      "name": "svg_path_count_matches",
      "passed": true,
      "message": "SVG has local registration paths plus XY ladder cut paths.",
      "details": {
        "path_count": 22,
        "expected": 22
      }
    },
    {
      "name": "registration_reference_local_stroke_matches",
      "passed": true,
      "message": "Local A/B/C reference vectors use blue stroke.",
      "details": {}
    },
    {
      "name": "registration_reference_local_has_no_fill",
      "passed": true,
      "message": "Local A/B/C reference group has no fill.",
      "details": {}
    },
    {
      "name": "registration_check_local_stroke_matches",
      "passed": true,
      "message": "Local D check vectors use blue stroke.",
      "details": {}
    },
    {
      "name": "registration_check_local_has_no_fill",
      "passed": true,
      "message": "Local D check group has no fill.",
      "details": {}
    },
    {
      "name": "calibration_ladder_cut_group_stroke_matches",
      "passed": true,
      "message": "XY ladder cut paths use red stroke.",
      "details": {}
    },
    {
      "name": "calibration_ladder_cut_group_hairline_matches",
      "passed": true,
      "message": "XY ladder cut paths use hairline stroke.",
      "details": {}
    },
    {
      "name": "calibration_ladder_cut_group_has_no_fill",
      "passed": true,
      "message": "XY ladder cut group has no fill.",
      "details": {}
    },
    {
      "name": "local_registration_a_ring_matches",
      "passed": true,
      "message": "Local registration mark A ring matches the shared coordinate plan.",
      "details": {}
    },
    {
      "name": "local_registration_a_cross_matches",
      "passed": true,
      "message": "Local registration mark A crosshair matches the shared coordinate plan.",
      "details": {}
    },
    {
      "name": "local_registration_b_ring_matches",
      "passed": true,
      "message": "Local registration mark B ring matches the shared coordinate plan.",
      "details": {}
    },
    {
      "name": "local_registration_b_cross_matches",
      "passed": true,
      "message": "Local registration mark B crosshair matches the shared coordinate plan.",
      "details": {}
    },
    {
      "name": "local_registration_c_ring_matches",
      "passed": true,
      "message": "Local registration mark C ring matches the shared coordinate plan.",
      "details": {}
    },
    {
      "name": "local_registration_c_cross_matches",
      "passed": true,
      "message": "Local registration mark C crosshair matches the shared coordinate plan.",
      "details": {}
    },
    {
      "name": "local_registration_d_ring_matches",
      "passed": true,
      "message": "Local registration mark D ring matches the shared coordinate plan.",
      "details": {}
    },
    {
      "name": "local_registration_d_cross_matches",
      "passed": true,
      "message": "Local registration mark D crosshair matches the shared coordinate plan.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p40_path_matches",
      "passed": true,
      "message": "X ladder candidate +0.40 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p40_axis_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.40 has x-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p40_offset_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.40 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p50_path_matches",
      "passed": true,
      "message": "X ladder candidate +0.50 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p50_axis_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.50 has x-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p50_offset_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.50 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p60_path_matches",
      "passed": true,
      "message": "X ladder candidate +0.60 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p60_axis_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.60 has x-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p60_offset_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.60 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p65_path_matches",
      "passed": true,
      "message": "X ladder candidate +0.65 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p65_axis_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.65 has x-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p65_offset_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.65 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p70_path_matches",
      "passed": true,
      "message": "X ladder candidate +0.70 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p70_axis_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.70 has x-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p70_offset_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.70 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p75_path_matches",
      "passed": true,
      "message": "X ladder candidate +0.75 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p75_axis_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.75 has x-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p75_offset_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.75 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p80_path_matches",
      "passed": true,
      "message": "X ladder candidate +0.80 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p80_axis_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.80 has x-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p80_offset_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.80 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p90_path_matches",
      "passed": true,
      "message": "X ladder candidate +0.90 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p90_axis_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.90 has x-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-0p90_offset_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +0.90 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-1p00_path_matches",
      "passed": true,
      "message": "X ladder candidate +1.00 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-1p00_axis_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +1.00 has x-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-x-plus-1p00_offset_metadata_matches",
      "passed": true,
      "message": "X ladder candidate +1.00 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-y-minus-0p50_path_matches",
      "passed": true,
      "message": "Y ladder candidate -0.50 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-y-minus-0p50_axis_metadata_matches",
      "passed": true,
      "message": "Y ladder candidate -0.50 has y-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-y-minus-0p50_offset_metadata_matches",
      "passed": true,
      "message": "Y ladder candidate -0.50 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-y-minus-0p25_path_matches",
      "passed": true,
      "message": "Y ladder candidate -0.25 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-y-minus-0p25_axis_metadata_matches",
      "passed": true,
      "message": "Y ladder candidate -0.25 has y-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-y-minus-0p25_offset_metadata_matches",
      "passed": true,
      "message": "Y ladder candidate -0.25 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-y-plus-0p00_path_matches",
      "passed": true,
      "message": "Y ladder candidate +0.00 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-y-plus-0p00_axis_metadata_matches",
      "passed": true,
      "message": "Y ladder candidate +0.00 has y-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-y-plus-0p00_offset_metadata_matches",
      "passed": true,
      "message": "Y ladder candidate +0.00 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-y-plus-0p25_path_matches",
      "passed": true,
      "message": "Y ladder candidate +0.25 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-y-plus-0p25_axis_metadata_matches",
      "passed": true,
      "message": "Y ladder candidate +0.25 has y-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-y-plus-0p25_offset_metadata_matches",
      "passed": true,
      "message": "Y ladder candidate +0.25 has offset metadata.",
      "details": {}
    },
    {
      "name": "ladder-y-plus-0p50_path_matches",
      "passed": true,
      "message": "Y ladder candidate +0.50 cut path is shifted by its candidate offset.",
      "details": {}
    },
    {
      "name": "ladder-y-plus-0p50_axis_metadata_matches",
      "passed": true,
      "message": "Y ladder candidate +0.50 has y-axis metadata.",
      "details": {}
    },
    {
      "name": "ladder-y-plus-0p50_offset_metadata_matches",
      "passed": true,
      "message": "Y ladder candidate +0.50 has offset metadata.",
      "details": {}
    },
    {
      "name": "x_candidates_include_expected_starting_offset",
      "passed": true,
      "message": "X candidates include the expected +0.70 mm starting offset.",
      "details": {}
    },
    {
      "name": "y_candidates_include_zero",
      "passed": true,
      "message": "Y candidates include +0.00 mm.",
      "details": {}
    },
    {
      "name": "candidate_offsets_sorted",
      "passed": true,
      "message": "Candidate offsets are sorted in ascending order.",
      "details": {}
    },
    {
      "name": "svg_has_no_labels",
      "passed": true,
      "message": "XY ladder SVG has no labels or text geometry.",
      "details": {}
    }
  ],
  "warnings": [
    "Confirm blue local registration vectors are not assigned to a cut operation before running the laser.",
    "Cut only the red XY ladder candidate lines after A/B/C are aligned and D is inspected.",
    "Treat the selected offset as provisional until repeated on a second coupon.",
    "Do not apply the selected compensation to jigsaw exports until the owner confirms the physical result."
  ]
}
