{
  "measured_on": "2026-09-07",
  "question": "does the file say what its numbers mean, and what breaks when it does not",
  "object": "axis aligned cube, physically 100 mm on its longest edge",
  "true_size_mm": 100.0,
  "trimesh_version": "5.1.0",
  "numpy_version": "2.5.2",
  "not_measured_here": [
    "slicer import behaviour (no Cura or PrusaSlicer on this machine)",
    "DCC exporter behaviour (no Blender on this machine)",
    "FBX and STEP (trimesh cannot write them)"
  ],
  "rows": [
    {
      "case": "authored_in_metres",
      "format": "glb",
      "authored_value_in_file": 0.1,
      "unit_field_present_in_bytes": false,
      "unit_evidence": "top level keys=['accessors', 'asset', 'bufferViews', 'buffers', 'meshes', 'nodes', 'scene', 'scenes']; extensionsUsed=none",
      "unit_implied_by_spec": "meters",
      "consumer_assumes_mm_result_mm": 0.1,
      "consumer_assumes_m_result_mm": 100.000001,
      "true_size_mm": 100.0,
      "error_factor_if_assumed_mm": 0.001,
      "error_factor_if_assumed_m": 1.0
    },
    {
      "case": "authored_in_metres",
      "format": "stl",
      "authored_value_in_file": 0.1,
      "unit_field_present_in_bytes": false,
      "unit_evidence": "80 byte header=''",
      "unit_implied_by_spec": null,
      "consumer_assumes_mm_result_mm": 0.1,
      "consumer_assumes_m_result_mm": 100.000001,
      "true_size_mm": 100.0,
      "error_factor_if_assumed_mm": 0.001,
      "error_factor_if_assumed_m": 1.0
    },
    {
      "case": "authored_in_metres",
      "format": "obj",
      "authored_value_in_file": 0.1,
      "unit_field_present_in_bytes": false,
      "unit_evidence": "leading comments=['# https://github.com/mikedh/trimesh']",
      "unit_implied_by_spec": null,
      "consumer_assumes_mm_result_mm": 0.1,
      "consumer_assumes_m_result_mm": 100.0,
      "true_size_mm": 100.0,
      "error_factor_if_assumed_mm": 0.001,
      "error_factor_if_assumed_m": 1.0
    },
    {
      "case": "authored_in_metres",
      "format": "ply",
      "authored_value_in_file": 0.1,
      "unit_field_present_in_bytes": false,
      "unit_evidence": "comments=['comment https://github.com/mikedh/trimesh']",
      "unit_implied_by_spec": null,
      "consumer_assumes_mm_result_mm": 0.1,
      "consumer_assumes_m_result_mm": 100.000001,
      "true_size_mm": 100.0,
      "error_factor_if_assumed_mm": 0.001,
      "error_factor_if_assumed_m": 1.0
    },
    {
      "case": "authored_in_metres",
      "format": "3mf",
      "authored_value_in_file": 0.1,
      "unit_field_present_in_bytes": true,
      "unit_evidence": "3D/3dmodel.model: <model unit=\"millimeter\">",
      "unit_implied_by_spec": "millimeter",
      "consumer_assumes_mm_result_mm": 0.1,
      "consumer_assumes_m_result_mm": 100.0,
      "true_size_mm": 100.0,
      "error_factor_if_assumed_mm": 0.001,
      "error_factor_if_assumed_m": 1.0
    },
    {
      "case": "authored_in_millimetres",
      "format": "glb",
      "authored_value_in_file": 100.0,
      "unit_field_present_in_bytes": false,
      "unit_evidence": "top level keys=['accessors', 'asset', 'bufferViews', 'buffers', 'meshes', 'nodes', 'scene', 'scenes']; extensionsUsed=none",
      "unit_implied_by_spec": "meters",
      "consumer_assumes_mm_result_mm": 100.0,
      "consumer_assumes_m_result_mm": 100000.0,
      "true_size_mm": 100.0,
      "error_factor_if_assumed_mm": 1.0,
      "error_factor_if_assumed_m": 1000.0
    },
    {
      "case": "authored_in_millimetres",
      "format": "stl",
      "authored_value_in_file": 100.0,
      "unit_field_present_in_bytes": false,
      "unit_evidence": "80 byte header=''",
      "unit_implied_by_spec": null,
      "consumer_assumes_mm_result_mm": 100.0,
      "consumer_assumes_m_result_mm": 100000.0,
      "true_size_mm": 100.0,
      "error_factor_if_assumed_mm": 1.0,
      "error_factor_if_assumed_m": 1000.0
    },
    {
      "case": "authored_in_millimetres",
      "format": "obj",
      "authored_value_in_file": 100.0,
      "unit_field_present_in_bytes": false,
      "unit_evidence": "leading comments=['# https://github.com/mikedh/trimesh']",
      "unit_implied_by_spec": null,
      "consumer_assumes_mm_result_mm": 100.0,
      "consumer_assumes_m_result_mm": 100000.0,
      "true_size_mm": 100.0,
      "error_factor_if_assumed_mm": 1.0,
      "error_factor_if_assumed_m": 1000.0
    },
    {
      "case": "authored_in_millimetres",
      "format": "ply",
      "authored_value_in_file": 100.0,
      "unit_field_present_in_bytes": false,
      "unit_evidence": "comments=['comment https://github.com/mikedh/trimesh']",
      "unit_implied_by_spec": null,
      "consumer_assumes_mm_result_mm": 100.0,
      "consumer_assumes_m_result_mm": 100000.0,
      "true_size_mm": 100.0,
      "error_factor_if_assumed_mm": 1.0,
      "error_factor_if_assumed_m": 1000.0
    },
    {
      "case": "authored_in_millimetres",
      "format": "3mf",
      "authored_value_in_file": 100.0,
      "unit_field_present_in_bytes": true,
      "unit_evidence": "3D/3dmodel.model: <model unit=\"millimeter\">",
      "unit_implied_by_spec": "millimeter",
      "consumer_assumes_mm_result_mm": 100.0,
      "consumer_assumes_m_result_mm": 100000.0,
      "true_size_mm": 100.0,
      "error_factor_if_assumed_mm": 1.0,
      "error_factor_if_assumed_m": 1000.0
    }
  ]
}
