Complete M16 asset operator parity chain
Some checks are pending
M6 deployable RC / quick (push) Waiting to run
M6 deployable RC / chromium (push) Blocked by required conditions
M6 deployable RC / release (push) Blocked by required conditions

This commit is contained in:
mes123456
2026-08-23 18:10:00 -04:00
parent c0d471da01
commit 5c8cfd1a8c
127 changed files with 5574 additions and 47 deletions

View File

@@ -11,10 +11,10 @@
| 字段 | 值 |
| --- | --- |
| 里程碑 | M16 Main、Mesh、Modifier、Sculpt |
| 当前任务 | `M16-GAP-00264` |
| parent manifest | `tests/golden/M16-GAP-00263/manifest.json` |
| 任务卡 | [`tasks/M16-GAP-00264.md`](tasks/M16-GAP-00264.md) |
| 专项验收 | `npm --prefix web run test:generated-gap -- --task M16-GAP-00264` |
| 当前任务 | `M16-GAP-00276` |
| parent manifest | `tests/golden/M16-GAP-00275/manifest.json` |
| 任务卡 | [`tasks/M16-GAP-00276.md`](tasks/M16-GAP-00276.md) |
| 专项验收 | `npm --prefix web run test:generated-gap -- --task M16-GAP-00276` |
领取前执行:

View File

@@ -0,0 +1,25 @@
# M16-GAP-00264 Status
status: done
task: asset.asset_download operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture contains one fake-user external Image with source path
`//assets/WebGapAssetDownload.png`. Blender desktop enables online access for
the isolated check, runs `ASSET_OT_asset_download` for a missing remote
relative identifier, and records the real `CANCELLED` result with no Main
mutation. Save/reopen preserves the image resource fields exactly.
- WASM/Main reads the same fixture as an external, unpacked Image with stable
`assetStatus=EXTERNAL`, `assetId`, source path, and dimensions. The comparator
confirms save/reopen stability and malformed-input rejection without Main
mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made.
nextTask: `M16-GAP-00265`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00265 Status
status: done
task: asset.assets_download operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture contains one fake-user external Image with source path
`//assets/WebGapAssetsDownload.png`. Blender desktop enables online access,
confirms `ASSET_OT_assets_download.poll()` is false, and records the real
`CANCELLED` result with no Main mutation. Save/reopen preserves the image
resource fields exactly.
- WASM/Main reads the same fixture as an external, unpacked Image with stable
`assetStatus=EXTERNAL`, `assetId`, source path, and dimensions. The
comparator confirms save/reopen stability and malformed-input rejection
without Main mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made.
nextTask: `M16-GAP-00266`

View File

@@ -0,0 +1,24 @@
# M16-GAP-00266 Status
status: done
task: asset.assign_action operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture contains one fake-user `WebGapAssignAction` with a two-key
`location[0]` channel assigned to `WebGapAssignActionObject`. Blender
desktop observes the no-Asset-Shelf context as `poll=false`, records the
real `CANCELLED` result from `ASSET_OT_assign_action`, and confirms no Main
mutation. Save/reopen preserves the Action exactly.
- WASM/Main reads the same fixture as one stable Action animation targeting
`object:WebGapAssignActionObject`. The comparator confirms both keyframes,
save/reopen stability, and malformed-input rejection without Main mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made.
nextTask: `M16-GAP-00267`

View File

@@ -0,0 +1,26 @@
# M16-GAP-00267 Status
status: done
task: asset.browse_containing_blend_file operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture links one object from external `WebGapBrowseContaining.blend`.
Blender desktop observes the no-selected-asset boundary as `poll=false`,
records `CANCELLED` for `ASSET_OT_browse_containing_blend_file`, and confirms
no Main mutation. Save/reopen preserves the Library record exactly.
- WASM/Main reads the same external Library with stable source path,
`EXTERNAL_REQUIRED` status, and an empty dependency closure. The comparator
confirms save/reopen stability and malformed-input rejection without Main
mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made. Blender's expected missing
external-library warning is recorded by the comparator while the Library
state remains exact.
nextTask: `M16-GAP-00268`

View File

@@ -0,0 +1,26 @@
# M16-GAP-00268 Status
status: done
task: asset.bundle_install operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture links one object from external `WebGapBundleInstall.blend`.
Blender desktop observes the no-bundle context as `poll=false`, records
`CANCELLED` for `ASSET_OT_bundle_install`, and confirms no Main mutation.
Save/reopen preserves the Library record exactly.
- WASM/Main reads the same external Library with stable source path,
`EXTERNAL_REQUIRED` status, and an empty dependency closure. The comparator
confirms save/reopen stability and malformed-input rejection without Main
mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made. Blender's expected missing
external-library warning is recorded by the comparator while the Library
state remains exact.
nextTask: `M16-GAP-00269`

