53 lines
2.8 KiB
Markdown
53 lines
2.8 KiB
Markdown
# M12-03D Status
|
|
|
|
status: done
|
|
task: append one dependency closure through WASM Main in one transaction
|
|
updated: 2026-08-17 America/New_York
|
|
enablingTask: false
|
|
parityStateChange: false
|
|
|
|
## Scope
|
|
|
|
The browser Worker validates a source-hash-bound APPEND binding and sends one Object closure to
|
|
the authoritative Blender Main. Blender's native link/append context recursively imports the
|
|
Object, Mesh, Material, and packed Image, verifies that every resulting ID is local and writable,
|
|
and publishes one SceneIR revision. The existing Main history transaction is used for rollback and
|
|
undo/redo; the source is never treated as a linked read-only snapshot.
|
|
|
|
## Evidence
|
|
|
|
- `EM_CACHE=/home/mes123456/workinf_Blender_Wasm/.emcache cmake --build build_web_blender6 --target web_engine -- -j2` passed;
|
|
the generated module exports `_web_engine_append_library_object`.
|
|
- `npm --prefix web run typecheck` passed.
|
|
- `WEB_TEST_PORT=5194 npm --prefix web run test:library-main-append` passed in Chromium.
|
|
- The test opens a clean `.blend`, appends the desktop fixture closure through `WebEngineClient`,
|
|
verifies `transactionCount=1`, four `LOCAL_MAIN` mappings, stable Object/Mesh/Material/Image
|
|
IDs, the material-to-image dependency, and a single revision increment.
|
|
- A stale base revision returns `REVISION_CONFLICT`; a second append colliding with the local IDs
|
|
returns `ASSET_MANIFEST_INVALID` without changing the revision. Undo removes the closure, redo
|
|
restores it, and a saved buffer reopens with the same local image and Object dependency.
|
|
- The Worker closure check accepts both the reader's `material.imageIds` representation and the
|
|
Blender node-level `imageId` representation; it does not infer ownership from a preview.
|
|
|
|
## Artifact hashes
|
|
|
|
- test: `7130453cbc81f22eb1bcf598ff3745672ac8177dccb11cef667f5b68b43e87c6`
|
|
- worker: `e3bb430e401144bf17cdcbd0de13cde0a4f904f1f9ff9d5b10a73d90f0d4c648`
|
|
- protocol: `bfd98561cbe797d7b8f07c92c53a25460c839a64ab7222b7795cf58d54dff8d7`
|
|
- source `.blend`: `5b60d02926efd588a6ca300ba31414cdf37dbc48786c17b383a70319057c0606`
|
|
- clean target `.blend`: `9b1ecbcc3d7f8079ee5469de64193ffcaa0a7b01e0f2ac340bbb18aa88734a63`
|
|
- WASM JS: `9c831d0351ac9d0714cce3b1da748cba416ced3086e3c59595cf24ac4da459ed`
|
|
- WASM binary: `7821f408687e455c6f4e185fc3741c199c1c60d409836a2fe1b32f521d81e0ea`
|
|
- Main append API: `5a71260c542fa559f73c6b82e23e72d39bd2844f5ebe12c6edc809a49d79791b`
|
|
- Main append implementation: `d0c484ab62e6ec051c8c2f67c49d750a456578aaccc2aa4f461026307af0db95`
|
|
|
|
## Next task
|
|
|
|
`M12-03E`: append undo/redo/save/reopen and the desktop canonical report must agree.
|
|
|
|
## Rollback
|
|
|
|
Remove the M12-03D Worker/e2e test, package command, WASM append export and Main append entrypoint,
|
|
restore the material closure check, and move the machine queue back to `M12-03D`. No V1 release
|
|
ledger rollback is required.
|