{
  "date": "2026-10-25",
  "baselineCommit": "09dbb6a",
  "scope": "Qualify the Observatory on a physical GPU; correct a false exact-equality sRGB diagnostic and prove omitted decoding remains detectable. Runtime renderer and artwork unchanged.",
  "sourceSha256": {
    "apps/probe/material-textures.ts": "6775967db71d1655fc09314d956de0f28b060d299796eacfc1346f50effa29b5",
    "tests/browser/probe.spec.ts": "cf746591c6fd29636fc059e8bb4b6208e9879d11dbca3605f871f17d564084c3",
    "playwright.config.ts": "1b21efa6240e9d9dcdf7cbc22a7694cf7111437b01b5b7ec2e7987017d46af90",
    "tools/cli/qualify-gpu.ts": "13d716ac1b76aea30a2c0dbd9db7ef39255bd6a0f260aa4f06e02f725921a36d"
  },
  "hardware": {
    "qualification": {
      "capturedAt": "2026-10-26T04:36:53.655Z",
      "adapter": {
        "vendor": "intel",
        "architecture": "xe-3lpg",
        "device": "",
        "description": "",
        "isFallbackAdapter": false,
        "features": [
          "bgra8unorm-storage",
          "chromium-experimental-multi-draw-indirect",
          "chromium-experimental-snorm16-texture-formats",
          "chromium-experimental-subgroup-matrix",
          "chromium-experimental-timestamp-query-inside-passes",
          "chromium-experimental-unorm16-texture-formats",
          "clip-distances",
          "core-features-and-limits",
          "depth-clip-control",
          "depth32float-stencil8",
          "dual-source-blending",
          "float32-blendable",
          "float32-filterable",
          "indirect-first-instance",
          "primitive-index",
          "rg11b10ufloat-renderable",
          "shader-f16",
          "subgroups",
          "texture-component-swizzle",
          "texture-compression-bc",
          "texture-compression-bc-sliced-3d",
          "texture-compression-etc2",
          "timestamp-query"
        ],
        "maxTextureDimension2D": 8192,
        "maxBufferSize": 268435456,
        "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36"
      },
      "os": {
        "platform": "linux",
        "release": "7.2.8-9-omarchy",
        "arch": "x64"
      },
      "cpu": "Intel(R) Core(TM) Ultra X7 358H",
      "node": "v22.23.4",
      "browser": "141.0.7390.37",
      "launchArgs": [
        "--enable-unsafe-webgpu",
        "--use-angle=vulkan",
        "--enable-features=Vulkan"
      ]
    },
    "tests": [
      {
        "title": "owned renderer works on the main thread and survives worker resize, device loss and restart",
        "status": "passed",
        "durationMs": 27863
      },
      {
        "title": "probe reports unsupported graphics without joining a room",
        "status": "passed",
        "durationMs": 245
      },
      {
        "title": "cancelling a worker probe releases ownership and permits another run",
        "status": "passed",
        "durationMs": 11629
      },
      {
        "title": "gesture probe confirms pointer release and closes the silent audio context",
        "status": "passed",
        "durationMs": 260
      },
      {
        "title": "worker exceptions produce a bounded failure and the next run can recover",
        "status": "passed",
        "durationMs": 14150
      },
      {
        "title": "a silent worker hits its deadline and releases ownership",
        "status": "passed",
        "durationMs": 692
      },
      {
        "title": "contract worker failures release ownership and can be retried",
        "status": "passed",
        "durationMs": 22159
      },
      {
        "title": "unavailable workers are reported as unsupported after main-thread rendering",
        "status": "passed",
        "durationMs": 596
      },
      {
        "title": "replay worker failure and cancellation release ownership and allow recovery",
        "status": "passed",
        "durationMs": 29208
      },
      {
        "title": "a silent simulation replay worker reaches its deadline and releases ownership",
        "status": "passed",
        "durationMs": 9278
      }
    ],
    "materialTextures": {
      "fixture": "material-textures.2",
      "hash": "0cc4ae9a059e963bea6c825593f43a018aee809ab714beace476894c488bd36f",
      "bytes": 552,
      "textures": 3,
      "uvOrientation": true,
      "opaqueAlpha": true,
      "srgbSampling": true,
      "srgbReferences": [
        {
          "byte": 0,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        },
        {
          "byte": 10,
          "maxRgbError": 1,
          "differentRgbChannels": 29040,
          "alphaExact": true
        },
        {
          "byte": 11,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        },
        {
          "byte": 32,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        },
        {
          "byte": 64,
          "maxRgbError": 1,
          "differentRgbChannels": 14736,
          "alphaExact": true
        },
        {
          "byte": 128,
          "maxRgbError": 1,
          "differentRgbChannels": 10764,
          "alphaExact": true
        },
        {
          "byte": 192,
          "maxRgbError": 1,
          "differentRgbChannels": 11712,
          "alphaExact": true
        },
        {
          "byte": 255,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        }
      ],
      "srgbWrongLinearError": 57,
      "metalRoughChannels": true,
      "emissiveMap": true,
      "mipSampling": true,
      "samplerAddressing": true,
      "rejectedPreservedFrame": true,
      "replacementFrames": 4,
      "recoveredFrame": true,
      "catalogFrame": true,
      "disposed": {
        "buffers": 0,
        "textures": 0,
        "instances": 0
      }
    }
  },
  "software": {
    "tests": [
      {
        "title": "owned renderer works on the main thread and survives worker resize, device loss and restart",
        "status": "passed",
        "durationMs": 62127
      }
    ],
    "materialTextures": {
      "fixture": "material-textures.2",
      "hash": "0cc4ae9a059e963bea6c825593f43a018aee809ab714beace476894c488bd36f",
      "bytes": 552,
      "textures": 3,
      "uvOrientation": true,
      "opaqueAlpha": true,
      "srgbSampling": true,
      "srgbReferences": [
        {
          "byte": 0,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        },
        {
          "byte": 10,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        },
        {
          "byte": 11,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        },
        {
          "byte": 32,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        },
        {
          "byte": 64,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        },
        {
          "byte": 128,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        },
        {
          "byte": 192,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        },
        {
          "byte": 255,
          "maxRgbError": 0,
          "differentRgbChannels": 0,
          "alphaExact": true
        }
      ],
      "srgbWrongLinearError": 57,
      "metalRoughChannels": true,
      "emissiveMap": true,
      "mipSampling": true,
      "samplerAddressing": true,
      "rejectedPreservedFrame": true,
      "replacementFrames": 4,
      "recoveredFrame": true,
      "catalogFrame": true,
      "disposed": {
        "buffers": 0,
        "textures": 0,
        "instances": 0
      }
    }
  },
  "negativeControls": {
    "hardware": {
      "tests": [
        {
          "title": "probe detects omitted sRGB decoding and releases failed texture resources",
          "status": "passed",
          "durationMs": 6579
        }
      ],
      "observed": {
        "failed": [
          {
            "name": "Worker cycle 3",
            "status": "failed",
            "detail": "Material texture probe: sRGB 10 differs from equivalent linear factor: {\"maxRgbError\":34,\"differentRgbChannels\":101568,\"alphaExact\":true}"
          }
        ],
        "errors": []
      }
    },
    "software": {
      "tests": [
        {
          "title": "probe detects omitted sRGB decoding and releases failed texture resources",
          "status": "passed",
          "durationMs": 9414
        }
      ],
      "observed": {
        "failed": [
          {
            "name": "Worker cycle 3",
            "status": "failed",
            "detail": "Material texture probe: sRGB 10 differs from equivalent linear factor: {\"maxRgbError\":34,\"differentRgbChannels\":100467,\"alphaExact\":true}"
          }
        ],
        "errors": []
      }
    }
  },
  "precisionContract": {
    "sourceBytes": [
      0,
      10,
      11,
      32,
      64,
      128,
      192,
      255
    ],
    "maxFullImageRgbOutputByteError": 1,
    "alpha": "exact",
    "wrongLinearReferenceMinimumErrorExclusive": 16,
    "samePathChecks": "Existing channel-isolation, replacement and reconstruction checks remain exact.",
    "basis": "Observed Arc B390 output differs by one RGB byte from CPU analytical sRGB reference; SwiftShader matches exactly. This project acceptance budget is not a normative WebGPU sampler guarantee."
  },
  "retainedFailures": [
    {
      "record": "hardware-observatory-initial-interrupted.log",
      "outcome": "Initial suite interrupted after repeated strict sRGB comparison failures; no complete JSON emitted. Unsupported-graphics and input/audio checks passed before interruption. Not full-suite acceptance."
    },
    {
      "record": "hardware-observatory-strict-reference-failure.json",
      "outcome": "Focused measurement retained strict assertion and confirmed max RGB error 1, 10764 differing channels at source gray 128."
    }
  ],
  "verification": {
    "check": "TypeScript and package boundaries passed, 181 package source files.",
    "productionBuild": {
      "engine": "07b66a4d3f4599cbd298dcde11077733d51cd03f99854c5853d569d43303b40a",
      "files": 28,
      "bytes": 51367204,
      "output": "/home/jason/coding/dw-web/engine-dist"
    },
    "browser": "Ten existing hardware scenarios plus a separately run negative case passed; software complete-renderer scenario and separate negative case passed. Full ten-case run preceded only the appended negative test; app source unchanged.",
    "fullHeadlessSuite": "Not rerun; no engine, schema, simulation, network or server source changes."
  },
  "limits": [
    "One short headless Chromium/Vulkan physical reference; no mobile, human input/audio, sustained FPS, battery or long-session qualification.",
    "Existing five-second SwiftShader editor-restoration reload gate remains open; this increment does not retest or fix it.",
    "No complete roadmap milestone closed. Full milestones 0\u201318 and final character/environment/arrival art remain required."
  ],
  "progressApproximatePercent": 80
}
