38 lines
1.8 KiB
Markdown
38 lines
1.8 KiB
Markdown
# M11-08 Status
|
|
|
|
status: done
|
|
task: preserve unsupported compositor graphs and block execution
|
|
updated: 2026-08-17 America/New_York
|
|
|
|
## Scope
|
|
|
|
The CPU compositor and cached execution entry points now preflight the complete parsed
|
|
graph before evaluation or cache lookup. Any `UNSUPPORTED` node blocks with
|
|
`COMPOSITOR_NODE_UNSUPPORTED`, including a disconnected node that does not contribute
|
|
to the Composite output. Unsupported Blender type names are sorted and deduplicated so
|
|
the failure is deterministic.
|
|
|
|
The gate is pure: it does not remove nodes, rewrite links, advance Main revision, run a
|
|
cancellation callback, allocate an output, or accept a previously cached result. The
|
|
existing Blender 5.2 fixture preserves its Glare node name, `UNSUPPORTED` IR type, and
|
|
`CompositorNodeGlare` source type before and after the failed attempt.
|
|
|
|
## Evidence
|
|
|
|
- `WEB_TEST_PORT=5565 npm --prefix web run test:compositor-unsupported-gate`: unit 2/2,
|
|
native Main reader, and Chromium 1/1 passed.
|
|
- `WEB_TEST_PORT=5566 npm --prefix web run test:e2e -- --grep "N-020"`: 2/2 passed;
|
|
the supported synthetic CPU graph still executes, while the real graph containing a
|
|
disconnected Glare node now fails closed.
|
|
- The first new unit run was 172/173 because an async rejection used `assert.throws`.
|
|
It was corrected to `await assert.rejects`; no implementation failure was counted as
|
|
evidence. The complete Node suite then passed 173/173.
|
|
- Full regression passed: typecheck, lint, production build, status consistency,
|
|
release evidence validation, and `git diff --check`.
|
|
|
|
## Rollback
|
|
|
|
Remove the complete-graph preflight from CPU/cached execution and the M11-08 tests and
|
|
golden, restore the old N-020 smoke expectation, restore M11 to 7/14, and remove the
|
|
N-020 completed slice. Keep M11-07 CPU/WebGPU goldens unchanged.
|