accepted

WebGPU Exposure Color Pipeline

This report separates published implementation state from accepted evidence. Every value below comes from the schema-v2 registry, the emitted source manifest, or promoted same-lab artifacts.

Lab id
webgpu-exposure-color-pipeline
Kind
Canonical Lab
Owning skill
Exposure And Color Grading
Execution
rendering
Three.js
0.185.1
Source hash
sha256:e5129f4e3cc3ce3c08b47adb0a4fe95063c623bfc2e229ef23895933a8d92eb1
Published bundle hash
sha256:65e348c5920d6843208f853a125904926e1db0a4157a5fe72b44c998e6a42794
Build revision
sha256:d929feed6bb69df4ba0bca7a58c723f6c257d003c20d1e9417d25ccb25e4ecf9
Renderer
WebGPURenderer
Backend
WebGPUBackend
Evidence contract
v2
Tracked release bundle
Present

Claim verdicts

visualCorrectnessPASS
mechanismCorrectnessPASS
performanceComplianceINSUFFICIENT_EVIDENCE
gpuAttributionINSUFFICIENT_EVIDENCE
lifecycleStabilityINSUFFICIENT_EVIDENCE

Promoted same-lab media

Required capability and runtime proof

Capabilities

native-webgpuaccepted

mechanism-metrics.json backend.isWebGPUBackend=true; WebGPUBackend r185 correctness bundle.

storage-buffersaccepted

storage-resources.json + mechanism-metrics histogram/partial storage byte ledger from native capture.

storage-atomicsaccepted

full-histogram tier uses atomic histogram counters; storage-resources.json histogramBytes recorded.

Runtime proof

renderer-initaccepted

capture-contract + mechanism-metrics after await renderer.init() on native WebGPU backend.

compute-readbackaccepted

exposure-readback.json GPU meter state + validate:artifacts oracle keyLuminance/targetEV parity on the v2 bundle.

current-adapter-timingincomplete

No named-adapter timestamp capture accepted; performance remains INSUFFICIENT_EVIDENCE.

Capture state

FieldPublished value
Primary route/demos/webgpu-exposure-color-pipeline/
Camerasnear, design, far
Seeds0x00000001, 0x9e3779b9
Modesfinal, meter-source, histogram, adaptation, meter-mask, tone-map, lut
Capture timeNot present in the promoted report data
Adapter identityNot promoted
Raw readback hashesNot present in the promoted preview summary

Fixed routes

KindIdStartup stateStatus
scenarioemitter{"scenario":"emitter"}accepted
scenariogray-card{"scenario":"gray-card"}accepted
scenarioswatches{"scenario":"swatches"}accepted
scenariobright-window{"scenario":"bright-window"}accepted
scenariomasked-ui{"scenario":"masked-ui"}accepted
mechanismlog-luminance-reduction{"tier":"balanced-log-reduction","mode":"meter-source","scenario":"emitter"}accepted
mechanismhistogram-and-percentiles{"tier":"full-histogram","mode":"histogram","scenario":"emitter"}accepted
mechanismadaptation{"tier":"balanced-log-reduction","mode":"adaptation","scenario":"bright-window"}accepted
mechanismmetering-masks{"tier":"full-histogram","mode":"meter-mask","scenario":"masked-ui"}accepted
mechanismtone-mapping{"tier":"balanced-log-reduction","mode":"tone-map","scenario":"swatches"}accepted
mechanismlut-grading{"tier":"full-histogram","mode":"lut","scenario":"swatches"}accepted
tierfull-histogram{"tier":"full-histogram"}accepted
tierbalanced-log-reduction{"tier":"balanced-log-reduction"}accepted
tierminimum-fixed-shot{"tier":"minimum-fixed-shot"}accepted

Locked tier contracts

full-histogram · accepted
{
  "targetClass": "current-adapter correctness",
  "frameTargetMs": null,
  "resolutionPolicy": {
    "meterGrid": [
      64,
      36
    ],
    "lutEdge": 32
  },
  "mechanismLimits": {
    "meter": "histogram-percentile",
    "histogramBins": 64
  },
  "resourceLimits": {
    "storageBytes": 872
  },
  "degradationFromPrevious": [],
  "preservedInvariants": [
    "GPU EV ownership",
    "single tone map",
    "single output transform"
  ]
}
balanced-log-reduction · accepted
{
  "targetClass": "current-adapter correctness",
  "frameTargetMs": null,
  "resolutionPolicy": {
    "meterGrid": [
      64,
      36
    ],
    "lutEdge": 32
  },
  "mechanismLimits": {
    "meter": "weighted-log"
  },
  "resourceLimits": {
    "storageBytes": 320
  },
  "degradationFromPrevious": [
    "remove histogram clear/bin/prefix/percentile dispatches"
  ],
  "preservedInvariants": [
    "GPU EV ownership",
    "single tone map",
    "single output transform"
  ]
}
minimum-fixed-shot · accepted
{
  "targetClass": "controlled shot",
  "frameTargetMs": null,
  "resolutionPolicy": {
    "meterGrid": null,
    "lutEdge": 32
  },
  "mechanismLimits": {
    "meter": "fixed-shot"
  },
  "resourceLimits": {
    "storageBytes": 320
  },
  "degradationFromPrevious": [
    "disable meter updates",
    "retain authored fixed EV"
  ],
  "preservedInvariants": [
    "single tone map",
    "single output transform"
  ]
}

Limitations

  • The correctness bundle records a native r185 WebGPU backend, but named-adapter timestamp evidence is absent.
  • The promoted percentile frame is a selection mask, not proof that histogram bin totals, prefix scan, or f64 oracle parity pass.
  • Lifecycle stability remains unaccepted.