{
  "schema": "walter-thermal-qualification-v1",
  "model_id": "walter-r08-rear-service-20260905",
  "updated_utc": "2026-09-06T01:33:45.204750+00:00",
  "whole_build_prediction_ready": false,
  "diagnostic_audit": {
    "field_sha256": "0074a61418a4fe9643ccc6de8a55e0d3d32e7b80fbbcfbc8abf6133734080f11",
    "seconds": 0.5,
    "sample_peak_air_c": 267.36514,
    "sample_peak_location_mm": [
      -7.80367,
      84.72323,
      242.50001
    ],
    "conclusion": "The current field is unsuitable for predicting the enclosure temperature or choosing a fan. It is a startup diagnostic with missing solid heat transfer and a rejected mesh. The plotted extreme is not a CPU sensor or expected enclosure temperature.",
    "missing_physics": [
      "Heatsink conduction, thermal pads, contact resistance and solid heat capacity",
      "Actual blower geometry/direction, measured pressure-flow curve and installed control",
      "Distributed heat from screens, audio, camera, radar and power converters",
      "Real cable/hub/battery obstruction, sealed joints and external wall heat loss",
      "Mesh and time-step convergence, full transient energy balance and physical comparison"
    ]
  },
  "geometry_audit": {
    "model_id": "walter-r08-rear-service-20260905",
    "scope": "Exact mesh intersections of existing reserved volumes against modeled physical parts. Not airflow, actual hardware clearance, cable routing or fit certification.",
    "checks": [
      {
        "zone": "pi_fan_intake_keepclear",
        "intersections": []
      },
      {
        "zone": "rear_harness_service_space",
        "intersections": []
      },
      {
        "zone": "gpio_adapter_planning",
        "intersections": []
      },
      {
        "zone": "future_power_bay",
        "intersections": []
      }
    ]
  },
  "regions": [
    {
      "id": "01_front_shell",
      "name": "Front lower shell",
      "kind": "printed shell/carrier",
      "size_mm": [
        224.0,
        79.79999999701977,
        216.5999870300293
      ],
      "center_mm": [
        0.0,
        -40.100000001490116,
        168.4999942779541
      ],
      "geometry": "assets/models/01_front_shell.wmesh",
      "geometry_sha256": "a4edc21421344445bff7b2d4d239f66b330940f617c61da207e4b023a84488bb",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "02_rear_shell",
      "name": "Rear lower shell",
      "kind": "printed shell/carrier",
      "size_mm": [
        224.0,
        131.70975035429,
        216.5999870300293
      ],
      "center_mm": [
        0.0,
        66.15487518906593,
        168.4999942779541
      ],
      "geometry": "assets/models/02_rear_shell.wmesh",
      "geometry_sha256": "dda69473eb18ae1a78660e3a6960c3da582b2a014922912201350ad5263c2866",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "03_base_shell",
      "name": "Base shell",
      "kind": "printed shell/carrier",
      "size_mm": [
        210.33639526367188,
        194.00270080566406,
        60.0
      ],
      "center_mm": [
        0.0,
        25.00135040283203,
        30.0
      ],
      "geometry": "assets/models/03_base_shell.wmesh",
      "geometry_sha256": "6b713089de6d1dadb258741afc603f8caa9042a9e5cf56eff7bc95fcde0b3cac",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "04_bottom_service_cover",
      "name": "Bottom service cover",
      "kind": "printed shell/carrier",
      "size_mm": [
        166.0,
        126.0,
        9.199999809265137
      ],
      "center_mm": [
        0.0,
        25.0,
        0.40000009536743164
      ],
      "geometry": "assets/models/04_bottom_service_cover.wmesh",
      "geometry_sha256": "4017f9b0aaeee9d222ac10ec5703b5aa355f3f458a7d1481ddfa4c169ed736c6",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "05_internal_rack",
      "name": "Upper Pi rack",
      "kind": "printed shell/carrier",
      "size_mm": [
        160.0,
        31.0,
        156.8000030517578
      ],
      "center_mm": [
        0.0,
        91.5,
        194.5999984741211
      ],
      "geometry": "assets/service-models/05_internal_rack.wmesh",
      "geometry_sha256": "82b82802be19e328f3203530dc2902a78bb20aca1f01ff3f3b5b0b3861e50bcb",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "06_adjustable_power_tray",
      "name": "Adjustable power tray",
      "kind": "printed shell/carrier",
      "size_mm": [
        140.0,
        108.0,
        15.0
      ],
      "center_mm": [
        0.0,
        25.0,
        12.5
      ],
      "geometry": "assets/models/06_adjustable_power_tray.wmesh",
      "geometry_sha256": "2b5527231c4db38539282f9206c74019d121f889250bfe2c0c0644f92b3ced47",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "07_left_ear_grille",
      "name": "Left ear grille",
      "kind": "printed shell/carrier",
      "size_mm": [
        3.0,
        81.99181175231934,
        147.99966430664062
      ],
      "center_mm": [
        -113.80000305175781,
        14.997784614562988,
        206.0001678466797
      ],
      "geometry": "assets/models/07_left_ear_grille.wmesh",
      "geometry_sha256": "3d14f4a704e31bdfc79130a6c6131cf9b47b944f0b620ebd0fe3fb452b997aff",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "08_right_ear_grille",
      "name": "Right ear grille",
      "kind": "printed shell/carrier",
      "size_mm": [
        3.0,
        81.99181175231934,
        147.99966430664062
      ],
      "center_mm": [
        113.80000305175781,
        14.997784614562988,
        206.0001678466797
      ],
      "geometry": "assets/models/08_right_ear_grille.wmesh",
      "geometry_sha256": "3ae051c2d0e9b3da19b1d8d767dacddad12601b3ad917cc5ae65910aea573d20",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "09_radar_window_PROTOTYPE",
      "name": "Radar window",
      "kind": "printed shell/carrier",
      "size_mm": [
        43.99456977844238,
        7.387336730957031,
        57.999632596969604
      ],
      "center_mm": [
        0.0014142990112304688,
        -68.31966781616211,
        32.0001837015152
      ],
      "geometry": "assets/models/09_radar_window_PROTOTYPE.wmesh",
      "geometry_sha256": "5ec958dc67795313c9a2bce8c4d44ea3c386e2e77859afacf63b47f882e6c924",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "10_left_speaker_adapter",
      "name": "Left speaker adapter",
      "kind": "printed shell/carrier",
      "size_mm": [
        3.0,
        48.0,
        106.0
      ],
      "center_mm": [
        -88.0,
        15.0,
        206.0
      ],
      "geometry": "assets/models/10_left_speaker_adapter.wmesh",
      "geometry_sha256": "be612763125e9c5c6fd760d3fb910309834aaba3e8c67ede357e3a80c582de1e",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "11_right_speaker_adapter",
      "name": "Right speaker adapter",
      "kind": "printed shell/carrier",
      "size_mm": [
        3.0,
        48.0,
        106.0
      ],
      "center_mm": [
        88.0,
        15.0,
        206.0
      ],
      "geometry": "assets/models/11_right_speaker_adapter.wmesh",
      "geometry_sha256": "0b4fe5ae72528e843de5447ab5b2685dc5afa09e59001c735ccb21ca42290789",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "12_camera_carrier_PROTOTYPE",
      "name": "Camera carrier",
      "kind": "printed shell/carrier",
      "size_mm": [
        31.0,
        6.0,
        30.0
      ],
      "center_mm": [
        0.0,
        -59.5,
        262.0
      ],
      "geometry": "assets/models/12_camera_carrier_PROTOTYPE.wmesh",
      "geometry_sha256": "534348b8c1816667c3360723046ca7c938bcfcd6038ea38e4a66e93b324b6487",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "13_expansion_platform",
      "name": "Expansion platform",
      "kind": "printed shell/carrier",
      "size_mm": [
        84.0,
        38.0,
        25.5
      ],
      "center_mm": [
        0.0,
        71.0,
        282.25
      ],
      "geometry": "assets/models/13_expansion_platform.wmesh",
      "geometry_sha256": "7742606cff21172e63a1625ecbce48ab5bb8b9c5c1a34b600b01882142d73cd1",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "14_rear_service_blank",
      "name": "Rear service blank",
      "kind": "printed shell/carrier",
      "size_mm": [
        41.20000076293945,
        7.128639221191406,
        25.19999885559082
      ],
      "center_mm": [
        0.0,
        117.93791580200195,
        33.999999046325684
      ],
      "geometry": "assets/models/14_rear_service_blank.wmesh",
      "geometry_sha256": "501f29e8b874c57985a49e0fd6cd3f84403e155194dce56728d8f8964415ac18",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "15_touch_cartridge_PROTOTYPE",
      "name": "Touch cartridge \u00b7 prototype",
      "kind": "printed shell/carrier",
      "size_mm": [
        51.99994087219238,
        64.42494201660156,
        47.5482177734375
      ],
      "center_mm": [
        2.956390380859375e-05,
        92.21247100830078,
        325.774169921875
      ],
      "geometry": "assets/models/15_touch_cartridge_PROTOTYPE.wmesh",
      "geometry_sha256": "b2b6d5a8510d8e48e807622a1183488d12de5f7857a0ba4b3d86732c97a4f569",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "16_front_crown",
      "name": "Front crown",
      "kind": "printed shell/carrier",
      "size_mm": [
        202.89064025878906,
        74.39627534151077,
        84.79998779296875
      ],
      "center_mm": [
        0.0,
        -37.89813765883446,
        319.6000061035156
      ],
      "geometry": "assets/models/16_front_crown.wmesh",
      "geometry_sha256": "ddb1b4c756ce3926c971ffed53864967ae4bb0c89f0a78e8576e5a8a44e1726e",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "17_rear_crown",
      "name": "Rear crown",
      "kind": "printed shell/carrier",
      "size_mm": [
        224.0,
        126.14330223202705,
        84.79998779296875
      ],
      "center_mm": [
        0.0,
        62.69308124482632,
        319.6000061035156
      ],
      "geometry": "assets/models/17_rear_crown.wmesh",
      "geometry_sha256": "dbb9506b1154f9f8b45ee666586225ca4c10e331240302010454dce737499dc1",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "18_lower_rack",
      "name": "Lower rack",
      "kind": "printed shell/carrier",
      "size_mm": [
        164.0,
        40.0,
        95.80000305175781
      ],
      "center_mm": [
        0.0,
        60.0,
        67.9000015258789
      ],
      "geometry": "assets/models/18_lower_rack.wmesh",
      "geometry_sha256": "e2776fb0d84ff956e8a5f70c2e51030e42df50efd0f3c01edcf1f68f2b2b07c6",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "19_left_rack_splice",
      "name": "Left rack splice",
      "kind": "printed shell/carrier",
      "size_mm": [
        12.0,
        3.0,
        48.0
      ],
      "center_mm": [
        -72.0,
        81.69999694824219,
        125.0
      ],
      "geometry": "assets/models/19_left_rack_splice.wmesh",
      "geometry_sha256": "2549b9d5f12c818085c86a940629498ac54d1ba9cce8a7fd8267cf32c09b01be",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "20_right_rack_splice",
      "name": "Right rack splice",
      "kind": "printed shell/carrier",
      "size_mm": [
        12.0,
        3.0,
        48.0
      ],
      "center_mm": [
        72.0,
        81.69999694824219,
        125.0
      ],
      "geometry": "assets/models/20_right_rack_splice.wmesh",
      "geometry_sha256": "8b1297819f8bcae65f6cc618405b33d1e014e387c24da9f9650de9572492d5f3",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Assign actual filament, print orientation/infill, shell thickness and material properties. Air gaps and joint leakage require physical definitions."
    },
    {
      "id": "audio_USB_A_plug_estimated",
      "name": "Audio USB-A plug",
      "kind": "electronics reference",
      "size_mm": [
        12.0,
        4.5,
        12.0
      ],
      "center_mm": [
        -32.5,
        93.0,
        175.0
      ],
      "geometry": "assets/models/audio_USB_A_plug_estimated.wmesh",
      "geometry_sha256": "f50e6f2dab28b8ee140046f2006ad5ff83bd321ba027de08614dd711af03c8da",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "audio_USB_TO_AUDIO_housing",
      "name": "USB audio board housing",
      "kind": "electronics reference",
      "size_mm": [
        53.0,
        14.600006103515625,
        23.5
      ],
      "center_mm": [
        0.0,
        93.0,
        175.0
      ],
      "geometry": "assets/models/audio_USB_TO_AUDIO_housing.wmesh",
      "geometry_sha256": "acba9c43526eeeb7a6051834b9dbe98d701f4573498b4e770c039bd5a1ca08ad",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "aux_300_reservation",
      "name": "Third-eye display \u00b7 1.28 in",
      "kind": "electronics reference",
      "size_mm": [
        40.400001525878906,
        8.0,
        37.5
      ],
      "center_mm": [
        0.0,
        -65.0,
        300.0
      ],
      "geometry": "assets/models/aux_300_reservation.wmesh",
      "geometry_sha256": "cc9dc3381625a67642d0beb7c0aa860dfc9f4495c5890f619321c856b7365fdd",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "aux_86_reservation",
      "name": "Heart display \u00b7 1.28 in",
      "kind": "electronics reference",
      "size_mm": [
        40.400001525878906,
        8.0,
        37.5
      ],
      "center_mm": [
        0.0,
        -59.0,
        86.0
      ],
      "geometry": "assets/models/aux_86_reservation.wmesh",
      "geometry_sha256": "f64dcf219af0e3819ee2024b852f8519e819f93802dae1aff1a547931fd83774",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "camera_Arducam_IMX708",
      "name": "Arducam camera",
      "kind": "electronics reference",
      "size_mm": [
        25.0,
        14.0,
        24.0
      ],
      "center_mm": [
        0.0,
        -67.5,
        262.0
      ],
      "geometry": "assets/models/camera_Arducam_IMX708.wmesh",
      "geometry_sha256": "2bc1bb1c34ed8799292c4b8b172bf8eba98aed499353fb27af8305a83d948796",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "cooler_RasTech_revision_check",
      "name": "Pi Active Cooler",
      "kind": "electronics reference",
      "size_mm": [
        63.5,
        13.699996948242188,
        42.5
      ],
      "center_mm": [
        -24.0,
        95.6500015258789,
        217.0
      ],
      "geometry": "assets/service-models/cooler_RasTech_revision_check.wmesh",
      "geometry_sha256": "c94024d29345072606d1c15d5019bd62c2419f27c3863c2f337379f0f585a1f1",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "microphone_SunFounder_CN0029",
      "name": "USB microphone",
      "kind": "electronics reference",
      "size_mm": [
        22.0,
        19.0,
        7.0
      ],
      "center_mm": [
        0.0,
        -17.0,
        330.0
      ],
      "geometry": "assets/models/microphone_SunFounder_CN0029.wmesh",
      "geometry_sha256": "0e5ad686897b6eb2864d527e85ebb161056f16d7fe5f83bcd5cb1288e4834dff",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "pi5_board_nominal",
      "name": "Raspberry Pi 5 board",
      "kind": "electronics reference",
      "size_mm": [
        85.0,
        1.5999984741210938,
        56.0
      ],
      "center_mm": [
        -12.0,
        86.79999923706055,
        216.0
      ],
      "geometry": "assets/service-models/pi5_board_nominal.wmesh",
      "geometry_sha256": "ecae49823c947e3a43ee1bd8b36a22ac536cb2743c6060c8d42b014b826a7310",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "pi_ports_reservation",
      "name": "Pi USB / Ethernet ports",
      "kind": "electronics reference",
      "size_mm": [
        22.0,
        18.0,
        50.0
      ],
      "center_mm": [
        19.0,
        98.5,
        215.0
      ],
      "geometry": "assets/service-models/pi_ports_reservation.wmesh",
      "geometry_sha256": "c8c060c72c74e0021f1e3161a1ede76a29ca68378f2fadcf27fe6e65fdadef8e",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "radar_MR60BHA2_reservation",
      "name": "Seeed radar module",
      "kind": "electronics reference",
      "size_mm": [
        35.0,
        25.0,
        54.0
      ],
      "center_mm": [
        0.0,
        -50.0,
        32.0
      ],
      "geometry": "assets/models/radar_MR60BHA2_reservation.wmesh",
      "geometry_sha256": "c65607f1cafe2124fbd9dad0e0e3e00fb1fcc8e982bef8e0a76047b7af8f22c1",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "speaker_left_published",
      "name": "Left speaker \u00b7 8 \u03a9 / 5 W",
      "kind": "electronics reference",
      "size_mm": [
        21.0,
        45.0,
        100.0
      ],
      "center_mm": [
        -100.5,
        15.0,
        206.0
      ],
      "geometry": "assets/models/speaker_left_published.wmesh",
      "geometry_sha256": "3464491d327a080a7d4534bf89bedf8b21d35d087c15ed2860ed23e49ec9c12f",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "speaker_right_published",
      "name": "Right speaker \u00b7 8 \u03a9 / 5 W",
      "kind": "electronics reference",
      "size_mm": [
        21.0,
        45.0,
        100.0
      ],
      "center_mm": [
        100.5,
        15.0,
        206.0
      ],
      "geometry": "assets/models/speaker_right_published.wmesh",
      "geometry_sha256": "19f3e7a9fea29650adcfcfb5ce06d7f22ccf5e737181dc4adc4f0cab7d74ecc4",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    },
    {
      "id": "waveshare_main_MANUFACTURER",
      "name": "Main touchscreen \u00b7 4 in",
      "kind": "electronics reference",
      "size_mm": [
        126.0,
        17.099998474121094,
        125.97509765625
      ],
      "center_mm": [
        0.0,
        -69.45000076293945,
        185.0
      ],
      "geometry": "assets/models/waveshare_main_MANUFACTURER.wmesh",
      "geometry_sha256": "4aa33e874465b63c181435b38253f9939e1f2526780df3cd7248d8f8957647f4",
      "measured_geometry": false,
      "material": null,
      "density_kg_m3": null,
      "heat_capacity_j_kg_k": null,
      "conductivity_w_m_k": null,
      "dissipation_w": null,
      "thermal_contact": null,
      "note": "Reference envelope, not an accepted thermal solid. Split PCB, packages, pads and heatsink into appropriate thermal regions before solving."
    }
  ],
  "loads": [
    {
      "id": "pi",
      "name": "Raspberry Pi5 board",
      "watts": 12,
      "kind": "Published approximate peak workload reference",
      "source": "https://www.raspberrypi.com/news/introducing-raspberry-pi-5/",
      "note": "About12W for pathological workloads in launch testing. Not a fixed TDP, universal maximum, or SoC-only heat source. The27W supply rating is not the board heat output."
    },
    {
      "id": "screen",
      "name": "4-inch720\u00d7720 display",
      "watts": 1.8,
      "kind": "Manufacturer standard consumption",
      "source": "https://www.waveshare.com/wiki/4inch_720x720_LCD",
      "note": "5V,360mA standard. Maximum current is TBD in the manufacturer table. Brightness/actual board and wiring must be measured."
    },
    {
      "id": "radar",
      "name": "MR60BHA2 kit",
      "watts": 0.8,
      "kind": "Manufacturer active-mode figure",
      "source": "https://wiki.seeedstudio.com/getting_started_with_mr60bha2_mmwave_kit/",
      "note": "0.5W standby,0.8W active;1.4W with Grove relay scenario.5V/1A is the specified input supply, not constant5W dissipation."
    },
    {
      "id": "cooler",
      "name": "Pi cooler",
      "watts": null,
      "kind": "Purchased cooler match pending",
      "source": "https://datasheets.raspberrypi.com/cooling/raspberry-pi-active-cooler-product-brief.pdf",
      "note": "Official reference lists1.09CFM maximum airflow and8000RPM\u00b115%. Neither is measured enclosure exhaust flow. No installed fan pressure curve or measured cooling resistance is available."
    },
    {
      "id": "audio",
      "name": "USB audio + two8\u03a9 speakers",
      "watts": null,
      "kind": "Input power unmeasured",
      "source": "https://www.waveshare.com/wiki/USB_TO_AUDIO",
      "note": "2.6W/channel is amplifier output into4\u03a9, not the USB input or output into the purchased8\u03a9 drivers. Speaker5W nameplates are not constant loads. Measure input with representative audio."
    },
    {
      "id": "aux1",
      "name": "Third-eye screen",
      "watts": null,
      "kind": "Input power unmeasured",
      "source": "https://www.waveshare.com/wiki/1.28inch_LCD_Module",
      "note": "Measure supply current at the actual backlight setting. Previous0.25W entry was an assumption."
    },
    {
      "id": "aux2",
      "name": "Heart screen",
      "watts": null,
      "kind": "Input power unmeasured",
      "source": "https://www.waveshare.com/wiki/1.28inch_LCD_Module",
      "note": "Measure independently and with both screens running; no measured load exists here."
    },
    {
      "id": "mic",
      "name": "USB microphone",
      "watts": null,
      "kind": "Input power unmeasured",
      "source": null,
      "note": "Exact active USB consumption and startup current still required."
    },
    {
      "id": "camera",
      "name": "Camera module",
      "watts": null,
      "kind": "Input power unmeasured",
      "source": null,
      "note": "Capture resolution/frame rate and actual module current matter. Not inferred from Pi CPU rail readings."
    },
    {
      "id": "power",
      "name": "Battery, regulators, hub and future modules",
      "watts": null,
      "kind": "Hardware unselected",
      "source": null,
      "note": "Regulator and hub losses add heat. Battery temperature cannot be inferred from CPU or mixed-air temperature."
    }
  ],
  "design_decisions": [
    {
      "title": "Keep the rear-facing Pi serviceable",
      "action": "Retain rear access. The modeled fan-intake, harness, GPIO-adapter and power-bay allowances have no intersections with modeled solids above1mm\u00b3. Preserve these zones when routing actual cables.",
      "status": "Geometry check only; actual plugs, fan throat and thermal performance unverified."
    },
    {
      "title": "Give warm air a deliberate exit",
      "action": "Compare the existing rear vents against a removable baffle/duct that separates cooler intake from its warm discharge. Locate the inlet after confirming the actual blower direction. Preserve the smooth outer helmet.",
      "status": "Candidate experiment; no untested duct or extra fan is added to printable CAD."
    },
    {
      "title": "Treat ears as speaker cavities",
      "action": "Keep the left/right speaker mounting and acoustic paths. Do not count grille area as cooling area unless the installed drivers, cloth and internal route actually pass air.",
      "status": "Installed flow resistance unmeasured."
    },
    {
      "title": "Test the head on external power first",
      "action": "Use an appropriately rated external supply for initial thermal qualification. Add the selected protected battery and converters as a separate tested configuration; keep their bay out of the hot discharge path.",
      "status": "Recommended test sequence; internal battery is still an option, not a modeled zero-watt component."
    },
    {
      "title": "Add an exhaust fan only after comparison",
      "action": "Compare baseline, separated intake/discharge and an optional selected case fan at matched load, ambient and noise. Use operating pressure-flow data and include fan electrical heat; the Pi blower free-air rating is not helmet exhaust flow.",
      "status": "No fan size or cooling guarantee selected from the diagnostic."
    }
  ],
  "cases": [
    {
      "id": "B0",
      "name": "Open-bench baseline",
      "setup": "Actual Pi, installed cooler and all intended peripherals on external power. Record exact workload, fan policy and room conditions.",
      "purpose": "Establish heat/load behavior and sensor placement; not enclosure validation."
    },
    {
      "id": "H0",
      "name": "Complete head \u00b7 normal use",
      "setup": "Assembled shell, actual wiring and covers; repeat B0 workload with screens, camera, radar and representative audio.",
      "purpose": "Measure the enclosure penalty against the matched open-bench baseline."
    },
    {
      "id": "H1",
      "name": "Complete head \u00b7 sustained maximum intended use",
      "setup": "Highest intended simultaneous application load and brightness, representative loud audio, selected room-temperature upper limit.",
      "purpose": "Check steady temperatures, throttling and power stability; CPU-only stress is insufficient."
    },
    {
      "id": "D1",
      "name": "Separated intake and warm discharge",
      "setup": "Repeat H1 with a removable experimentally defined baffle; verify it preserves connector, rear-cover and microphone access.",
      "purpose": "Measure whether reduced recirculation improves cooling without an extra fan."
    },
    {
      "id": "F1",
      "name": "Optional exhaust fan",
      "setup": "Repeat H1 with a selected fan and documented inlet/outlet openings, pressure-flow curve and operating control.",
      "purpose": "Compare temperature, power, airflow and microphone noise at the same workload."
    },
    {
      "id": "P1",
      "name": "Selected battery and converters",
      "setup": "Only after a protected pack, compatible power system and limits are selected. Separate discharge and supported simultaneous-use/charging conditions.",
      "purpose": "Measure battery/converter heat and voltage stability; do not infer battery safety from CPU temperature."
    },
    {
      "id": "X1",
      "name": "Cooling fault response",
      "setup": "Supervised engineering test only after component limits and automatic stop behavior are reviewed. Prefer modeled faults and benign alarm checks before physical airflow restriction.",
      "purpose": "Verify detection and controlled workload reduction/shutdown without treating Pi throttling as protection for the entire build."
    }
  ],
  "proposed_criteria": {
    "scope": "Project engineering targets, not certification criteria or universal safety limits. Review against selected components and intended use.",
    "cpu_target_c": 75,
    "cpu_test_stop_c": 80,
    "minimum_run_s": 1800,
    "steady_window_s": 600,
    "maximum_sample_gap_s": 15,
    "max_abs_slope_c_per_min": 0.05,
    "steady_span_c": 1.0,
    "power_span_fraction": 0.05,
    "calibration_required": true,
    "battery_limit_c": null,
    "shell_material_limit_c": null,
    "touch_surface_limit_c": null,
    "explanation": "Check ambient and every monitored critical temperature over the final10minutes after at least30minutes; extend the run if it has not settled. Repeat trials. No temperature target alone approves the build."
  },
  "simulation_gates": [
    "Freeze actual components, wiring, manufacturing material and named interfaces; unknown dissipation never becomes zero.",
    "Build coupled fluid/solid regions for board, packages, pads, heatsink and shell; define battery/converter losses separately without counting downstream power twice.",
    "Measure or obtain actual fan pressure-flow curves and control behavior; account for inlet loss, grilles, filters and recirculation.",
    "Repair rejected cells and refine narrow features; perform at least three systematically refined meshes and report discretization uncertainty for temperature, vent flow and pressure.",
    "Run a zero-heat equilibrium check and a verified heat-transfer reference; check time-step and external-domain sensitivity.",
    "Require mass and full transient energy closure, including stored energy and boundary transport; stable residuals alone do not validate a solution.",
    "Calibrate uncertain contact/flow parameters using a designated baseline; validate on separate held-out closed-head conditions with sensor uncertainty and repeatability.",
    "Release only when all selected component limits, touch/material limits, failure response and maker first-fit checks pass."
  ],
  "sources": [
    {
      "title": "Raspberry Pi thermal management and fan control",
      "url": "https://www.raspberrypi.com/documentation/computers/raspberry-pi.html",
      "use": "CPU throttling begins80\u201385C; read actual installed fan policy, which can differ from documentation."
    },
    {
      "title": "Manufacturer cooling bench comparison",
      "url": "https://www.raspberrypi.com/news/heating-and-cooling-raspberry-pi-5/",
      "use": "An open bench, a cooler and a case produce different outcomes; use paired real tests, not article temperatures as calibration."
    },
    {
      "title": "NASA CFD verification and validation",
      "url": "https://www.grc.nasa.gov/www/wind/valid/tutorial/overview.html",
      "use": "Separate numerical verification from comparison with experiment."
    },
    {
      "title": "NASA grid-convergence guidance",
      "url": "https://www.grc.nasa.gov/www/wind/valid/tutorial/spatconv.html",
      "use": "Systematic refinement and reported numerical uncertainty."
    },
    {
      "title": "OpenFOAM conjugate heat-transfer solver",
      "url": "https://doc.openfoam.com/2306/tools/processing/solvers/rtm/heat-transfer/chtMultiRegionFoam/",
      "use": "Coupled solid and fluid heat transfer is needed, not just an air-only heated boundary."
    }
  ]
}
