{
  "design_id": "emberscope-starter-freeform-v1",
  "revision": "2026-06-09",
  "source_hash_sha256": "1fef0451d621f2d117af4200fc60abd90b62ad6310e727c4e2d271988fe83961",
  "overall_status": "screening_possible_not_prototype_ready",
  "structural_findings": [],
  "computed_envelope": {
    "included_component_ids": [
      "entrance_aperture",
      "lwir_window_allowance",
      "stray_light_baffle_allowance",
      "m1_primary",
      "m2_secondary",
      "m3_tertiary",
      "image_sensor",
      "detector_electronics_allowance",
      "optical_bench_allowance"
    ],
    "min_mm": [
      -29.0,
      -24.690445775260184,
      -56.0
    ],
    "max_mm": [
      29.0,
      41.06925706586401,
      16.0
    ],
    "extent_mm": [
      58.0,
      65.7597028411242,
      72.0
    ],
    "max_extent_mm": 72.0
  },
  "computed_mass_proxy_kg": 0.663849400629727,
  "gates": [
    {
      "id": "schema_and_components",
      "label": "Spec has required fields, unique component IDs, and supported geometry",
      "status": "pass",
      "measured": 0,
      "limit": 0,
      "rationale": "Structural failures stop downstream exports from being trusted."
    },
    {
      "id": "optical_package_envelope",
      "label": "Optical/package components fit inside the payload envelope target",
      "status": "pass",
      "measured": 72.0,
      "limit": 150.0,
      "rationale": "Computed from component geometry in the source spec."
    },
    {
      "id": "mass_budget",
      "label": "Mass proxy remains below the payload budget",
      "status": "pass",
      "measured": 0.6638,
      "limit": 2.0,
      "rationale": "Summed from component mass proxies and mirror area estimates."
    },
    {
      "id": "edge_throughput",
      "label": "Edge-field throughput clears the screening floor",
      "status": "pass",
      "measured": 0.38372093023255816,
      "limit": 0.3,
      "rationale": "Uses the current ray-trace evidence tied to this source spec."
    },
    {
      "id": "focus_plane_consistency",
      "label": "Sensor plane matches the computed on-axis focal plane",
      "status": "pass",
      "measured": {
        "center_error_um": 0.0,
        "normal_angle_deg": 0.0,
        "sensor_rms_um": 6485.040396983787,
        "passes": true
      },
      "limit": {
        "center_error_um": 0.001,
        "normal_angle_deg": 0.0001
      },
      "rationale": "Prevents stale detector placement from passing as current geometry."
    },
    {
      "id": "freeform_departure_screen",
      "label": "Freeform departure remains within the first screening bound",
      "status": "pass",
      "measured": 9050.879,
      "limit": 10000.0,
      "rationale": "This is a manufacturability screen, not a vendor quote."
    },
    {
      "id": "prototype_edge_rms",
      "label": "Edge RMS is below the prototype-ready blur limit",
      "status": "fail",
      "measured": 4524.285,
      "limit": 34.0,
      "rationale": "Current starter-freeform shape remains far from detector-ready."
    },
    {
      "id": "detector_energy_gate",
      "label": "2x2-pixel detector-energy fraction is known and sufficient",
      "status": "not_evaluated",
      "measured": null,
      "limit": 0.5,
      "rationale": "This gate must close before the design can be called prototype-ready."
    }
  ],
  "automated_test_plan": [
    "Validate source spec structure and stable component IDs.",
    "Regenerate layout, Blender, CAD, manifest, and validation artifacts from the source hash.",
    "Check optical/package envelope, mass proxy, throughput, focus, freeform departure, edge RMS, and detector-energy gates.",
    "Fail CI when structural or feasibility gates regress; report prototype blockers separately while the design remains a screening reference."
  ]
}
