{
  "version": "1.0.0",
  "approved": "2026-10-12",
  "title": "JS Imaging Thermal Delivery Standard",
  "reference": "Maintained Rochford House thermal workflow",
  "status": "Approved delivery requirements; deployment and dataset readiness tracked separately for each edition",
  "canonical": "https://jsimaging.llc/standards#thermal-delivery",
  "clientDataIncluded": false,
  "eligibility": "Inventory every published project containing thermal imagery. Provide a Thermal texture layer on its 3D model when authorized source imagery can be reliably registered to visible geometry. Document missing data or registration as an outstanding capability; do not label an imagery-only viewer a completed thermal-model delivery.",
  "layers": {
    "choices": [
      "Visible / RGB",
      "Thermal"
    ],
    "defaultPalette": "Rainbow",
    "defaultRange": "Tight, documented, dataset-specific range shared across comparable captures; never copy another project's temperature values",
    "uncoveredGeometry": "Retain clearly identified RGB or no-data regions. Do not extrapolate thermal values onto unsupported surfaces.",
    "preservation": "Switch appearance without replacing geometry, changing the camera, clearing results or changing client saves, masks, access, units or model-loading fallbacks."
  },
  "sourceReview": "Double-click or double-tap a supported thermal surface in navigation mode to open the corresponding source image and identify the sampled location. Provide an accessible Review source image alternative. A drag, pan, pinch or measurement placement must not trigger photo review. Explain unavailable source correspondence rather than choose a misleading image.",
  "measurements": {
    "core": "Retain measurement-standard.json 1.0.0: Estimated distance, Estimated plan area and Estimated ΔZ, with the same units and Finish / Undo point / Cancel / Clear semantics.",
    "deltaT": "Estimated ΔT is thermal contrast or temperature difference, not height. State whether it comes from authorized radiometric source pixels or palette-derived visual estimation. Never infer calibrated temperatures solely from the displayed rainbow colours.",
    "deltaZ": "Estimated ΔZ is a supported relative height difference, not temperature and not absolute MSL elevation.",
    "radiometricResults": "Where authorized, verified radiometric source pixels exist, label apparent surface-temperature statistics as estimates, preserve the source provenance and capture conditions, and disclose sampled coverage. Missing or invalid samples are no data, never zero. Palette changes do not change numerical values.",
    "roofArea": "Distinguish estimated horizontal plan area from estimated sloped roof-face area. State the computation basis and assumptions; corner-only planar estimation is not detailed mesh-following surface area. Use genuine supported 3D picks and relative ΔZ only; reject invalid outlines.",
    "units": "Convert existing results and exports live. Temperature differences use difference conversion, not the absolute-temperature offset; spatial units and temperature units are separately labeled.",
    "editing": "Named results, individual removal and supported point editing extend the locked basic toolkit. Preserve completed results and specialty annotations when cancelling a draft."
  },
  "clientGuide": {
    "required": true,
    "title": "Understanding thermal contrast and relative height",
    "integration": "Include the maintained client delta guide in Help / Information & Limitations and the thermal workflow. Preserve concurrent guide improvements; keep one versioned reference rather than a divergent copy.",
    "distinction": "Explain ΔT as temperature difference and ΔZ as height difference in plain language.",
    "limitations": "Thermal patterns are a screening aid, not diagnoses of moisture, leaks, electrical faults, insulation defects, material condition or causation. Roof material, reflections, shade, weather and capture conditions affect apparent patterns. Do not publish a universal temperature-difference threshold as proof of a defect. Confirm concerns through appropriate field inspection.",
    "exports": "Carry estimate labels, units, source basis, sampled coverage and applicable limitations into exported views and reports."
  },
  "delivery": {
    "loading": "Preserve the usable RGB opening, loading orbit, progressive detail and slower-network escape. Show honest thermal preparation, readiness and error states; readiness requires visible thermal rendering, not just a downloaded dataset.",
    "compatibility": "Honor negotiated content encoding and version changed assets. Verify RGB-first then Thermal as well as direct Thermal opening; create or replace GPU textures safely when dimensions change.",
    "privacy": "Preserve each public/private edition's existing restrictions, masks and approved location-data policy. No private source URLs, coordinates, credentials or client datasets belong in this public specification.",
    "branding": "Use delivery-standard.json typography, colour, focus and touch standards and the unchanged original company logo."
  },
  "releaseGate": [
    "Current maintained source and production identity verified; concurrent changes reconciled",
    "Thermal source, registration, retained footprint, source correspondence and no-data coverage recorded",
    "Visible RGB-first-to-Thermal transition; repeated switching and palette/range changes",
    "Source-image review through pointer, touch and accessible control; unchanged camera manipulation",
    "Known source-pixel checks and numerical invariance across palette changes",
    "Estimated thermal / spatial units and supported area / ΔZ results; invalid picks and outlines",
    "Desktop, phone and tablet layouts; browser-specific and physical-device checks accurately distinguished",
    "Slow-network loading, bounded failure, RGB fallback and memory-aware detail",
    "Rendered exports and client guide; access, masks, files, feedback and saves preserved",
    "Release IDs, rollback, standards versions, per-edition completed checks and outstanding capabilities recorded"
  ],
  "contractAuthority": {
    "version": "1.0.0",
    "url": "https://jsimaging.llc/JS-Imaging-Service-Agreement-v1.0.0.pdf",
    "sha256": "54b0e84933a7a8f7faacf6a51ea2193e9f51bf12b694d08596db9dcc9d926f00",
    "rule": "The contract governs. Publications, estimates, software and workflows conform outward from it. Revise the contract explicitly before changing governing business terms. Existing executed agreements are not changed by publication updates."
  }
}
