{
  "schemaVersion": "1.0",
  "standardVersion": "1.6",
  "name": "JS Imaging property client delivery",
  "scope": "Approved product requirements; thermal rollout and dataset readiness tracked per edition",
  "thermalStandard": {
    "version": "1.0.0",
    "specificationUrl": "https://jsimaging.llc/thermal-delivery-standard.json",
    "reference": "Maintained Rochford House thermal workflow"
  },
  "canonical": {
    "url": "https://jsimaging.llc/standards",
    "specificationUrl": "https://jsimaging.llc/delivery-standard.json",
    "availableAtBuild": true
  },
  "brand": {
    "logo": "Full unchanged JS Imaging LLC mark",
    "logoUrl": "https://jsimaging.llc",
    "fonts": [
      "IvyPresto Display Light",
      "Neue Haas Unica",
      "IBM Plex Mono"
    ],
    "palette": {
      "ink": "#111418",
      "panel": "#171B20",
      "line": "#353B42",
      "paper": "#F5F2EA",
      "muted": "#AEB5BB",
      "accent": "#D2A85E",
      "ready": "#7FD2B6"
    }
  },
  "deliverables": [
    {
      "name": "Clean orthophoto",
      "behavior": "Compare competing reconstructions at matching roof locations and select the clearest result. Sampling is recorded without claiming certified accuracy."
    },
    {
      "name": "Surface model and hillshade",
      "behavior": "Deliver the digital surface model and its hillshade. Offer multidirectional, northwest and southeast illumination with an orthophoto underlay. Structures and vegetation remain part of surface relief."
    },
    {
      "name": "Property model",
      "behavior": "Stream an upright, property-centered model with an authored opening view and the approved retained footprint. Keep useful roof and client-area overviews."
    },
    {
      "name": "Thermal model and source review",
      "behavior": "For projects containing suitable authorized thermal data, follow thermal-delivery-standard.json: RGB / Thermal appearance, tight dataset-specific rainbow default, supported source-image review, estimated ΔT / area / ΔZ tools, client delta guide and clear no-data coverage. Track absent registration or data as outstanding, never fabricate a texture."
    },
    {
      "name": "Native detail preview",
      "behavior": "Provide a deliberately small inspection section using original finest-detail geometry and textures. The full property remains the opening scene."
    },
    {
      "name": "Source-photo collection",
      "behavior": "Include the complete authorized set: thumbnails, review previews, full resolution and individual original downloads. Provide arrows, thumbnails and filename, flight and viewing-angle filters."
    },
    {
      "name": "Capture context",
      "behavior": "Show the selected camera position and direction on the map or in the model when metadata supports it. Cluster dense map markers and keep the roof visible."
    },
    {
      "name": "Orbit video",
      "behavior": "When supplied, use the owner-rendered orbit during loading and offer the unchanged original as a downloadable file."
    },
    {
      "name": "Client files and quality report",
      "behavior": "Show authorized original imagery, surface products, derived hillshade, processing report and video with names, dates, types, sizes, search and resumable transfers. Do not promise an archive or absent source product."
    },
    {
      "name": "Review notes and exports",
      "behavior": "Allow local visual observations, estimated distance and plan area, note import/export and branded PDF views. Explain local browser storage and the need to export a copy."
    }
  ],
  "loading": {
    "settledOpeningPass": true,
    "finestRefinementAfterReveal": true,
    "nativePreviewRetained": true,
    "muted": true,
    "playsInline": true,
    "loop": true,
    "defaultSpeed": 0.5,
    "displayMaxPixels": {
      "desktop": 360,
      "phone": 280
    },
    "manualContinueAfterSeconds": 20,
    "requireVisibleGeometry": true,
    "layersEscape": true,
    "boundedTransientRetries": 2,
    "resetStaleFailuresOnVisit": true,
    "videoRangeDelivery": "Versioned URLs and no-store CDN headers when partial-response caching is unsafe"
  },
  "controls": [
    "Layers",
    "Photos",
    "Files",
    "Tutorial",
    "Feedback",
    "Fullscreen"
  ],
  "minimumPrimaryTouchPixels": 44,
  "estimationNotice": "ALL MEASUREMENTS ARE ESTIMATES · VISUAL REFERENCE ONLY",
  "tutorial": {
    "firstUsableViewPerSession": true,
    "replay": true,
    "navigation": [
      "Back",
      "Next",
      "Skip",
      "Finish",
      "Escape"
    ],
    "visibleTargets": true,
    "restoreStartingViewType": true
  },
  "referenceDocuments": {
    "basis": [
      "Property client delivery guidance",
      "Replication workflow",
      "Project brand guidance"
    ],
    "templatePathsRelativeToStandardsWorkspace": [
      "PROPERTY-CLIENT-DELIVERY.md",
      "templates/property-client-delivery-v1/REPLICATION.md",
      "templates/property-client-delivery-v1/BRAND-GUIDANCE.md",
      "templates/property-client-delivery-v1/property-delivery-template.json",
      "templates/property-client-delivery-v1/source/"
    ]
  },
  "requirements": [
    {
      "id": "viewing",
      "title": "Opening and detail behavior",
      "requirements": [
        "Open at a useful property-level angle chosen from the actual data. Drag or use one finger to orbit; wheel or pinch zooms; right-drag or two fingers pans. Home view restores the authored camera. Roof focus and Client area provide separate useful views.",
        "The compact, muted, inline orbit loops while a settled opening pass is prepared. Reveal a usable property overview before demanding every finest subpixel tile. Continue sharpening the same model in the background, retaining original native detail for closer inspection.",
        "The reference loading player caps display at 360 pixels on desktop and 280 pixels on phones. Half-speed playback is the default when appropriate to the supplied export. Validate the real frame count and duration, preserve source frames when retiming, avoid upscaling weak footage, respect reduced motion and provide a play control when autoplay is blocked.",
        "After 20 seconds, offer Open available view only when rendered geometry exists. Do not force a partial scene on the client. Layers must cancel a delayed loading cover and return to imagery. Recover memory pressure beneath the cover; retry transient failures within a bounded policy and clear stale failure state on a new model visit.",
        "Use capability and measured-performance adaptation for memory, parallel decoding, screen detail and pixel density. Preserve geometry and texture dimensions during supported GPU texture conversion. Do not select a browser budget solely by its name or viewport. Record real browser coverage; a simulated phone profile is not native Safari verification."
      ]
    },
    {
      "id": "brand",
      "title": "Brand and usable controls",
      "requirements": [
        "Keep the unchanged full JS Imaging LLC logo, linked to the main website. Use the dark frame, gold accents and approved canonical typography: IvyPresto Display Light headings, Neue Haas Unica body and controls, and IBM Plex Mono technical labels. The imagery remains the subject.",
        "The delivery header offers Layers, Photos, Files, Tutorial, Feedback and fullscreen. Use readable labels and at least 44-pixel primary phone targets. Audit overlays, controls, safe areas, scrolling and portrait/landscape layouts. Photo camera context moves below the review area on phones.",
        "Tutorial begins once per browser session after a usable view is ready and remains replayable. Point gold arrows at visible controls, await asynchronously opened views, and move the card away from its target. Support Back, Next, Skip, Finish, Escape, keyboard focus and reduced motion. Restore the starting view type and clear temporary highlights without creating notes, measurements, downloads or messages.",
        "Preserve the shared Feedback control and its clear problem-reporting purpose. Keep sanitized feedback context and a visible accepted/submitted state. Preserve the working photo review, file library and viewer functions while updating documentation."
      ]
    },
    {
      "id": "limits",
      "title": "Estimation notices and access",
      "requirements": [
        "Keep the persistent notice: ALL MEASUREMENTS ARE ESTIMATES · VISUAL REFERENCE ONLY. Provide full Information & Limitations, including applicable notes in prints and exports. Plan area does not include roof pitch. Surface sampling, camera metadata and photogrammetry are visual references rather than certified survey or roof-condition diagnosis. Confirm apparent concerns through appropriate field inspection.",
        "Select access from the owner’s instruction. Unlisted, noindex, no-password delivery is accessible to anyone with the link; it is not authenticated confidentiality. Keep project storage isolated and originals allowlisted. Documentation must not expose client identifiers, imagery, coordinates, catalogs, credentials, source folders or private service addresses. Retain the deployment’s existing access and indexing policies."
      ]
    },
    {
      "id": "quality",
      "title": "Release verification and reuse",
      "requirements": [
        "Inventory and reconcile the complete source; document visual orthophoto selection, source references, footprint, authored camera, applicable tools and deliberate omissions. Derive each new property’s metadata and geometry rather than inheriting another client’s values.",
        "Verify MIME types, originals and selected model bytes, complete and partial video responses, seek/resume behavior, video-to-model transition, memory-pressure recovery and loading escape. Test fresh network fetches and a high-density phone resource profile, and inspect actual opening quality as well as timing.",
        "Complete desktop and phone layout, all tutorial navigation, first-session/replay, source-photo browsing and original downloads. Confirm no overlay obscures its target, no blank model can be opened, and original finest detail remains accessible. Do not send feedback or create client notes as a documentation test.",
        "Confirm the stable client domain and ready deployment, retain release evidence and rollback targets, update the approved production registry and remove temporary upload services/tokens. A source package must exclude client datasets, secrets and hosting attachments. Reference processing scripts require parameterization before execution."
      ]
    }
  ],
  "privacy": {
    "clientDataIncluded": false,
    "existingAccessPolicyPreserved": true,
    "indexing": "noindex, nofollow, noarchive"
  },
  "verification": "Product behavior based on the approved implementation; documentation routes require their own release verification.",
  "performanceStandard": {
    "version": "1.0.0",
    "specification": "/performance-standard.json",
    "priority": "Fast useful first impression without sacrificing original quality, functionality or access"
  },
  "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."
  }
}
