{
  "all_mechanical_screens_pass": true,
  "assembly_id": "emberscope-payload-assembly-v1",
  "component_count": 16,
  "components": [
    {
      "bounds": {
        "maximum_mm": [
          74.0,
          74.0,
          74.0
        ],
        "minimum_mm": [
          -74.0,
          -74.0,
          -74.0
        ],
        "size_mm": [
          148.0,
          148.0,
          148.0
        ]
      },
      "id": "outer_enclosure",
      "location_rule": "outer_envelope",
      "mass_kg": 0.3,
      "name": "Weather housing and sealed outer enclosure",
      "occupancy": "shell",
      "type": "enclosure"
    },
    {
      "bounds": {
        "maximum_mm": [
          32.0,
          58.0,
          28.0
        ],
        "minimum_mm": [
          -68.0,
          -42.0,
          -67.0
        ],
        "size_mm": [
          100.0,
          100.0,
          95.0
        ]
      },
      "id": "optical_cassette",
      "location_rule": "inner_cavity",
      "mass_kg": 0.12,
      "name": "Removable optical cassette frame",
      "occupancy": "shell",
      "type": "optical_cassette"
    },
    {
      "bounds": {
        "maximum_mm": [
          28.0,
          54.0,
          22.5
        ],
        "minimum_mm": [
          -64.0,
          -38.0,
          -61.5
        ],
        "size_mm": [
          92.0,
          92.0,
          84.0
        ]
      },
      "id": "replaceable_optical_core",
      "location_rule": "inner_cavity",
      "mass_kg": 0.363922359,
      "name": "Replaceable optical prescription envelope",
      "occupancy": "reserved",
      "type": "replaceable_optical_core"
    },
    {
      "bounds": {
        "maximum_mm": [
          21.0,
          47.0,
          -68.0
        ],
        "minimum_mm": [
          -57.0,
          -31.0,
          -72.0
        ],
        "size_mm": [
          78.0,
          78.0,
          4.0
        ]
      },
      "id": "lwir_window_carrier",
      "location_rule": "housing_interface",
      "mass_kg": 0.06,
      "name": "Serviceable LWIR window and carrier",
      "occupancy": "interface",
      "type": "window_carrier"
    },
    {
      "bounds": {
        "maximum_mm": [
          1.0,
          27.0,
          27.0
        ],
        "minimum_mm": [
          -37.0,
          -11.0,
          23.0
        ],
        "size_mm": [
          38.0,
          38.0,
          4.0
        ]
      },
      "id": "detector_mount",
      "location_rule": "inner_cavity",
      "mass_kg": 0.07,
      "name": "Detector carrier and controlled-focus mount",
      "occupancy": "solid",
      "type": "detector_mount"
    },
    {
      "bounds": {
        "maximum_mm": [
          65.0,
          54.0,
          20.0
        ],
        "minimum_mm": [
          35.0,
          -20.0,
          -40.0
        ],
        "size_mm": [
          30.0,
          74.0,
          60.0
        ]
      },
      "id": "compute_tray",
      "location_rule": "inner_cavity",
      "mass_kg": 0.16,
      "name": "Compute, storage, timing, and geotag tray",
      "occupancy": "solid",
      "type": "compute_tray"
    },
    {
      "bounds": {
        "maximum_mm": [
          65.0,
          -25.0,
          40.0
        ],
        "minimum_mm": [
          35.0,
          -45.0,
          -10.0
        ],
        "size_mm": [
          30.0,
          20.0,
          50.0
        ]
      },
      "id": "power_tray",
      "location_rule": "inner_cavity",
      "mass_kg": 0.1,
      "name": "Power conversion and interface tray",
      "occupancy": "solid",
      "type": "power_tray"
    },
    {
      "bounds": {
        "maximum_mm": [
          70.0,
          47.0,
          61.0
        ],
        "minimum_mm": [
          66.0,
          23.0,
          35.0
        ],
        "size_mm": [
          4.0,
          24.0,
          26.0
        ]
      },
      "id": "connector_panel",
      "location_rule": "inner_cavity",
      "mass_kg": 0.03,
      "name": "Protected power and data connector panel",
      "occupancy": "interface",
      "type": "connector_panel"
    },
    {
      "bounds": {
        "maximum_mm": [
          52.0,
          -62.0,
          45.0
        ],
        "minimum_mm": [
          -52.0,
          -70.0,
          -45.0
        ],
        "size_mm": [
          104.0,
          8.0,
          90.0
        ]
      },
      "id": "drone_adapter",
      "location_rule": "inner_cavity",
      "mass_kg": 0.2,
      "name": "Replaceable drone adapter and isolation plate",
      "occupancy": "solid",
      "type": "drone_adapter"
    },
    {
      "bounds": {
        "maximum_mm": [
          60.0,
          -56.0,
          50.0
        ],
        "minimum_mm": [
          -60.0,
          -62.0,
          -50.0
        ],
        "size_mm": [
          120.0,
          6.0,
          100.0
        ]
      },
      "id": "heat_spreader",
      "location_rule": "inner_cavity",
      "mass_kg": 0.08,
      "name": "Passive base heat spreader",
      "occupancy": "solid",
      "type": "passive_heat_path"
    },
    {
      "bounds": {
        "maximum_mm": [
          -32.0,
          -11.0,
          27.0
        ],
        "minimum_mm": [
          -36.0,
          -56.0,
          23.0
        ],
        "size_mm": [
          4.0,
          45.0,
          4.0
        ]
      },
      "id": "detector_heat_strap",
      "location_rule": "inner_cavity",
      "mass_kg": 0.0125,
      "name": "Detector-to-base passive heat strap",
      "occupancy": "solid",
      "type": "passive_heat_path"
    },
    {
      "bounds": {
        "maximum_mm": [
          62.0,
          -20.0,
          -30.0
        ],
        "minimum_mm": [
          58.0,
          -56.0,
          -36.0
        ],
        "size_mm": [
          4.0,
          36.0,
          6.0
        ]
      },
      "id": "compute_heat_strap",
      "location_rule": "inner_cavity",
      "mass_kg": 0.0125,
      "name": "Compute-to-base passive heat strap",
      "occupancy": "solid",
      "type": "passive_heat_path"
    },
    {
      "bounds": {
        "maximum_mm": [
          18.0,
          44.0,
          -56.0
        ],
        "minimum_mm": [
          -54.0,
          -28.0,
          -60.0
        ],
        "size_mm": [
          72.0,
          72.0,
          4.0
        ]
      },
      "id": "entrance_baffle",
      "location_rule": "inner_cavity",
      "mass_kg": 0.0125,
      "name": "Entrance stray-light baffle ring",
      "occupancy": "annular",
      "type": "internal_baffle"
    },
    {
      "bounds": {
        "maximum_mm": [
          18.0,
          44.0,
          -46.0
        ],
        "minimum_mm": [
          -54.0,
          -28.0,
          -50.0
        ],
        "size_mm": [
          72.0,
          72.0,
          4.0
        ]
      },
      "id": "secondary_baffle",
      "location_rule": "inner_cavity",
      "mass_kg": 0.0125,
      "name": "Secondary stray-light baffle ring",
      "occupancy": "annular",
      "type": "internal_baffle"
    },
    {
      "bounds": {
        "maximum_mm": [
          34.0,
          72.0,
          30.0
        ],
        "minimum_mm": [
          -70.0,
          68.0,
          -69.0
        ],
        "size_mm": [
          104.0,
          4.0,
          99.0
        ]
      },
      "id": "service_access_panel",
      "location_rule": "housing_interface",
      "mass_kg": 0.04,
      "name": "Top cassette service access panel",
      "occupancy": "interface",
      "type": "service_access"
    },
    {
      "id": "fasteners_and_harness",
      "location_rule": "distributed",
      "mass_kg": 0.07,
      "name": "Fasteners, harness, labels, and strain relief",
      "occupancy": "allocation",
      "type": "distributed_hardware"
    }
  ],
  "envelope_screen": {
    "containment_failures": [],
    "inner_cavity_mm": [
      140.0,
      140.0,
      140.0
    ],
    "limit_mm": [
      150.0,
      150.0,
      150.0
    ],
    "model_outer_mm": [
      148.0,
      148.0,
      148.0
    ],
    "overall_margin_mm": [
      2.0,
      2.0,
      2.0
    ],
    "passes": true
  },
  "fastener_location_count": 8,
  "mass_screen": {
    "budget_kg": 2.0,
    "modelled_mass_kg": 1.643922,
    "passes": true,
    "reserve_kg": 0.356078
  },
  "maturity": "engineering_development_geometry",
  "non_interference_screen": {
    "checked_component_count": 12,
    "interferences": [],
    "passes": true
  },
  "optical_interface": {
    "canonical_sha256": "376fba6fc36fa558b57718686e29aad0aaaab91b621dece9078f10ec62735afc",
    "replacement_contract": {
      "acceptance_rule": "A replacement source must fit the reserved volume, preserve the declared mechanical aperture allowance, and remain within the payload mass budget after the same validation screens are rerun; optical no-vignetting remains a separate ray-trace gate.",
      "allowed_changes": "Optical source path, source-axis mapping, reserved volume, and detector mount plane.",
      "housing_invariant": "No enclosure, electronics, connector, service-panel, heat-path, or drone-adapter coordinate may depend on individual mirror coordinates."
    },
    "repository_path": "projects/rural-fire-service-camera/mechanical/emberscope-optical-cassette-interface.v1.json"
  },
  "optical_interface_screen": {
    "baffle_radial_clearance_mm": 3.22,
    "entrance_aperture_mm": 55.56,
    "mechanical_aperture_allowance_passes": true,
    "minimum_baffle_inner_diameter_mm": 62.0,
    "optical_envelope_fits": true,
    "passes": true,
    "required_baffle_radial_clearance_mm": 3.0,
    "window_clear_aperture_mm": 70.0
  },
  "optical_source": {
    "canonical_design_sha256": "c843068d020eae2801b13fa683746002fe79e780406a7f8ea39428e9083e4fc7",
    "disposition": "measured_failed_p2_candidate_used_for_envelope_only",
    "exact_file_sha256": "267f3bf93fe68638ee328d74f93399759e84459c050a6ebafb1e890a5081de3b",
    "mapped_envelope_mm": [
      90.0,
      88.629919,
      80.601638
    ],
    "mass_proxy_kg": 0.363922359,
    "repository_path": "projects/rural-fire-service-camera/designs/emberscope-three-mirror-fine-gsd-100.v1.json",
    "reserved_volume_mm": [
      92.0,
      92.0,
      84.0
    ],
    "total_clearance_margin_mm": [
      2.0,
      3.370081,
      3.398362
    ]
  },
  "release_boundary": "Engineering-development geometry only; not CNC-ready, fabrication-ready, tolerance-supported, sealed, thermally qualified, or optically accepted.",
  "reserved_clearance_screen": {
    "clearances": [
      {
        "bounds": {
          "maximum_mm": [
            28.0,
            54.0,
            22.5
          ],
          "minimum_mm": [
            -64.0,
            -38.0,
            -61.5
          ],
          "size_mm": [
            92.0,
            92.0,
            84.0
          ]
        },
        "id": "optical_core_keepout",
        "name": "Replaceable optical-core keepout",
        "violations": []
      },
      {
        "bounds": {
          "maximum_mm": [
            20.0,
            46.0,
            -62.0
          ],
          "minimum_mm": [
            -56.0,
            -30.0,
            -68.0
          ],
          "size_mm": [
            76.0,
            76.0,
            6.0
          ]
        },
        "id": "window_service_clearance",
        "name": "Internal window removal and cleaning clearance",
        "violations": []
      },
      {
        "bounds": {
          "maximum_mm": [
            32.0,
            70.0,
            28.0
          ],
          "minimum_mm": [
            -68.0,
            58.0,
            -67.0
          ],
          "size_mm": [
            100.0,
            12.0,
            95.0
          ]
        },
        "id": "cassette_extraction_clearance",
        "name": "Optical cassette extraction corridor",
        "violations": []
      },
      {
        "bounds": {
          "maximum_mm": [
            66.0,
            45.0,
            59.0
          ],
          "minimum_mm": [
            60.0,
            25.0,
            37.0
          ],
          "size_mm": [
            6.0,
            20.0,
            22.0
          ]
        },
        "id": "connector_strain_relief_clearance",
        "name": "Connector backshell and strain-relief clearance",
        "violations": []
      }
    ],
    "passes": true,
    "violations": []
  },
  "revision": "2026-08-03",
  "schema": "emberscope_payload_mechanical_cad/v1",
  "source": {
    "canonical_sha256": "64840c30413eb542c2e35ebf07c0ded123cad1b3b2e9077ca38ced100261ff93",
    "exact_file_sha256": "3c2b82577ad711120fe8a508166dd951522dd669c58fd5cd2f167a5d17fca7cb",
    "repository_path": "projects/rural-fire-service-camera/mechanical/emberscope-payload-assembly.v1.json"
  }
}
