2.7 KiB
2.7 KiB
M9-14 Status
status: done task: Curve、Grease Pencil、Paint 三编辑域故障恢复闭环 updated: 2026-08-16 America/New_York
Scope
web/protocol/editing-domain-recovery.ts freezes one schema-v1 evidence shape for
the three domains. Each report must prove Main identity, Worker generation, OOM
fault mapping/cleanup, WebGL2 resource release/reinitialization, and a visible
small-scene recovery. Save/reopen may reset the logical Main revision; the
content identity SHA-256 remains the authoritative recovery check.
Evidence
- Curve fixture:
tests/files/web/nonmesh_scene.blend, SHA-256ae8ef85d606aa120ce6b7611fc03407fd80bb60311e94a6ef73f6384d0b6c8b4. - Grease Pencil fixture:
tests/files/web/modifier_grease_pencil_scene.blend, SHA-2563a8525077807f9178dac3a5ba84b524e5f8e80874b15c54e2a6658ecb80315a3. - Paint fixture:
tests/files/web/attribute_scene.blend, SHA-25612fa75bb79f8c38e660d3d2a8fc9cc16dd3df4fc9208b0e2ad94fb1f8aa68f71. WEB_TEST_PORT=5435 npm --prefix web run test:editing-domain-recovery: unit 3/3 and Chromium 1/1. All three reports returnedRECOVEREDfor Worker restart, OOM, GPU release and small-scene stages.- Full unit suite: 127/127 tests passed.
npm --prefix web run typecheck: passed.npm --prefix web run lint: passed.npm --prefix web run build: passed, Vite production bundle transformed 73 modules.git diff --check: passed.
Implementation hashes
- Protocol:
42ab53dde3161ec31ca7de420046a2c06f58408b3ac4919c9904e02d875af258. - Browser runner:
2bb9805795fc2104e5443207a08951ac7684e67913064d6795c9d165b0c54c7e. - Unit test:
ca565149e7769b40f59e865e42d2dfb0f4ecb2a4655371004678c14536ec9ef6. - Chromium test:
7ab3421d1b44eb78d13525f67a26f1f6ed20816ae9b43c010c9ed3ebdf32c09a. - Golden manifest:
f548052f39f6259f30b0569528160512aad955e61e8e8559e0d553c30d5619f9.
Recovery boundaries
- Worker restart uses a fresh
WebEngineClient/Worker and reopens the saved bytes; stable domain identity is required, while revision reset on a newly serialized.blendis accepted and recorded. - OOM uses the token-isolated
GPU_GEOMETRY_UPLOADfault point. A tracked texture lease is released before close; the matching error isGPU_GEOMETRY_BUDGET_EXCEEDED, with zero live temporary resources. - GPU release disposes geometry, material and renderer once, then creates a fresh WebGL2 renderer and requires non-zero pixels for the same domain probe.
- Small-scene recovery requires the reopened data IDs, identity hash, object count and visible pixels to match the committed baseline.
Rollback
Remove the M9-14 protocol/runner/tests/golden and package script together. Existing Curve, Grease Pencil and Paint writers remain unchanged; no persisted schema or release metadata migration is required.