{
  "schemaVersion": 1,
  "labId": "webgpu-bounded-water",
  "classification": "inspected-runtime-evidence-preview",
  "acceptanceStatus": "accepted",
  "evidenceBundleId": "correctness",
  "canonicalSource": [
    "threejs-water-optics/examples/webgpu-bounded-water",
    "scripts/capture-lab-browser.mjs",
    "scripts/lib/evidence-v2.mjs"
  ],
  "canonicalSourceHash": "sha256:612685e33fbfc7296ba884f439f79240bd08404beee9e39690176c935f87ae70",
  "threeRevision": "0.185.1",
  "runtime": {
    "renderer": "WebGPURenderer",
    "backend": "WebGPU",
    "isWebGPUBackend": true,
    "threeRevision": "0.185.1",
    "nativeWebGPU": true,
    "initialized": true,
    "adapterClass": "unknown",
    "adapterIdentity": {
      "source": "exact retained renderer.backend.device reference after renderer.init()",
      "backendType": "WebGPUBackend",
      "deviceType": "GPUDevice",
      "deviceLabel": "",
      "deviceIdentityVerified": true,
      "lossPromiseObservedOnActualDevice": true,
      "rendererDeviceGeneration": 1
    },
    "deviceIdentity": {
      "verified": true,
      "source": "exact retained renderer.backend.device reference after renderer.init()",
      "deviceType": "GPUDevice",
      "generation": 1
    }
  },
  "claimVerdicts": {
    "visualCorrectness": "INSUFFICIENT_EVIDENCE",
    "mechanismCorrectness": "PASS",
    "performanceCompliance": "NOT_CLAIMED",
    "gpuAttribution": "NOT_CLAIMED",
    "lifecycleStability": "PASS",
    "visualError": "PASS"
  },
  "primaryImage": "final.design.png",
  "primaryImageLabel": "webgpu-bounded-water final readback",
  "images": [
    {
      "file": "final.design.png",
      "meaning": "Primary final readback.",
      "source": "final.design.png",
      "sourceSha256": "sha256:bb1ab8189d92a99ee5841d1d43bcc75ee58fc99eeddf76d37512265567771857",
      "outputSha256": "sha256:bb1ab8189d92a99ee5841d1d43bcc75ee58fc99eeddf76d37512265567771857",
      "width": 1200,
      "height": 800,
      "encoding": "png-copy"
    },
    {
      "file": "no-post.design.png",
      "meaning": "No-post / alternate display path readback.",
      "source": "no-post.design.png",
      "sourceSha256": "sha256:d5b00af9e2c21fec8761ef41d6cf4f38014be81ce165a4fb13f9feee191eaa83",
      "outputSha256": "sha256:d5b00af9e2c21fec8761ef41d6cf4f38014be81ce165a4fb13f9feee191eaa83",
      "width": 1200,
      "height": 800,
      "encoding": "png-copy"
    },
    {
      "file": "diagnostics.mosaic.png",
      "meaning": "Diagnostics display readback.",
      "source": "diagnostics.mosaic.png",
      "sourceSha256": "sha256:5bf167b0b005810bca10153b7a7fc5573c03fbca004accc47d65941d333c74b5",
      "outputSha256": "sha256:5bf167b0b005810bca10153b7a7fc5573c03fbca004accc47d65941d333c74b5",
      "width": 1200,
      "height": 800,
      "encoding": "png-copy"
    }
  ],
  "limitations": [
    "Correctness capture records native r185 WebGPUBackend with device identity proof via existing Google Chrome CDP.",
    "GPU timestamps / 60 Hz hardwarePerformance remain NOT_CLAIMED.",
    "Lab acceptance remains incomplete where not already accepted."
  ]
}
