# M10-10 Status status: done task: Stable capability block for unsupported Shader nodes updated: 2026-08-16 America/New_York ## Scope The Shader capability query now accepts arbitrary node type strings and returns a stable `PBR-012/ARBITRARY_SHADER` block for every type outside the declared bounded compiler set. Unsupported node names are de-duplicated and sorted, so the same graph receives the same error regardless of input order. The block uses `SHADER_NODE_UNSUPPORTED`, remains recoverable, and does not silently report READY. The existing ShaderGraph validator and Engine Worker gate continue to preserve the source graph and reject blocked `setShaderGraph` commands before any Main mutation. This task does not expand the compiler allowlist. ## Evidence - `WEB_TEST_PORT=5526 npm --prefix web run test:shader-capability`: Chromium 1/1. `VORONOI` and `CUSTOM_OSL` both return the expected stable block; reversed input order produces the identical task/capability/status/code/message result. - `npm --prefix web run typecheck` and `npm --prefix web run lint` passed. - `tests/golden/M10-10/shader-capability-block.json` fixes the status, error code, recoverability and graph-preservation policy. ## Implementation Hashes - Render capability gate: `322929e9c7b627a9e79b8a6f11d5e9b0c7c05a5754f82d41c45c1134bbaaf385`. - Chromium spec: `6337801f10b9115ba7b53a43152ae69a324b5baa61c8e455cc61505437228cbf`. - Golden: `b7182bb57e10d0b302b4c7dc9bc43160721a2c9414b056c86173c3b5c2501739`. - Package: `d6d4dcaf4f5c852f884ba2064da96a8c30519c661bf4a16c59e115742aa37e8a`. ## Rollback Restore the enum-only `ARBITRARY_SHADER` request, remove deterministic sorting, the M10-10 Chromium test/golden and this status file, and restore the M10 count to 9/15. Keep the existing M10-07 compiler fail-closed behavior.