1.7 KiB
M10-09 Status
status: done task: Preserve the previous usable material pipeline on compile failure updated: 2026-08-16 America/New_York
Scope
PBRMaterialPipeline makes material replacement transactional. A successfully
compiled candidate becomes current only after compilation; the previous material
is disposed exactly once after replacement. A blocked candidate is disposed and
the current material remains usable, with the failed report stored as
shaderCompileFailure for diagnostics. This does not claim arbitrary Shader Node
support or a WebGPU pipeline.
The Engine Worker independently rejects blocked setShaderGraph requests before
the Blender Main transaction, so a failed graph cannot publish a new SceneIR
snapshot in addition to the viewport-side rollback.
Evidence
WEB_TEST_PORT=5525 npm --prefix web run test:shader-pipeline: Chromium 1/1. The test confirms the failed candidate reportsSHADER_NODE_UNSUPPORTED, keeps object identity and the previous compiled report, and that a later successful compile replaces the material.npm --prefix web run typecheckandnpm --prefix web run lintpassed after the pipeline helper was added.tests/golden/M10-09/shader-pipeline.jsonfixes the rollback invariants.
Implementation Hashes
- PBR adapter:
8a9cb52c8e7b1481096017cc659d93541c21724c1203d22755e37e1e3c365250. - Chromium spec:
e6771f672e885250db199cbf97a0a3866084ab9bb3f2ad25d17f5c53edaa99af. - Golden:
5dbb916e512935a76dacde37242b123707897f54ab10d7b99e246f57afbc94ac.
Rollback
Remove PBRMaterialPipeline, its Chromium test/golden and this status file. Keep
the M10-08 compile key and Engine Worker pre-transaction gate, and restore the M10
count to 8/15.