{
 "run_date": "2026-06-21",
 "decision_item": "RFS-011",
 "artifact": "cots-quote-comparison",
 "source_quote_packet": {
  "artifact": "cots-quote-packet",
  "run_date": "2026-06-20",
  "href": "cots-quote-packet.html",
  "json_href": "assets/rfs/cots-quote-packet.json"
 },
 "score_total": 100,
 "score_gates": [
  {
   "key": "exact_configuration",
   "label": "Exact configuration named",
   "weight": 15,
   "hard_stop": true,
   "quote_field": "product, detector core, lens, firmware, included payload components",
   "pass_evidence": "The quote names the exact sellable configuration and included integration hardware.",
   "fail_signal": "Datasheet family names or substituted lens options cannot close RFS-011."
  },
  {
   "key": "raw_data_path",
   "label": "Raw or radiometric data path",
   "weight": 20,
   "hard_stop": true,
   "quote_field": "raw/pre-AGC frame export, bit depth, API/SDK, file format, metadata sidecar",
   "pass_evidence": "The vendor confirms replayable raw or radiometric frames, not only display video.",
   "fail_signal": "Post-AGC video, closed cloud export, or screenshots reject the payload as the primary branch."
  },
  {
   "key": "calibration_metadata",
   "label": "Calibration metadata preserved",
   "weight": 15,
   "hard_stop": true,
   "quote_field": "NUC state, calibration coefficients, shutter/reference behavior, timestamp/geotag metadata",
   "pass_evidence": "Frames can be replayed with detector state and calibration context.",
   "fail_signal": "No calibration state means false-positive and radiometry evidence cannot be audited."
  },
  {
   "key": "model_geometry_match",
   "label": "Model geometry match",
   "weight": 15,
   "hard_stop": false,
   "quote_field": "HFOV/VFOV, EFL or focal length, F-number, frame rate, focus setting",
   "pass_evidence": "The quoted row can be rerun against the existing 3 cm target and coverage model.",
   "fail_signal": "Different optics or slow frame timing require a new screen before selection."
  },
  {
   "key": "payload_integration",
   "label": "Payload integration fit",
   "weight": 10,
   "hard_stop": false,
   "quote_field": "mass, power, envelope, mount, thermal behavior, weathering, airframe lock-in",
   "pass_evidence": "The product fits the accepted 150 mm / 2 kg / fixed-wing payload basis.",
   "fail_signal": "Integration overrun reopens the airframe or payload-envelope assumption."
  },
  {
   "key": "budget_ceiling",
   "label": "Budget ceiling fit",
   "weight": 15,
   "hard_stop": false,
   "quote_field": "unit price at required payload count, SDK/license cost, spares, calibration service, lead time",
   "pass_evidence": "The unit price fits the selected target-area ceiling without hiding support costs.",
   "fail_signal": "An over-ceiling quote becomes budget-replan evidence, not a requirements closeout."
  },
  {
   "key": "sample_evidence",
   "label": "Sample evidence supplied",
   "weight": 10,
   "hard_stop": true,
   "quote_field": "sample frame, metadata sidecar, reference frame, no-fire rural scene, warm target example",
   "pass_evidence": "A small evidence bundle can enter the validation pipeline before purchase.",
   "fail_signal": "No sample evidence leaves the project with a procurement claim rather than testable data."
  }
 ],
 "decision_rules": [
  {
   "key": "cots_first_pass",
   "title": "COTS-first pass",
   "condition": "All hard-stop gates pass, weighted score is at least 85, and unit cost fits the selected target-area ceiling.",
   "project_action": "RFS-011 can be closeable with recorded stakeholder sign-off and the quote evidence path.",
   "todo_reading": "Keep RFS-019 scoped to the exact COTS product geometry before restarting custom prescription work."
  },
  {
   "key": "parallel_path",
   "title": "Parallel COTS/custom path",
   "condition": "All hard-stop gates pass, but score is 70-84 or price/lead-time risk needs a custom fallback.",
   "project_action": "Run the COTS evidence branch and custom prescription maturation in parallel.",
   "todo_reading": "RFS-011 can close only as a bounded risk decision, not as proof that COTS is sufficient."
  },
  {
   "key": "budget_replan",
   "title": "Budget or mission replan",
   "condition": "Data gates pass, but the quote exceeds the target-area unit-cost ceiling or payload-count basis.",
   "project_action": "Record the quote as evidence for a smaller target area, larger budget, or altitude/airframe change.",
   "todo_reading": "RFS-011 remains open until the changed budget or mission assumption is explicitly accepted."
  },
  {
   "key": "reject_primary",
   "title": "Reject as primary payload",
   "condition": "Any hard-stop gate fails, especially raw data, calibration metadata, or sample evidence.",
   "project_action": "Do not buy the product as the RFS primary payload; use it only as integration-risk evidence.",
   "todo_reading": "Keep the COTS/custom decision open and continue with the next quote row or custom reference."
  }
 ],
 "quote_record_fields": [
  "vendor and reseller contact",
  "exact product, detector core, lens, and firmware/configuration",
  "target-area basis used for the unit-cost ceiling",
  "raw/radiometric frame export evidence",
  "calibration metadata and NUC-state evidence",
  "sample frame bundle path",
  "all-up mass, power, and envelope",
  "unit cost at required payload count plus SDK, spares, and service costs",
  "lead time, export limits, warranty, and support terms",
  "reviewer score, decision rule, stakeholder name, date, and source note"
 ],
 "comparison_rows": [
  {
   "key": "ici_8640p_25mm",
   "priority": 1,
   "name": "ICI 8640 P, 25 mm lens class",
   "class_label": "COTS radiometric camera",
   "source_quote_reason": "Closest COTS-adjacent match to the custom wide-field reference while keeping strong raw output.",
   "model_snapshot": {
    "hfov_deg": 24.8,
    "fnum": 1.0,
    "gsd_120m_cm": 8.2,
    "coverage_120m_ha_h": 181.0,
    "snr_1px": 375.4,
    "status": "Quote as COTS candidate",
    "raw_path": "Strong: local baseline records 14-bit raw/radiometric output and SDK/USB integration.",
    "procurement_action": "Quote beside the custom reference because coverage is similar but optical risk is lower."
   },
   "quote_ceiling": {
    "500_ha": {
     "required_payloads": 3,
     "max_unit_cost_usd": 22000.0
    },
    "1000_ha": {
     "required_payloads": 6,
     "max_unit_cost_usd": 11000.0
    }
   },
   "blank_score_fields": {
    "exact_configuration": "unscored",
    "raw_data_path": "unscored",
    "calibration_metadata": "unscored",
    "model_geometry_match": "unscored",
    "payload_integration": "unscored",
    "budget_ceiling": "unscored",
    "sample_evidence": "unscored"
   },
   "default_next_action": "Score the returned quote against hard stops before choosing COTS-first, parallel, budget replan, or reject-primary.",
   "model_warning": "Model row: 24.8 deg HFOV, F/1.0, 181 ha/h at 120 m, Quote as COTS candidate."
  },
  {
   "key": "hadron_640r_32deg",
   "priority": 2,
   "name": "Hadron 640R fixed module",
   "class_label": "integrated COTS module",
   "source_quote_reason": "Fast integrated 640-class module that may reduce integration effort if raw export is usable.",
   "model_snapshot": {
    "hfov_deg": 32.0,
    "fnum": 1.0,
    "gsd_120m_cm": 10.8,
    "coverage_120m_ha_h": 236.0,
    "snr_1px": 166.1,
    "status": "Conditional quote gate",
    "raw_path": "Conditional: radiometric Boson-family core, but exact raw/pre-AGC export must be confirmed.",
    "procurement_action": "Quote only if the exact radiometric/raw data path and thermal calibration hooks are acceptable."
   },
   "quote_ceiling": {
    "500_ha": {
     "required_payloads": 3,
     "max_unit_cost_usd": 22000.0
    },
    "1000_ha": {
     "required_payloads": 5,
     "max_unit_cost_usd": 13200.0
    }
   },
   "blank_score_fields": {
    "exact_configuration": "unscored",
    "raw_data_path": "unscored",
    "calibration_metadata": "unscored",
    "model_geometry_match": "unscored",
    "payload_integration": "unscored",
    "budget_ceiling": "unscored",
    "sample_evidence": "unscored"
   },
   "default_next_action": "Score the returned quote against hard stops before choosing COTS-first, parallel, budget replan, or reject-primary.",
   "model_warning": "Model row: 32.0 deg HFOV, F/1.0, 236 ha/h at 120 m, Conditional quote gate."
  },
  {
   "key": "wide_45_640_f1",
   "priority": 3,
   "name": "45 deg 640-class radiometric camera",
   "class_label": "COTS drone-camera class",
   "source_quote_reason": "Representative 45 degree 640-class drone-camera path with strong first-order SNR margin.",
   "model_snapshot": {
    "hfov_deg": 45.0,
    "fnum": 1.0,
    "gsd_120m_cm": 15.5,
    "coverage_120m_ha_h": 341.0,
    "snr_1px": 105.8,
    "status": "Physics pass, product gate open",
    "raw_path": "Variable: Vue Pro R / XT2 / Tau / Duet-class products differ in raw access and lifecycle status.",
    "procurement_action": "Do not buy generically; ask vendors for raw radiometry, calibration hooks, mass, power, and quote."
   },
   "quote_ceiling": {
    "500_ha": {
     "required_payloads": 2,
     "max_unit_cost_usd": 33000.0
    },
    "1000_ha": {
     "required_payloads": 3,
     "max_unit_cost_usd": 22000.0
    }
   },
   "blank_score_fields": {
    "exact_configuration": "unscored",
    "raw_data_path": "unscored",
    "calibration_metadata": "unscored",
    "model_geometry_match": "unscored",
    "payload_integration": "unscored",
    "budget_ceiling": "unscored",
    "sample_evidence": "unscored"
   },
   "default_next_action": "Score the returned quote against hard stops before choosing COTS-first, parallel, budget replan, or reject-primary.",
   "model_warning": "Model row: 45.0 deg HFOV, F/1.0, 341 ha/h at 120 m, Physics pass, product gate open."
  },
  {
   "key": "wide_69_640_f1",
   "priority": 4,
   "name": "69 deg 640-class mapping camera",
   "class_label": "wide COTS drone-camera class",
   "source_quote_reason": "Largest first-order coverage option, useful if RFS prioritizes single-payload coverage.",
   "model_snapshot": {
    "hfov_deg": 69.0,
    "fnum": 1.0,
    "gsd_120m_cm": 25.8,
    "coverage_120m_ha_h": 565.0,
    "snr_1px": 38.4,
    "status": "Physics pass, product gate open",
    "raw_path": "Variable: wide fixed-lens cameras can be radiometric, but exact raw/pre-AGC access is product-specific.",
    "procurement_action": "Quote only as a find-only area-survey branch; reject if raw frames or calibration state are hidden."
   },
   "quote_ceiling": {
    "500_ha": {
     "required_payloads": 1,
     "max_unit_cost_usd": 66000.0
    },
    "1000_ha": {
     "required_payloads": 2,
     "max_unit_cost_usd": 33000.0
    }
   },
   "blank_score_fields": {
    "exact_configuration": "unscored",
    "raw_data_path": "unscored",
    "calibration_metadata": "unscored",
    "model_geometry_match": "unscored",
    "payload_integration": "unscored",
    "budget_ceiling": "unscored",
    "sample_evidence": "unscored"
   },
   "default_next_action": "Score the returned quote against hard stops before choosing COTS-first, parallel, budget replan, or reject-primary.",
   "model_warning": "Model row: 69.0 deg HFOV, F/1.0, 565 ha/h at 120 m, Physics pass, product gate open."
  },
  {
   "key": "ici_8640p_35mm",
   "priority": 5,
   "name": "ICI 8640 P, 35 mm lens class",
   "class_label": "COTS radiometric camera",
   "source_quote_reason": "Focused-zone COTS-adjacent option that may be useful for a smaller first trial.",
   "model_snapshot": {
    "hfov_deg": 17.6,
    "fnum": 1.0,
    "gsd_120m_cm": 5.8,
    "coverage_120m_ha_h": 127.0,
    "snr_1px": 757.2,
    "status": "Quote as COTS candidate",
    "raw_path": "Strong: local baseline records 14-bit raw/radiometric output and SDK/USB integration.",
    "procurement_action": "Quote as the strongest COTS-adjacent surrogate for focused-zone trials."
   },
   "quote_ceiling": {
    "500_ha": {
     "required_payloads": 4,
     "max_unit_cost_usd": 16500.0
    },
    "1000_ha": {
     "required_payloads": 8,
     "max_unit_cost_usd": 8250.0
    }
   },
   "blank_score_fields": {
    "exact_configuration": "unscored",
    "raw_data_path": "unscored",
    "calibration_metadata": "unscored",
    "model_geometry_match": "unscored",
    "payload_integration": "unscored",
    "budget_ceiling": "unscored",
    "sample_evidence": "unscored"
   },
   "default_next_action": "Score the returned quote against hard stops before choosing COTS-first, parallel, budget replan, or reject-primary.",
   "model_warning": "Model row: 17.6 deg HFOV, F/1.0, 127 ha/h at 120 m, Quote as COTS candidate."
  }
 ],
 "meeting_closeout_rule": "Do not mark RFS-011 complete until a selected row has quote evidence, hard-stop results, weighted score, stakeholder sign-off, and source note.",
 "evidence_links": [
  {
   "label": "COTS quote packet",
   "href": "cots-quote-packet.html"
  },
  {
   "label": "COTS payload screen",
   "href": "cots-fleet-screen.html"
  },
  {
   "label": "Requirements sign-off matrix",
   "href": "requirements-signoff-matrix.html"
  },
  {
   "label": "Evidence intake ledger",
   "href": "requirements-evidence-ledger.html"
  },
  {
   "label": "Coverage sizing grid",
   "href": "coverage-sizing-grid.html"
  },
  {
   "label": "Validation plan",
   "href": "field-test.html"
  }
 ]
}
