41 lines
1.7 KiB
Markdown
41 lines
1.7 KiB
Markdown
# 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 reports `SHADER_NODE_UNSUPPORTED`, keeps
|
|
object identity and the previous compiled report, and that a later successful
|
|
compile replaces the material.
|
|
- `npm --prefix web run typecheck` and `npm --prefix web run lint` passed after the
|
|
pipeline helper was added.
|
|
- `tests/golden/M10-09/shader-pipeline.json` fixes 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.
|