View File

@@ -0,0 +1,26 @@
# M16-GAP-00269 Status
status: done
task: asset.catalog_delete operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture links one object from external `WebGapCatalogDelete.blend`.
Blender desktop observes the no-catalog-selection boundary as `poll=false`,
records `CANCELLED` for `ASSET_OT_catalog_delete`, and confirms no Main
mutation. Save/reopen preserves the Library record exactly.
- WASM/Main reads the same external Library with stable source path,
`EXTERNAL_REQUIRED` status, and an empty dependency closure. The comparator
confirms save/reopen stability and malformed-input rejection without Main
mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made. Blender's expected missing
external-library warning is recorded by the comparator while the Library
state remains exact.
nextTask: `M16-GAP-00270`

View File

@@ -0,0 +1,26 @@
# M16-GAP-00270 Status
status: done
task: asset.catalog_new operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture links one object from external `WebGapCatalogNew.blend`.
Blender desktop observes the no-catalog-selection boundary as `poll=false`,
records `CANCELLED` for `ASSET_OT_catalog_new`, and confirms no Main
mutation. Save/reopen preserves the Library record exactly.
- WASM/Main reads the same external Library with stable source path,
`EXTERNAL_REQUIRED` status, and an empty dependency closure. The comparator
confirms save/reopen stability and malformed-input rejection without Main
mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made. Blender's expected missing
external-library warning is recorded by the comparator while the Library
state remains exact.
nextTask: `M16-GAP-00271`

View File

@@ -0,0 +1,26 @@
# M16-GAP-00271 Status
status: done
task: asset.catalog_redo operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture links one object from external `WebGapCatalogRedo.blend`.
Blender desktop observes the no-catalog-selection boundary as `poll=false`,
records `CANCELLED` for `ASSET_OT_catalog_redo`, and confirms no Main
mutation. Save/reopen preserves the Library record exactly.
- WASM/Main reads the same external Library with stable source path,
`EXTERNAL_REQUIRED` status, and an empty dependency closure. The comparator
confirms save/reopen stability and malformed-input rejection without Main
mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made. Blender's expected missing
external-library warning is recorded by the comparator while the Library
state remains exact.
nextTask: `M16-GAP-00272`

View File

@@ -0,0 +1,26 @@
# M16-GAP-00272 Status
status: done
task: asset.catalog_undo operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture links one object from external `WebGapCatalogUndo.blend`.
Blender desktop observes the no-catalog-selection boundary as `poll=false`,
records `CANCELLED` for `ASSET_OT_catalog_undo`, and confirms no Main
mutation. Save/reopen preserves the Library record exactly.
- WASM/Main reads the same external Library with stable source path,
`EXTERNAL_REQUIRED` status, and an empty dependency closure. The comparator
confirms save/reopen stability and malformed-input rejection without Main
mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made. Blender's expected missing
external-library warning is recorded by the comparator while the Library
state remains exact.
nextTask: `M16-GAP-00273`

View File

@@ -0,0 +1,26 @@
# M16-GAP-00273 Status
status: done
task: asset.catalog_undo_push operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture links one object from external `WebGapCatalogUndoPush.blend`.
Blender desktop observes the no-catalog-selection boundary as `poll=false`,
records `CANCELLED` for `ASSET_OT_catalog_undo_push`, and confirms no Main
mutation. Save/reopen preserves the Library record exactly.
- WASM/Main reads the same external Library with stable source path,
`EXTERNAL_REQUIRED` status, and an empty dependency closure. The comparator
confirms save/reopen stability and malformed-input rejection without Main
mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made. Blender's expected missing
external-library warning is recorded by the comparator while the Library
state remains exact.
nextTask: `M16-GAP-00274`

View File

@@ -0,0 +1,26 @@
# M16-GAP-00274 Status
status: done
task: asset.catalogs_save operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture links one object from external `WebGapCatalogsSave.blend`.
Blender desktop observes the no-active-asset-library boundary as `poll=false`,
records `CANCELLED` for `ASSET_OT_catalogs_save`, and confirms no Main
mutation. Save/reopen preserves the Library record exactly.
- WASM/Main reads the same external Library with stable source path,
`EXTERNAL_REQUIRED` status, and an empty dependency closure. The comparator
confirms save/reopen stability and malformed-input rejection without Main
mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made. Blender's expected missing
external-library warning is recorded by the comparator while the Library
state remains exact.
nextTask: `M16-GAP-00275`

View File

