Complete M16 asset operator parity chain
This commit is contained in:
@@ -11,10 +11,10 @@
|
|||||||
| 字段 | 值 |
|
| 字段 | 值 |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| 里程碑 | M16 Main、Mesh、Modifier、Sculpt |
|
| 里程碑 | M16 Main、Mesh、Modifier、Sculpt |
|
||||||
| 当前任务 | `M16-GAP-00264` |
|
| 当前任务 | `M16-GAP-00276` |
|
||||||
| parent manifest | `tests/golden/M16-GAP-00263/manifest.json` |
|
| parent manifest | `tests/golden/M16-GAP-00275/manifest.json` |
|
||||||
| 任务卡 | [`tasks/M16-GAP-00264.md`](tasks/M16-GAP-00264.md) |
|
| 任务卡 | [`tasks/M16-GAP-00276.md`](tasks/M16-GAP-00276.md) |
|
||||||
| 专项验收 | `npm --prefix web run test:generated-gap -- --task M16-GAP-00264` |
|
| 专项验收 | `npm --prefix web run test:generated-gap -- --task M16-GAP-00276` |
|
||||||
|
|
||||||
领取前执行:
|
领取前执行:
|
||||||
|
|
||||||
|
|||||||
25
docs/status/M16-GAP-00264.md
Normal file
25
docs/status/M16-GAP-00264.md
Normal 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`
|
||||||
25
docs/status/M16-GAP-00265.md
Normal file
25
docs/status/M16-GAP-00265.md
Normal 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`
|
||||||
24
docs/status/M16-GAP-00266.md
Normal file
24
docs/status/M16-GAP-00266.md
Normal 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`
|
||||||
26
docs/status/M16-GAP-00267.md
Normal file
26
docs/status/M16-GAP-00267.md
Normal 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`
|
||||||
26
docs/status/M16-GAP-00268.md
Normal file
26
docs/status/M16-GAP-00268.md
Normal 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`
|
||||||
26
docs/status/M16-GAP-00269.md
Normal file
26
docs/status/M16-GAP-00269.md
Normal 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`
|
||||||
26
docs/status/M16-GAP-00270.md
Normal file
26
docs/status/M16-GAP-00270.md
Normal 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`
|
||||||
26
docs/status/M16-GAP-00271.md
Normal file
26
docs/status/M16-GAP-00271.md
Normal 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`
|
||||||
26
docs/status/M16-GAP-00272.md
Normal file
26
docs/status/M16-GAP-00272.md
Normal 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`
|
||||||
26
docs/status/M16-GAP-00273.md
Normal file
26
docs/status/M16-GAP-00273.md
Normal 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`
|
||||||
26
docs/status/M16-GAP-00274.md
Normal file
26
docs/status/M16-GAP-00274.md
Normal 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`
|
||||||
26
docs/status/M16-GAP-00275.md
Normal file
26
docs/status/M16-GAP-00275.md
Normal 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`
|
||||||
37
docs/tasks/M16-GAP-00265.md
Normal file
37
docs/tasks/M16-GAP-00265.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00266.md
Normal file
37
docs/tasks/M16-GAP-00266.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00267.md
Normal file
37
docs/tasks/M16-GAP-00267.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00268.md
Normal file
37
docs/tasks/M16-GAP-00268.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00269.md
Normal file
37
docs/tasks/M16-GAP-00269.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00270.md
Normal file
37
docs/tasks/M16-GAP-00270.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00271.md
Normal file
37
docs/tasks/M16-GAP-00271.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00272.md
Normal file
37
docs/tasks/M16-GAP-00272.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00273.md
Normal file
37
docs/tasks/M16-GAP-00273.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00274.md
Normal file
37
docs/tasks/M16-GAP-00274.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00275.md
Normal file
37
docs/tasks/M16-GAP-00275.md
Normal 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.
|
||||||
37
docs/tasks/M16-GAP-00276.md
Normal file
37
docs/tasks/M16-GAP-00276.md
Normal 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.
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
tests/files/web/generated/WebGapAssetClear.blend
Normal file
BIN
tests/files/web/generated/WebGapAssetClear.blend
Normal file
Binary file not shown.
BIN
tests/files/web/generated/WebGapBrowseContaining.blend
Normal file
BIN
tests/files/web/generated/WebGapBrowseContaining.blend
Normal file
Binary file not shown.
BIN
tests/files/web/generated/WebGapBundleInstall.blend
Normal file
BIN
tests/files/web/generated/WebGapBundleInstall.blend
Normal file
Binary file not shown.
BIN
tests/files/web/generated/WebGapCatalogDelete.blend
Normal file
BIN
tests/files/web/generated/WebGapCatalogDelete.blend
Normal file
Binary file not shown.
BIN
tests/files/web/generated/WebGapCatalogNew.blend
Normal file
BIN
tests/files/web/generated/WebGapCatalogNew.blend
Normal file
Binary file not shown.
BIN
tests/files/web/generated/WebGapCatalogRedo.blend
Normal file
BIN
tests/files/web/generated/WebGapCatalogRedo.blend
Normal file
Binary file not shown.
BIN
tests/files/web/generated/WebGapCatalogUndo.blend
Normal file
BIN
tests/files/web/generated/WebGapCatalogUndo.blend
Normal file
Binary file not shown.
BIN
tests/files/web/generated/WebGapCatalogUndoPush.blend
Normal file
BIN
tests/files/web/generated/WebGapCatalogUndoPush.blend
Normal file
Binary file not shown.
BIN
tests/files/web/generated/WebGapCatalogsSave.blend
Normal file
BIN
tests/files/web/generated/WebGapCatalogsSave.blend
Normal file
Binary file not shown.
@@ -261,5 +261,17 @@
|
|||||||
"operator:armature.split",
|
"operator:armature.split",
|
||||||
"operator:armature.subdivide",
|
"operator:armature.subdivide",
|
||||||
"operator:armature.switch_direction",
|
"operator:armature.switch_direction",
|
||||||
"operator:armature.symmetrize"
|
"operator:armature.symmetrize",
|
||||||
|
"operator:asset.asset_download",
|
||||||
|
"operator:asset.assets_download",
|
||||||
|
"operator:asset.assign_action",
|
||||||
|
"operator:asset.browse_containing_blend_file",
|
||||||
|
"operator:asset.bundle_install",
|
||||||
|
"operator:asset.catalog_delete",
|
||||||
|
"operator:asset.catalog_new",
|
||||||
|
"operator:asset.catalog_redo",
|
||||||
|
"operator:asset.catalog_undo",
|
||||||
|
"operator:asset.catalog_undo_push",
|
||||||
|
"operator:asset.catalogs_save",
|
||||||
|
"operator:asset.clear"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
},
|
},
|
||||||
"generator": {
|
"generator": {
|
||||||
"path": "tools/web/generate-blender-next-task-plan.mjs",
|
"path": "tools/web/generate-blender-next-task-plan.mjs",
|
||||||
"sha256": "b944d9e0ee37497d397fac6bede348702768ec2fa84ff2246ef39cc58d4242c0"
|
"sha256": "d9f8bf8f666e5843c5d776d10d8afb772fb9f3e890cb071e249ed1ff000b0e68"
|
||||||
},
|
},
|
||||||
"checker": {
|
"checker": {
|
||||||
"path": "tools/web/check-blender-next-task-plan.mjs",
|
"path": "tools/web/check-blender-next-task-plan.mjs",
|
||||||
@@ -20,11 +20,11 @@
|
|||||||
},
|
},
|
||||||
"plan": {
|
"plan": {
|
||||||
"path": "tests/golden/M15-03A/next-task-plan.json",
|
"path": "tests/golden/M15-03A/next-task-plan.json",
|
||||||
"sha256": "f10310d6530d8a9adfde0bc6bca35e4bfae7a05169028e1a8b36e374b059c8bb"
|
"sha256": "edc59e235e492bd5982cea233d75d74a219021c8ee70348ea1e0985ada7f6a17"
|
||||||
},
|
},
|
||||||
"report": {
|
"report": {
|
||||||
"path": "tests/golden/M15-03A/next-task-plan-check-report.json",
|
"path": "tests/golden/M15-03A/next-task-plan-check-report.json",
|
||||||
"sha256": "1fede6a6bba0a935ffbdc1aa21ea7ca0addd741139b754c2a27d380eacf5c794"
|
"sha256": "302db2256fec76ee32d5fdc691a9a540333e4a0163aa603b8d843a97f7b6bcc1"
|
||||||
},
|
},
|
||||||
"package": {
|
"package": {
|
||||||
"path": "web/package.json",
|
"path": "web/package.json",
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
"summary": {
|
"summary": {
|
||||||
"taskCount": 6900,
|
"taskCount": 6900,
|
||||||
"active": 1,
|
"active": 1,
|
||||||
"pending": 6636,
|
"pending": 6624,
|
||||||
"completed": 263,
|
"completed": 275,
|
||||||
"blocked": 0,
|
"blocked": 0,
|
||||||
"byWave": {
|
"byWave": {
|
||||||
"M16": 2667,
|
"M16": 2667,
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
"M22": 19
|
"M22": 19
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"firstTask": "M16-GAP-00264",
|
"firstTask": "M16-GAP-00276",
|
||||||
"planSha256": "f10310d6530d8a9adfde0bc6bca35e4bfae7a05169028e1a8b36e374b059c8bb",
|
"planSha256": "edc59e235e492bd5982cea233d75d74a219021c8ee70348ea1e0985ada7f6a17",
|
||||||
"nextTask": "M15-03B"
|
"nextTask": "M15-03B"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,14 +13,14 @@
|
|||||||
},
|
},
|
||||||
"completions": {
|
"completions": {
|
||||||
"path": "tests/golden/M15-03A/completed-gap-tasks.json",
|
"path": "tests/golden/M15-03A/completed-gap-tasks.json",
|
||||||
"sha256": "b927d84d995f64669fabdcb50019a7db895d9a6f4e004913122d32c2dfca01ac"
|
"sha256": "32f4c11ebf8563f3aa500583f3979c1b38d711cc7328a428968118f0375b90b4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"taskCount": 6900,
|
"taskCount": 6900,
|
||||||
"active": 1,
|
"active": 1,
|
||||||
"pending": 6636,
|
"pending": 6624,
|
||||||
"completed": 263,
|
"completed": 275,
|
||||||
"blocked": 0,
|
"blocked": 0,
|
||||||
"byWave": {
|
"byWave": {
|
||||||
"M16": 2667,
|
"M16": 2667,
|
||||||
@@ -6087,7 +6087,7 @@
|
|||||||
"gapId": "operator:asset.asset_download",
|
"gapId": "operator:asset.asset_download",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "active",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6110,7 +6110,7 @@
|
|||||||
"gapId": "operator:asset.assets_download",
|
"gapId": "operator:asset.assets_download",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6133,7 +6133,7 @@
|
|||||||
"gapId": "operator:asset.assign_action",
|
"gapId": "operator:asset.assign_action",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6156,7 +6156,7 @@
|
|||||||
"gapId": "operator:asset.browse_containing_blend_file",
|
"gapId": "operator:asset.browse_containing_blend_file",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6179,7 +6179,7 @@
|
|||||||
"gapId": "operator:asset.bundle_install",
|
"gapId": "operator:asset.bundle_install",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6202,7 +6202,7 @@
|
|||||||
"gapId": "operator:asset.catalog_delete",
|
"gapId": "operator:asset.catalog_delete",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6225,7 +6225,7 @@
|
|||||||
"gapId": "operator:asset.catalog_new",
|
"gapId": "operator:asset.catalog_new",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6248,7 +6248,7 @@
|
|||||||
"gapId": "operator:asset.catalog_redo",
|
"gapId": "operator:asset.catalog_redo",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6271,7 +6271,7 @@
|
|||||||
"gapId": "operator:asset.catalog_undo",
|
"gapId": "operator:asset.catalog_undo",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6294,7 +6294,7 @@
|
|||||||
"gapId": "operator:asset.catalog_undo_push",
|
"gapId": "operator:asset.catalog_undo_push",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6317,7 +6317,7 @@
|
|||||||
"gapId": "operator:asset.catalogs_save",
|
"gapId": "operator:asset.catalogs_save",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6340,7 +6340,7 @@
|
|||||||
"gapId": "operator:asset.clear",
|
"gapId": "operator:asset.clear",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "completed",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -6363,7 +6363,7 @@
|
|||||||
"gapId": "operator:asset.clear_single",
|
"gapId": "operator:asset.clear_single",
|
||||||
"ownerFamily": "OPERATOR",
|
"ownerFamily": "OPERATOR",
|
||||||
"sourceTask": "M15-01B",
|
"sourceTask": "M15-01B",
|
||||||
"state": "pending",
|
"state": "active",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"targetImplementationClass": "LOCAL_EXACT",
|
"targetImplementationClass": "LOCAL_EXACT",
|
||||||
"fixture": {
|
"fixture": {
|
||||||
@@ -158734,7 +158734,7 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"firstTask": "M16-GAP-00264",
|
"firstTask": "M16-GAP-00276",
|
||||||
"closureGate": "M15-03E",
|
"closureGate": "M15-03E",
|
||||||
"nextTask": "M15-03B"
|
"nextTask": "M15-03B"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -261,19 +261,19 @@
|
|||||||
{"id":"M16-GAP-00261","gapId":"operator:armature.subdivide","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00261","gapId":"operator:armature.subdivide","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00262","gapId":"operator:armature.switch_direction","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00262","gapId":"operator:armature.switch_direction","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00263","gapId":"operator:armature.symmetrize","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00263","gapId":"operator:armature.symmetrize","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00264","gapId":"operator:asset.asset_download","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"active","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00264","gapId":"operator:asset.asset_download","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00265","gapId":"operator:asset.assets_download","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00265","gapId":"operator:asset.assets_download","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00266","gapId":"operator:asset.assign_action","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00266","gapId":"operator:asset.assign_action","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00267","gapId":"operator:asset.browse_containing_blend_file","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00267","gapId":"operator:asset.browse_containing_blend_file","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00268","gapId":"operator:asset.bundle_install","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00268","gapId":"operator:asset.bundle_install","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00269","gapId":"operator:asset.catalog_delete","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00269","gapId":"operator:asset.catalog_delete","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00270","gapId":"operator:asset.catalog_new","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00270","gapId":"operator:asset.catalog_new","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00271","gapId":"operator:asset.catalog_redo","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00271","gapId":"operator:asset.catalog_redo","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00272","gapId":"operator:asset.catalog_undo","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00272","gapId":"operator:asset.catalog_undo","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00273","gapId":"operator:asset.catalog_undo_push","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00273","gapId":"operator:asset.catalog_undo_push","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00274","gapId":"operator:asset.catalogs_save","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00274","gapId":"operator:asset.catalogs_save","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00275","gapId":"operator:asset.clear","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00275","gapId":"operator:asset.clear","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00276","gapId":"operator:asset.clear_single","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00276","gapId":"operator:asset.clear_single","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"active","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00277","gapId":"operator:asset.library_refresh","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00277","gapId":"operator:asset.library_refresh","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00278","gapId":"operator:asset.library_reload_listing","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00278","gapId":"operator:asset.library_reload_listing","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
{"id":"M16-GAP-00279","gapId":"operator:asset.mark","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
{"id":"M16-GAP-00279","gapId":"operator:asset.mark","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//assets/WebGapAssetDownload.png",
|
||||||
|
"name": "WebGapAssetDownloadImage",
|
||||||
|
"packed": false,
|
||||||
|
"size": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"source": "FILE"
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//assets/WebGapAssetDownload.png",
|
||||||
|
"name": "WebGapAssetDownloadImage",
|
||||||
|
"packed": false,
|
||||||
|
"size": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"source": "FILE"
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00264-operator-asset.asset_download.blend",
|
||||||
|
"fixtureSha256": "79332080394950857a3b99087140aba51df6ad2fd731e314af67c473a48602b4",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_ASSET_DOWNLOAD_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": true,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00264"
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00264",
|
||||||
|
"operation": "ASSET_ASSET_DOWNLOAD_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00264-operator-asset.asset_download.blend",
|
||||||
|
"sha256": "79332080394950857a3b99087140aba51df6ad2fd731e314af67c473a48602b4"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00264/asset-download-desktop-report.json",
|
||||||
|
"poll": true,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"imageId": "image:WebGapAssetDownloadImage",
|
||||||
|
"sourcePath": "//assets/WebGapAssetDownload.png",
|
||||||
|
"assetStatus": "EXTERNAL",
|
||||||
|
"packed": false,
|
||||||
|
"dimensions": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00265"
|
||||||
|
}
|
||||||
28
tests/golden/M16-GAP-00264/manifest.json
Normal file
28
tests/golden/M16-GAP-00264/manifest.json
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00264",
|
||||||
|
"parentTask": "M16-GAP-00263",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_ASSET_DOWNLOAD_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00263/manifest.json", "sha256": "174eb122a99cd96c634a78e9689dcc1e0317f17bd52727e782a20599ba6b730b"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00264-operator-asset.asset_download.blend", "sha256": "79332080394950857a3b99087140aba51df6ad2fd731e314af67c473a48602b4"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00264.py", "sha256": "e7fd141d87414ee12669a83dbfe54ef47b557a9c517ba8ec164264882c80e8bd"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-asset-download-desktop.py", "sha256": "c8af3ac7b0fd53e955a9c5d925e0ea004f219ef9c5b6629fdb57e6fecdba55a6"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "9429c88eb60c403ecd9e7f69ce024eb03667a0bf9243f0b31c0cb3fadc9c97ad"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00264/asset-download-desktop-report.json", "sha256": "399aed90c3b236f1c169fad88dbc92f5409d26ca35bdeb5768bb9272a50a7157"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00264/asset-download-local-exact-report.json", "sha256": "ad88b3a8b18007bf61d4351185ee2cab8c09e9e3a74958d521f94ff1a221795c"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00264.md", "sha256": "57cdac22f8e6e6bb5e233b4568e9d06885869341fac96ec5bd8e717f040edcac"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00264/task-context.json", "sha256": "d22c02c55e889b252ab0e11580693c6fc44225d4d650591942bee294557f4134"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00265"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00264/task-context.json
Normal file
185
tests/golden/M16-GAP-00264/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00264",
|
||||||
|
"parentTask": "M16-GAP-00263",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "Make the same minimal fixture produce observable operator:asset.asset_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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.asset_download",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00264.py -- tests/files/web/generated/M16-GAP-00264-operator-asset.asset_download.blend",
|
||||||
|
"npm --prefix web run test:generated-gap -- --task M16-GAP-00264",
|
||||||
|
"node tools/web/check-generated-gap.mjs --task M16-GAP-00264"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00264.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 2123,
|
||||||
|
"contextRemainingTokens": 529
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 7781,
|
||||||
|
"tokens": 1947
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00264.py",
|
||||||
|
"bytes": 738,
|
||||||
|
"tokens": 185
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00264-operator-asset.asset_download.blend",
|
||||||
|
"bytes": 85874,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 788450,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00264/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00264.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00264/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 738,
|
||||||
|
"tokens": 185
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00265",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00264.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00263/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00263.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00264.md",
|
||||||
|
"tests/golden/M16-GAP-00263/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00263.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00263",
|
||||||
|
"parentTask": "M16-GAP-00262",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00264",
|
||||||
|
"artifactCount": 15
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# M16-GAP-00263 Status",
|
||||||
|
"status: done",
|
||||||
|
"task: armature.symmetrize operator LOCAL_EXACT slice",
|
||||||
|
"updated: 2026-08-23 America/New_York",
|
||||||
|
"scope:",
|
||||||
|
"- The fixture contains one selected positive-X `WebGapArmatureSymmetrizeSource.L`",
|
||||||
|
" bone and one unrelated unselected bone. Blender desktop runs",
|
||||||
|
" `ARMATURE_OT_symmetrize(direction=\"NEGATIVE_X\")`, producing the mirrored"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1789,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 448
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00264.md",
|
||||||
|
"bytes": 1789,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 448
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00263/manifest.json",
|
||||||
|
"bytes": 2667,
|
||||||
|
"lines": 29,
|
||||||
|
"tokens": 667
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00263.md",
|
||||||
|
"bytes": 830,
|
||||||
|
"lines": 25,
|
||||||
|
"tokens": 208
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 1947,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 738,
|
||||||
|
"evidenceTokens": 185,
|
||||||
|
"totalTokens": 2132,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3156,
|
||||||
|
"serializedContextTokens": 753,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//assets/WebGapAssetsDownload.png",
|
||||||
|
"name": "WebGapAssetsDownloadImage",
|
||||||
|
"packed": false,
|
||||||
|
"size": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"source": "FILE"
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//assets/WebGapAssetsDownload.png",
|
||||||
|
"name": "WebGapAssetsDownloadImage",
|
||||||
|
"packed": false,
|
||||||
|
"size": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"source": "FILE"
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00265-operator-asset.assets_download.blend",
|
||||||
|
"fixtureSha256": "d2c09f34febbef1db3de830c37c33c1f7de8d6fc7ea1ef2aaf9eed7de243bb27",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_ASSETS_DOWNLOAD_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00265"
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00265",
|
||||||
|
"operation": "ASSET_ASSETS_DOWNLOAD_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00265-operator-asset.assets_download.blend",
|
||||||
|
"sha256": "d2c09f34febbef1db3de830c37c33c1f7de8d6fc7ea1ef2aaf9eed7de243bb27"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00265/assets-download-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"imageId": "image:WebGapAssetsDownloadImage",
|
||||||
|
"sourcePath": "//assets/WebGapAssetsDownload.png",
|
||||||
|
"assetStatus": "EXTERNAL",
|
||||||
|
"packed": false,
|
||||||
|
"dimensions": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00266"
|
||||||
|
}
|
||||||
28
tests/golden/M16-GAP-00265/manifest.json
Normal file
28
tests/golden/M16-GAP-00265/manifest.json
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00265",
|
||||||
|
"parentTask": "M16-GAP-00264",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_ASSETS_DOWNLOAD_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00264/manifest.json", "sha256": "227db04b1571e0ae7eb9c698b1b2d440118da166a525f3114d212825e9ebd67b"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00265-operator-asset.assets_download.blend", "sha256": "d2c09f34febbef1db3de830c37c33c1f7de8d6fc7ea1ef2aaf9eed7de243bb27"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00265.py", "sha256": "1a86706f3c011d4a0f0b443bb6db3500704b898f0b42af5795ed2ee94b6c4286"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-assets-download-desktop.py", "sha256": "512737cde0efa6cc6a669939c243e7b609cc7c37fc223c4923cc6a9adc035318"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "b4c76eefccf111de9b184220aacacd892221089eca5c857683efb8d2fee1a050"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00265/assets-download-desktop-report.json", "sha256": "1ce5009ec4582730437cbefbb5722699bc6d2fe0824eede52bf8de98b85ccb24"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00265/assets-download-local-exact-report.json", "sha256": "35d1005b88bb477b0bc686297d4e178fbdf1c3feeb7fb29bb443a019d7a34b4d"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00265.md", "sha256": "377f5180ae25d3912237ca1b3283f0a5f9d5292fe28952515918ec22467f8d9f"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00265/task-context.json", "sha256": "d9b040e30c2443cfb11dc196dbb042b1aa6a72a3a27b599ccdc591a98e340395"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00266"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00265/task-context.json
Normal file
185
tests/golden/M16-GAP-00265/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00265",
|
||||||
|
"parentTask": "M16-GAP-00264",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.assets_download",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00265.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 1972,
|
||||||
|
"contextRemainingTokens": 491
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 7932,
|
||||||
|
"tokens": 1985
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00265.py",
|
||||||
|
"bytes": 740,
|
||||||
|
"tokens": 185
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00265-operator-asset.assets_download.blend",
|
||||||
|
"bytes": 85879,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 791968,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00265/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00265.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00265/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 740,
|
||||||
|
"tokens": 185
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00266",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00265.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00264/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00264.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00265.md",
|
||||||
|
"tests/golden/M16-GAP-00264/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00264.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00264",
|
||||||
|
"parentTask": "M16-GAP-00263",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00265",
|
||||||
|
"artifactCount": 15
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1794,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 449
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00265.md",
|
||||||
|
"bytes": 1794,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 449
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00264/manifest.json",
|
||||||
|
"bytes": 2654,
|
||||||
|
"lines": 29,
|
||||||
|
"tokens": 664
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00264.md",
|
||||||
|
"bytes": 989,
|
||||||
|
"lines": 26,
|
||||||
|
"tokens": 248
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 1985,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 740,
|
||||||
|
"evidenceTokens": 185,
|
||||||
|
"totalTokens": 2170,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3194,
|
||||||
|
"serializedContextTokens": 754,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
38
tests/golden/M16-GAP-00266/assign-action-desktop-report.json
Normal file
38
tests/golden/M16-GAP-00266/assign-action-desktop-report.json
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"channels": [
|
||||||
|
{
|
||||||
|
"frames": [
|
||||||
|
1.0,
|
||||||
|
5.0
|
||||||
|
],
|
||||||
|
"index": 0,
|
||||||
|
"path": "location"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "WebGapAssignAction"
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"channels": [
|
||||||
|
{
|
||||||
|
"frames": [
|
||||||
|
1.0,
|
||||||
|
5.0
|
||||||
|
],
|
||||||
|
"index": 0,
|
||||||
|
"path": "location"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "WebGapAssignAction"
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00266-operator-asset.assign_action.blend",
|
||||||
|
"fixtureSha256": "6cefa4e22e0e8d5b2482cbe62c36e10cc58f51fa94fe843e6b953c438479fa98",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_ASSIGN_ACTION_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00266"
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00266",
|
||||||
|
"operation": "ASSET_ASSIGN_ACTION_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00266-operator-asset.assign_action.blend",
|
||||||
|
"sha256": "6cefa4e22e0e8d5b2482cbe62c36e10cc58f51fa94fe843e6b953c438479fa98"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00266/assign-action-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"actionId": "action:WebGapAssignAction:object:WebGapAssignActionObject",
|
||||||
|
"targetId": "object:WebGapAssignActionObject",
|
||||||
|
"channelPaths": [
|
||||||
|
"location[0]"
|
||||||
|
],
|
||||||
|
"keyframesPerChannel": [
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00267"
|
||||||
|
}
|
||||||
28
tests/golden/M16-GAP-00266/manifest.json
Normal file
28
tests/golden/M16-GAP-00266/manifest.json
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00266",
|
||||||
|
"parentTask": "M16-GAP-00265",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_ASSIGN_ACTION_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00265/manifest.json", "sha256": "9d3a041a635b7d0413797d7fb5bb60914a28ab43415517081b3d9f2ebf644b2d"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00266-operator-asset.assign_action.blend", "sha256": "6cefa4e22e0e8d5b2482cbe62c36e10cc58f51fa94fe843e6b953c438479fa98"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00266.py", "sha256": "e299bf65f70bc4eb08204f42894c961d0a7c2c69bfab5e4a26ed8924f52a6271"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-assign-action-desktop.py", "sha256": "b4ffdc3bd9120c2823fdcf29278695e49c21b3ee07345daa15712ef6d57ca6ec"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "ed8ec2e2f69cbba7a92ab91e6d4a0dad5b53a61fe280719e2a44c78e0a2ae1e3"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00266/assign-action-desktop-report.json", "sha256": "aacd8ad7641a390a2f2b4990d4b324bb9478ee0a45a42c9bf4e52720038dfab4"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00266/assign-action-local-exact-report.json", "sha256": "e2376fd259124a1d90db2ded522f1231df3d12d0f5eb3d82c229e95fc680f1dc"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00266.md", "sha256": "5173d19e5d61195f3a6b4688d607274a099e47b5c2bcbc39d0ed1d6ad5caaccb"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00266/task-context.json", "sha256": "167bfdff69ccc7568d7c20d4c61be173604255e1a9cd698e55df690444763dfb"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00267"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00266/task-context.json
Normal file
185
tests/golden/M16-GAP-00266/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00266",
|
||||||
|
"parentTask": "M16-GAP-00265",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.assign_action",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00266.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 2018,
|
||||||
|
"contextRemainingTokens": 504
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 7886,
|
||||||
|
"tokens": 1972
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00266.py",
|
||||||
|
"bytes": 1014,
|
||||||
|
"tokens": 254
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00266-operator-asset.assign_action.blend",
|
||||||
|
"bytes": 86324,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 795556,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00266/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00266.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00266/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 1014,
|
||||||
|
"tokens": 254
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00267",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00266.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00265/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00265.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00266.md",
|
||||||
|
"tests/golden/M16-GAP-00265/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00265.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00265",
|
||||||
|
"parentTask": "M16-GAP-00264",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00266",
|
||||||
|
"artifactCount": 15
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1784,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 446
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00266.md",
|
||||||
|
"bytes": 1784,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 446
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00265/manifest.json",
|
||||||
|
"bytes": 2659,
|
||||||
|
"lines": 29,
|
||||||
|
"tokens": 665
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00265.md",
|
||||||
|
"bytes": 948,
|
||||||
|
"lines": 26,
|
||||||
|
"tokens": 237
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 1972,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 1014,
|
||||||
|
"evidenceTokens": 254,
|
||||||
|
"totalTokens": 2226,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3250,
|
||||||
|
"serializedContextTokens": 753,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//WebGapBrowseContaining.blend",
|
||||||
|
"name": "WebGapBrowseContaining.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//WebGapBrowseContaining.blend",
|
||||||
|
"name": "WebGapBrowseContaining.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00267-operator-asset.browse_containing_blend_file.blend",
|
||||||
|
"fixtureSha256": "29e5e42f3ebe458a4ded1d1a7a0a1cd0fecb50867b193ee3ec98485df36e7d61",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_BROWSE_CONTAINING_BLEND_FILE_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00267"
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00267",
|
||||||
|
"operation": "ASSET_BROWSE_CONTAINING_BLEND_FILE_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00267-operator-asset.browse_containing_blend_file.blend",
|
||||||
|
"sha256": "29e5e42f3ebe458a4ded1d1a7a0a1cd0fecb50867b193ee3ec98485df36e7d61"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00267/browse-containing-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"libraryId": "library:WebGapBrowseContaining.blend",
|
||||||
|
"sourcePath": "//WebGapBrowseContaining.blend",
|
||||||
|
"libraryStatus": "EXTERNAL_REQUIRED",
|
||||||
|
"dependencyIds": []
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00268"
|
||||||
|
}
|
||||||
29
tests/golden/M16-GAP-00267/manifest.json
Normal file
29
tests/golden/M16-GAP-00267/manifest.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00267",
|
||||||
|
"parentTask": "M16-GAP-00266",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_BROWSE_CONTAINING_BLEND_FILE_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00266/manifest.json", "sha256": "aacbc7e4bfad12e03e8ba46dddef7d0c72d0511e8df0e158ef0005d4bb20dcf0"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00267-operator-asset.browse_containing_blend_file.blend", "sha256": "29e5e42f3ebe458a4ded1d1a7a0a1cd0fecb50867b193ee3ec98485df36e7d61"},
|
||||||
|
"librarySource": {"path": "tests/files/web/generated/WebGapBrowseContaining.blend", "sha256": "661f398dd346bc18484308b154845ca5d7d82af9e9e367767c2c1ef20f3fd369"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00267.py", "sha256": "bc950bc190d2e9c607a6d41cfc448977fe478b98723640287f63f4f42fcd2052"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-browse-containing-blend-file-desktop.py", "sha256": "05b68021e96e9b480298ddb2bd5c814ecf919a622d57ceabac7534eec31aad90"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "d6528398cf1ca5e8047df546715829963bca689c367c1374e10d8ee137cce232"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00267/browse-containing-desktop-report.json", "sha256": "cad41d8dfb33770fdbd87f44d2eb04b070cdb120665a188a379c0436fc25f324"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00267/browse-containing-local-exact-report.json", "sha256": "2c522d5b6c545f7bf8d7238d881a94c2d6463abcb41bf24989b3218962a51ac1"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00267.md", "sha256": "2784e307c2f4747a99dfecea527d413b5aea42c640cb2e5f0e5d3636619a8874"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00267/task-context.json", "sha256": "47039236bfbb8d1e2d130708d25ead95b54027b1b061d91ae73f686ed75660b0"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00268"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00267/task-context.json
Normal file
185
tests/golden/M16-GAP-00267/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00267",
|
||||||
|
"parentTask": "M16-GAP-00266",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.browse_containing_blend_file",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00267.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 1945,
|
||||||
|
"contextRemainingTokens": 485
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 7959,
|
||||||
|
"tokens": 1991
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00267.py",
|
||||||
|
"bytes": 1602,
|
||||||
|
"tokens": 401
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00267-operator-asset.browse_containing_blend_file.blend",
|
||||||
|
"bytes": 85938,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 799287,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00267/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00267.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00267/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 1602,
|
||||||
|
"tokens": 401
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00268",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00267.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00266/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00266.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00267.md",
|
||||||
|
"tests/golden/M16-GAP-00266/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00266.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00266",
|
||||||
|
"parentTask": "M16-GAP-00265",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00267",
|
||||||
|
"artifactCount": 15
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1859,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 465
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00267.md",
|
||||||
|
"bytes": 1859,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 465
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00266/manifest.json",
|
||||||
|
"bytes": 2649,
|
||||||
|
"lines": 29,
|
||||||
|
"tokens": 663
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00266.md",
|
||||||
|
"bytes": 956,
|
||||||
|
"lines": 25,
|
||||||
|
"tokens": 239
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 1991,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 1602,
|
||||||
|
"evidenceTokens": 401,
|
||||||
|
"totalTokens": 2392,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3416,
|
||||||
|
"serializedContextTokens": 765,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//WebGapBundleInstall.blend",
|
||||||
|
"name": "WebGapBundleInstall.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//WebGapBundleInstall.blend",
|
||||||
|
"name": "WebGapBundleInstall.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00268-operator-asset.bundle_install.blend",
|
||||||
|
"fixtureSha256": "64dd97ac23f70c83261635fc2337555b62818b92ffedee60cb13f3335851a994",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_BUNDLE_INSTALL_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00268"
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00268",
|
||||||
|
"operation": "ASSET_BUNDLE_INSTALL_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00268-operator-asset.bundle_install.blend",
|
||||||
|
"sha256": "64dd97ac23f70c83261635fc2337555b62818b92ffedee60cb13f3335851a994"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00268/bundle-install-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"libraryId": "library:WebGapBundleInstall.blend",
|
||||||
|
"sourcePath": "//WebGapBundleInstall.blend",
|
||||||
|
"libraryStatus": "EXTERNAL_REQUIRED",
|
||||||
|
"dependencyIds": []
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00269"
|
||||||
|
}
|
||||||
29
tests/golden/M16-GAP-00268/manifest.json
Normal file
29
tests/golden/M16-GAP-00268/manifest.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00268",
|
||||||
|
"parentTask": "M16-GAP-00267",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_BUNDLE_INSTALL_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00267/manifest.json", "sha256": "918b5e13ec9e92186ec74f2c49aef4602dee002a92a7c1303ce0c86ef5d5370d"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00268-operator-asset.bundle_install.blend", "sha256": "64dd97ac23f70c83261635fc2337555b62818b92ffedee60cb13f3335851a994"},
|
||||||
|
"librarySource": {"path": "tests/files/web/generated/WebGapBundleInstall.blend", "sha256": "89537577e6e5939da73f37fb22d40ec336a30e7ad491043b4054b0b14e4418fe"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00268.py", "sha256": "4b9ab994369328b54f630882410066f5ef04980108a692d686430b8331454b6c"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-bundle-install-desktop.py", "sha256": "a34f4c2095c0ea2d47837f5d631d8dea6a19a70a620982333ddc9abd0a227099"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "b0abffb689387f6ee753292f6592c81b307e71e392760b1277529d9d176fd7ad"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00268/bundle-install-desktop-report.json", "sha256": "088fbc1390ae171dc219c201f09519f8c0fc460bc61138d13d189e3e6ec6d1c0"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00268/bundle-install-local-exact-report.json", "sha256": "be82a7849a167cebed509f7ac451f3c1c1756757afe34e940453df686b507d97"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00268.md", "sha256": "7556cb0df348aca6d83dadc3d155e5ab9d9403e1e470f765acebcaa851a7d058"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00268/task-context.json", "sha256": "e44a443c29beab5923dbbab2a7e8e8e830654873f8d093345b24c3cd758620ad"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00269"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00268/task-context.json
Normal file
185
tests/golden/M16-GAP-00268/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00268",
|
||||||
|
"parentTask": "M16-GAP-00267",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.bundle_install",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00268.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 1701,
|
||||||
|
"contextRemainingTokens": 423
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 8203,
|
||||||
|
"tokens": 2053
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00268.py",
|
||||||
|
"bytes": 1587,
|
||||||
|
"tokens": 397
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00268-operator-asset.bundle_install.blend",
|
||||||
|
"bytes": 85884,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 802967,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00268/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00268.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00268/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 1587,
|
||||||
|
"tokens": 397
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00269",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00268.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00267/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00267.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00268.md",
|
||||||
|
"tests/golden/M16-GAP-00267/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00267.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00267",
|
||||||
|
"parentTask": "M16-GAP-00266",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00268",
|
||||||
|
"artifactCount": 16
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1789,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 448
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00268.md",
|
||||||
|
"bytes": 1789,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 448
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00267/manifest.json",
|
||||||
|
"bytes": 2869,
|
||||||
|
"lines": 30,
|
||||||
|
"tokens": 718
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00267.md",
|
||||||
|
"bytes": 1050,
|
||||||
|
"lines": 27,
|
||||||
|
"tokens": 263
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 2053,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 1587,
|
||||||
|
"evidenceTokens": 397,
|
||||||
|
"totalTokens": 2450,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3474,
|
||||||
|
"serializedContextTokens": 754,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//WebGapCatalogDelete.blend",
|
||||||
|
"name": "WebGapCatalogDelete.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//WebGapCatalogDelete.blend",
|
||||||
|
"name": "WebGapCatalogDelete.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00269-operator-asset.catalog_delete.blend",
|
||||||
|
"fixtureSha256": "7fa8ebaf85c2bd474dcaa9e4ce94ad81665b501841d15c48e371bb8f033702a2",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_CATALOG_DELETE_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00269"
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00269",
|
||||||
|
"operation": "ASSET_CATALOG_DELETE_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00269-operator-asset.catalog_delete.blend",
|
||||||
|
"sha256": "7fa8ebaf85c2bd474dcaa9e4ce94ad81665b501841d15c48e371bb8f033702a2"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00269/catalog-delete-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"libraryId": "library:WebGapCatalogDelete.blend",
|
||||||
|
"sourcePath": "//WebGapCatalogDelete.blend",
|
||||||
|
"libraryStatus": "EXTERNAL_REQUIRED",
|
||||||
|
"dependencyIds": []
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00270"
|
||||||
|
}
|
||||||
29
tests/golden/M16-GAP-00269/manifest.json
Normal file
29
tests/golden/M16-GAP-00269/manifest.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00269",
|
||||||
|
"parentTask": "M16-GAP-00268",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_CATALOG_DELETE_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00268/manifest.json", "sha256": "8926cead64df23f2bf6386ac728fb8836bcef5c5bd645faecad45a3eb7b06b03"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00269-operator-asset.catalog_delete.blend", "sha256": "7fa8ebaf85c2bd474dcaa9e4ce94ad81665b501841d15c48e371bb8f033702a2"},
|
||||||
|
"librarySource": {"path": "tests/files/web/generated/WebGapCatalogDelete.blend", "sha256": "137a558e0ac46a6b9c466b1023a871adb6666ec0de0f9756e041ce8858ed374d"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00269.py", "sha256": "2be254c3d36647b1d6dfb06af054ab96a0def10666f911bedc3a4225206ff749"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-catalog-delete-desktop.py", "sha256": "d0347a61c6a0388062e0f9cdaa6c9a25fc3662c667b6641705543ac816e0a355"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "789d04ba83d2119aec7f5d2531acbb8c5aef946e520df9e5e9aa7b415bb2e677"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00269/catalog-delete-desktop-report.json", "sha256": "68070e257397148441c11e1ecfc9a2202f9955cee17a3f8ee878d4e0f1310790"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00269/catalog-delete-local-exact-report.json", "sha256": "1cd38bfab4ba20d3238bbb11fc9838b5479f96c345c6f98e479eea25fe229bd1"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00269.md", "sha256": "6c65ae2c6884a89c9051b13d5336cb9e8c454ccb8e9ed8d80e84b09ef84db0c7"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00269/task-context.json", "sha256": "e1bb2480ec7894a2ce1b8c5ae2b221f6e55cf19c7c4e72aef04d89d5da147878"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00270"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00269/task-context.json
Normal file
185
tests/golden/M16-GAP-00269/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00269",
|
||||||
|
"parentTask": "M16-GAP-00268",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.catalog_delete",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00269.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 1792,
|
||||||
|
"contextRemainingTokens": 446
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 8112,
|
||||||
|
"tokens": 2030
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00269.py",
|
||||||
|
"bytes": 1536,
|
||||||
|
"tokens": 384
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00269-operator-asset.catalog_delete.blend",
|
||||||
|
"bytes": 85903,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 806647,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00269/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00269.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00269/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 1536,
|
||||||
|
"tokens": 384
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00270",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00269.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00268/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00268.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00269.md",
|
||||||
|
"tests/golden/M16-GAP-00268/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00268.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00268",
|
||||||
|
"parentTask": "M16-GAP-00267",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00269",
|
||||||
|
"artifactCount": 16
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1789,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 448
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00269.md",
|
||||||
|
"bytes": 1789,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 448
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00268/manifest.json",
|
||||||
|
"bytes": 2818,
|
||||||
|
"lines": 30,
|
||||||
|
"tokens": 705
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00268.md",
|
||||||
|
"bytes": 1010,
|
||||||
|
"lines": 27,
|
||||||
|
"tokens": 253
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 2030,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 1536,
|
||||||
|
"evidenceTokens": 384,
|
||||||
|
"totalTokens": 2414,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3438,
|
||||||
|
"serializedContextTokens": 754,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
22
tests/golden/M16-GAP-00270/catalog-new-desktop-report.json
Normal file
22
tests/golden/M16-GAP-00270/catalog-new-desktop-report.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//WebGapCatalogNew.blend",
|
||||||
|
"name": "WebGapCatalogNew.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//WebGapCatalogNew.blend",
|
||||||
|
"name": "WebGapCatalogNew.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00270-operator-asset.catalog_new.blend",
|
||||||
|
"fixtureSha256": "8c874d8ec51cb7cbfa787780ca7c8e636ce9a98b4998ef81ddbd9fdd34658662",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_CATALOG_NEW_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00270"
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00270",
|
||||||
|
"operation": "ASSET_CATALOG_NEW_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00270-operator-asset.catalog_new.blend",
|
||||||
|
"sha256": "8c874d8ec51cb7cbfa787780ca7c8e636ce9a98b4998ef81ddbd9fdd34658662"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00270/catalog-new-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"libraryId": "library:WebGapCatalogNew.blend",
|
||||||
|
"sourcePath": "//WebGapCatalogNew.blend",
|
||||||
|
"libraryStatus": "EXTERNAL_REQUIRED",
|
||||||
|
"dependencyIds": []
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00271"
|
||||||
|
}
|
||||||
29
tests/golden/M16-GAP-00270/manifest.json
Normal file
29
tests/golden/M16-GAP-00270/manifest.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00270",
|
||||||
|
"parentTask": "M16-GAP-00269",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_CATALOG_NEW_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00269/manifest.json", "sha256": "d197196e37e5f26f13db0f03c099287fe444ebe64688bb60d6ce38e1803559fb"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00270-operator-asset.catalog_new.blend", "sha256": "8c874d8ec51cb7cbfa787780ca7c8e636ce9a98b4998ef81ddbd9fdd34658662"},
|
||||||
|
"librarySource": {"path": "tests/files/web/generated/WebGapCatalogNew.blend", "sha256": "a12a6480d7254d290d0617e16f72c93ef4cbd043ebc004f94559436988a66ef2"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00270.py", "sha256": "ccaa0c91694f931c0fb6313695b8bb5eae795e8003d24ff67f0eb21328184727"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-catalog-new-desktop.py", "sha256": "1a5331f11bf741efb897f4c719ea4ff2457e15823c10ca805085d63e059984c1"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "4794b5e0c54f1496b963a912f9c44306277754ee702d6468d6e42c5084f04bac"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00270/catalog-new-desktop-report.json", "sha256": "a8037c3b339c215db7bc4143ce0999074a366019a8868516baec00086378e2d9"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00270/catalog-new-local-exact-report.json", "sha256": "99f10be076dd573ee658256e2b2e08c40af1997b344268a84cdc0fa8fe939e81"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00270.md", "sha256": "293a56ae16f499b98784f05b12d1ef0ec4e9a844763ac1515b1c11d7f26fdcd9"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00270/task-context.json", "sha256": "ee463f5baf378f77c68c9f30d5f21caebcd027138222b5bf4007a5e14696ff56"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00271"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00270/task-context.json
Normal file
185
tests/golden/M16-GAP-00270/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00270",
|
||||||
|
"parentTask": "M16-GAP-00269",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.catalog_new",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00270.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 1795,
|
||||||
|
"contextRemainingTokens": 447
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 8109,
|
||||||
|
"tokens": 2029
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00270.py",
|
||||||
|
"bytes": 1425,
|
||||||
|
"tokens": 357
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00270-operator-asset.catalog_new.blend",
|
||||||
|
"bytes": 85912,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 810309,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00270/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00270.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00270/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 1425,
|
||||||
|
"tokens": 357
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00271",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00270.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00269/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00269.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00270.md",
|
||||||
|
"tests/golden/M16-GAP-00269/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00269.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00269",
|
||||||
|
"parentTask": "M16-GAP-00268",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00270",
|
||||||
|
"artifactCount": 16
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1774,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 444
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00270.md",
|
||||||
|
"bytes": 1774,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 444
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00269/manifest.json",
|
||||||
|
"bytes": 2818,
|
||||||
|
"lines": 30,
|
||||||
|
"tokens": 705
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00269.md",
|
||||||
|
"bytes": 1022,
|
||||||
|
"lines": 27,
|
||||||
|
"tokens": 256
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 2029,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 1425,
|
||||||
|
"evidenceTokens": 357,
|
||||||
|
"totalTokens": 2386,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3410,
|
||||||
|
"serializedContextTokens": 752,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
22
tests/golden/M16-GAP-00271/catalog-redo-desktop-report.json
Normal file
22
tests/golden/M16-GAP-00271/catalog-redo-desktop-report.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//WebGapCatalogRedo.blend",
|
||||||
|
"name": "WebGapCatalogRedo.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//WebGapCatalogRedo.blend",
|
||||||
|
"name": "WebGapCatalogRedo.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00271-operator-asset.catalog_redo.blend",
|
||||||
|
"fixtureSha256": "2e3481a9f155900774bbcc3e5d07ca65bedc2029e3281e86857fd943e81396cd",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_CATALOG_REDO_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00271"
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00271",
|
||||||
|
"operation": "ASSET_CATALOG_REDO_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00271-operator-asset.catalog_redo.blend",
|
||||||
|
"sha256": "2e3481a9f155900774bbcc3e5d07ca65bedc2029e3281e86857fd943e81396cd"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00271/catalog-redo-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"libraryId": "library:WebGapCatalogRedo.blend",
|
||||||
|
"sourcePath": "//WebGapCatalogRedo.blend",
|
||||||
|
"libraryStatus": "EXTERNAL_REQUIRED",
|
||||||
|
"dependencyIds": []
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00272"
|
||||||
|
}
|
||||||
29
tests/golden/M16-GAP-00271/manifest.json
Normal file
29
tests/golden/M16-GAP-00271/manifest.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00271",
|
||||||
|
"parentTask": "M16-GAP-00270",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_CATALOG_REDO_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00270/manifest.json", "sha256": "c24c8cebb471d9a1d37e180a39d5091da36356cd4ea6065a1bf5110ac5ee86f0"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00271-operator-asset.catalog_redo.blend", "sha256": "2e3481a9f155900774bbcc3e5d07ca65bedc2029e3281e86857fd943e81396cd"},
|
||||||
|
"librarySource": {"path": "tests/files/web/generated/WebGapCatalogRedo.blend", "sha256": "53367b4765383ae0cf232e02eaca1fbf07407946a600c91cf8d1f5303e21d0c7"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00271.py", "sha256": "8012efb7f85f89625f13686743798051fa5febaae361b179117c992ca4bc972c"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-catalog-redo-desktop.py", "sha256": "89ff11f1ec2f76c1d34c49549e2499db2df084fff63fcfb156d65e3c1f46d8f1"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "f7fb2c2ab7b13535db130e1ed2ac3adc027ab77621f6bad129c4e0ff2ddd863b"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00271/catalog-redo-desktop-report.json", "sha256": "31dedccda115a8219307ad7f677602fc907e6e012297b4e6a6a68f19fb1415d5"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00271/catalog-redo-local-exact-report.json", "sha256": "25e5b338ad95d2e09e0cc651fd14f5c66a21be78f3d0d0039f8b161386e2fdb9"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00271.md", "sha256": "d660b0ec53156000900bfbc2794d583a321788acba6298de35f228cf8cf6111b"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00271/task-context.json", "sha256": "1ef1edcfb45f3ce201efec1aa2efb39f95aeaec909eccb02e13cc7f98335a11b"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00272"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00271/task-context.json
Normal file
185
tests/golden/M16-GAP-00271/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00271",
|
||||||
|
"parentTask": "M16-GAP-00270",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.catalog_redo",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00271.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 1817,
|
||||||
|
"contextRemainingTokens": 453
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 8087,
|
||||||
|
"tokens": 2023
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00271.py",
|
||||||
|
"bytes": 1043,
|
||||||
|
"tokens": 261
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00271-operator-asset.catalog_redo.blend",
|
||||||
|
"bytes": 85877,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 813863,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00271/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00271.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00271/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 1043,
|
||||||
|
"tokens": 261
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00272",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00271.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00270/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00270.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00271.md",
|
||||||
|
"tests/golden/M16-GAP-00270/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00270.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00270",
|
||||||
|
"parentTask": "M16-GAP-00269",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00271",
|
||||||
|
"artifactCount": 16
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1779,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 445
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00271.md",
|
||||||
|
"bytes": 1779,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 445
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00270/manifest.json",
|
||||||
|
"bytes": 2800,
|
||||||
|
"lines": 30,
|
||||||
|
"tokens": 700
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00270.md",
|
||||||
|
"bytes": 1013,
|
||||||
|
"lines": 27,
|
||||||
|
"tokens": 254
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 2023,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 1043,
|
||||||
|
"evidenceTokens": 261,
|
||||||
|
"totalTokens": 2284,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3308,
|
||||||
|
"serializedContextTokens": 753,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
22
tests/golden/M16-GAP-00272/catalog-undo-desktop-report.json
Normal file
22
tests/golden/M16-GAP-00272/catalog-undo-desktop-report.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//WebGapCatalogUndo.blend",
|
||||||
|
"name": "WebGapCatalogUndo.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//WebGapCatalogUndo.blend",
|
||||||
|
"name": "WebGapCatalogUndo.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00272-operator-asset.catalog_undo.blend",
|
||||||
|
"fixtureSha256": "fa003b726f82cf42dfbd5ae027ad6b6c8ff03bdcc337154d835cae241a1265cd",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_CATALOG_UNDO_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00272"
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00272",
|
||||||
|
"operation": "ASSET_CATALOG_UNDO_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00272-operator-asset.catalog_undo.blend",
|
||||||
|
"sha256": "fa003b726f82cf42dfbd5ae027ad6b6c8ff03bdcc337154d835cae241a1265cd"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00272/catalog-undo-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"libraryId": "library:WebGapCatalogUndo.blend",
|
||||||
|
"sourcePath": "//WebGapCatalogUndo.blend",
|
||||||
|
"libraryStatus": "EXTERNAL_REQUIRED",
|
||||||
|
"dependencyIds": []
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00273"
|
||||||
|
}
|
||||||
29
tests/golden/M16-GAP-00272/manifest.json
Normal file
29
tests/golden/M16-GAP-00272/manifest.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00272",
|
||||||
|
"parentTask": "M16-GAP-00271",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_CATALOG_UNDO_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00271/manifest.json", "sha256": "d46fdf0ef0d6c1702682abc8ac076bbd0d46298d380995f6d62003029b489513"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00272-operator-asset.catalog_undo.blend", "sha256": "fa003b726f82cf42dfbd5ae027ad6b6c8ff03bdcc337154d835cae241a1265cd"},
|
||||||
|
"librarySource": {"path": "tests/files/web/generated/WebGapCatalogUndo.blend", "sha256": "2ee954737c6f35b5f9af2eb5f350ea3e34a9ff6f491b8a4184ccb18875c6f3b8"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00272.py", "sha256": "e7aac853fe0c589dc19375ab30259635e5af15c59aeb12a75eb8f7c6ac745052"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-catalog-undo-desktop.py", "sha256": "4a4866dc48a2fc8318549ef5a143697b2ba51643b8be3865975596882569c773"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "59c3520ab3de2f8275c730dd9b9680ed9b64aced4dcccc800b051490b6715a93"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00272/catalog-undo-desktop-report.json", "sha256": "21d131f2b2c5ffe8772bcb4606dbf16388467572cd0542c6dd16c66e1730b712"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00272/catalog-undo-local-exact-report.json", "sha256": "4cb20b624a5f96d417c33d928b760befaacb8c59610f197ff1a666d1fc78a5f0"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00272.md", "sha256": "522fe8b32558b75f87488fafe11ebc17994bb9742f24663c5ea5a85d64e6598c"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00272/task-context.json", "sha256": "ce9557e77c46435c6153a6173fb59b5d50686d8738bbab96490d631965219867"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00273"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00272/task-context.json
Normal file
185
tests/golden/M16-GAP-00272/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00272",
|
||||||
|
"parentTask": "M16-GAP-00271",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.catalog_undo",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00272.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 1808,
|
||||||
|
"contextRemainingTokens": 451
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 8096,
|
||||||
|
"tokens": 2025
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00272.py",
|
||||||
|
"bytes": 995,
|
||||||
|
"tokens": 249
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00272-operator-asset.catalog_undo.blend",
|
||||||
|
"bytes": 85892,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 817415,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00272/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00272.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00272/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 995,
|
||||||
|
"tokens": 249
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00273",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00272.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00271/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00271.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00272.md",
|
||||||
|
"tests/golden/M16-GAP-00271/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00271.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00271",
|
||||||
|
"parentTask": "M16-GAP-00270",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00272",
|
||||||
|
"artifactCount": 16
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1779,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 445
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00272.md",
|
||||||
|
"bytes": 1779,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 445
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00271/manifest.json",
|
||||||
|
"bytes": 2806,
|
||||||
|
"lines": 30,
|
||||||
|
"tokens": 702
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00271.md",
|
||||||
|
"bytes": 1016,
|
||||||
|
"lines": 27,
|
||||||
|
"tokens": 254
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 2025,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 995,
|
||||||
|
"evidenceTokens": 249,
|
||||||
|
"totalTokens": 2274,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3298,
|
||||||
|
"serializedContextTokens": 752,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//WebGapCatalogUndoPush.blend",
|
||||||
|
"name": "WebGapCatalogUndoPush.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//WebGapCatalogUndoPush.blend",
|
||||||
|
"name": "WebGapCatalogUndoPush.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00273-operator-asset.catalog_undo_push.blend",
|
||||||
|
"fixtureSha256": "f835a3088b975a283a99a69738dbf0ecc8a71b463b3c124da15ea6e54599256b",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_CATALOG_UNDO_PUSH_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00273"
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00273",
|
||||||
|
"operation": "ASSET_CATALOG_UNDO_PUSH_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00273-operator-asset.catalog_undo_push.blend",
|
||||||
|
"sha256": "f835a3088b975a283a99a69738dbf0ecc8a71b463b3c124da15ea6e54599256b"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00273/catalog-undo-push-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"libraryId": "library:WebGapCatalogUndoPush.blend",
|
||||||
|
"sourcePath": "//WebGapCatalogUndoPush.blend",
|
||||||
|
"libraryStatus": "EXTERNAL_REQUIRED",
|
||||||
|
"dependencyIds": []
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00274"
|
||||||
|
}
|
||||||
29
tests/golden/M16-GAP-00273/manifest.json
Normal file
29
tests/golden/M16-GAP-00273/manifest.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00273",
|
||||||
|
"parentTask": "M16-GAP-00272",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_CATALOG_UNDO_PUSH_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00272/manifest.json", "sha256": "eb3675367849f1a784e8028a43efac24fcede55cedd38d55b121cd88aa1facae"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00273-operator-asset.catalog_undo_push.blend", "sha256": "f835a3088b975a283a99a69738dbf0ecc8a71b463b3c124da15ea6e54599256b"},
|
||||||
|
"librarySource": {"path": "tests/files/web/generated/WebGapCatalogUndoPush.blend", "sha256": "448fdabd5281e25a949ceefdb0b76804f2a47d2d9e5b784f8f998f0be289fd4c"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00273.py", "sha256": "120262e67b215a5d778100b820d74b8d3f216b20e36402a4f389099751a728c2"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-catalog-undo-push-desktop.py", "sha256": "7e218eff97f8d4a2bd475d9957a94a784f4a76da3b35938389eb59eae7592795"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "abe69afee4f6a670d7c71abeba44118d7a01020ebac4665793451eafd4a7c0d5"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00273/catalog-undo-push-desktop-report.json", "sha256": "03421f7e7ffe6eb3f0ec93c6f09cd505f806e228145cf4ce6d55e3b841b8b34b"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00273/catalog-undo-push-local-exact-report.json", "sha256": "86e5cabacde4ee419d71011b902e0fc561e7da94028879bca4ca0315ad1d4f72"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00273.md", "sha256": "5e93f2d8942d2bf5f49beef7fb427e9968e359ed6ada8a40d11072549075f2d8"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00273/task-context.json", "sha256": "8679b3271d07fe1d4eaf2c6dcc6ef833d9c2853dda4643339071c60dc8bfe2f7"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00274"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00273/task-context.json
Normal file
185
tests/golden/M16-GAP-00273/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00273",
|
||||||
|
"parentTask": "M16-GAP-00272",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.catalog_undo_push",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00273.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 1783,
|
||||||
|
"contextRemainingTokens": 445
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 8121,
|
||||||
|
"tokens": 2031
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00273.py",
|
||||||
|
"bytes": 1007,
|
||||||
|
"tokens": 252
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00273-operator-asset.catalog_undo_push.blend",
|
||||||
|
"bytes": 85934,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 820984,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00273/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00273.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00273/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 1007,
|
||||||
|
"tokens": 252
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00274",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00273.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00272/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00272.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00273.md",
|
||||||
|
"tests/golden/M16-GAP-00272/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00272.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00272",
|
||||||
|
"parentTask": "M16-GAP-00271",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00273",
|
||||||
|
"artifactCount": 16
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1804,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 451
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00273.md",
|
||||||
|
"bytes": 1804,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 451
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00272/manifest.json",
|
||||||
|
"bytes": 2806,
|
||||||
|
"lines": 30,
|
||||||
|
"tokens": 702
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00272.md",
|
||||||
|
"bytes": 1016,
|
||||||
|
"lines": 27,
|
||||||
|
"tokens": 254
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 2031,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 1007,
|
||||||
|
"evidenceTokens": 252,
|
||||||
|
"totalTokens": 2283,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3307,
|
||||||
|
"serializedContextTokens": 757,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
22
tests/golden/M16-GAP-00274/catalogs-save-desktop-report.json
Normal file
22
tests/golden/M16-GAP-00274/catalogs-save-desktop-report.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//WebGapCatalogsSave.blend",
|
||||||
|
"name": "WebGapCatalogsSave.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//WebGapCatalogsSave.blend",
|
||||||
|
"name": "WebGapCatalogsSave.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00274-operator-asset.catalogs_save.blend",
|
||||||
|
"fixtureSha256": "959faaac852e63a8e2ba2f90ef700ab8cf96b8dfe1046b37d24900ae69efae2a",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_CATALOGS_SAVE_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00274"
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00274",
|
||||||
|
"operation": "ASSET_CATALOGS_SAVE_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00274-operator-asset.catalogs_save.blend",
|
||||||
|
"sha256": "959faaac852e63a8e2ba2f90ef700ab8cf96b8dfe1046b37d24900ae69efae2a"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00274/catalogs-save-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"libraryId": "library:WebGapCatalogsSave.blend",
|
||||||
|
"sourcePath": "//WebGapCatalogsSave.blend",
|
||||||
|
"libraryStatus": "EXTERNAL_REQUIRED",
|
||||||
|
"dependencyIds": []
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00275"
|
||||||
|
}
|
||||||
29
tests/golden/M16-GAP-00274/manifest.json
Normal file
29
tests/golden/M16-GAP-00274/manifest.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00274",
|
||||||
|
"parentTask": "M16-GAP-00273",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_CATALOGS_SAVE_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00273/manifest.json", "sha256": "3b45536a28d99f899fb095a5d2e31265a8ef2b7fb92ceb8be26e061621e253c1"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00274-operator-asset.catalogs_save.blend", "sha256": "959faaac852e63a8e2ba2f90ef700ab8cf96b8dfe1046b37d24900ae69efae2a"},
|
||||||
|
"librarySource": {"path": "tests/files/web/generated/WebGapCatalogsSave.blend", "sha256": "11379128d21ba1ffd289a6155833729b2ee8f290b1aa390a4cd3c0e4afafd38d"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00274.py", "sha256": "7db1e65ed1f4329210791cfffc2888c321073bfb557cbac158577d7d4375bb59"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-catalogs-save-desktop.py", "sha256": "ffa7e28e8bfb2669ff2e05a10edc7794eb43c31c0d4abaa3841b1887424bea92"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00274/catalogs-save-desktop-report.json", "sha256": "b86ad738543cc1e04fde964e5d4cbcd5db2e9327838e3afda54110df708fea6a"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00274/catalogs-save-local-exact-report.json", "sha256": "6513408d34edd25705fc7fcc2516f3f51761c36880c829ff5c1e208b286f61d4"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00274.md", "sha256": "fddc4251a417c8478d8cc01436e75c7e652a41c12fdea533bb440bef8a7bdad8"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00274/task-context.json", "sha256": "8c82ad5daa15b56a5964d3fb9aea734e995bc874ef8ed418380d840825c5d480"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00275"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00274/task-context.json
Normal file
185
tests/golden/M16-GAP-00274/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00274",
|
||||||
|
"parentTask": "M16-GAP-00273",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.catalogs_save",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00274.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 1760,
|
||||||
|
"contextRemainingTokens": 439
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 8144,
|
||||||
|
"tokens": 2037
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00274.py",
|
||||||
|
"bytes": 1435,
|
||||||
|
"tokens": 359
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00274-operator-asset.catalogs_save.blend",
|
||||||
|
"bytes": 85910,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 824532,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00274/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00274.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00274/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 1435,
|
||||||
|
"tokens": 359
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00275",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00274.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00273/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00273.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00274.md",
|
||||||
|
"tests/golden/M16-GAP-00273/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00273.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00273",
|
||||||
|
"parentTask": "M16-GAP-00272",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00274",
|
||||||
|
"artifactCount": 16
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1784,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 446
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00274.md",
|
||||||
|
"bytes": 1784,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 446
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00273/manifest.json",
|
||||||
|
"bytes": 2835,
|
||||||
|
"lines": 30,
|
||||||
|
"tokens": 709
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00273.md",
|
||||||
|
"bytes": 1030,
|
||||||
|
"lines": 27,
|
||||||
|
"tokens": 258
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 2037,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 1435,
|
||||||
|
"evidenceTokens": 359,
|
||||||
|
"totalTokens": 2396,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3420,
|
||||||
|
"serializedContextTokens": 754,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
22
tests/golden/M16-GAP-00275/asset-clear-desktop-report.json
Normal file
22
tests/golden/M16-GAP-00275/asset-clear-desktop-report.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"after": {
|
||||||
|
"filepath": "//WebGapAssetClear.blend",
|
||||||
|
"name": "WebGapAssetClear.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"before": {
|
||||||
|
"filepath": "//WebGapAssetClear.blend",
|
||||||
|
"name": "WebGapAssetClear.blend",
|
||||||
|
"packed": false
|
||||||
|
},
|
||||||
|
"blenderVersion": "5.2.0 LTS",
|
||||||
|
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00275-operator-asset.clear.blend",
|
||||||
|
"fixtureSha256": "0d537a68b2f11f3f153522cf004216608fddb71f1c3a433875472bd534961c80",
|
||||||
|
"mainMutation": "NONE",
|
||||||
|
"operation": "ASSET_CLEAR_DESKTOP",
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"poll": false,
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00275"
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00275",
|
||||||
|
"operation": "ASSET_CLEAR_LOCAL_EXACT",
|
||||||
|
"fixture": {
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00275-operator-asset.clear.blend",
|
||||||
|
"sha256": "0d537a68b2f11f3f153522cf004216608fddb71f1c3a433875472bd534961c80"
|
||||||
|
},
|
||||||
|
"desktop": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"report": "tests/golden/M16-GAP-00275/asset-clear-desktop-report.json",
|
||||||
|
"poll": false,
|
||||||
|
"operatorStatus": "CANCELLED",
|
||||||
|
"mainMutation": "NONE"
|
||||||
|
},
|
||||||
|
"wasm": {
|
||||||
|
"status": "EXACT",
|
||||||
|
"libraryId": "library:WebGapAssetClear.blend",
|
||||||
|
"sourcePath": "//WebGapAssetClear.blend",
|
||||||
|
"libraryStatus": "EXTERNAL_REQUIRED",
|
||||||
|
"dependencyIds": []
|
||||||
|
},
|
||||||
|
"saveReopen": "EXACT",
|
||||||
|
"negative": {
|
||||||
|
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00276"
|
||||||
|
}
|
||||||
29
tests/golden/M16-GAP-00275/manifest.json
Normal file
29
tests/golden/M16-GAP-00275/manifest.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00275",
|
||||||
|
"parentTask": "M16-GAP-00274",
|
||||||
|
"enablingTask": false,
|
||||||
|
"parityStateChange": true,
|
||||||
|
"runtime": "BLENDER_5_2_LOCAL_EXACT",
|
||||||
|
"operation": "ASSET_CLEAR_LOCAL_EXACT",
|
||||||
|
"status": "done",
|
||||||
|
"artifacts": {
|
||||||
|
"parentManifest": {"path": "tests/golden/M16-GAP-00274/manifest.json", "sha256": "f6172a4c559f540aac9937d39c55ce377de3e2d802d7c76da4ff1ee415967945"},
|
||||||
|
"fixture": {"path": "tests/files/web/generated/M16-GAP-00275-operator-asset.clear.blend", "sha256": "0d537a68b2f11f3f153522cf004216608fddb71f1c3a433875472bd534961c80"},
|
||||||
|
"librarySource": {"path": "tests/files/web/generated/WebGapAssetClear.blend", "sha256": "2d8430142618ca61e08110b59254ca58a3028584c12d084c26e843f7be0b65e2"},
|
||||||
|
"generator": {"path": "tools/web/generated/M16-GAP-00275.py", "sha256": "6cf60da3cbdf0c58af693489c800d60fdb719e963c105edc63c2346a9936cc6a"},
|
||||||
|
"desktopChecker": {"path": "tools/web/check-action-asset-clear-desktop.py", "sha256": "f5588fa8170c5ed1383a024dc9ea83c12259c49b772e8843d32df40bf2ccbb53"},
|
||||||
|
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "9b80119598b66a90d14860d9f3035ff99bfe0af4b8b34115fabdba6e5da676b5"},
|
||||||
|
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"},
|
||||||
|
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
|
||||||
|
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"},
|
||||||
|
"wasmJs": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"wasmJsPublic": {"path": "web/app/public/vendor/blender/web_engine.js", "sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"},
|
||||||
|
"desktopReport": {"path": "tests/golden/M16-GAP-00275/asset-clear-desktop-report.json", "sha256": "6cf741f2b11fd71c752357f4bf5b1f8a501f95290b25dae6219a8ed389454f67"},
|
||||||
|
"webReport": {"path": "tests/golden/M16-GAP-00275/asset-clear-local-exact-report.json", "sha256": "4effc24108374f2d87cf862c5aac8b7fae814e219957759c5256c568a5dcbc21"},
|
||||||
|
"status": {"path": "docs/status/M16-GAP-00275.md", "sha256": "5d47cdf2d57f114c262638677352047c7c2bb004822ea719b14b9c0f45078a24"},
|
||||||
|
"taskContext": {"path": "tests/golden/M16-GAP-00275/task-context.json", "sha256": "841ce4b4e4d4d044746e71160c2b2edca9200370e456fe90658a2524533febd6"}
|
||||||
|
},
|
||||||
|
"nextTask": "M16-GAP-00276"
|
||||||
|
}
|
||||||
185
tests/golden/M16-GAP-00275/task-context.json
Normal file
185
tests/golden/M16-GAP-00275/task-context.json
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00275",
|
||||||
|
"parentTask": "M16-GAP-00274",
|
||||||
|
"status": "in_progress",
|
||||||
|
"goal": "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.",
|
||||||
|
"scope": {
|
||||||
|
"gap": "operator:asset.clear",
|
||||||
|
"ownerFamily": "OPERATOR",
|
||||||
|
"implementationClass": "LOCAL_EXACT"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"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"
|
||||||
|
],
|
||||||
|
"inputPaths": [
|
||||||
|
"tools/web/generated/M16-GAP-00275.py"
|
||||||
|
],
|
||||||
|
"inputSelection": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"limits": {
|
||||||
|
"maxFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextRemainingBytes": 1831,
|
||||||
|
"contextRemainingTokens": 457
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"bytes": 8073,
|
||||||
|
"tokens": 2019
|
||||||
|
},
|
||||||
|
"selected": [
|
||||||
|
{
|
||||||
|
"path": "tools/web/generated/M16-GAP-00275.py",
|
||||||
|
"bytes": 1425,
|
||||||
|
"tokens": 357
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"excluded": [
|
||||||
|
{
|
||||||
|
"path": "tests/files/web/generated/M16-GAP-00275-operator-asset.clear.blend",
|
||||||
|
"bytes": 85898,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||||
|
"bytes": 240371,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tools/web/check-generated-gap.mjs",
|
||||||
|
"bytes": 828064,
|
||||||
|
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00275/",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00275.md",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00275/manifest.json",
|
||||||
|
"bytes": null,
|
||||||
|
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"totals": {
|
||||||
|
"files": 1,
|
||||||
|
"bytes": 1425,
|
||||||
|
"tokens": 357
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exitCriteria": [
|
||||||
|
"desktop fixture evidence exists",
|
||||||
|
"WASM uses the same fixture",
|
||||||
|
"comparator passes",
|
||||||
|
"save/reopen preserves Main",
|
||||||
|
"manifest hashes all artifacts"
|
||||||
|
],
|
||||||
|
"nextTask": "M16-GAP-00276",
|
||||||
|
"sourceDocuments": {
|
||||||
|
"queue": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"taskCard": "docs/tasks/M16-GAP-00275.md",
|
||||||
|
"taskIndex": "tests/golden/M15-03A/task-index.json",
|
||||||
|
"parentManifest": "tests/golden/M16-GAP-00274/manifest.json",
|
||||||
|
"parentStatus": "docs/status/M16-GAP-00274.md"
|
||||||
|
},
|
||||||
|
"readPolicy": {
|
||||||
|
"required": [
|
||||||
|
"docs/EXECUTION_QUEUE.md",
|
||||||
|
"docs/tasks/M16-GAP-00275.md",
|
||||||
|
"tests/golden/M16-GAP-00274/manifest.json",
|
||||||
|
"docs/status/M16-GAP-00274.md"
|
||||||
|
],
|
||||||
|
"machineOnly": [
|
||||||
|
"tests/golden/M15-03A/task-index.json",
|
||||||
|
"tests/golden/M15-03A/task-catalog.jsonl"
|
||||||
|
],
|
||||||
|
"optionalByNeed": [
|
||||||
|
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
|
||||||
|
"任务卡列出的精确协议/生产路径",
|
||||||
|
"任务卡明确命名的长期计划小节"
|
||||||
|
],
|
||||||
|
"forbiddenByDefault": [
|
||||||
|
"完整 CURRENT_EXECUTION_PLAN.md",
|
||||||
|
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
|
||||||
|
"全部 docs/status/*.md",
|
||||||
|
"完整 parity/WBS 计划",
|
||||||
|
"README 历史和 test-results/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"manifest": {
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"task": "M16-GAP-00274",
|
||||||
|
"parentTask": "M16-GAP-00273",
|
||||||
|
"status": "done",
|
||||||
|
"nextTask": "M16-GAP-00275",
|
||||||
|
"artifactCount": 16
|
||||||
|
},
|
||||||
|
"statusSummary": [
|
||||||
|
"# 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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"budgets": {
|
||||||
|
"queueBytes": 4096,
|
||||||
|
"taskBytes": 1744,
|
||||||
|
"parentManifestBytes": 24576,
|
||||||
|
"parentStatusBytes": 6144,
|
||||||
|
"evidenceFiles": 12,
|
||||||
|
"evidenceBytes": 8192,
|
||||||
|
"contextTokens": 3500,
|
||||||
|
"contextEnvelopeTokens": 1024,
|
||||||
|
"taskLines": 38,
|
||||||
|
"taskTokens": 436
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"path": "docs/EXECUTION_QUEUE.md",
|
||||||
|
"bytes": 2495,
|
||||||
|
"lines": 47,
|
||||||
|
"tokens": 624
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/tasks/M16-GAP-00275.md",
|
||||||
|
"bytes": 1744,
|
||||||
|
"lines": 38,
|
||||||
|
"tokens": 436
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "tests/golden/M16-GAP-00274/manifest.json",
|
||||||
|
"bytes": 2812,
|
||||||
|
"lines": 30,
|
||||||
|
"tokens": 703
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/status/M16-GAP-00274.md",
|
||||||
|
"bytes": 1022,
|
||||||
|
"lines": 27,
|
||||||
|
"tokens": 256
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceTokens": 2019,
|
||||||
|
"evidenceFiles": 1,
|
||||||
|
"evidenceBytes": 1425,
|
||||||
|
"evidenceTokens": 357,
|
||||||
|
"totalTokens": 2376,
|
||||||
|
"reservedEnvelopeTokens": 1024,
|
||||||
|
"estimatedContextTokens": 3400,
|
||||||
|
"serializedContextTokens": 748,
|
||||||
|
"withinBudget": true
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user