{
  "schema_version": 1,
  "kind": "registration_coupon_local_v2_proof",
  "proof_type": "registration_coupon_local_v2",
  "job_id": "lps_20260515_015718_f841c17c4a3b",
  "created_at": "2026-05-15T14:49:08Z",
  "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/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",
    "png_width_px": 5100,
    "png_height_px": 6600,
    "png_dpi": 600
  },
  "svg": {
    "svg_path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/local-v2/registration-coupon-local-v2.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": "test_cut_paths",
    "metrics": {
      "width_attr": "215.9mm",
      "height_attr": "279.4mm",
      "viewbox_attr": "0 0 215.9 279.4",
      "path_count": 11,
      "image_count": 0,
      "foreign_object_count": 0,
      "style_count": 0,
      "transform_count": 0,
      "filled_geometry_count": 0
    }
  },
  "preview": {
    "path": "jobs/lps_20260515_015718_f841c17c4a3b/registration/local-v2/registration-coupon-local-v2-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"
  },
  "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
  },
  "test_cut": {
    "square_id": "test-cut-square-30mm",
    "square_bounds_mm": [
      92.95,
      129.7,
      122.95,
      159.7
    ],
    "expected_square_width_mm": 30.0,
    "expected_square_height_mm": 30.0,
    "cross_ids": [
      "test-cut-cross-h",
      "test-cut-cross-v"
    ]
  },
  "manual_measurement": {
    "required": true,
    "status": "pending_owner_measurement",
    "instructions": "Print the local coupon, align local SVG marks A/B/C in xTool Creative Space, inspect D, cut only red test paths, and record cut-to-print error."
  },
  "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/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"
  },
  "hashes": {
    "pdf_sha256": "498f666b798540f1e84bb57eedb06487825a296d8178b0570f8d311f895e9054",
    "png_sha256": "8ad4de533a66dccf8cdabb84539c3f3db92d8c4eb8adfcbb4674fc97cf49fdac",
    "svg_sha256": "47a321151f2bdfb9ae7062daff6b31da521e44e92267e76eb9e95b7e99aa08a5",
    "preview_sha256": "a6ddcb283bb0f610a6a431544f6654a588c899c196e5a2e4a7d5e4f74ae992e3"
  },
  "checks": [
    {
      "name": "v1_pdf_still_exists",
      "passed": true,
      "message": "V1 registration PDF is still present.",
      "details": {}
    },
    {
      "name": "v1_png_still_exists",
      "passed": true,
      "message": "V1 registration PNG is still present.",
      "details": {}
    },
    {
      "name": "v1_svg_still_exists",
      "passed": true,
      "message": "V1 registration SVG is still present.",
      "details": {}
    },
    {
      "name": "v1_preview_still_exists",
      "passed": true,
      "message": "V1 registration preview is still present.",
      "details": {}
    },
    {
      "name": "v1_validation_still_exists",
      "passed": true,
      "message": "V1 registration validation is still present.",
      "details": {}
    },
    {
      "name": "v1_pdf_hash_preserved",
      "passed": true,
      "message": "V1 registration PDF hash is unchanged.",
      "details": {}
    },
    {
      "name": "v1_png_hash_preserved",
      "passed": true,
      "message": "V1 registration PNG hash is unchanged.",
      "details": {}
    },
    {
      "name": "v1_svg_hash_preserved",
      "passed": true,
      "message": "V1 registration SVG hash is unchanged.",
      "details": {}
    },
    {
      "name": "v1_preview_hash_preserved",
      "passed": true,
      "message": "V1 registration preview hash is unchanged.",
      "details": {}
    },
    {
      "name": "v1_validation_hash_preserved",
      "passed": true,
      "message": "V1 registration validation hash is unchanged.",
      "details": {}
    },
    {
      "name": "pdf_exists",
      "passed": true,
      "message": "Local V2 registration coupon PDF exists.",
      "details": {}
    },
    {
      "name": "png_exists",
      "passed": true,
      "message": "Local V2 registration coupon PNG exists.",
      "details": {}
    },
    {
      "name": "svg_exists",
      "passed": true,
      "message": "Local V2 registration coupon SVG exists.",
      "details": {}
    },
    {
      "name": "preview_exists",
      "passed": true,
      "message": "Local V2 registration coupon preview exists.",
      "details": {}
    },
    {
      "name": "artifact_hashes_exist",
      "passed": true,
      "message": "All Local V2 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": "Local V2 registration 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": "cut_group_exists",
      "passed": true,
      "message": "Red test 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 eight local registration paths and three red test paths.",
      "details": {
        "path_count": 11
      }
    },
    {
      "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": "cut_group_stroke_matches",
      "passed": true,
      "message": "Test cut paths use red stroke.",
      "details": {}
    },
    {
      "name": "cut_group_hairline_matches",
      "passed": true,
      "message": "Test cut paths use hairline stroke.",
      "details": {}
    },
    {
      "name": "cut_group_has_no_fill",
      "passed": true,
      "message": "Test cut group has no fill.",
      "details": {}
    },
    {
      "name": "cut_square_path_matches",
      "passed": true,
      "message": "Closed 30 mm square cut path matches the shared coordinate plan.",
      "details": {}
    },
    {
      "name": "cut_square_is_closed",
      "passed": true,
      "message": "30 mm square cut path is closed.",
      "details": {}
    },
    {
      "name": "cut_cross_h_path_matches",
      "passed": true,
      "message": "Horizontal center cross path matches the shared coordinate plan.",
      "details": {}
    },
    {
      "name": "cut_cross_v_path_matches",
      "passed": true,
      "message": "Vertical center cross path matches the shared coordinate plan.",
      "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": "local_registration_mark_count_matches",
      "passed": true,
      "message": "Local V2 defines A/B/C required marks and D check mark.",
      "details": {}
    },
    {
      "name": "local_registration_marks_in_bounds",
      "passed": true,
      "message": "Local V2 registration marks stay inside page bounds.",
      "details": {}
    },
    {
      "name": "local_frame_dimensions_match",
      "passed": true,
      "message": "Local V2 A/B/C marks define an 80 mm x 80 mm frame.",
      "details": {}
    },
    {
      "name": "local_frame_under_max_size",
      "passed": true,
      "message": "Local V2 frame is not larger than 100 mm in either axis.",
      "details": {}
    },
    {
      "name": "local_marks_near_cut_target",
      "passed": true,
      "message": "Local V2 marks are within 60 mm of the test cut center.",
      "details": {
        "max_distance_mm": 56.568542494923804
      }
    },
    {
      "name": "test_cut_square_size_matches",
      "passed": true,
      "message": "Test cut square is exactly 30 mm x 30 mm.",
      "details": {}
    },
    {
      "name": "svg_has_no_labels",
      "passed": true,
      "message": "Local V2 registration 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.",
    "Abort the cut if xTool Creative Space flattens blue and red vectors into one inseparable operation.",
    "Treat this as a local camera-alignment diagnostic, not a production puzzle export."
  ]
}
