58 lines
2.7 KiB
Markdown
58 lines
2.7 KiB
Markdown
# 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-256
|
|
`ae8ef85d606aa120ce6b7611fc03407fd80bb60311e94a6ef73f6384d0b6c8b4`.
|
|
- Grease Pencil fixture: `tests/files/web/modifier_grease_pencil_scene.blend`, SHA-256
|
|
`3a8525077807f9178dac3a5ba84b524e5f8e80874b15c54e2a6658ecb80315a3`.
|
|
- Paint fixture: `tests/files/web/attribute_scene.blend`, SHA-256
|
|
`12fa75bb79f8c38e660d3d2a8fc9cc16dd3df4fc9208b0e2ad94fb1f8aa68f71`.
|
|
- `WEB_TEST_PORT=5435 npm --prefix web run test:editing-domain-recovery`: unit 3/3 and
|
|
Chromium 1/1. All three reports returned `RECOVERED` for 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
|
|
`.blend` is accepted and recorded.
|
|
- OOM uses the token-isolated `GPU_GEOMETRY_UPLOAD` fault point. A tracked texture
|
|
lease is released before close; the matching error is
|
|
`GPU_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.
|