3.8 KiB
M11-14 Status
status: done task: close render, compositor, and media cancellation/restart/resource recovery updated: 2026-08-17 America/New_York
Scope
Schema 1 evidence fixes one report for each of RENDER, COMPOSITOR, and MEDIA.
Every report binds real source bytes, a domain-specific cancellation code, a domain-specific
budget code, generation 1/2 identity and output hashes, positive release receipts, zero
owned resources after release, and a non-empty recovered output. The suite parser rejects
undeclared fields, missing or duplicate domains, published cancellation results, restart
drift, budget mutation, and incomplete release.
The Chromium production-path case opens real Blender Main fixtures for Render and Compositor and decodes a real H.264 fixture for Media. Render reads an actual WebGL RGBA8 frame, Compositor executes the real Main GraphIR into Float32 output, and Media generates the initial RGBA8 proxy frame. This task closes only bounded lifecycle behavior; it does not claim full Eevee/Cycles parity, arbitrary compositor nodes, frame-exact long-video decode, or complete audio/video rendering.
Evidence
WEB_TEST_PORT=5592 npm --prefix web run test:render-compositor-media-recoverypassed: protocol negatives 3/3, Blender 5.2 Eevee reference checker, Blender 5.2 Compositor golden checker, and Chromium 1/1.- Render used
m11_render_reference.blend, rejected a pre-cancelled open withOPEN_CANCELLED, preserved the active Main, restarted WebEngine at generation 2, and reproduced the same scene identity and WebGL output SHA-256. Aggregate texture overflow returnedGPU_TEXTURE_BUDGET_EXCEEDEDwithout replacing the retained texture; dispose reported positive released bytes/resources followed by zero owned textures. - Compositor used
m11_compositor_allowlist.blend, returnedCOMPOSITOR_CANCELLEDfrom the periodic executor check, rejected width 8193 withCOMPOSITOR_BUDGET_EXCEEDEDbefore cache mutation, reproduced GraphIR/Float32 output after Worker restart, and cleared the LRU to zero. - Media probed and decoded
sequencer-probe.mp4, rejected a pre-cancelled proxy decode withSEQUENCER_CANCELLED, rejected a cache one byte below the frame size withSEQUENCER_BUDGET_EXCEEDED, cleared the first cache, then re-probed and re-decoded the H.264 source before reproducing the source/decode/profile identity and RGBA8 payload SHA-256 in a rebuilt session. - Regression passed: full Node 193/193, typecheck, lint, production build (75 modules),
render resource budget unit 3/3 plus Chromium main/Offscreen 3/3, Compositor golden unit
3/3 plus Chromium 1/1, media proxy cache unit 3/3 plus Chromium 1/1, status consistency,
release evidence, and
git diff --check.
Artifact Hashes
- evidence protocol:
a1b0b36cf93173347d55a955ff2e02f3666f7c28ef7f06442b86f0ee2b272286 - Chromium production suite:
ef9cd58ce3bbd522c72075e82d6423387b61039509996851d8d5ebf3a0d86789 - media proxy cache:
7a1dbf8e838c47e2b99bc8932997e79d3c3cf2636b6285ace083800d833e2e64 - GPU texture store:
a87adefa67b243cfd0cfcad0573a1b646f1e8be8abd0a187e1dc29cab2954d44 - compositor cache:
3ce4819dadb2d6de7305c3676b2708689cd8be95e6fa7894651d6a02c4658b31 - unit:
3cec4a33f28a76423a9678bcb61244cc463f5f2f5939c3f0b6865d34063e1f55 - Chromium spec:
1578848eda7cb26cdf1584fa13f4cc2e252e782959d489dc4454e45c8d06595a - golden manifest:
87f17b0437d819e00c4a0902146d6549cf713482667ead627a45ba2b46050247 - package:
0e731a5c826a999eef372f875c6c5ce9d697fd369a929025370a74cf18a93582
Rollback
Remove the recovery protocol, browser suite, unit/Chromium tests, M11-14 golden manifest, and package command. Restore the media proxy generator signature, Compositor cache clear, and GPU texture release receipt only if no later caller depends on them. Remove the three family lifecycle slices, restore M11 to 13/14, and move the queue back from M12-01A.