{
  "assembly_id": "emberscope-payload-assembly-v1",
  "components": [
    {
      "colour_rgba": [
        0.78,
        0.84,
        0.85,
        1.0
      ],
      "geometry": {
        "center_mm": [
          0.0,
          0.0,
          0.0
        ],
        "shape": "shell_box",
        "size_mm": [
          148.0,
          148.0,
          148.0
        ],
        "wall_thickness_mm": 4.0
      },
      "id": "outer_enclosure",
      "name": "Weather housing and sealed outer enclosure",
      "type": "enclosure"
    },
    {
      "colour_rgba": [
        0.07,
        0.46,
        0.41,
        1.0
      ],
      "geometry": {
        "center_mm": [
          -18.0,
          8.0,
          -19.5
        ],
        "shape": "shell_box",
        "size_mm": [
          100.0,
          100.0,
          95.0
        ],
        "wall_thickness_mm": 3.0
      },
      "id": "optical_cassette",
      "name": "Removable optical cassette frame",
      "type": "optical_cassette"
    },
    {
      "colour_rgba": [
        0.95,
        0.48,
        0.08,
        0.22
      ],
      "geometry": {
        "center_mm": [
          -18.0,
          8.0,
          -19.5
        ],
        "shape": "reserved_box",
        "size_mm": [
          92.0,
          92.0,
          84.0
        ]
      },
      "id": "replaceable_optical_core",
      "name": "Replaceable optical prescription envelope",
      "type": "replaceable_optical_core"
    },
    {
      "colour_rgba": [
        0.06,
        0.12,
        0.14,
        1.0
      ],
      "geometry": {
        "axis": "z",
        "center_mm": [
          -18.0,
          8.0,
          -70.0
        ],
        "clear_aperture_mm": 70.0,
        "shape": "aperture_plate",
        "size_mm": [
          78.0,
          78.0,
          4.0
        ]
      },
      "id": "lwir_window_carrier",
      "name": "Serviceable LWIR window and carrier",
      "type": "window_carrier"
    },
    {
      "colour_rgba": [
        0.58,
        0.3,
        0.78,
        1.0
      ],
      "geometry": {
        "center_mm": [
          -18.0,
          8.0,
          25.0
        ],
        "shape": "box",
        "size_mm": [
          38.0,
          38.0,
          4.0
        ]
      },
      "id": "detector_mount",
      "name": "Detector carrier and controlled-focus mount",
      "type": "detector_mount"
    },
    {
      "colour_rgba": [
        0.13,
        0.52,
        0.86,
        1.0
      ],
      "geometry": {
        "center_mm": [
          50.0,
          17.0,
          -10.0
        ],
        "shape": "box",
        "size_mm": [
          30.0,
          74.0,
          60.0
        ]
      },
      "id": "compute_tray",
      "name": "Compute, storage, timing, and geotag tray",
      "type": "compute_tray"
    },
    {
      "colour_rgba": [
        0.88,
        0.3,
        0.14,
        1.0
      ],
      "geometry": {
        "center_mm": [
          50.0,
          -35.0,
          15.0
        ],
        "shape": "box",
        "size_mm": [
          30.0,
          20.0,
          50.0
        ]
      },
      "id": "power_tray",
      "name": "Power conversion and interface tray",
      "type": "power_tray"
    },
    {
      "colour_rgba": [
        0.16,
        0.66,
        0.66,
        1.0
      ],
      "geometry": {
        "center_mm": [
          68.0,
          35.0,
          48.0
        ],
        "shape": "box",
        "size_mm": [
          4.0,
          24.0,
          26.0
        ]
      },
      "id": "connector_panel",
      "name": "Protected power and data connector panel",
      "type": "connector_panel"
    },
    {
      "colour_rgba": [
        0.15,
        0.18,
        0.19,
        1.0
      ],
      "geometry": {
        "center_mm": [
          0.0,
          -66.0,
          0.0
        ],
        "shape": "box",
        "size_mm": [
          104.0,
          8.0,
          90.0
        ]
      },
      "id": "drone_adapter",
      "name": "Replaceable drone adapter and isolation plate",
      "type": "drone_adapter"
    },
    {
      "colour_rgba": [
        0.88,
        0.42,
        0.1,
        1.0
      ],
      "geometry": {
        "center_mm": [
          0.0,
          -59.0,
          0.0
        ],
        "shape": "box",
        "size_mm": [
          120.0,
          6.0,
          100.0
        ]
      },
      "id": "heat_spreader",
      "name": "Passive base heat spreader",
      "type": "passive_heat_path"
    },
    {
      "colour_rgba": [
        0.96,
        0.58,
        0.14,
        1.0
      ],
      "geometry": {
        "center_mm": [
          -34.0,
          -33.5,
          25.0
        ],
        "shape": "box",
        "size_mm": [
          4.0,
          45.0,
          4.0
        ]
      },
      "id": "detector_heat_strap",
      "name": "Detector-to-base passive heat strap",
      "type": "passive_heat_path"
    },
    {
      "colour_rgba": [
        0.96,
        0.58,
        0.14,
        1.0
      ],
      "geometry": {
        "center_mm": [
          60.0,
          -38.0,
          -33.0
        ],
        "shape": "box",
        "size_mm": [
          4.0,
          36.0,
          6.0
        ]
      },
      "id": "compute_heat_strap",
      "name": "Compute-to-base passive heat strap",
      "type": "passive_heat_path"
    },
    {
      "colour_rgba": [
        0.035,
        0.045,
        0.045,
        1.0
      ],
      "geometry": {
        "axis": "z",
        "center_mm": [
          -18.0,
          8.0,
          -58.0
        ],
        "inner_diameter_mm": 62.0,
        "length_mm": 4.0,
        "outer_diameter_mm": 72.0,
        "shape": "annular_cylinder"
      },
      "id": "entrance_baffle",
      "name": "Entrance stray-light baffle ring",
      "type": "internal_baffle"
    },
    {
      "colour_rgba": [
        0.035,
        0.045,
        0.045,
        1.0
      ],
      "geometry": {
        "axis": "z",
        "center_mm": [
          -18.0,
          8.0,
          -48.0
        ],
        "inner_diameter_mm": 62.0,
        "length_mm": 4.0,
        "outer_diameter_mm": 72.0,
        "shape": "annular_cylinder"
      },
      "id": "secondary_baffle",
      "name": "Secondary stray-light baffle ring",
      "type": "internal_baffle"
    },
    {
      "colour_rgba": [
        0.92,
        0.95,
        0.95,
        1.0
      ],
      "geometry": {
        "center_mm": [
          -18.0,
          70.0,
          -19.5
        ],
        "shape": "box",
        "size_mm": [
          104.0,
          4.0,
          99.0
        ]
      },
      "id": "service_access_panel",
      "name": "Top cassette service access panel",
      "type": "service_access"
    }
  ],
  "coordinate_mapping": {
    "note": "Source y is payload vertical and maps to Blender z.",
    "source_xyz_to_blender_xyz": [
      "x",
      "z",
      "y"
    ]
  },
  "fastener_locations": [
    {
      "axis": "y",
      "diameter_mm": 3.0,
      "id": "cassette_f1",
      "length_mm": 8.0,
      "position_mm": [
        -62.0,
        54.0,
        -58.0
      ]
    },
    {
      "axis": "y",
      "diameter_mm": 3.0,
      "id": "cassette_f2",
      "length_mm": 8.0,
      "position_mm": [
        26.0,
        54.0,
        -58.0
      ]
    },
    {
      "axis": "y",
      "diameter_mm": 3.0,
      "id": "cassette_f3",
      "length_mm": 8.0,
      "position_mm": [
        -62.0,
        54.0,
        19.0
      ]
    },
    {
      "axis": "y",
      "diameter_mm": 3.0,
      "id": "cassette_f4",
      "length_mm": 8.0,
      "position_mm": [
        26.0,
        54.0,
        19.0
      ]
    },
    {
      "axis": "y",
      "diameter_mm": 5.0,
      "id": "adapter_f1",
      "length_mm": 8.0,
      "position_mm": [
        -42.0,
        -66.0,
        -34.0
      ]
    },
    {
      "axis": "y",
      "diameter_mm": 5.0,
      "id": "adapter_f2",
      "length_mm": 8.0,
      "position_mm": [
        42.0,
        -66.0,
        -34.0
      ]
    },
    {
      "axis": "y",
      "diameter_mm": 5.0,
      "id": "adapter_f3",
      "length_mm": 8.0,
      "position_mm": [
        -42.0,
        -66.0,
        34.0
      ]
    },
    {
      "axis": "y",
      "diameter_mm": 5.0,
      "id": "adapter_f4",
      "length_mm": 8.0,
      "position_mm": [
        42.0,
        -66.0,
        34.0
      ]
    }
  ],
  "maturity": "engineering_development_geometry",
  "optical_interface": {
    "canonical_sha256": "376fba6fc36fa558b57718686e29aad0aaaab91b621dece9078f10ec62735afc",
    "exact_file_sha256": "5b6827a70dfac1841065719d74e10545a411168f618d6f7a1e71ecfd2e74d25c",
    "optical_disposition": "measured_failed_p2_candidate_used_for_envelope_only",
    "repository_path": "projects/rural-fire-service-camera/mechanical/emberscope-optical-cassette-interface.v1.json"
  },
  "release_boundary": "Engineering-development geometry only; not CNC-ready, fabrication-ready, tolerance-supported, sealed, thermally qualified, or optically accepted.",
  "render": {
    "engine": "BLENDER_WORKBENCH",
    "individual_render_frames_committed": true,
    "resolution_px": [
      1600,
      1000
    ],
    "transparent_background": false
  },
  "renderer": {
    "exact_file_sha256": "789b55019f86eebaf6d8645188838aea4373c50c9824e1dc0bfd9ce87f17277f",
    "repository_path": "projects/rural-fire-service-camera/scripts/rfs_payload_renders.py"
  },
  "reserved_clearances": [
    {
      "allowed_component_ids": [
        "outer_enclosure",
        "optical_cassette",
        "replaceable_optical_core",
        "entrance_baffle",
        "secondary_baffle"
      ],
      "center_source": "optical_interface",
      "id": "optical_core_keepout",
      "name": "Replaceable optical-core keepout",
      "size_source": "optical_interface"
    },
    {
      "allowed_component_ids": [
        "outer_enclosure",
        "optical_cassette",
        "lwir_window_carrier"
      ],
      "center_mm": [
        -18.0,
        8.0,
        -65.0
      ],
      "id": "window_service_clearance",
      "name": "Internal window removal and cleaning clearance",
      "size_mm": [
        76.0,
        76.0,
        6.0
      ]
    },
    {
      "allowed_component_ids": [
        "outer_enclosure",
        "optical_cassette",
        "service_access_panel"
      ],
      "center_mm": [
        -18.0,
        64.0,
        -19.5
      ],
      "id": "cassette_extraction_clearance",
      "name": "Optical cassette extraction corridor",
      "size_mm": [
        100.0,
        12.0,
        95.0
      ]
    },
    {
      "allowed_component_ids": [
        "outer_enclosure",
        "connector_panel"
      ],
      "center_mm": [
        63.0,
        35.0,
        48.0
      ],
      "id": "connector_strain_relief_clearance",
      "name": "Connector backshell and strain-relief clearance",
      "size_mm": [
        6.0,
        20.0,
        22.0
      ]
    }
  ],
  "revision": "2026-08-03",
  "schema": "emberscope_payload_renders/v1",
  "source": {
    "canonical_sha256": "64840c30413eb542c2e35ebf07c0ded123cad1b3b2e9077ca38ced100261ff93",
    "exact_file_sha256": "3c2b82577ad711120fe8a508166dd951522dd669c58fd5cd2f167a5d17fca7cb",
    "repository_path": "projects/rural-fire-service-camera/mechanical/emberscope-payload-assembly.v1.json"
  },
  "validation": {
    "all_mechanical_screens_pass": true,
    "exact_file_sha256": "4b9104f9584f5def2ea774b794904da24739b1f7f18f1a8b56d16e1e3f132305",
    "mass_reserve_kg": 0.356078,
    "modelled_mass_kg": 1.643922,
    "outer_envelope_mm": [
      148.0,
      148.0,
      148.0
    ],
    "repository_path": "site/assets/rfs/mechanical/emberscope-payload-assembly-v1.validation.json"
  },
  "views": [
    {
      "camera_mm": [
        232.0,
        -248.0,
        188.0
      ],
      "file": "payload-exterior-three-quarter.png",
      "id": "exterior_three_quarter",
      "orthographic_scale_mm": 282.0,
      "state": "exterior",
      "target_mm": [
        0.0,
        0.0,
        -2.0
      ],
      "title": "Exterior three-quarter review"
    },
    {
      "camera_mm": [
        224.0,
        -258.0,
        230.0
      ],
      "file": "payload-top-bottom-interfaces.png",
      "id": "top_bottom_interfaces",
      "orthographic_scale_mm": 330.0,
      "state": "interfaces",
      "target_mm": [
        0.0,
        0.0,
        2.0
      ],
      "title": "Top service and bottom drone interfaces"
    },
    {
      "camera_mm": [
        230.0,
        -266.0,
        168.0
      ],
      "file": "payload-optical-path-cutaway.png",
      "id": "optical_path_cutaway",
      "orthographic_scale_mm": 262.0,
      "state": "optical_cutaway",
      "target_mm": [
        -12.0,
        -8.0,
        4.0
      ],
      "title": "Optical-bay cutaway"
    },
    {
      "camera_mm": [
        248.0,
        -214.0,
        152.0
      ],
      "file": "payload-electronics-thermal-cutaway.png",
      "id": "electronics_thermal_cutaway",
      "orthographic_scale_mm": 262.0,
      "state": "electronics_cutaway",
      "target_mm": [
        18.0,
        0.0,
        -6.0
      ],
      "title": "Electronics and passive-thermal cutaway"
    },
    {
      "camera_mm": [
        318.0,
        -360.0,
        268.0
      ],
      "file": "payload-exploded-assembly.png",
      "id": "exploded_assembly",
      "orthographic_scale_mm": 445.0,
      "state": "exploded",
      "target_mm": [
        0.0,
        0.0,
        0.0
      ],
      "title": "Exploded assembly and service sequence"
    }
  ]
}
