Complete M16 asset operator parity chain
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

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

View File

@@ -261,5 +261,17 @@
"operator:armature.split",
"operator:armature.subdivide",
"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"
]

View File

@@ -12,7 +12,7 @@
},
"generator": {
"path": "tools/web/generate-blender-next-task-plan.mjs",
"sha256": "b944d9e0ee37497d397fac6bede348702768ec2fa84ff2246ef39cc58d4242c0"
"sha256": "d9f8bf8f666e5843c5d776d10d8afb772fb9f3e890cb071e249ed1ff000b0e68"
},
"checker": {
"path": "tools/web/check-blender-next-task-plan.mjs",
@@ -20,11 +20,11 @@
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "f10310d6530d8a9adfde0bc6bca35e4bfae7a05169028e1a8b36e374b059c8bb"
"sha256": "edc59e235e492bd5982cea233d75d74a219021c8ee70348ea1e0985ada7f6a17"
},
"report": {
"path": "tests/golden/M15-03A/next-task-plan-check-report.json",
"sha256": "1fede6a6bba0a935ffbdc1aa21ea7ca0addd741139b754c2a27d380eacf5c794"
"sha256": "302db2256fec76ee32d5fdc691a9a540333e4a0163aa603b8d843a97f7b6bcc1"
},
"package": {
"path": "web/package.json",

View File

@@ -5,8 +5,8 @@
"summary": {
"taskCount": 6900,
"active": 1,
"pending": 6636,
"completed": 263,
"pending": 6624,
"completed": 275,
"blocked": 0,
"byWave": {
"M16": 2667,
@@ -18,7 +18,7 @@
"M22": 19
}
},
"firstTask": "M16-GAP-00264",
"planSha256": "f10310d6530d8a9adfde0bc6bca35e4bfae7a05169028e1a8b36e374b059c8bb",
"firstTask": "M16-GAP-00276",
"planSha256": "edc59e235e492bd5982cea233d75d74a219021c8ee70348ea1e0985ada7f6a17",
"nextTask": "M15-03B"
}

View File

@@ -13,14 +13,14 @@
},
"completions": {
"path": "tests/golden/M15-03A/completed-gap-tasks.json",
"sha256": "b927d84d995f64669fabdcb50019a7db895d9a6f4e004913122d32c2dfca01ac"
"sha256": "32f4c11ebf8563f3aa500583f3979c1b38d711cc7328a428968118f0375b90b4"
}
},
"summary": {
"taskCount": 6900,
"active": 1,
"pending": 6636,
"completed": 263,
"pending": 6624,
"completed": 275,
"blocked": 0,
"byWave": {
"M16": 2667,
@@ -6087,7 +6087,7 @@
"gapId": "operator:asset.asset_download",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "active",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6110,7 +6110,7 @@
"gapId": "operator:asset.assets_download",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6133,7 +6133,7 @@
"gapId": "operator:asset.assign_action",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6156,7 +6156,7 @@
"gapId": "operator:asset.browse_containing_blend_file",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6179,7 +6179,7 @@
"gapId": "operator:asset.bundle_install",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6202,7 +6202,7 @@
"gapId": "operator:asset.catalog_delete",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6225,7 +6225,7 @@
"gapId": "operator:asset.catalog_new",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6248,7 +6248,7 @@
"gapId": "operator:asset.catalog_redo",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6271,7 +6271,7 @@
"gapId": "operator:asset.catalog_undo",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6294,7 +6294,7 @@
"gapId": "operator:asset.catalog_undo_push",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6317,7 +6317,7 @@
"gapId": "operator:asset.catalogs_save",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6340,7 +6340,7 @@
"gapId": "operator:asset.clear",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6363,7 +6363,7 @@
"gapId": "operator:asset.clear_single",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "active",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -158734,7 +158734,7 @@
]
}
],
"firstTask": "M16-GAP-00264",
"firstTask": "M16-GAP-00276",
"closureGate": "M15-03E",
"nextTask": "M15-03B"
}

View File

@@ -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-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-00264","gapId":"operator:asset.asset_download","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"active","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-00266","gapId":"operator:asset.assign_action","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":"pending","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-00269","gapId":"operator:asset.catalog_delete","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":"pending","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-00272","gapId":"operator:asset.catalog_undo","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":"pending","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-00275","gapId":"operator:asset.clear","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":"pending","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":"completed","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":"completed","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":"completed","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":"completed","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":"completed","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":"completed","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-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"}

File diff suppressed because one or more lines are too long

View File

@@ -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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View File

@@ -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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View 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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View File

@@ -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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View File

@@ -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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View File

@@ -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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View 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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View 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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View 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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View File

@@ -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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View 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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}

View 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"
}

View File

@@ -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"
}

View 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"
}

View 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
}
}