{
  "comparison_contract": {
    "coordinate_frame": "calibration_canonical_metric_mm",
    "distance": "exact Euclidean nearest-neighbour via scipy.spatial.cKDTree",
    "primary_cad_sampling": {
      "method": "triangle-area-uniform barycentric sampling with numpy PCG64",
      "sample_count": 100000,
      "seed": 20260811
    },
    "reference_cad": {
      "basename": "pf-t31-00001059-c694bb02_FULL_BORE_v1_as-built-reference.stl",
      "bytes": 2781184,
      "sha256": "05cf18cf56a905a9cb18853ef8bc2fda7506986340b02a7dadff85a961fae38a"
    },
    "registration_performed_by_aggregator": false,
    "representation_policy": "Phone rows sample reconstructed triangle surfaces; the Helios row retains its measured canonical points. This is a capture-pipeline comparison, not a sensor-only or representation-identical ranking.",
    "same_reference_cad": true,
    "similarity_rescaling_by_aggregator": false,
    "transform_applied_by_aggregator": "identity"
  },
  "devices": [
    {
      "capture_system": "iPhone Apple Object Capture",
      "geometry_artifact": {
        "basename": "corrected_photogrammetry_mesh.obj",
        "bytes": 874366,
        "sha256": "611a077d085feff2680a91ecdde474e61e09d49a0877abf291e18332a535a1f0"
      },
      "label": "iphone12",
      "metrics": {
        "cad_to_scan": {
          "count": 100000,
          "max_mm": 8.14926,
          "mean_mm": 1.54653,
          "median_mm": 0.844942,
          "p90_mm": 4.353506,
          "p95_mm": 4.607408,
          "rmse_mm": 2.159232
        },
        "scan_to_cad": {
          "count": 100000,
          "max_mm": 5.962126,
          "mean_mm": 1.139135,
          "median_mm": 0.752742,
          "p90_mm": 3.422925,
          "p95_mm": 4.263839,
          "rmse_mm": 1.60793
        },
        "symmetric_mean_mm": 1.342833,
        "thresholds": {
          "1mm": {
            "cad_completeness_pct": 58.54,
            "fscore_pct": 63.666892,
            "scan_precision_pct": 69.778
          },
          "2mm": {
            "cad_completeness_pct": 76.475,
            "fscore_pct": 81.407438,
            "scan_precision_pct": 87.02
          },
          "5mm": {
            "cad_completeness_pct": 98.542,
            "fscore_pct": 99.244457,
            "scan_precision_pct": 99.957
          }
        }
      },
      "primary_cad_sample_count": 100000,
      "primary_cad_sample_seed": 20260811,
      "registration_provenance": {
        "fixed_native_units_per_mm": 0.001,
        "fixed_transform_validation": {
          "fixed_native_units_per_mm": 0.001,
          "rotation_determinant": 1.0000000000000004,
          "rotation_orthogonality_max_abs_error": 4.440892098500626e-16
        },
        "free_scale_applied": false,
        "matched_point_count": 16,
        "matched_tag_count": 4,
        "matched_tag_ids": [
          12,
          13,
          26,
          27
        ],
        "maximum_reprojection_rmse_px": 4.0908235546025375,
        "metric_recovery_method": "apriltag36h11_multiview_metric_rigid",
        "metric_recovery_route": {
          "matched_point_count": 16,
          "matched_tag_count": 4,
          "minimum_views_per_corner": 28,
          "residual_p95_mm": 0.33925498919372904,
          "residual_rmse_mm": 0.2550315182491318,
          "route": "direct_multiview_apriltag"
        },
        "metric_scale_verified": true,
        "minimum_views_per_corner": 28,
        "postprocess_algorithm_version": "2.1.0",
        "postprocess_schema": "org.iphonotype.calibration-reconstruction-postprocess/v1",
        "registration_model": "metric-rigid",
        "reprojection_rmse_px_by_tag": {
          "12": 4.0908235546025375,
          "13": 3.642074412583892,
          "26": 3.5821714657872663,
          "27": 3.2415259182668303
        },
        "residual_p95_mm": 0.33925498919372904,
        "residual_rmse_mm": 0.2550315182491318,
        "unconstrained_scale_bias_pct": -0.1917018316759278
      },
      "representation": "reconstructed_triangle_mesh_surface_samples",
      "representation_sample_count": 100000
    },
    {
      "capture_system": "iPhone Apple Object Capture",
      "geometry_artifact": {
        "basename": "corrected_photogrammetry_mesh.obj",
        "bytes": 685542,
        "sha256": "54b6f7913a1cc13e687851cbe301087700eea4eae88c9e0b87acbdbacf4b0107"
      },
      "label": "iphone15",
      "metrics": {
        "cad_to_scan": {
          "count": 100000,
          "max_mm": 8.366576,
          "mean_mm": 1.787907,
          "median_mm": 1.181896,
          "p90_mm": 4.540514,
          "p95_mm": 5.069548,
          "rmse_mm": 2.350601
        },
        "scan_to_cad": {
          "count": 100000,
          "max_mm": 6.240067,
          "mean_mm": 1.39945,
          "median_mm": 1.051659,
          "p90_mm": 3.601892,
          "p95_mm": 4.152751,
          "rmse_mm": 1.788289
        },
        "symmetric_mean_mm": 1.593679,
        "thresholds": {
          "1mm": {
            "cad_completeness_pct": 41.888,
            "fscore_pct": 44.331172,
            "scan_precision_pct": 47.077
          },
          "2mm": {
            "cad_completeness_pct": 71.955,
            "fscore_pct": 77.206547,
            "scan_precision_pct": 83.285
          },
          "5mm": {
            "cad_completeness_pct": 94.483,
            "fscore_pct": 97.15239,
            "scan_precision_pct": 99.977
          }
        }
      },
      "primary_cad_sample_count": 100000,
      "primary_cad_sample_seed": 20260811,
      "registration_provenance": {
        "fixed_native_units_per_mm": 0.001,
        "fixed_transform_validation": {
          "fixed_native_units_per_mm": 0.001,
          "rotation_determinant": 1.0000000000000004,
          "rotation_orthogonality_max_abs_error": 6.661338147750939e-16
        },
        "free_scale_applied": false,
        "matched_point_count": 16,
        "matched_tag_count": 4,
        "matched_tag_ids": [
          12,
          13,
          26,
          27
        ],
        "maximum_reprojection_rmse_px": 4.937388312707796,
        "metric_recovery_method": "apriltag36h11_multiview_metric_rigid",
        "metric_recovery_route": {
          "matched_point_count": 16,
          "matched_tag_count": 4,
          "minimum_views_per_corner": 28,
          "residual_p95_mm": 0.8130152335319701,
          "residual_rmse_mm": 0.6044602102534972,
          "route": "direct_multiview_apriltag"
        },
        "metric_scale_verified": true,
        "minimum_views_per_corner": 28,
        "postprocess_algorithm_version": "2.1.0",
        "postprocess_schema": "org.iphonotype.calibration-reconstruction-postprocess/v1",
        "registration_model": "metric-rigid",
        "reprojection_rmse_px_by_tag": {
          "12": 4.937388312707796,
          "13": 4.017979337959376,
          "26": 3.586384120095011,
          "27": 4.369994524934573
        },
        "residual_p95_mm": 0.8130152335319701,
        "residual_rmse_mm": 0.6044602102534972,
        "unconstrained_scale_bias_pct": 0.9216383090904001
      },
      "representation": "reconstructed_triangle_mesh_surface_samples",
      "representation_sample_count": 100000
    },
    {
      "capture_system": "iPhone Apple Object Capture",
      "geometry_artifact": {
        "basename": "corrected_photogrammetry_mesh.obj",
        "bytes": 527277,
        "sha256": "9c5707e2b53ffbce54574c70a23952d1af3451c577596e7b032f81e636f2116d"
      },
      "label": "iphone17",
      "metrics": {
        "cad_to_scan": {
          "count": 100000,
          "max_mm": 8.403511,
          "mean_mm": 2.241916,
          "median_mm": 1.540587,
          "p90_mm": 5.343212,
          "p95_mm": 5.719246,
          "rmse_mm": 2.852159
        },
        "scan_to_cad": {
          "count": 100000,
          "max_mm": 6.639927,
          "mean_mm": 1.497688,
          "median_mm": 1.337167,
          "p90_mm": 2.687669,
          "p95_mm": 3.123167,
          "rmse_mm": 1.716243
        },
        "symmetric_mean_mm": 1.869802,
        "thresholds": {
          "1mm": {
            "cad_completeness_pct": 27.75,
            "fscore_pct": 29.71824,
            "scan_precision_pct": 31.987
          },
          "2mm": {
            "cad_completeness_pct": 61.869,
            "fscore_pct": 67.820958,
            "scan_precision_pct": 75.04
          },
          "5mm": {
            "cad_completeness_pct": 85.446,
            "fscore_pct": 92.136605,
            "scan_precision_pct": 99.964
          }
        }
      },
      "primary_cad_sample_count": 100000,
      "primary_cad_sample_seed": 20260811,
      "registration_provenance": {
        "fixed_native_units_per_mm": 0.001,
        "fixed_transform_validation": {
          "fixed_native_units_per_mm": 0.001,
          "rotation_determinant": 0.9999999999999999,
          "rotation_orthogonality_max_abs_error": 1.4017781825651003e-16
        },
        "free_scale_applied": false,
        "matched_point_count": 16,
        "matched_tag_count": 4,
        "matched_tag_ids": [
          12,
          13,
          26,
          27
        ],
        "maximum_reprojection_rmse_px": 5.320205030272734,
        "metric_recovery_method": "apriltag36h11_multiview_metric_rigid",
        "metric_recovery_route": {
          "matched_point_count": 16,
          "matched_tag_count": 4,
          "minimum_views_per_corner": 44,
          "residual_p95_mm": 1.856305349121111,
          "residual_rmse_mm": 1.5277605301124566,
          "route": "direct_multiview_apriltag"
        },
        "metric_scale_verified": true,
        "minimum_views_per_corner": 44,
        "postprocess_algorithm_version": "2.1.0",
        "postprocess_schema": "org.iphonotype.calibration-reconstruction-postprocess/v1",
        "registration_model": "metric-rigid",
        "reprojection_rmse_px_by_tag": {
          "12": 5.320205030272734,
          "13": 4.186726437953325,
          "26": 4.924858359400328,
          "27": 4.660267845489847
        },
        "residual_p95_mm": 1.856305349121111,
        "residual_rmse_mm": 1.5277605301124566,
        "unconstrained_scale_bias_pct": 2.5837520518682933
      },
      "representation": "reconstructed_triangle_mesh_surface_samples",
      "representation_sample_count": 100000
    },
    {
      "capture_system": "Helios multi-view reconstruction",
      "geometry_artifact": {
        "basename": "helios_registered_error_colored.ply",
        "bytes": 904440,
        "sha256": "b6532efe1c354a19df55afc2a35454f779bdad81c3d7219a1f0271adc54fadb2"
      },
      "label": "helios",
      "metrics": {
        "cad_to_scan": {
          "count": 100000,
          "max_mm": 9.235374,
          "mean_mm": 2.069841,
          "median_mm": 1.53727,
          "p90_mm": 4.335111,
          "p95_mm": 4.639242,
          "rmse_mm": 2.507574
        },
        "scan_to_cad": {
          "count": 16274,
          "max_mm": 10.491735,
          "mean_mm": 1.364823,
          "median_mm": 1.018369,
          "p90_mm": 2.676969,
          "p95_mm": 3.731249,
          "rmse_mm": 1.818245
        },
        "symmetric_mean_mm": 1.717332,
        "thresholds": {
          "1mm": {
            "cad_completeness_pct": 26.363,
            "fscore_pct": 34.348768,
            "scan_precision_pct": 49.274917
          },
          "2mm": {
            "cad_completeness_pct": 62.131,
            "fscore_pct": 70.790188,
            "scan_precision_pct": 82.253902
          },
          "5mm": {
            "cad_completeness_pct": 97.319,
            "fscore_pct": 97.396688,
            "scan_precision_pct": 97.474499
          }
        }
      },
      "primary_cad_sample_count": 100000,
      "primary_cad_sample_seed": 20260811,
      "registration_provenance": {
        "fixed_reference_to_scan_scale_m_per_mm": 0.001,
        "free_scale_diagnostic": {
          "applied": false,
          "reference_to_scan_scale_m_per_mm": 0.001008358241810497,
          "scale_delta_pct_vs_fixed": 0.83582
        },
        "icp_scale_policy": "fixed metric scale; rotation and translation only",
        "method": "proper rigid PCA/trimmed-ICP with dynamic known-target prism",
        "metric_scale_basis": "known-target consistency; scale held at exactly 0.001 m/mm",
        "metric_scale_verified": true,
        "proper_rotation_determinant": 1.0000000092937067,
        "rotation_orthogonality_max_abs_error": 8.668075812678921e-09,
        "scale_fitted_for_primary": false,
        "uses_reflection": false,
        "whole_target_icp": true
      },
      "representation": "canonical_measured_point_cloud",
      "representation_sample_count": 16274
    }
  ],
  "limitations": [
    "Phone metrics represent reconstructed mesh surfaces, while Helios metrics represent retained measured points.",
    "Helios registration includes fixed-scale whole-target rigid ICP; all phone registrations use direct four-target-tag metric-rigid recovery without whole-target ICP or fitted scale.",
    "All results include print, assembly, capture, reconstruction, registration, and finite-sampling effects."
  ],
  "publication_safety": {
    "absolute_input_paths_included": false,
    "artifact_identity": "basename, byte count, and SHA-256 only"
  },
  "schema": "org.iphonotype.helios-phone-surface-comparison/v1",
  "source_reports": {
    "helios_metrics": {
      "basename": "helios_cad_bias_metrics.json",
      "bytes": 25736,
      "sha256": "6c5eac5c39d7c5c13a653f0a438fd4ec87a76c524c6f12f262b734f81c37e5bb"
    },
    "helios_registration": {
      "basename": "helios_registration_report.json",
      "bytes": 964,
      "sha256": "2bdef361a2b0183f3c3b5dde6a0a6b5e2f709e99936b95376e1db7e9dbb7dedf"
    },
    "phone_comparison": {
      "basename": "metric_canonical_mesh_comparison.json",
      "bytes": 26992,
      "sha256": "2098a8f9758780a7a444e19a2c5990dedeea1a42b4216c82cb1a4e95f2f023d6"
    }
  },
  "status": "complete",
  "tool": {
    "name": "aggregate_helios_phone_surface_comparison.py",
    "version": "1.0.0"
  }
}