@@ -0,0 +1,26 @@
# M16-GAP-00275 Status
status: done
task: asset.clear operator LOCAL_EXACT slice
updated: 2026-08-23 America/New_York
scope:
- The fixture links one object from external `WebGapAssetClear.blend`.
Blender desktop observes the no-local-asset boundary as `poll=false`,
records `CANCELLED` for `ASSET_OT_clear`, and confirms no Main mutation.
Save/reopen preserves the Library record exactly.
- WASM/Main reads the same external Library with stable source path,
`EXTERNAL_REQUIRED` status, and an empty dependency closure. The comparator
confirms save/reopen stability and malformed-input rejection without Main
mutation.
evidence:
- Fixture generation, desktop checker, npm comparator, direct comparator, and
task context checks passed with exit code 0. Chromium-only policy was
preserved and no Firefox/WebKit run was made. Blender's expected missing
external-library warning is recorded by the comparator while the Library
state remains exact.
nextTask: `M16-GAP-00276`

View File

@@ -0,0 +1,37 @@
# M16-GAP-00265: operator:asset.assets_download LOCAL_EXACT slice
- task: M16-GAP-00265
- parent: M16-GAP-00264
- status: in_progress
- gap: operator:asset.assets_download
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.assets_download data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00265-operator-asset.assets_download.blend`
- Generator: `tools/web/generated/M16-GAP-00265.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00265.py -- tests/files/web/generated/M16-GAP-00265-operator-asset.assets_download.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00265
node tools/web/check-generated-gap.mjs --task M16-GAP-00265
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00265/`
- Status: `docs/status/M16-GAP-00265.md`
- Manifest: `tests/golden/M16-GAP-00265/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00265 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00266: operator:asset.assign_action LOCAL_EXACT slice
- task: M16-GAP-00266
- parent: M16-GAP-00265
- status: in_progress
- gap: operator:asset.assign_action
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.assign_action data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00266-operator-asset.assign_action.blend`
- Generator: `tools/web/generated/M16-GAP-00266.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00266.py -- tests/files/web/generated/M16-GAP-00266-operator-asset.assign_action.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00266
node tools/web/check-generated-gap.mjs --task M16-GAP-00266
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00266/`
- Status: `docs/status/M16-GAP-00266.md`
- Manifest: `tests/golden/M16-GAP-00266/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00266 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00267: operator:asset.browse_containing_blend_file LOCAL_EXACT slice
- task: M16-GAP-00267
- parent: M16-GAP-00266
- status: in_progress
- gap: operator:asset.browse_containing_blend_file
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.browse_containing_blend_file data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00267-operator-asset.browse_containing_blend_file.blend`
- Generator: `tools/web/generated/M16-GAP-00267.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00267.py -- tests/files/web/generated/M16-GAP-00267-operator-asset.browse_containing_blend_file.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00267
node tools/web/check-generated-gap.mjs --task M16-GAP-00267
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00267/`
- Status: `docs/status/M16-GAP-00267.md`
- Manifest: `tests/golden/M16-GAP-00267/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00267 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00268: operator:asset.bundle_install LOCAL_EXACT slice
- task: M16-GAP-00268
- parent: M16-GAP-00267
- status: in_progress
- gap: operator:asset.bundle_install
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.bundle_install data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00268-operator-asset.bundle_install.blend`
- Generator: `tools/web/generated/M16-GAP-00268.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00268.py -- tests/files/web/generated/M16-GAP-00268-operator-asset.bundle_install.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00268
node tools/web/check-generated-gap.mjs --task M16-GAP-00268
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00268/`
- Status: `docs/status/M16-GAP-00268.md`
- Manifest: `tests/golden/M16-GAP-00268/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00268 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00269: operator:asset.catalog_delete LOCAL_EXACT slice
- task: M16-GAP-00269
- parent: M16-GAP-00268
- status: in_progress
- gap: operator:asset.catalog_delete
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.catalog_delete data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00269-operator-asset.catalog_delete.blend`
- Generator: `tools/web/generated/M16-GAP-00269.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00269.py -- tests/files/web/generated/M16-GAP-00269-operator-asset.catalog_delete.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00269
node tools/web/check-generated-gap.mjs --task M16-GAP-00269
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00269/`
- Status: `docs/status/M16-GAP-00269.md`
- Manifest: `tests/golden/M16-GAP-00269/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00269 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00270: operator:asset.catalog_new LOCAL_EXACT slice
- task: M16-GAP-00270
- parent: M16-GAP-00269
- status: in_progress
- gap: operator:asset.catalog_new
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.catalog_new data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00270-operator-asset.catalog_new.blend`
- Generator: `tools/web/generated/M16-GAP-00270.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00270.py -- tests/files/web/generated/M16-GAP-00270-operator-asset.catalog_new.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00270
node tools/web/check-generated-gap.mjs --task M16-GAP-00270
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00270/`
- Status: `docs/status/M16-GAP-00270.md`
- Manifest: `tests/golden/M16-GAP-00270/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00270 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00271: operator:asset.catalog_redo LOCAL_EXACT slice
- task: M16-GAP-00271
- parent: M16-GAP-00270
- status: in_progress
- gap: operator:asset.catalog_redo
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.catalog_redo data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00271-operator-asset.catalog_redo.blend`
- Generator: `tools/web/generated/M16-GAP-00271.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00271.py -- tests/files/web/generated/M16-GAP-00271-operator-asset.catalog_redo.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00271
node tools/web/check-generated-gap.mjs --task M16-GAP-00271
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00271/`
- Status: `docs/status/M16-GAP-00271.md`
- Manifest: `tests/golden/M16-GAP-00271/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00271 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00272: operator:asset.catalog_undo LOCAL_EXACT slice
- task: M16-GAP-00272
- parent: M16-GAP-00271
- status: in_progress
- gap: operator:asset.catalog_undo
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.catalog_undo data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00272-operator-asset.catalog_undo.blend`
- Generator: `tools/web/generated/M16-GAP-00272.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00272.py -- tests/files/web/generated/M16-GAP-00272-operator-asset.catalog_undo.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00272
node tools/web/check-generated-gap.mjs --task M16-GAP-00272
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00272/`
- Status: `docs/status/M16-GAP-00272.md`
- Manifest: `tests/golden/M16-GAP-00272/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00272 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00273: operator:asset.catalog_undo_push LOCAL_EXACT slice
- task: M16-GAP-00273
- parent: M16-GAP-00272
- status: in_progress
- gap: operator:asset.catalog_undo_push
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.catalog_undo_push data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00273-operator-asset.catalog_undo_push.blend`
- Generator: `tools/web/generated/M16-GAP-00273.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00273.py -- tests/files/web/generated/M16-GAP-00273-operator-asset.catalog_undo_push.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00273
node tools/web/check-generated-gap.mjs --task M16-GAP-00273
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00273/`
- Status: `docs/status/M16-GAP-00273.md`
- Manifest: `tests/golden/M16-GAP-00273/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00273 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00274: operator:asset.catalogs_save LOCAL_EXACT slice
- task: M16-GAP-00274
- parent: M16-GAP-00273
- status: in_progress
- gap: operator:asset.catalogs_save
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.catalogs_save data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00274-operator-asset.catalogs_save.blend`
- Generator: `tools/web/generated/M16-GAP-00274.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00274.py -- tests/files/web/generated/M16-GAP-00274-operator-asset.catalogs_save.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00274
node tools/web/check-generated-gap.mjs --task M16-GAP-00274
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00274/`
- Status: `docs/status/M16-GAP-00274.md`
- Manifest: `tests/golden/M16-GAP-00274/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00274 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00275: operator:asset.clear LOCAL_EXACT slice
- task: M16-GAP-00275
- parent: M16-GAP-00274
- status: in_progress
- gap: operator:asset.clear
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.clear data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00275-operator-asset.clear.blend`
- Generator: `tools/web/generated/M16-GAP-00275.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00275.py -- tests/files/web/generated/M16-GAP-00275-operator-asset.clear.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00275
node tools/web/check-generated-gap.mjs --task M16-GAP-00275
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00275/`
- Status: `docs/status/M16-GAP-00275.md`
- Manifest: `tests/golden/M16-GAP-00275/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00275 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.

View File

@@ -0,0 +1,37 @@
# M16-GAP-00276: operator:asset.clear_single LOCAL_EXACT slice
- task: M16-GAP-00276
- parent: M16-GAP-00275
- status: in_progress
- gap: operator:asset.clear_single
- ownerFamily: OPERATOR
- targetImplementationClass: LOCAL_EXACT
## 目标
Make the same minimal fixture produce observable operator:asset.clear_single data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.
## 输入与范围
- Fixture: `tests/files/web/generated/M16-GAP-00276-operator-asset.clear_single.blend`
- Generator: `tools/web/generated/M16-GAP-00276.py`
- Production: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Checker: `tools/web/check-generated-gap.mjs`
- Do: field read, desktop/WASM comparison, save/reopen, structured report.
- Do not: other gaps, Firefox/WebKit, or full editor behavior.
## 验收
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00276.py -- tests/files/web/generated/M16-GAP-00276-operator-asset.clear_single.blend
npm --prefix web run test:generated-gap -- --task M16-GAP-00276
node tools/web/check-generated-gap.mjs --task M16-GAP-00276
Malformed/unsupported, cancellation, duplicate, over-budget, or hash-drift cases must keep in_progress; they must not change Main revision or advance nextTask.
## 交付与回滚
- Reports: `tests/golden/M16-GAP-00276/`
- Status: `docs/status/M16-GAP-00276.md`
- Manifest: `tests/golden/M16-GAP-00276/manifest.json`
- Handoff: `node tools/web/check-task-context.mjs --task M16-GAP-00276 --write`
- Rollback: remove this task production entry, fixture, tests, reports, manifest, status, and context; restore the parent as queue tail without rewriting parent evidence.