Reorganize Blender Web execution around capabilities
Some checks are pending
M6 deployable RC / quick (push) Waiting to run
M6 deployable RC / chromium (push) Blocked by required conditions
M6 deployable RC / release (push) Blocked by required conditions

This commit is contained in:
mes123456
2026-08-24 18:37:46 -04:00
parent 0b2c3ba0dd
commit a081c68c87
2530 changed files with 763976 additions and 79 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -273,5 +273,11 @@
"operator:asset.catalog_undo",
"operator:asset.catalog_undo_push",
"operator:asset.catalogs_save",
"operator:asset.clear"
"operator:asset.clear",
"operator:asset.clear_single",
"operator:asset.library_refresh",
"operator:asset.library_reload_listing",
"operator:asset.mark",
"operator:asset.mark_single",
"operator:asset.open_containing_blend_file"
]

View File

@@ -13,14 +13,14 @@
},
"completions": {
"path": "tests/golden/M15-03A/completed-gap-tasks.json",
"sha256": "32f4c11ebf8563f3aa500583f3979c1b38d711cc7328a428968118f0375b90b4"
"sha256": "1dfc9c4ae8fb9a135e624ca4f9fe1ea10500ef16a2567a3cccdcfe48fbc38466"
}
},
"summary": {
"taskCount": 6900,
"active": 1,
"pending": 6624,
"completed": 275,
"pending": 6618,
"completed": 281,
"blocked": 0,
"byWave": {
"M16": 2667,
@@ -6363,7 +6363,7 @@
"gapId": "operator:asset.clear_single",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "active",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6386,7 +6386,7 @@
"gapId": "operator:asset.library_refresh",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6409,7 +6409,7 @@
"gapId": "operator:asset.library_reload_listing",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6432,7 +6432,7 @@
"gapId": "operator:asset.mark",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6455,7 +6455,7 @@
"gapId": "operator:asset.mark_single",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6478,7 +6478,7 @@
"gapId": "operator:asset.open_containing_blend_file",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "completed",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -6501,7 +6501,7 @@
"gapId": "operator:asset.screenshot_preview",
"ownerFamily": "OPERATOR",
"sourceTask": "M15-01B",
"state": "pending",
"state": "active",
"dependencies": [],
"targetImplementationClass": "LOCAL_EXACT",
"fixture": {
@@ -158734,7 +158734,7 @@
]
}
],
"firstTask": "M16-GAP-00276",
"firstTask": "M16-GAP-00282",
"closureGate": "M15-03E",
"nextTask": "M15-03B"
}

View File

@@ -273,13 +273,13 @@
{"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"}
{"id":"M16-GAP-00280","gapId":"operator:asset.mark_single","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00281","gapId":"operator:asset.open_containing_blend_file","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00282","gapId":"operator:asset.screenshot_preview","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":"completed","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00277","gapId":"operator:asset.library_refresh","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00278","gapId":"operator:asset.library_reload_listing","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00279","gapId":"operator:asset.mark","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00280","gapId":"operator:asset.mark_single","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00281","gapId":"operator:asset.open_containing_blend_file","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"completed","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00282","gapId":"operator:asset.screenshot_preview","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"active","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00283","gapId":"operator:asset.tag_add","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00284","gapId":"operator:asset.tag_remove","ownerFamily":"OPERATOR","sourceTask":"M15-01B","state":"pending","targetImplementationClass":"LOCAL_EXACT"}
{"id":"M16-GAP-00285","gapId":"operator:boid.rule_add","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,18 @@
# Keying Set: WebGapAnimKeyingSetExportSet
import bpy
scene = bpy.context.scene
# Keying Set Level declarations
ks = scene.keying_sets.new(idname='WebGapAnimKeyingSetExportSet', name='WebGapAnimKeyingSetExportSet')
ks.bl_description = ''
ks.use_insertkey_needed = False
ks.use_insertkey_visual = False
# ID's that are commonly used
id_0 = bpy.data.objects["WebGapAnimKeyingSetExportObject"]
# Path Definitions
ksp = ks.paths.add(id_0, '["export_target"]', index=0)

View File

@@ -0,0 +1,22 @@
{
"after": {
"filepath": "//WebGapAssetClearSingle.blend",
"name": "WebGapAssetClearSingle.blend",
"packed": false
},
"before": {
"filepath": "//WebGapAssetClearSingle.blend",
"name": "WebGapAssetClearSingle.blend",
"packed": false
},
"blenderVersion": "5.2.0 LTS",
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00276-operator-asset.clear_single.blend",
"fixtureSha256": "28a672f360e4bfb459c3281999a811654a736e70949f721ee1e263e90b2c80fe",
"mainMutation": "NONE",
"operation": "ASSET_CLEAR_SINGLE_DESKTOP",
"operatorStatus": "CANCELLED",
"poll": false,
"saveReopen": "EXACT",
"schemaVersion": 1,
"task": "M16-GAP-00276"
}

View File

@@ -0,0 +1,28 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00276",
"operation": "ASSET_CLEAR_SINGLE_LOCAL_EXACT",
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00276-operator-asset.clear_single.blend",
"sha256": "28a672f360e4bfb459c3281999a811654a736e70949f721ee1e263e90b2c80fe"
},
"desktop": {
"status": "EXACT",
"report": "tests/golden/M16-GAP-00276/asset-clear-single-desktop-report.json",
"poll": false,
"operatorStatus": "CANCELLED",
"mainMutation": "NONE"
},
"wasm": {
"status": "EXACT",
"libraryId": "library:WebGapAssetClearSingle.blend",
"sourcePath": "//WebGapAssetClearSingle.blend",
"libraryStatus": "EXTERNAL_REQUIRED",
"dependencyIds": []
},
"saveReopen": "EXACT",
"negative": {
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
},
"nextTask": "M16-GAP-00277"
}

View File

@@ -0,0 +1,29 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00276",
"parentTask": "M16-GAP-00275",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "ASSET_CLEAR_SINGLE_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {"path": "tests/golden/M16-GAP-00275/manifest.json", "sha256": "c0db50bd8d2a3cbe9fd609714d1cb3dce75e1942855666ebcf5f12446e414949"},
"fixture": {"path": "tests/files/web/generated/M16-GAP-00276-operator-asset.clear_single.blend", "sha256": "28a672f360e4bfb459c3281999a811654a736e70949f721ee1e263e90b2c80fe"},
"librarySource": {"path": "tests/files/web/generated/WebGapAssetClearSingle.blend", "sha256": "927e7d562a3f9f03416fed5c8e2943ad2bacf49a2c6e89ff7eb2f55ad9f51922"},
"generator": {"path": "tools/web/generated/M16-GAP-00276.py", "sha256": "4db9afe38293f5fd231feb7e59b3a14323f19cb49d7d7b7a5d6e9fbd78e12da1"},
"desktopChecker": {"path": "tools/web/check-action-asset-clear-single-desktop.py", "sha256": "14fee29a5e77fa4193f4a2c930e11dbf2e6a192f582ae71e74dfd157d5cae396"},
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "75ab17e39e0a575e13e1c73ca86214424c59a270d2ba1d83600ebb6937ecdb2c"},
"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-00276/asset-clear-single-desktop-report.json", "sha256": "032345a71948560fa9348bbd73ff9f54508a808d0f6d3561b271aa4542aa49da"},
"webReport": {"path": "tests/golden/M16-GAP-00276/asset-clear-single-local-exact-report.json", "sha256": "6a9329b1f8d4b09343d92cf2aeaffab2bb90c6cf0165de7cf7376bdab05680b6"},
"status": {"path": "docs/status/M16-GAP-00276.md", "sha256": "95a58460d0eaf26559db74d42e8823338d89c00369f770ca8feca911d2bceba0"},
"taskContext": {"path": "tests/golden/M16-GAP-00276/task-context.json", "sha256": "ccbd1d071bace3b02e53fa59922b6f93398ce1fc028c25083edd5bd8fc3926ec"}
},
"nextTask": "M16-GAP-00277"
}

View File

@@ -0,0 +1,185 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00276",
"parentTask": "M16-GAP-00275",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable operator:asset.clear_single data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
"scope": {
"gap": "operator:asset.clear_single",
"ownerFamily": "OPERATOR",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00276.py -- tests/files/web/generated/M16-GAP-00276-operator-asset.clear_single.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00276",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00276"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00276.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 1847,
"contextRemainingTokens": 461
},
"source": {
"bytes": 8057,
"tokens": 2015
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00276.py",
"bytes": 1457,
"tokens": 365
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00276-operator-asset.clear_single.blend",
"bytes": 85897,
"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": 831637,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/M16-GAP-00276/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00276.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00276/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 1457,
"tokens": 365
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00277",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00276.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00275/manifest.json",
"parentStatus": "docs/status/M16-GAP-00275.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00276.md",
"tests/golden/M16-GAP-00275/manifest.json",
"docs/status/M16-GAP-00275.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-00275",
"parentTask": "M16-GAP-00274",
"status": "done",
"nextTask": "M16-GAP-00276",
"artifactCount": 16
},
"statusSummary": [
"# M16-GAP-00275 Status",
"status: done",
"task: asset.clear operator LOCAL_EXACT slice",
"updated: 2026-08-23 America/New_York",
"scope:",
"- The fixture links one object from external `WebGapAssetClear.blend`.",
" Blender desktop observes the no-local-asset boundary as `poll=false`,",
" records `CANCELLED` for `ASSET_OT_clear`, and confirms no Main mutation."
]
},
"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-00276.md",
"bytes": 1779,
"lines": 38,
"tokens": 445
},
{
"path": "tests/golden/M16-GAP-00275/manifest.json",
"bytes": 2788,
"lines": 30,
"tokens": 697
},
{
"path": "docs/status/M16-GAP-00275.md",
"bytes": 995,
"lines": 27,
"tokens": 249
}
],
"sourceTokens": 2015,
"evidenceFiles": 1,
"evidenceBytes": 1457,
"evidenceTokens": 365,
"totalTokens": 2380,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 3404,
"serializedContextTokens": 753,
"withinBudget": true
}
}

View File

@@ -0,0 +1,22 @@
{
"after": {
"filepath": "//WebGapAssetLibraryRefresh.blend",
"name": "WebGapAssetLibraryRefresh.blend",
"packed": false
},
"before": {
"filepath": "//WebGapAssetLibraryRefresh.blend",
"name": "WebGapAssetLibraryRefresh.blend",
"packed": false
},
"blenderVersion": "5.2.0 LTS",
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00277-operator-asset.library_refresh.blend",
"fixtureSha256": "afc722ccb0278518c4bae713a72642e2bec8789a0a7b12f6255ab9370782e437",
"mainMutation": "NONE",
"operation": "ASSET_LIBRARY_REFRESH_DESKTOP",
"operatorStatus": "CANCELLED",
"poll": false,
"saveReopen": "EXACT",
"schemaVersion": 1,
"task": "M16-GAP-00277"
}

View File

@@ -0,0 +1,28 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00277",
"operation": "ASSET_LIBRARY_REFRESH_LOCAL_EXACT",
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00277-operator-asset.library_refresh.blend",
"sha256": "afc722ccb0278518c4bae713a72642e2bec8789a0a7b12f6255ab9370782e437"
},
"desktop": {
"status": "EXACT",
"report": "tests/golden/M16-GAP-00277/asset-library-refresh-desktop-report.json",
"poll": false,
"operatorStatus": "CANCELLED",
"mainMutation": "NONE"
},
"wasm": {
"status": "EXACT",
"libraryId": "library:WebGapAssetLibraryRefresh.blend",
"sourcePath": "//WebGapAssetLibraryRefresh.blend",
"libraryStatus": "EXTERNAL_REQUIRED",
"dependencyIds": []
},
"saveReopen": "EXACT",
"negative": {
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
},
"nextTask": "M16-GAP-00278"
}

View File

@@ -0,0 +1,77 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00277",
"parentTask": "M16-GAP-00276",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "ASSET_LIBRARY_REFRESH_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00276/manifest.json",
"sha256": "fa533919efd82e97be6e14a521f8ca8b64a5d12d125b5d3880f36c02bd502fc0"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00277-operator-asset.library_refresh.blend",
"sha256": "afc722ccb0278518c4bae713a72642e2bec8789a0a7b12f6255ab9370782e437"
},
"librarySource": {
"path": "tests/files/web/generated/WebGapAssetLibraryRefresh.blend",
"sha256": "c274d8aa13b1dff0808a34289387b71c1ea2733e5feb8dfba7c4894af2728247"
},
"generator": {
"path": "tools/web/generated/M16-GAP-00277.py",
"sha256": "feaeb2df7ff3b127a7a16900f5a210548e035872433b05e53061d95876602503"
},
"desktopChecker": {
"path": "tools/web/check-action-asset-library-refresh-desktop.py",
"sha256": "ae264963a87d8bbd9c82a0806fb64b79731ddf7ee2efdf30170dffdc3c7aa452"
},
"webChecker": {
"path": "tools/web/check-generated-gap.mjs",
"sha256": "74f5e88ba582aef9ec7173d222845d8bbe477ee2b58e58387bd22b72afed5301"
},
"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-00277/asset-library-refresh-desktop-report.json",
"sha256": "535b7e49f358b454c59a7377859c2fc1d0670a7558b23cbba7db6e901138342f"
},
"webReport": {
"path": "tests/golden/M16-GAP-00277/asset-library-refresh-local-exact-report.json",
"sha256": "abaf6522c6aa2fc8e02f558717e18add7a731a7e42f4728877280d815b9e216b"
},
"status": {
"path": "docs/status/M16-GAP-00277.md",
"sha256": "463c5b20a9010ca2af33989442f23ad4723001f7b96650cd40116456c0490da4"
},
"taskContext": {
"path": "tests/golden/M16-GAP-00277/task-context.json",
"sha256": "1cf23718ef2778a6b3085119f49606a541f09135fd7fe4619dc77b96ea452664"
}
},
"nextTask": "M16-GAP-00278"
}

View File

@@ -0,0 +1,185 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00277",
"parentTask": "M16-GAP-00276",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable operator:asset.library_refresh 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.library_refresh",
"ownerFamily": "OPERATOR",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00277.py -- tests/files/web/generated/M16-GAP-00277-operator-asset.library_refresh.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00277",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00277"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00277.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 1562,
"contextRemainingTokens": 389
},
"source": {
"bytes": 8342,
"tokens": 2087
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00277.py",
"bytes": 1472,
"tokens": 368
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00277-operator-asset.library_refresh.blend",
"bytes": 85890,
"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": 835228,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/M16-GAP-00277/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00277.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00277/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 1472,
"tokens": 368
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00278",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00277.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00276/manifest.json",
"parentStatus": "docs/status/M16-GAP-00276.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00277.md",
"tests/golden/M16-GAP-00276/manifest.json",
"docs/status/M16-GAP-00276.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-00276",
"parentTask": "M16-GAP-00275",
"status": "done",
"nextTask": "M16-GAP-00277",
"artifactCount": 16
},
"statusSummary": [
"# M16-GAP-00276 Status",
"status: done",
"task: asset.clear_single operator LOCAL_EXACT slice",
"updated: 2026-08-23 America/New_York",
"scope:",
"- The fixture links one object from external `WebGapAssetClearSingle.blend`.",
" Blender desktop observes the linked-data boundary as `poll=false`, records",
" `CANCELLED` for `ASSET_OT_clear_single`, and confirms no Main mutation."
]
},
"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-00277.md",
"bytes": 1794,
"lines": 38,
"tokens": 449
},
{
"path": "tests/golden/M16-GAP-00276/manifest.json",
"bytes": 2829,
"lines": 30,
"tokens": 708
},
{
"path": "docs/status/M16-GAP-00276.md",
"bytes": 1224,
"lines": 30,
"tokens": 306
}
],
"sourceTokens": 2087,
"evidenceFiles": 1,
"evidenceBytes": 1472,
"evidenceTokens": 368,
"totalTokens": 2455,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 3479,
"serializedContextTokens": 755,
"withinBudget": true
}
}

View File

@@ -0,0 +1,22 @@
{
"after": {
"filepath": "//WebGapAssetLibraryReloadListing.blend",
"name": "WebGapAssetLibraryReloadListing.blend",
"packed": false
},
"before": {
"filepath": "//WebGapAssetLibraryReloadListing.blend",
"name": "WebGapAssetLibraryReloadListing.blend",
"packed": false
},
"blenderVersion": "5.2.0 LTS",
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00278-operator-asset.library_reload_listing.blend",
"fixtureSha256": "a00495252942d98e3fc89e8777220bf86dacadb71cea9c67b5181a27657cfb67",
"mainMutation": "NONE",
"operation": "ASSET_LIBRARY_RELOAD_LISTING_DESKTOP",
"operatorStatus": "CANCELLED",
"poll": false,
"saveReopen": "EXACT",
"schemaVersion": 1,
"task": "M16-GAP-00278"
}

View File

@@ -0,0 +1,28 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00278",
"operation": "ASSET_LIBRARY_RELOAD_LISTING_LOCAL_EXACT",
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00278-operator-asset.library_reload_listing.blend",
"sha256": "a00495252942d98e3fc89e8777220bf86dacadb71cea9c67b5181a27657cfb67"
},
"desktop": {
"status": "EXACT",
"report": "tests/golden/M16-GAP-00278/asset-library-reload-listing-desktop-report.json",
"poll": false,
"operatorStatus": "CANCELLED",
"mainMutation": "NONE"
},
"wasm": {
"status": "EXACT",
"libraryId": "library:WebGapAssetLibraryReloadListing.blend",
"sourcePath": "//WebGapAssetLibraryReloadListing.blend",
"libraryStatus": "EXTERNAL_REQUIRED",
"dependencyIds": []
},
"saveReopen": "EXACT",
"negative": {
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
},
"nextTask": "M16-GAP-00279"
}

View File

@@ -0,0 +1,29 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00278",
"parentTask": "M16-GAP-00277",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "ASSET_LIBRARY_RELOAD_LISTING_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {"path": "tests/golden/M16-GAP-00277/manifest.json", "sha256": "e28fb129b023f3adca72433bb09a13a981705cd6a7c379f3f410120837d21f72"},
"fixture": {"path": "tests/files/web/generated/M16-GAP-00278-operator-asset.library_reload_listing.blend", "sha256": "a00495252942d98e3fc89e8777220bf86dacadb71cea9c67b5181a27657cfb67"},
"librarySource": {"path": "tests/files/web/generated/WebGapAssetLibraryReloadListing.blend", "sha256": "ff841fd2f2dba15fb990bba24856064aeced5a5339205de749af4451cbd4062e"},
"generator": {"path": "tools/web/generated/M16-GAP-00278.py", "sha256": "bc00a04cc1fab867862b4ad54feb41cac8eb3507cba57e9ec7870c2989925784"},
"desktopChecker": {"path": "tools/web/check-action-asset-library-reload-listing-desktop.py", "sha256": "b1bdfbcf5f2cb95afdc8309922e04437175ac90825517f6d3b2f5bc1098972a5"},
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "f0ce94b6bef7224d17c2f6ac280b1ed4b9fa780ff0c3422b759e098326d3050e"},
"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-00278/asset-library-reload-listing-desktop-report.json", "sha256": "b99fee3dc4c04dfa89c50cf9d575a89b6363eebec97b3c07e5fda82c1c64f46a"},
"webReport": {"path": "tests/golden/M16-GAP-00278/asset-library-reload-listing-local-exact-report.json", "sha256": "a25d22cded541a11baa4961993dfab85d7aee4510c213cc73d7b6131106b1da7"},
"status": {"path": "docs/status/M16-GAP-00278.md", "sha256": "698c779a806776ec51183336d390fb0c8ed9a1ca558dc2e4f4e75ecfc0843741"},
"taskContext": {"path": "tests/golden/M16-GAP-00278/task-context.json", "sha256": "898677874b73caeef7b00e5207fdf040fb4462f0730436f0d896f272a74a92ac"}
},
"nextTask": "M16-GAP-00279"
}

View File

@@ -0,0 +1,182 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00278",
"parentTask": "M16-GAP-00277",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable operator:asset.library_reload_listing 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.library_reload_listing",
"ownerFamily": "OPERATOR",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00278.py -- tests/files/web/generated/M16-GAP-00278-operator-asset.library_reload_listing.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00278",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00278"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 1277,
"contextRemainingTokens": 318
},
"source": {
"bytes": 8627,
"tokens": 2158
},
"selected": [],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00278-operator-asset.library_reload_listing.blend",
"bytes": 85924,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/generated/M16-GAP-00278.py",
"bytes": 1504,
"reason": "CONTEXT_REMAINING_SPACE"
},
{
"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": 838860,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/M16-GAP-00278/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00278.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00278/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00279",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00278.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00277/manifest.json",
"parentStatus": "docs/status/M16-GAP-00277.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00278.md",
"tests/golden/M16-GAP-00277/manifest.json",
"docs/status/M16-GAP-00277.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-00277",
"parentTask": "M16-GAP-00276",
"status": "done",
"nextTask": "M16-GAP-00278",
"artifactCount": 16
},
"statusSummary": [
"# M16-GAP-00277 Status",
"status: done",
"task: asset.library_refresh operator LOCAL_EXACT slice",
"updated: 2026-08-23 America/New_York",
"scope:",
"- The fixture links one object from external `WebGapAssetLibraryRefresh.blend`.",
" Blender desktop observes the missing Asset Browser context as `poll=false`,",
" records `CANCELLED` for `ASSET_OT_library_refresh`, and confirms no Main"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1829,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 458
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2495,
"lines": 47,
"tokens": 624
},
{
"path": "docs/tasks/M16-GAP-00278.md",
"bytes": 1829,
"lines": 38,
"tokens": 458
},
{
"path": "tests/golden/M16-GAP-00277/manifest.json",
"bytes": 3135,
"lines": 78,
"tokens": 784
},
{
"path": "docs/status/M16-GAP-00277.md",
"bytes": 1168,
"lines": 29,
"tokens": 292
}
],
"sourceTokens": 2158,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 2158,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 3182,
"serializedContextTokens": 725,
"withinBudget": true
}
}

View File

@@ -0,0 +1,30 @@
{
"after": {
"assetMarked": true,
"author": "M16 Fixture",
"description": "Asset mark operator fixture",
"name": "WebGapAssetMarkObject",
"tags": [
"operator-mark"
]
},
"before": {
"assetMarked": true,
"author": "M16 Fixture",
"description": "Asset mark operator fixture",
"name": "WebGapAssetMarkObject",
"tags": [
"operator-mark"
]
},
"blenderVersion": "5.2.0 LTS",
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00279-operator-asset.mark.blend",
"fixtureSha256": "e2d2ee3b4fc59538e519c4131e40b90f36a83cf84c4c6731db8bb2fd65538d8b",
"mainMutation": "NONE",
"operation": "ASSET_MARK_DESKTOP",
"operatorStatus": "CANCELLED",
"poll": false,
"saveReopen": "EXACT",
"schemaVersion": 1,
"task": "M16-GAP-00279"
}

View File

@@ -0,0 +1,38 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00279",
"operation": "ASSET_MARK_LOCAL_EXACT",
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00279-operator-asset.mark.blend",
"sha256": "e2d2ee3b4fc59538e519c4131e40b90f36a83cf84c4c6731db8bb2fd65538d8b"
},
"desktop": {
"status": "EXACT",
"report": "tests/golden/M16-GAP-00279/asset-mark-desktop-report.json",
"poll": false,
"operatorStatus": "CANCELLED",
"mainMutation": "NONE"
},
"wasm": {
"status": "EXACT",
"objectId": "object:WebGapAssetMarkObject",
"assetData": {
"activeTag": 0,
"author": "M16 Fixture",
"catalogSimpleName": "",
"copyright": "",
"description": "Asset mark operator fixture",
"license": "",
"marked": true,
"preferredImportMethod": 1,
"tags": [
"operator-mark"
]
}
},
"saveReopen": "EXACT",
"negative": {
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
},
"nextTask": "M16-GAP-00280"
}

View File

@@ -0,0 +1,29 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00279",
"parentTask": "M16-GAP-00278",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "ASSET_MARK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {"path": "tests/golden/M16-GAP-00278/manifest.json", "sha256": "5ea558d23c10de4933484ff6c926ce5971d71bc5190223ae9bf1b0536cb171a5"},
"fixture": {"path": "tests/files/web/generated/M16-GAP-00279-operator-asset.mark.blend", "sha256": "e2d2ee3b4fc59538e519c4131e40b90f36a83cf84c4c6731db8bb2fd65538d8b"},
"generator": {"path": "tools/web/generated/M16-GAP-00279.py", "sha256": "f6ea8cdec792b31ca1c7008046062b426e2c639bda03c490982beebc647b3536"},
"desktopChecker": {"path": "tools/web/check-action-asset-mark-desktop.py", "sha256": "03605b412d6abadb89a2acbe7f34abc3f56b47569b1857a51cc57ef9f1569ac0"},
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "fd3d7ccd837b92b1087ea5f35da6777d094bac1f10dcfa4670c8ab133f018b04"},
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "050abd03517a7e826facadcfa241985c410865d46141997a31a97529da47cb1b"},
"sceneIrProtocol": {"path": "web/protocol/scene-ir.ts", "sha256": "fbf15c996758dc9f2dab934ba7bb1252705453fe2b57f73a84cb37bfafa8a3b8"},
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "269a4bbff670e0cbc8c2fd6cc3eabfadc03ba50929b30c8bd3695d958f399169"},
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "269a4bbff670e0cbc8c2fd6cc3eabfadc03ba50929b30c8bd3695d958f399169"},
"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-00279/asset-mark-desktop-report.json", "sha256": "907c40ffa8d36efe882300b5261ca7ef459b8420928c3c52a8a1a52d2c97fdfc"},
"webReport": {"path": "tests/golden/M16-GAP-00279/asset-mark-local-exact-report.json", "sha256": "089816cd63bd18eecf95ebbc0b6e363e6e452db6b15c4d5ce4e6ba702d364fc1"},
"status": {"path": "docs/status/M16-GAP-00279.md", "sha256": "002721d45174316fdef73861acf389f130f5c10bc37ad398edb4fa1e73ad1ad0"},
"taskContext": {"path": "tests/golden/M16-GAP-00279/task-context.json", "sha256": "402cd9054d04c0e13fe2f9fa18271f46c3cecdb02e89ae4062f44643131513de"}
},
"nextTask": "M16-GAP-00280"
}

View File

@@ -0,0 +1,185 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00279",
"parentTask": "M16-GAP-00278",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable operator:asset.mark 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.mark",
"ownerFamily": "OPERATOR",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00279.py -- tests/files/web/generated/M16-GAP-00279-operator-asset.mark.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00279",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00279"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00279.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 1590,
"contextRemainingTokens": 397
},
"source": {
"bytes": 8314,
"tokens": 2079
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00279.py",
"bytes": 1153,
"tokens": 289
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00279-operator-asset.mark.blend",
"bytes": 86527,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"bytes": 242091,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 842156,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/M16-GAP-00279/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00279.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00279/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 1153,
"tokens": 289
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00280",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00279.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00278/manifest.json",
"parentStatus": "docs/status/M16-GAP-00278.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00279.md",
"tests/golden/M16-GAP-00278/manifest.json",
"docs/status/M16-GAP-00278.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-00278",
"parentTask": "M16-GAP-00277",
"status": "done",
"nextTask": "M16-GAP-00279",
"artifactCount": 16
},
"statusSummary": [
"# M16-GAP-00278 Status",
"status: done",
"task: asset.library_reload_listing operator LOCAL_EXACT slice",
"updated: 2026-08-24 America/New_York",
"scope:",
"- The fixture links one object from external `WebGapAssetLibraryReloadListing.blend`.",
" Blender desktop observes the non-remote-library boundary as `poll=false`, records",
" `CANCELLED` for `ASSET_OT_library_reload_listing`, and confirms no Main mutation."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1739,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 435
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2495,
"lines": 47,
"tokens": 624
},
{
"path": "docs/tasks/M16-GAP-00279.md",
"bytes": 1739,
"lines": 38,
"tokens": 435
},
{
"path": "tests/golden/M16-GAP-00278/manifest.json",
"bytes": 2888,
"lines": 30,
"tokens": 722
},
{
"path": "docs/status/M16-GAP-00278.md",
"bytes": 1192,
"lines": 28,
"tokens": 298
}
],
"sourceTokens": 2079,
"evidenceFiles": 1,
"evidenceBytes": 1153,
"evidenceTokens": 289,
"totalTokens": 2368,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 3392,
"serializedContextTokens": 747,
"withinBudget": true
}
}

View File

@@ -0,0 +1,30 @@
{
"after": {
"assetMarked": true,
"author": "M16 Fixture",
"description": "Asset mark single operator fixture",
"name": "WebGapAssetMarkSingleObject",
"tags": [
"operator-mark-single"
]
},
"before": {
"assetMarked": true,
"author": "M16 Fixture",
"description": "Asset mark single operator fixture",
"name": "WebGapAssetMarkSingleObject",
"tags": [
"operator-mark-single"
]
},
"blenderVersion": "5.2.0 LTS",
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00280-operator-asset.mark_single.blend",
"fixtureSha256": "4e22282735f42eae9344980eedeab2ef458e95d916ab287388555006d5b46097",
"mainMutation": "NONE",
"operation": "ASSET_MARK_SINGLE_DESKTOP",
"operatorStatus": "CANCELLED",
"poll": false,
"saveReopen": "EXACT",
"schemaVersion": 1,
"task": "M16-GAP-00280"
}

View File

@@ -0,0 +1,38 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00280",
"operation": "ASSET_MARK_SINGLE_LOCAL_EXACT",
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00280-operator-asset.mark_single.blend",
"sha256": "4e22282735f42eae9344980eedeab2ef458e95d916ab287388555006d5b46097"
},
"desktop": {
"status": "EXACT",
"report": "tests/golden/M16-GAP-00280/asset-mark-single-desktop-report.json",
"poll": false,
"operatorStatus": "CANCELLED",
"mainMutation": "NONE"
},
"wasm": {
"status": "EXACT",
"objectId": "object:WebGapAssetMarkSingleObject",
"assetData": {
"activeTag": 0,
"author": "M16 Fixture",
"catalogSimpleName": "",
"copyright": "",
"description": "Asset mark single operator fixture",
"license": "",
"marked": true,
"preferredImportMethod": 1,
"tags": [
"operator-mark-single"
]
}
},
"saveReopen": "EXACT",
"negative": {
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
},
"nextTask": "M16-GAP-00281"
}

View File

@@ -0,0 +1,29 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00280",
"parentTask": "M16-GAP-00279",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "ASSET_MARK_SINGLE_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {"path": "tests/golden/M16-GAP-00279/manifest.json", "sha256": "ff4213944c22081966b0da4f70b1c4a798579dc2b2b4aa2080b80e8c4925315e"},
"fixture": {"path": "tests/files/web/generated/M16-GAP-00280-operator-asset.mark_single.blend", "sha256": "4e22282735f42eae9344980eedeab2ef458e95d916ab287388555006d5b46097"},
"generator": {"path": "tools/web/generated/M16-GAP-00280.py", "sha256": "7c1cbe66cc2ebbb695afe4d4831c4e796729fa2de7de9b364c048a4fe17da50a"},
"desktopChecker": {"path": "tools/web/check-action-asset-mark-single-desktop.py", "sha256": "c5e05c3d07474473a4ac0e824ee6b524443cc82343136e70bfcfae015d9ee9ba"},
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "ed774c01101eaf1739952017b6a0a5aa62bd26a9585e944f099f99ec9dbfd218"},
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "050abd03517a7e826facadcfa241985c410865d46141997a31a97529da47cb1b"},
"sceneIrProtocol": {"path": "web/protocol/scene-ir.ts", "sha256": "fbf15c996758dc9f2dab934ba7bb1252705453fe2b57f73a84cb37bfafa8a3b8"},
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "269a4bbff670e0cbc8c2fd6cc3eabfadc03ba50929b30c8bd3695d958f399169"},
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "269a4bbff670e0cbc8c2fd6cc3eabfadc03ba50929b30c8bd3695d958f399169"},
"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-00280/asset-mark-single-desktop-report.json", "sha256": "cee452d111427d339f27a92dfeb11086d4da184bc8616cb5b35bf5aa96ff9aad"},
"webReport": {"path": "tests/golden/M16-GAP-00280/asset-mark-single-local-exact-report.json", "sha256": "cb81eba35e79e9d30e79311d60e34b43183b5dc98775ef98294d2848390afb6c"},
"status": {"path": "docs/status/M16-GAP-00280.md", "sha256": "6006277684f975fdd96dbe788a49a66865eb56f9f8806702ce5b28fb6b5f6e7f"},
"taskContext": {"path": "tests/golden/M16-GAP-00280/task-context.json", "sha256": "2cb4a5c83539e7fbaca6f21a751a213403f4047bc3ead43c3bd37c0d506c0e13"}
},
"nextTask": "M16-GAP-00281"
}

View File

@@ -0,0 +1,185 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00280",
"parentTask": "M16-GAP-00279",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable operator:asset.mark_single data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
"scope": {
"gap": "operator:asset.mark_single",
"ownerFamily": "OPERATOR",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00280.py -- tests/files/web/generated/M16-GAP-00280-operator-asset.mark_single.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00280",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00280"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00280.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 1683,
"contextRemainingTokens": 419
},
"source": {
"bytes": 8221,
"tokens": 2057
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00280.py",
"bytes": 1109,
"tokens": 278
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00280-operator-asset.mark_single.blend",
"bytes": 86535,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"bytes": 242091,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 845493,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/M16-GAP-00280/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00280.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00280/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 1109,
"tokens": 278
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00281",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00280.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00279/manifest.json",
"parentStatus": "docs/status/M16-GAP-00279.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00280.md",
"tests/golden/M16-GAP-00279/manifest.json",
"docs/status/M16-GAP-00279.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-00279",
"parentTask": "M16-GAP-00278",
"status": "done",
"nextTask": "M16-GAP-00280",
"artifactCount": 16
},
"statusSummary": [
"# M16-GAP-00279 Status",
"status: done",
"task: asset.mark operator LOCAL_EXACT slice",
"updated: 2026-08-24 America/New_York",
"scope:",
"- The minimal fixture marks `WebGapAssetMarkObject` as an asset and persists the",
" author, description, and `operator-mark` tag. Blender desktop observes the",
" missing Asset Browser/editor context as `poll=false`, records `CANCELLED` for"
]
},
"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-00280.md",
"bytes": 1774,
"lines": 38,
"tokens": 444
},
{
"path": "tests/golden/M16-GAP-00279/manifest.json",
"bytes": 2761,
"lines": 30,
"tokens": 691
},
{
"path": "docs/status/M16-GAP-00279.md",
"bytes": 1191,
"lines": 28,
"tokens": 298
}
],
"sourceTokens": 2057,
"evidenceFiles": 1,
"evidenceBytes": 1109,
"evidenceTokens": 278,
"totalTokens": 2335,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 3359,
"serializedContextTokens": 752,
"withinBudget": true
}
}

View File

@@ -0,0 +1,30 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00281",
"parentTask": "M16-GAP-00280",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "ASSET_OPEN_CONTAINING_BLEND_FILE_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {"path": "tests/golden/M16-GAP-00280/manifest.json", "sha256": "2cb4a5c83539e7fbaca6f21a751a213403f4047bc3ead43c3bd37c0d506c0e13"},
"fixture": {"path": "tests/files/web/generated/M16-GAP-00281-operator-asset.open_containing_blend_file.blend", "sha256": "97a440671019043e15e20883e308429220012a66bbdce138492e44a3d19b2572"},
"librarySource": {"path": "tests/files/web/generated/WebGapOpenContaining.blend", "sha256": "0bf2f0d5dda3e7f4e341973f7d394ce7b096f7bd142915d67c5267b6ff55b223"},
"generator": {"path": "tools/web/generated/M16-GAP-00281.py", "sha256": "5f3331695d69921031fe291d6ccd900cdce2e64b62d2e9b0fd616b8aca18451b"},
"desktopChecker": {"path": "tools/web/check-action-open-containing-blend-file-desktop.py", "sha256": "5df4d4476f84ed68ae320b529e9f4bee47007948dee7aeecd6bf360b22dc0953"},
"webChecker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "d5d9eaca335df87a9447f20bbd20e0c3b76b7087e4d74a8b9bf1ff10cb57ca25"},
"reader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "050abd03517a7e826facadcfa241985c410865d46141997a31a97529da47cb1b"},
"sceneIrProtocol": {"path": "web/protocol/scene-ir.ts", "sha256": "fbf15c996758dc9f2dab934ba7bb1252705453fe2b57f73a84cb37bfafa8a3b8"},
"nativeStub": {"path": "web/engine/web_engine_native_reader_stub.cpp", "sha256": "2a1526e08cf446bb23a91c8c2ae799db38a0aeed0a809a15ead427780600481a"},
"wasm": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "269a4bbff670e0cbc8c2fd6cc3eabfadc03ba50929b30c8bd3695d958f399169"},
"wasmPublic": {"path": "web/app/public/vendor/blender/web_engine.wasm", "sha256": "269a4bbff670e0cbc8c2fd6cc3eabfadc03ba50929b30c8bd3695d958f399169"},
"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-00281/open-containing-desktop-report.json", "sha256": "08d6ea11250bc645acf28b6e452a91da62c960d549a41a01e70f5f9c7c2d34a2"},
"webReport": {"path": "tests/golden/M16-GAP-00281/open-containing-local-exact-report.json", "sha256": "56ad229dbaac780579308f13ee8c1aa049a2ec16aae8a0c9fa777f5e7274aad8"},
"status": {"path": "docs/status/M16-GAP-00281.md", "sha256": "6d798d81632a92844b8a5e42da5afb2b72d7321070e401a57583324fd081d691"},
"taskContext": {"path": "tests/golden/M16-GAP-00281/task-context.json", "sha256": "f44fdc0cf3a99877675286268bca920ed8c1ac8fa515bce5a7dfd0f3608f59ed"}
},
"nextTask": "M16-GAP-00282"
}

View File

@@ -0,0 +1,22 @@
{
"after": {
"filepath": "//WebGapOpenContaining.blend",
"name": "WebGapOpenContaining.blend",
"packed": false
},
"before": {
"filepath": "//WebGapOpenContaining.blend",
"name": "WebGapOpenContaining.blend",
"packed": false
},
"blenderVersion": "5.2.0 LTS",
"fixture": "/home/mes123456/workinf_Blender_Wasm/tests/files/web/generated/M16-GAP-00281-operator-asset.open_containing_blend_file.blend",
"fixtureSha256": "97a440671019043e15e20883e308429220012a66bbdce138492e44a3d19b2572",
"mainMutation": "NONE",
"operation": "ASSET_OPEN_CONTAINING_BLEND_FILE_DESKTOP",
"operatorStatus": "CANCELLED",
"poll": false,
"saveReopen": "EXACT",
"schemaVersion": 1,
"task": "M16-GAP-00281"
}

View File

@@ -0,0 +1,28 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00281",
"operation": "ASSET_OPEN_CONTAINING_BLEND_FILE_LOCAL_EXACT",
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00281-operator-asset.open_containing_blend_file.blend",
"sha256": "97a440671019043e15e20883e308429220012a66bbdce138492e44a3d19b2572"
},
"desktop": {
"status": "EXACT",
"report": "tests/golden/M16-GAP-00281/open-containing-desktop-report.json",
"poll": false,
"operatorStatus": "CANCELLED",
"mainMutation": "NONE"
},
"wasm": {
"status": "EXACT",
"libraryId": "library:WebGapOpenContaining.blend",
"sourcePath": "//WebGapOpenContaining.blend",
"libraryStatus": "EXTERNAL_REQUIRED",
"dependencyIds": []
},
"saveReopen": "EXACT",
"negative": {
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
},
"nextTask": "M16-GAP-00282"
}

View File

@@ -0,0 +1,185 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00281",
"parentTask": "M16-GAP-00280",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable operator:asset.open_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.open_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-00281.py -- tests/files/web/generated/M16-GAP-00281-operator-asset.open_containing_blend_file.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00281",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00281"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00281.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 1630,
"contextRemainingTokens": 406
},
"source": {
"bytes": 8274,
"tokens": 2070
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00281.py",
"bytes": 1592,
"tokens": 398
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00281-operator-asset.open_containing_blend_file.blend",
"bytes": 85917,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"bytes": 242091,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 849148,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/M16-GAP-00281/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00281.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00281/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 1592,
"tokens": 398
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00282",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00281.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00280/manifest.json",
"parentStatus": "docs/status/M16-GAP-00280.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00281.md",
"tests/golden/M16-GAP-00280/manifest.json",
"docs/status/M16-GAP-00280.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-00280",
"parentTask": "M16-GAP-00279",
"status": "done",
"nextTask": "M16-GAP-00281",
"artifactCount": 16
},
"statusSummary": [
"# M16-GAP-00280 Status",
"status: done",
"task: asset.mark_single operator LOCAL_EXACT slice",
"updated: 2026-08-24 America/New_York",
"scope:",
"- The minimal fixture contains one marked object, `WebGapAssetMarkSingleObject`,",
" with stable author, description, and `operator-mark-single` tag metadata.",
" Blender desktop observes `asset.mark_single` as `poll=false`, records"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1849,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 463
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2495,
"lines": 47,
"tokens": 624
},
{
"path": "docs/tasks/M16-GAP-00281.md",
"bytes": 1849,
"lines": 38,
"tokens": 463
},
{
"path": "tests/golden/M16-GAP-00280/manifest.json",
"bytes": 2796,
"lines": 30,
"tokens": 699
},
{
"path": "docs/status/M16-GAP-00280.md",
"bytes": 1134,
"lines": 28,
"tokens": 284
}
],
"sourceTokens": 2070,
"evidenceFiles": 1,
"evidenceBytes": 1592,
"evidenceTokens": 398,
"totalTokens": 2468,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 3492,
"serializedContextTokens": 763,
"withinBudget": true
}
}

View File

@@ -0,0 +1,13 @@
{
"schemaVersion": 1,
"task": "WBV2-BASELINE",
"parentTask": "M16-GAP-00281",
"enablingTask": true,
"parityStateChange": false,
"runtime": "EXECUTION_CONTROL_PLANE",
"operation": "ACTIVATE_CAPABILITY_QUEUE_WITH_LEGACY_COVERAGE_CHECKPOINT",
"status": "done",
"artifacts": {},
"legacyCoverageCheckpoint": "M16-GAP-00282",
"nextTask": "WBV2-P0-001"
}

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"task": "WBV2-P0-001",
"operation": "CAPABILITY_QUEUE_RECONCILIATION",
"status": "PASS",
"executionPointer": {
"task": "WBV2-P0-001",
"parentManifest": "tests/golden/WBV2-BASELINE/manifest.json",
"parentNextTask": "WBV2-P0-001",
"nextTask": "WBV2-P0-002"
},
"legacyCoverage": {
"task": "M16-GAP-00282",
"parentManifest": "tests/golden/M16-GAP-00281/manifest.json",
"state": "active",
"meaning": "regression coverage only; not a production capability task"
},
"correctiveCheckpoint": {
"task": "C6-003",
"handoff": "tests/golden/corrective/C6-003/handoff.json",
"queueMutation": true,
"meaning": "historical migration evidence"
},
"efficiency": {
"legacyGapTasks": 6900,
"legacyCompleted": 281,
"capabilityClusters": 3,
"mappedLegacyGaps": 9,
"averageGapsPerCapability": 3,
"parallelism": "read-only inventory/schema/checkers may parallelize; Main and generated pointers remain serialized"
},
"commands": [
{"command": "node tools/web/check-web-parity-v2-plan.mjs", "exitCode": 0},
{"command": "node tools/web/check-corrective-plan.mjs", "exitCode": 0},
{"command": "node tools/web/check-execution-control-plane.mjs", "exitCode": 0},
{"command": "node tools/web/check-execution-health.mjs", "exitCode": 0},
{"command": "npm --prefix web run test:task-context", "exitCode": 0},
{"command": "npm --prefix web run test:context-governance", "exitCode": 0},
{"command": "npm --prefix web run test:execution-control-plane", "exitCode": 0},
{"command": "git diff --check", "exitCode": 0}
],
"failurePolicy": "hash drift, malformed plan, duplicate ready task, missing parent or context budget failure keeps the current task in_progress/blocked"
}

View File

@@ -0,0 +1,19 @@
{
"schemaVersion": 1,
"task": "WBV2-P0-001",
"parentTask": "WBV2-BASELINE",
"enablingTask": true,
"parityStateChange": false,
"runtime": "EXECUTION_CONTROL_PLANE",
"operation": "CAPABILITY_QUEUE_RECONCILIATION",
"status": "done",
"artifacts": {
"parentManifest": {"path": "tests/golden/WBV2-BASELINE/manifest.json", "sha256": "181490cca1aaff90559206d8e4869e4d87c8b0e9e1907dcfc996e95efb328ccb"},
"controlPlaneReport": {"path": "tests/golden/WBV2-P0-001/control-plane-report.json", "sha256": "423651d3534b055a099bb08a882270383b75c344ae737f16a82cc15f90e0e3c0"},
"status": {"path": "docs/status/WBV2-P0-001.md", "sha256": "14bbb5fcee8a2b8a8904ecdda1dc0cfb4821d18095a8f3ecdc9b45d7b0194f89"},
"taskContext": {"path": "tests/golden/WBV2-P0-001/task-context.json", "sha256": "c587edb6172b3d8cb8d5853ae4a89b15f4b0494e0bf21fc67a7bfca2b9e3e921"},
"controlPlaneChecker": {"path": "tools/web/check-execution-control-plane.mjs", "sha256": "77a64d6106505ac13a593870d73577cf6a34f28308557114aa2862e51a21076e"},
"contextRunner": {"path": "tools/web/task-context-lib.mjs", "sha256": "eb6fabeb6faac9c3b916326e58db3b5b4b33b30288198caf528b078263b9d606"}
},
"nextTask": "WBV2-P0-002"
}

View File

@@ -0,0 +1,179 @@
{
"schemaVersion": 1,
"task": "WBV2-P0-001",
"parentTask": "WBV2-BASELINE",
"status": "in_progress",
"goal": "冻结 V1 与 Blender 5.2 full-parity 的业务边界,建立 capability production lane",
"scope": {
"gap": "workflow:execution-control-plane",
"ownerFamily": "PROGRAM",
"implementationClass": "LOCAL_BOUNDED"
},
"commands": [
"node tools/web/check-web-parity-v2-plan.mjs",
"node tools/web/check-corrective-plan.mjs",
"node tools/web/check-context-governance.mjs",
"npm --prefix web run test:execution-control-plane"
],
"inputPaths": [
"docs/BLENDER_WEB_EXECUTION_CONTROL_PLANE.md"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 4700,
"contextRemainingTokens": 1173
},
"source": {
"bytes": 5204,
"tokens": 1303
},
"selected": [
{
"path": "docs/BLENDER_WEB_EXECUTION_CONTROL_PLANE.md",
"bytes": 3634,
"tokens": 909
}
],
"excluded": [
{
"path": "docs/BLENDER_WEB_PARITY_EXECUTION_PLAN_V2.md",
"bytes": 11045,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"bytes": 23705,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 0,
"reason": "ALREADY_IN_CONTEXT"
},
{
"path": "tests/golden/corrective/C6-003/handoff.json",
"bytes": 6516,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
"bytes": 4061,
"reason": "CONTEXT_REMAINING_SPACE"
}
],
"totals": {
"files": 1,
"bytes": 3634,
"tokens": 909
}
},
"exitCriteria": [
"corrective owner-review status is explicit",
"legacy parent pointer is unchanged",
"plan has one activation gate"
],
"nextTask": "WBV2-P0-002",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P0-001.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-BASELINE/manifest.json",
"parentStatus": "docs/status/WBV2-BASELINE.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P0-001.md",
"tests/golden/WBV2-BASELINE/manifest.json",
"docs/status/WBV2-BASELINE.md"
],
"machineOnly": [
"tests/golden/WBV2/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": "WBV2-BASELINE",
"parentTask": "M16-GAP-00281",
"status": "done",
"nextTask": "WBV2-P0-001",
"artifactCount": 0
},
"statusSummary": [
"# WBV2 baseline status",
"status: done",
"task: capability queue transition baseline",
"updated: 2026-08-24 America/New_York",
"The WBV2 production lane starts without rewriting the immutable M16 manifests. The",
"legacy coverage checkpoint remains `M16-GAP-00282`, whose parent manifest is",
"`tests/golden/M16-GAP-00281/manifest.json`. Corrective C0-C6 evidence remains historical.",
"nextTask: `WBV2-P0-001`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1639,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 48,
"taskTokens": 410
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2802,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P0-001.md",
"bytes": 1639,
"lines": 48,
"tokens": 410
},
{
"path": "tests/golden/WBV2-BASELINE/manifest.json",
"bytes": 370,
"lines": 14,
"tokens": 93
},
{
"path": "docs/status/WBV2-BASELINE.md",
"bytes": 393,
"lines": 12,
"tokens": 99
}
],
"sourceTokens": 1303,
"evidenceFiles": 1,
"evidenceBytes": 3634,
"evidenceTokens": 909,
"totalTokens": 2212,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 3236,
"serializedContextTokens": 688,
"withinBudget": true
}
}

View File

@@ -0,0 +1,31 @@
{"id":"WBV2-P0-001","gapId":"workflow:reconcile_scope_and_checkpoints","ownerFamily":"PROGRAM","sourceTask":"P0","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["corrective owner-review status is explicit","legacy parent pointer is unchanged","plan has one activation gate"]}
{"id":"WBV2-P0-002","gapId":"workflow:generate_blender52_inventory_and_parity_map","ownerFamily":"PARITY","sourceTask":"P0","state":"active","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["unknown entries are classified","inventory is deterministic","no entry claims feature parity without evidence"]}
{"id":"WBV2-P0-003","gapId":"workflow:freeze_capability_error_budget_contract","ownerFamily":"PROTOCOL","sourceTask":"P0","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["unsupported input fails closed","schema hashes are stable","migration policy preserves unknown data"]}
{"id":"WBV2-P1-001","gapId":"workflow:stabilize_runtime_variants_and_source_receipts","ownerFamily":"RUNTIME","sourceTask":"P1","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["variant fallback is deterministic","source/build hash is verified","one engine session has one generation"]}
{"id":"WBV2-P1-002","gapId":"workflow:unify_sceneir_stable_ids_and_binary_deltas","ownerFamily":"MAIN","sourceTask":"P1","state":"pending","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["IDs survive save/reopen","malformed chunk is rejected","desktop and WASM canonical hashes match"]}
{"id":"WBV2-P1-003","gapId":"workflow:unify_main_transaction_history_and_save","ownerFamily":"MAIN","sourceTask":"P1","state":"pending","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["failed/no-op commands add no history","stale revision cannot commit","reopen state is byte/hash stable"]}
{"id":"WBV2-P1-004","gapId":"workflow:harden_worker_cancel_restart_and_dispose","ownerFamily":"RUNTIME","sourceTask":"P1","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["cancel never publishes result","generation mismatch is rejected","CPU/WASM/GPU owners return to budget"]}
{"id":"WBV2-P1-005","gapId":"workflow:harden_opfs_indexeddb_journal_recovery","ownerFamily":"STORAGE","sourceTask":"P1","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["interrupted commit leaves old project usable","hash mismatch quarantines payload","small project recovers after restart"]}
{"id":"WBV2-P2-001","gapId":"EDITOR.OPEN_SCENE","ownerFamily":"EDITOR","sourceTask":"P2","state":"pending","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["stable IDs and selection revision match","missing data is structured","reopen preserves context"]}
{"id":"WBV2-P2-002","gapId":"OBJECT.TRANSFORM_HIERARCHY","ownerFamily":"EDITOR","sourceTask":"P2","state":"pending","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["world matrix parity","cycle/locked/library edits reject","undo/redo/save/reopen stable"]}
{"id":"WBV2-P2-003","gapId":"MESH.EDIT_CORE","ownerFamily":"MESH","sourceTask":"P2","state":"pending","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["topology/attributes match","invalid selection and budget fail closed","single transaction and reopen stable"]}
{"id":"WBV2-P2-004","gapId":"VIEWPORT.MAIN_OFFSCREEN","ownerFamily":"VIEWPORT","sourceTask":"P2","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["both paths have nonblank pixels","selection/camera revision is shared","device loss releases resources"]}
{"id":"WBV2-P2-005","gapId":"WORKFLOW.P0_USER_LOOP","ownerFamily":"INTEGRATION","sourceTask":"P2","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["Main revision and exported asset are bound","fault/cancel leaves old state","Chromium production path passes"]}
{"id":"WBV2-P3-001","gapId":"MATERIAL.PBR_UV","ownerFamily":"MATERIAL","sourceTask":"P3","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["desktop/WASM node fields match","unsupported node retained/blocked","packed asset survives reopen"]}
{"id":"WBV2-P3-002","gapId":"ANIMATION.TRS_ACTION","ownerFamily":"ANIMATION","sourceTask":"P3","state":"pending","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["sampled values and handles match","stale frame result rejected","undo/save/reopen stable"]}
{"id":"WBV2-P3-003","gapId":"RIG.POSE_SKIN","ownerFamily":"RIG","sourceTask":"P3","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["pose matrices and weights match","unsupported constraint is explicit","save/reopen and small recovery pass"]}
{"id":"WBV2-P3-004","gapId":"IO.GLB_ROUNDTRIP","ownerFamily":"IO","sourceTask":"P3","state":"pending","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["roundtrip canonical graph matches","sparse/external URI/budget negatives reject","no silent loss"]}
{"id":"WBV2-P3-005","gapId":"ASSET.LIBRARY_OPERATIONS","ownerFamily":"ASSET","sourceTask":"P3","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source/hash/owner identity preserved","linked mutation blocked","stale generation and missing source fail closed"]}
{"id":"WBV2-P4-001","gapId":"MODIFIER.DECLARED_SLICES","ownerFamily":"MODIFIER","sourceTask":"P4","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["desktop/evaluated Main match","unknown modifier retained and blocked","apply/undo/save/reopen stable"]}
{"id":"WBV2-P4-002","gapId":"NODES.ALLOWLIST","ownerFamily":"NODES","sourceTask":"P4","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["node/socket/link/default parity","budget and unknown-node block before commit","compile failure rolls back"]}
{"id":"WBV2-P4-003","gapId":"SCULPT.NONMESH.PAINT_BOUNDED","ownerFamily":"SCULPT","sourceTask":"P4","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["Main commit is atomic","unsupported brush/solver returns stable code","GPU/OOM/restart recovery passes"]}
{"id":"WBV2-P4-004","gapId":"SIMULATION.CACHE_LIFECYCLE","ownerFamily":"SIMULATION","sourceTask":"P4","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["stale/corrupt cache never publishes","small cache recovers after restart","budget release is observable"]}
{"id":"WBV2-P5-001","gapId":"RENDER.ROUTING","ownerFamily":"RENDER","sourceTask":"P5","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source/settings/build identity bound","unsupported route cannot pretend local success","cancel/device loss releases resources"]}
{"id":"WBV2-P5-002","gapId":"MEDIA.BOUNDED_WORKFLOW","ownerFamily":"MEDIA","sourceTask":"P5","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["seek/decode revision ordering","cancel/timeout does not publish","quota/OOM/restart leaves project valid"]}
{"id":"WBV2-P5-003","gapId":"SERVER.JOB_BINDING","ownerFamily":"SERVER","sourceTask":"P5","state":"pending","targetImplementationClass":"SERVER_EXACT","exitCriteria":["duplicate request is idempotent","stale result cannot bind","timeout/cancel/OOM produces no READY output"]}
{"id":"WBV2-P6-001","gapId":"SECURITY.SCRIPTING","ownerFamily":"SECURITY","sourceTask":"P6","state":"pending","targetImplementationClass":"EXCLUDED","exitCriteria":["autorun/network/add-on defaults deny","sandbox cancellation/dispose works","no secret or filesystem escape"]}
{"id":"WBV2-P6-002","gapId":"workflow:performance_fault_and_recovery_matrix","ownerFamily":"RELIABILITY","sourceTask":"P6","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["100k/1M/10M thresholds recorded","fault leaves old revision usable","all owned resources return to budget"]}
{"id":"WBV2-P6-003","gapId":"workflow:offline_ci_sbom_and_rollback_release","ownerFamily":"RELEASE","sourceTask":"P6","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["quick/Chromium/release lanes pass","artifact hashes reproduce","upgrade/rollback and known limitations are tested"]}
{"id":"WBV2-P7-001","gapId":"workflow:cluster_full_blender_gap_inventory","ownerFamily":"PARITY","sourceTask":"P7","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["each gap has stable ID and owner","negative-only/unsupported is not positive parity","clusters are deterministic"]}
{"id":"WBV2-P7-002","gapId":"workflow:generate_atomic_family_gap_queue","ownerFamily":"PROGRAM","sourceTask":"P7","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["one active ready task","no guessed successor","each card fits context budget"]}
{"id":"WBV2-P7-003","gapId":"workflow:full_parity_candidate_release_gate","ownerFamily":"RELEASE","sourceTask":"P7","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["all claims bind to evidence","blocked/excluded/server classes remain explicit","queue and protected hashes pass"]}

View File

@@ -0,0 +1 @@
{"schemaVersion":1,"operation":"BLENDER_WEB_CAPABILITY_TASK_INDEX","source":{"path":"docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json","sha256":"8a08f2e916de56c112e5ce27f51575baaeba03d783fcb298b59bfd4d16c8e02c"},"catalog":{"path":"tests/golden/WBV2/task-catalog.jsonl","sha256":"b717a08a8128d2ad44fb11906d5aa48a86884f558ad30c8365bd46a54dfacd50"},"taskCount":31,"activeTask":"WBV2-P0-002","entries":{"WBV2-P0-001":{"line":0,"offset":0,"length":308,"previous":null,"next":"WBV2-P0-002"},"WBV2-P0-002":{"line":1,"offset":308,"length":315,"previous":"WBV2-P0-001","next":"WBV2-P0-003"},"WBV2-P0-003":{"line":2,"offset":623,"length":304,"previous":"WBV2-P0-002","next":"WBV2-P1-001"},"WBV2-P1-001":{"line":3,"offset":927,"length":316,"previous":"WBV2-P0-003","next":"WBV2-P1-002"},"WBV2-P1-002":{"line":4,"offset":1243,"length":297,"previous":"WBV2-P0-003","next":"WBV2-P1-003"},"WBV2-P1-003":{"line":5,"offset":1540,"length":301,"previous":"WBV2-P1-002","next":"WBV2-P1-004"},"WBV2-P1-004":{"line":6,"offset":1841,"length":307,"previous":"WBV2-P1-003","next":"WBV2-P1-005"},"WBV2-P1-005":{"line":7,"offset":2148,"length":322,"previous":"WBV2-P1-004","next":"WBV2-P2-001"},"WBV2-P2-001":{"line":8,"offset":2470,"length":265,"previous":"WBV2-P1-005","next":"WBV2-P2-002"},"WBV2-P2-002":{"line":9,"offset":2735,"length":265,"previous":"WBV2-P1-003","next":"WBV2-P2-003"},"WBV2-P2-003":{"line":10,"offset":3000,"length":272,"previous":"WBV2-P1-002","next":"WBV2-P2-004"},"WBV2-P2-004":{"line":11,"offset":3272,"length":282,"previous":"WBV2-P1-004","next":"WBV2-P2-005"},"WBV2-P2-005":{"line":12,"offset":3554,"length":289,"previous":"WBV2-P1-005","next":"WBV2-P3-001"},"WBV2-P3-001":{"line":13,"offset":3843,"length":269,"previous":"WBV2-P2-005","next":"WBV2-P3-002"},"WBV2-P3-002":{"line":14,"offset":4112,"length":264,"previous":"WBV2-P2-005","next":"WBV2-P3-003"},"WBV2-P3-003":{"line":15,"offset":4376,"length":271,"previous":"WBV2-P3-002","next":"WBV2-P3-004"},"WBV2-P3-004":{"line":16,"offset":4647,"length":261,"previous":"WBV2-P3-003","next":"WBV2-P3-005"},"WBV2-P3-005":{"line":17,"offset":4908,"length":290,"previous":"WBV2-P2-001","next":"WBV2-P4-001"},"WBV2-P4-001":{"line":18,"offset":5198,"length":281,"previous":"WBV2-P2-005","next":"WBV2-P4-002"},"WBV2-P4-002":{"line":19,"offset":5479,"length":275,"previous":"WBV2-P4-001","next":"WBV2-P4-003"},"WBV2-P4-003":{"line":20,"offset":5754,"length":285,"previous":"WBV2-P2-004","next":"WBV2-P4-004"},"WBV2-P4-004":{"line":21,"offset":6039,"length":288,"previous":"WBV2-P4-002","next":"WBV2-P5-001"},"WBV2-P5-001":{"line":22,"offset":6327,"length":294,"previous":"WBV2-P4-002","next":"WBV2-P5-002"},"WBV2-P5-002":{"line":23,"offset":6621,"length":280,"previous":"WBV2-P5-001","next":"WBV2-P5-003"},"WBV2-P5-003":{"line":24,"offset":6901,"length":276,"previous":"WBV2-P5-001","next":"WBV2-P6-001"},"WBV2-P6-001":{"line":25,"offset":7177,"length":276,"previous":"WBV2-P5-003","next":"WBV2-P6-002"},"WBV2-P6-002":{"line":26,"offset":7453,"length":311,"previous":"WBV2-P2-004","next":"WBV2-P6-003"},"WBV2-P6-003":{"line":27,"offset":7764,"length":314,"previous":"WBV2-P6-002","next":"WBV2-P7-001"},"WBV2-P7-001":{"line":28,"offset":8078,"length":310,"previous":"WBV2-P6-003","next":"WBV2-P7-002"},"WBV2-P7-002":{"line":29,"offset":8388,"length":273,"previous":"WBV2-P7-001","next":"WBV2-P7-003"},"WBV2-P7-003":{"line":30,"offset":8661,"length":310,"previous":"WBV2-P7-002","next":null}}}

View File

@@ -0,0 +1,34 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00274",
"queue": {
"currentTask": "M16-GAP-00274",
"parentManifest": "tests/golden/M16-GAP-00273/manifest.json",
"parentNextTask": "M16-GAP-00274"
},
"generatedState": {
"catalogActiveTask": "M16-GAP-00274",
"catalogActiveIds": [
"M16-GAP-00274"
],
"planFirstTask": "M16-GAP-00274",
"planNextTask": "M15-03B",
"completionCount": 264,
"legacyEvidenceDirectoryCount": 274
},
"sourceHashes": {
"docs/EXECUTION_QUEUE.md": "eeaca50828c3feb3ed53d1869626a703d9e50fefd9c70d871cc6eec03fc84bcd",
"tests/golden/M16-GAP-00273/manifest.json": "3b45536a28d99f899fb095a5d2e31265a8ef2b7fb92ceb8be26e061621e253c1",
"docs/status/M16-GAP-00273.md": "5e93f2d8942d2bf5f49beef7fb427e9968e359ed6ada8a40d11072549075f2d8",
"tests/golden/M15-03A/completed-gap-tasks.json": "f9f4f1116b5975aa1b47fee15856f2029ec8f02161e432e9a24b846384cd1c5b",
"tests/golden/M15-03A/task-catalog.jsonl": "278d51b867d63a5975635b8fd108c9025668de0893576499a77bd3d571a0f14b",
"tests/golden/M15-03A/task-index.json": "9c79926a5a91b137b023a62f8a98d7c7421018846fdf658c9bea13ee5c5cbcea",
"tests/golden/M15-03A/next-task-plan.json": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
},
"invariants": {
"queueMutationAllowed": false,
"parentPointerMatchesCurrent": true,
"exactlyOneCatalogActive": true,
"catalogActiveMatchesPlan": true
}
}

View File

@@ -0,0 +1,34 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00274",
"queue": {
"currentTask": "M16-GAP-00274",
"parentManifest": "tests/golden/M16-GAP-00273/manifest.json",
"parentNextTask": "M16-GAP-00274"
},
"generatedState": {
"catalogActiveTask": "M16-GAP-00274",
"catalogActiveIds": [
"M16-GAP-00274"
],
"planFirstTask": "M16-GAP-00274",
"planNextTask": "M15-03B",
"completionCount": 264,
"legacyEvidenceDirectoryCount": 274
},
"sourceHashes": {
"docs/EXECUTION_QUEUE.md": "eeaca50828c3feb3ed53d1869626a703d9e50fefd9c70d871cc6eec03fc84bcd",
"tests/golden/M16-GAP-00273/manifest.json": "3b45536a28d99f899fb095a5d2e31265a8ef2b7fb92ceb8be26e061621e253c1",
"docs/status/M16-GAP-00273.md": "5e93f2d8942d2bf5f49beef7fb427e9968e359ed6ada8a40d11072549075f2d8",
"tests/golden/M15-03A/completed-gap-tasks.json": "f9f4f1116b5975aa1b47fee15856f2029ec8f02161e432e9a24b846384cd1c5b",
"tests/golden/M15-03A/task-catalog.jsonl": "278d51b867d63a5975635b8fd108c9025668de0893576499a77bd3d571a0f14b",
"tests/golden/M15-03A/task-index.json": "9c79926a5a91b137b023a62f8a98d7c7421018846fdf658c9bea13ee5c5cbcea",
"tests/golden/M15-03A/next-task-plan.json": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
},
"invariants": {
"queueMutationAllowed": false,
"parentPointerMatchesCurrent": true,
"exactlyOneCatalogActive": true,
"catalogActiveMatchesPlan": true
}
}

View File

@@ -0,0 +1,67 @@
{
"schemaVersion": 1,
"task": "C0-001",
"status": "done",
"gate": "G0",
"queueMutation": false,
"evidenceRoot": "tests/golden/corrective/C0-001",
"artifactCount": 11,
"artifacts": [
{
"path": "tests/golden/corrective/C0-001/baseline-check.log",
"sha256": "5755e26c327a104784c3d0ce448cfad800951b4b03bd1a1b32f2afd59e64f611",
"bytes": 78
},
{
"path": "tests/golden/corrective/C0-001/baseline-second.json",
"sha256": "8f35198ac5f62ab78dcb7987dde2574e5cc835ab3a6470d25bc1a7143ab002f2",
"bytes": 1451
},
{
"path": "tests/golden/corrective/C0-001/baseline.json",
"sha256": "8f35198ac5f62ab78dcb7987dde2574e5cc835ab3a6470d25bc1a7143ab002f2",
"bytes": 1451
},
{
"path": "tests/golden/corrective/C0-001/check-task-context.log",
"sha256": "d878b0cb346102d780a0de68deeb14a36d9c2e7aec63f1010a3d6454e276563a",
"bytes": 159
},
{
"path": "tests/golden/corrective/C0-001/context-governance.log",
"sha256": "8b4a0add34d164d2e514192c430269e780f03f92697d77e494aa35825b5861f3",
"bytes": 130
},
{
"path": "tests/golden/corrective/C0-001/corrective-plan.log",
"sha256": "8d43d87f24c770dea5b56022f4ac010d6474e05ff2863c90035b741587a9f3d6",
"bytes": 88
},
{
"path": "tests/golden/corrective/C0-001/diff-check.log",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"bytes": 0
},
{
"path": "tests/golden/corrective/C0-001/git-status.log",
"sha256": "841e05e8bc1fdeec6e7c1a546911c3b79e1e05acac035fe93b12429ba02097d1",
"bytes": 23222
},
{
"path": "tests/golden/corrective/C0-001/print-task-context.log",
"sha256": "f5fd8b4fbcd70b9ae9e9fc065c51f396b3571d51e1be0c419757624f87c364ce",
"bytes": 3040
},
{
"path": "tests/golden/corrective/C0-001/source-hashes-after.txt",
"sha256": "024cda0fbacc185a04acb8835488673c9962ee464edfe578f090fe9cf575b46b",
"bytes": 428
},
{
"path": "tests/golden/corrective/C0-001/source-hashes.txt",
"sha256": "c0e309fa9967f34e0ddb500cd5619ea50b97d9d0cb3ce6f6861c9d6e8e19d0e7",
"bytes": 720
}
],
"nextCorrectiveTask": "C0-002"
}

View File

@@ -0,0 +1,67 @@
{
"schemaVersion": 1,
"task": "C0-001",
"status": "done",
"gate": "G0",
"queueMutation": false,
"evidenceRoot": "tests/golden/corrective/C0-001",
"artifactCount": 11,
"artifacts": [
{
"path": "tests/golden/corrective/C0-001/baseline-check.log",
"sha256": "5755e26c327a104784c3d0ce448cfad800951b4b03bd1a1b32f2afd59e64f611",
"bytes": 78
},
{
"path": "tests/golden/corrective/C0-001/baseline-second.json",
"sha256": "8f35198ac5f62ab78dcb7987dde2574e5cc835ab3a6470d25bc1a7143ab002f2",
"bytes": 1451
},
{
"path": "tests/golden/corrective/C0-001/baseline.json",
"sha256": "8f35198ac5f62ab78dcb7987dde2574e5cc835ab3a6470d25bc1a7143ab002f2",
"bytes": 1451
},
{
"path": "tests/golden/corrective/C0-001/check-task-context.log",
"sha256": "d878b0cb346102d780a0de68deeb14a36d9c2e7aec63f1010a3d6454e276563a",
"bytes": 159
},
{
"path": "tests/golden/corrective/C0-001/context-governance.log",
"sha256": "8b4a0add34d164d2e514192c430269e780f03f92697d77e494aa35825b5861f3",
"bytes": 130
},
{
"path": "tests/golden/corrective/C0-001/corrective-plan.log",
"sha256": "8d43d87f24c770dea5b56022f4ac010d6474e05ff2863c90035b741587a9f3d6",
"bytes": 88
},
{
"path": "tests/golden/corrective/C0-001/diff-check.log",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"bytes": 0
},
{
"path": "tests/golden/corrective/C0-001/git-status.log",
"sha256": "841e05e8bc1fdeec6e7c1a546911c3b79e1e05acac035fe93b12429ba02097d1",
"bytes": 23222
},
{
"path": "tests/golden/corrective/C0-001/print-task-context.log",
"sha256": "f5fd8b4fbcd70b9ae9e9fc065c51f396b3571d51e1be0c419757624f87c364ce",
"bytes": 3040
},
{
"path": "tests/golden/corrective/C0-001/source-hashes-after.txt",
"sha256": "024cda0fbacc185a04acb8835488673c9962ee464edfe578f090fe9cf575b46b",
"bytes": 428
},
{
"path": "tests/golden/corrective/C0-001/source-hashes.txt",
"sha256": "c0e309fa9967f34e0ddb500cd5619ea50b97d9d0cb3ce6f6861c9d6e8e19d0e7",
"bytes": 720
}
],
"nextCorrectiveTask": "C0-002"
}

View File

@@ -0,0 +1,4 @@
f9f4f1116b5975aa1b47fee15856f2029ec8f02161e432e9a24b846384cd1c5b tests/golden/M15-03A/completed-gap-tasks.json
278d51b867d63a5975635b8fd108c9025668de0893576499a77bd3d571a0f14b tests/golden/M15-03A/task-catalog.jsonl
9c79926a5a91b137b023a62f8a98d7c7421018846fdf658c9bea13ee5c5cbcea tests/golden/M15-03A/task-index.json
2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9 tests/golden/M15-03A/next-task-plan.json

View File

@@ -0,0 +1,7 @@
eeaca50828c3feb3ed53d1869626a703d9e50fefd9c70d871cc6eec03fc84bcd docs/EXECUTION_QUEUE.md
3b45536a28d99f899fb095a5d2e31265a8ef2b7fb92ceb8be26e061621e253c1 tests/golden/M16-GAP-00273/manifest.json
5e93f2d8942d2bf5f49beef7fb427e9968e359ed6ada8a40d11072549075f2d8 docs/status/M16-GAP-00273.md
f9f4f1116b5975aa1b47fee15856f2029ec8f02161e432e9a24b846384cd1c5b tests/golden/M15-03A/completed-gap-tasks.json
278d51b867d63a5975635b8fd108c9025668de0893576499a77bd3d571a0f14b tests/golden/M15-03A/task-catalog.jsonl
9c79926a5a91b137b023a62f8a98d7c7421018846fdf658c9bea13ee5c5cbcea tests/golden/M15-03A/task-index.json
2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9 tests/golden/M15-03A/next-task-plan.json

View File

@@ -0,0 +1,17 @@
{
"resign": 0,
"validation": 0,
"planCheck": null,
"indexCheck": null,
"contextCheck": null,
"governanceCheck": null,
"diffCheck": null,
"commandExitCodes": {
"planCheck": 1,
"indexCheck": 0,
"contextCheck": 0,
"contextGovernanceTest": 0,
"governanceCheck": 0,
"diffCheck": 0
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,81 @@
{
"schemaVersion": 1,
"operation": "CORRECTIVE_STATE_RECONCILIATION_RESIGN_CHECK",
"status": "PASS",
"queueMutation": false,
"stagedRoot": "tests/golden/corrective/C0-002/staged",
"checks": [
{
"name": "registry-count",
"status": "PASS",
"value": 273
},
{
"name": "registry-unique",
"status": "PASS"
},
{
"name": "plan-shape",
"status": "PASS"
},
{
"name": "plan-source-hash",
"status": "PASS"
},
{
"name": "index-plan-hash",
"status": "PASS"
},
{
"name": "index-catalog-hash",
"status": "PASS"
},
{
"name": "index-active",
"status": "PASS"
},
{
"name": "snapshot-nonempty",
"status": "PASS",
"value": 1848
},
{
"name": "snapshot-hashes",
"status": "PASS",
"files": 1848,
"bytes": 68399904
},
{
"name": "resigned-manifest-count",
"status": "PASS",
"value": 274
},
{
"name": "resigned-manifest-done-count",
"status": "PASS",
"value": 273
},
{
"name": "root-parent-repaired",
"status": "PASS"
},
{
"name": "repaired-context-count",
"status": "PASS",
"value": 24
},
{
"name": "repaired-context-links",
"status": "PASS",
"files": 24
},
{
"name": "candidate-plan-deterministic",
"status": "PASS"
}
],
"artifactCount": 1848,
"planTaskCount": 6900,
"completedCount": 273,
"activeTask": "M16-GAP-00274"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,275 @@
[
"datablock:Action",
"datablock:Armature",
"datablock:Brush",
"datablock:Camera",
"datablock:Collection",
"datablock:Curve",
"datablock:Curves",
"datablock:FreestyleLineStyle",
"datablock:GreasePencil",
"datablock:Lattice",
"datablock:Library",
"datablock:Light",
"datablock:Material",
"datablock:Mesh",
"datablock:MetaBall",
"datablock:NodeTree",
"datablock:Object",
"datablock:ParticleSettings",
"datablock:PointCloud",
"datablock:Scene",
"datablock:Screen",
"datablock:Sound",
"datablock:Speaker",
"datablock:Text",
"datablock:Texture",
"datablock:Volume",
"datablock:WindowManager",
"datablock:WorkSpace",
"datablock:World",
"modifier:ARMATURE",
"modifier:ARRAY",
"modifier:BEVEL",
"modifier:BOOLEAN",
"modifier:BUILD",
"modifier:CAST",
"modifier:CLOTH",
"modifier:COLLISION",
"modifier:CORRECTIVE_SMOOTH",
"modifier:CURVE",
"modifier:DATA_TRANSFER",
"modifier:DECIMATE",
"modifier:DISPLACE",
"modifier:DYNAMIC_PAINT",
"modifier:EDGE_SPLIT",
"modifier:EXPLODE",
"modifier:FLUID",
"modifier:GREASE_PENCIL_ARMATURE",
"modifier:GREASE_PENCIL_ARRAY",
"modifier:GREASE_PENCIL_BUILD",
"modifier:GREASE_PENCIL_COLOR",
"modifier:GREASE_PENCIL_DASH",
"modifier:GREASE_PENCIL_ENVELOPE",
"modifier:GREASE_PENCIL_HOOK",
"modifier:GREASE_PENCIL_LATTICE",
"modifier:GREASE_PENCIL_LENGTH",
"modifier:GREASE_PENCIL_MIRROR",
"modifier:GREASE_PENCIL_MULTIPLY",
"modifier:GREASE_PENCIL_NOISE",
"modifier:GREASE_PENCIL_OFFSET",
"modifier:GREASE_PENCIL_OPACITY",
"modifier:GREASE_PENCIL_OUTLINE",
"modifier:GREASE_PENCIL_SHRINKWRAP",
"modifier:GREASE_PENCIL_SIMPLIFY",
"modifier:GREASE_PENCIL_SMOOTH",
"modifier:GREASE_PENCIL_SUBDIV",
"modifier:GREASE_PENCIL_TEXTURE",
"modifier:GREASE_PENCIL_THICKNESS",
"modifier:GREASE_PENCIL_TIME",
"modifier:GREASE_PENCIL_TINT",
"modifier:GREASE_PENCIL_VERTEX_WEIGHT_ANGLE",
"modifier:GREASE_PENCIL_VERTEX_WEIGHT_PROXIMITY",
"modifier:HOOK",
"modifier:LAPLACIANDEFORM",
"modifier:LAPLACIANSMOOTH",
"modifier:LATTICE",
"modifier:LINEART",
"modifier:MASK",
"modifier:MESH_CACHE",
"modifier:MESH_DEFORM",
"modifier:MESH_SEQUENCE_CACHE",
"modifier:MESH_TO_VOLUME",
"modifier:MIRROR",
"modifier:MULTIRES",
"modifier:NODES",
"modifier:NORMAL_EDIT",
"modifier:OCEAN",
"modifier:PARTICLE_INSTANCE",
"modifier:PARTICLE_SYSTEM",
"modifier:REMESH",
"modifier:SCREW",
"modifier:SHRINKWRAP",
"modifier:SIMPLE_DEFORM",
"modifier:SKIN",
"modifier:SMOOTH",
"modifier:SOFT_BODY",
"modifier:SOLIDIFY",
"modifier:SUBSURF",
"modifier:SURFACE",
"modifier:SURFACE_DEFORM",
"modifier:TRIANGULATE",
"modifier:UV_PROJECT",
"modifier:UV_WARP",
"modifier:VERTEX_WEIGHT_EDIT",
"modifier:VERTEX_WEIGHT_MIX",
"modifier:VERTEX_WEIGHT_PROXIMITY",
"modifier:VOLUME_DISPLACE",
"modifier:VOLUME_TO_MESH",
"modifier:WARP",
"modifier:WAVE",
"modifier:WEIGHTED_NORMAL",
"modifier:WELD",
"modifier:WIREFRAME",
"operator:action.bake_keys",
"operator:action.clean",
"operator:action.clickselect",
"operator:action.copy",
"operator:action.delete",
"operator:action.duplicate",
"operator:action.duplicate_move",
"operator:action.easing_type",
"operator:action.extrapolation_type",
"operator:action.frame_jump",
"operator:action.handle_type",
"operator:action.interpolation_type",
"operator:action.keyframe_insert",
"operator:action.keyframe_type",
"operator:action.markers_make_local",
"operator:action.mirror",
"operator:action.new",
"operator:action.paste",
"operator:action.previewrange_set",
"operator:action.push_down",
"operator:action.select_all",
"operator:action.select_box",
"operator:action.select_by_type",
"operator:action.select_circle",
"operator:action.select_column",
"operator:action.select_lasso",
"operator:action.select_leftright",
"operator:action.select_less",
"operator:action.select_linked",
"operator:action.select_more",
"operator:action.snap",
"operator:action.stash",
"operator:action.stash_and_create",
"operator:action.unlink",
"operator:action.view_all",
"operator:action.view_frame",
"operator:action.view_selected",
"operator:anim.change_frame",
"operator:anim.channel_select_keys",
"operator:anim.channel_view_pick",
"operator:anim.channels_bake",
"operator:anim.channels_clean_empty",
"operator:anim.channels_click",
"operator:anim.channels_collapse",
"operator:anim.channels_delete",
"operator:anim.channels_editable_toggle",
"operator:anim.channels_expand",
"operator:anim.channels_fcurves_enable",
"operator:anim.channels_group",
"operator:anim.channels_move",
"operator:anim.channels_rename",
"operator:anim.channels_select_all",
"operator:anim.channels_select_box",
"operator:anim.channels_select_filter",
"operator:anim.channels_setting_disable",
"operator:anim.channels_setting_enable",
"operator:anim.channels_setting_toggle",
"operator:anim.channels_ungroup",
"operator:anim.channels_view_selected",
"operator:anim.clear_useless_actions",
"operator:anim.copy_driver_button",
"operator:anim.driver_button_add",
"operator:anim.driver_button_edit",
"operator:anim.driver_button_remove",
"operator:anim.end_frame_set",
"operator:anim.keyframe_clear_button",
"operator:anim.keyframe_clear_v3d",
"operator:anim.keyframe_clear_vse",
"operator:anim.keyframe_delete",
"operator:anim.keyframe_delete_button",
"operator:anim.keyframe_delete_by_name",
"operator:anim.keyframe_delete_v3d",
"operator:anim.keyframe_delete_vse",
"operator:anim.keyframe_insert",
"operator:anim.keyframe_insert_button",
"operator:anim.keyframe_insert_by_name",
"operator:anim.keyframe_insert_menu",
"operator:anim.keying_set_active_set",
"operator:anim.keying_set_add",
"operator:anim.keying_set_export",
"operator:anim.keying_set_path_add",
"operator:anim.keying_set_path_remove",
"operator:anim.keying_set_remove",
"operator:anim.keyingset_button_add",
"operator:anim.keyingset_button_remove",
"operator:anim.merge_animation",
"operator:anim.paste_driver_button",
"operator:anim.previewrange_clear",
"operator:anim.previewrange_set",
"operator:anim.replace_action",
"operator:anim.replace_action_new",
"operator:anim.scene_range_frame",
"operator:anim.separate_slots",
"operator:anim.slot_channels_move_to_new_action",
"operator:anim.slot_new_for_id",
"operator:anim.slot_unassign_from_constraint",
"operator:anim.slot_unassign_from_id",
"operator:anim.slot_unassign_from_nla_strip",
"operator:anim.start_frame_set",
"operator:anim.update_animated_transform_constraints",
"operator:anim.version_bone_hide_property",
"operator:anim.view_curve_in_graph_editor",
"operator:armature.align",
"operator:armature.assign_to_collection",
"operator:armature.autoside_names",
"operator:armature.bone_primitive_add",
"operator:armature.calculate_roll",
"operator:armature.click_extrude",
"operator:armature.collection_add",
"operator:armature.collection_assign",
"operator:armature.collection_create_and_assign",
"operator:armature.collection_deselect",
"operator:armature.collection_move",
"operator:armature.collection_remove",
"operator:armature.collection_remove_unused",
"operator:armature.collection_select",
"operator:armature.collection_show_all",
"operator:armature.collection_unassign",
"operator:armature.collection_unassign_named",
"operator:armature.collection_unsolo_all",
"operator:armature.copy_bone_color_to_selected",
"operator:armature.delete",
"operator:armature.dissolve",
"operator:armature.duplicate",
"operator:armature.duplicate_move",
"operator:armature.duplicate_rename",
"operator:armature.extrude",
"operator:armature.extrude_forked",
"operator:armature.extrude_move",
"operator:armature.fill",
"operator:armature.flip_names",
"operator:armature.hide",
"operator:armature.move_to_collection",
"operator:armature.parent_clear",
"operator:armature.parent_set",
"operator:armature.reveal",
"operator:armature.roll_clear",
"operator:armature.select_all",
"operator:armature.select_hierarchy",
"operator:armature.select_less",
"operator:armature.select_linked",
"operator:armature.select_linked_pick",
"operator:armature.select_mirror",
"operator:armature.select_more",
"operator:armature.select_similar",
"operator:armature.separate",
"operator:armature.shortest_path_pick",
"operator:armature.split",
"operator:armature.subdivide",
"operator:armature.switch_direction",
"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"
]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,105 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00001",
"parentTask": "M15-03E",
"status": "in_progress",
"goal": "完成 datablock:Action 的最小可观察切片",
"scope": {
"gap": "datablock:Action",
"ownerFamily": "RNA_DATABLOCK",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00001.py -- tests/files/web/generated/M16-GAP-00001-datablock-Action.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00001",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00001"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 0,
"contextRemainingTokens": 0
},
"source": {
"bytes": 4380,
"tokens": 0
},
"selected": [],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00001-datablock-Action.blend",
"bytes": null,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00002",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00001.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M15-03E/manifest.json",
"parentStatus": "docs/status/M15-03E.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00001.md",
"tests/golden/M15-03E/manifest.json",
"docs/status/M15-03E.md"
],
"machineOnly": [
"tests/golden/M15-03A/task-index.json",
"tests/golden/M15-03A/task-catalog.jsonl"
],
"optionalByNeed": [],
"forbiddenByDefault": []
},
"parent": {
"manifest": {
"schemaVersion": 1,
"task": "M15-03E",
"parentTask": "M15-03D",
"status": "BLOCKED",
"nextTask": "M16-GAP-00001",
"artifactCount": 5
},
"statusSummary": [
"# M15-03E Status",
"status: blocked",
"task: owner family zero-gap closure gate",
"updated: 2026-08-19 America/New_York",
"The fail-closed closure gate reports `BLOCKED`: 20 owner families still have 6,890 remaining tasks.",
"It preserves the single active pointer `M16-GAP-00011` and does not infer completion from release or",
"inventory evidence. `npm --prefix web run test:blender-zero-gap-gate` passed the blocked-state contract.",
"Report SHA-256: `381ea77d9b884b1bdab58bb60df001a26287db80dd9380edb6ae4d64a0a3d969`."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 8192,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 19,
"taskTokens": 210
}
}

View File

@@ -0,0 +1,115 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00002",
"parentTask": "M16-GAP-00001",
"status": "in_progress",
"goal": "Armature data-block LOCAL_EXACT slice",
"scope": {
"gap": "datablock:Armature",
"ownerFamily": "RNA_DATABLOCK",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00002.py -- tests/files/web/generated/M16-GAP-00002-datablock-Armature.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00002",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00002"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 4235,
"contextRemainingTokens": 1057
},
"source": {
"bytes": 5669,
"tokens": 1419
},
"selected": [],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00002-datablock-Armature.blend",
"bytes": 87320,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00003",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00002.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00001/manifest.json",
"parentStatus": "docs/status/M16-GAP-00001.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00002.md",
"tests/golden/M16-GAP-00001/manifest.json",
"docs/status/M16-GAP-00001.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-00001",
"parentTask": "M15-03E",
"status": "done",
"nextTask": "M16-GAP-00002",
"artifactCount": 8
},
"statusSummary": [
"# M16-GAP-00001 Status",
"status: done",
"task: Action data-block LOCAL_EXACT slice",
"updated: 2026-08-19 America/New_York",
"enablingTask: true",
"parityStateChange: true",
"The generated Action fixture was read by Blender 5.2 desktop and the full-Main WASM. Both observed",
"`action:AnimatedObjectAction:object:AnimatedObject` with three location channels and two keyframes per"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 892,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 19,
"taskTokens": 223
}
}

View File

@@ -0,0 +1,120 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00003",
"parentTask": "M16-GAP-00002",
"status": "in_progress",
"goal": "Brush data-block LOCAL_EXACT slice",
"scope": {
"gap": "datablock:Brush",
"ownerFamily": "RNA_DATABLOCK",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00003.py -- tests/files/web/generated/M16-GAP-00003-datablock-Brush.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00003",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00003"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 4661,
"contextRemainingTokens": 1164
},
"source": {
"bytes": 5243,
"tokens": 1312
},
"selected": [],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00003-datablock-Brush.blend",
"bytes": 86159,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 824532,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00004",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00003.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00002/manifest.json",
"parentStatus": "docs/status/M16-GAP-00002.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00003.md",
"tests/golden/M16-GAP-00002/manifest.json",
"docs/status/M16-GAP-00002.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-00002",
"parentTask": "M16-GAP-00001",
"status": "done",
"nextTask": "M16-GAP-00003",
"artifactCount": 8
},
"statusSummary": [
"# M16-GAP-00002 Status",
"status: done",
"task: Armature data-block LOCAL_EXACT slice",
"updated: 2026-08-19 America/New_York",
"enablingTask: true",
"parityStateChange: true",
"The generated Armature fixture was read by Blender 5.2 desktop and full-Main WASM. Both observed",
"`armature:RiggedArmature` with Root and Tip bones, Tip parented to Root, and mesh skin-weight linkage."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 448,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 12,
"taskTokens": 112
}
}

View File

@@ -0,0 +1,120 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00004",
"parentTask": "M16-GAP-00003",
"status": "in_progress",
"goal": "Camera data-block LOCAL_EXACT slice",
"scope": {
"gap": "datablock:Camera",
"ownerFamily": "RNA_DATABLOCK",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00004.py -- tests/files/web/generated/M16-GAP-00004-datablock-Camera.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00004",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00004"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3994,
"contextRemainingTokens": 997
},
"source": {
"bytes": 5910,
"tokens": 1479
},
"selected": [],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00004-datablock-Camera.blend",
"bytes": 86379,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 824532,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00005",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00004.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00003/manifest.json",
"parentStatus": "docs/status/M16-GAP-00003.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00004.md",
"tests/golden/M16-GAP-00003/manifest.json",
"docs/status/M16-GAP-00003.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-00003",
"parentTask": "M16-GAP-00002",
"status": "done",
"nextTask": "M16-GAP-00004",
"artifactCount": 12
},
"statusSummary": [
"# M16-GAP-00003 Status",
"status: done",
"task: Brush data-block LOCAL_EXACT slice",
"updated: 2026-08-19 America/New_York",
"enablingTask: true",
"parityStateChange: true",
"Added bounded `BrushIR` fields to the native Main reader and optional SceneIR parser field. A real",
"Blender 5.2 Brush fixture reports `WebGapBrush` size 42, alpha 0.65, hardness 0.8, spacing 17 and"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 450,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 12,
"taskTokens": 113
}
}

View File

@@ -0,0 +1,119 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00005",
"parentTask": "M16-GAP-00004",
"status": "in_progress",
"goal": "Collection data-block LOCAL_EXACT slice",
"scope": {
"gap": "datablock:Collection",
"ownerFamily": "RNA_DATABLOCK",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00005.py -- tests/files/web/generated/M16-GAP-00005-datablock-Collection.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00005",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00005"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 4893,
"contextRemainingTokens": 1222
},
"source": {
"bytes": 5011,
"tokens": 1254
},
"selected": [],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00005-datablock-Collection.blend",
"bytes": 86454,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 824532,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00006",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00005.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00004/manifest.json",
"parentStatus": "docs/status/M16-GAP-00004.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00005.md",
"tests/golden/M16-GAP-00004/manifest.json",
"docs/status/M16-GAP-00004.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-00004",
"parentTask": "M16-GAP-00003",
"status": "done",
"nextTask": "M16-GAP-00005",
"artifactCount": 9
},
"statusSummary": [
"# M16-GAP-00004 Status",
"status: done",
"task: Camera data-block LOCAL_EXACT slice",
"updated: 2026-08-19 America/New_York",
"Blender desktop and full-Main WASM read the same `camera:WebGapCamera` fixture with perspective",
"projection, 52 mm lens, 0.1 near plane and 2500 far plane. Save/reopen was exact on both paths.",
"Next task: `M16-GAP-00005` (Collection data-block)."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 308,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 10,
"taskTokens": 77
}
}

View File

@@ -0,0 +1,118 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00006",
"parentTask": "M16-GAP-00005",
"status": "in_progress",
"goal": "Curve data-block LOCAL_EXACT slice",
"scope": {
"gap": "datablock:Curve",
"ownerFamily": "RNA_DATABLOCK",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00006.py -- tests/files/web/generated/M16-GAP-00006-datablock-Curve.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00006",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00006"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 5018,
"contextRemainingTokens": 1253
},
"source": {
"bytes": 4886,
"tokens": 1223
},
"selected": [],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00006-datablock-Curve.blend",
"bytes": 86153,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 824532,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00007",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00006.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00005/manifest.json",
"parentStatus": "docs/status/M16-GAP-00005.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00006.md",
"tests/golden/M16-GAP-00005/manifest.json",
"docs/status/M16-GAP-00005.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-00005",
"parentTask": "M16-GAP-00004",
"status": "done",
"nextTask": "M16-GAP-00006",
"artifactCount": 8
},
"statusSummary": [
"# M16-GAP-00005 Status",
"status: done",
"task: Collection data-block LOCAL_EXACT slice",
"updated: 2026-08-19 America/New_York",
"Desktop and WASM read nested `WebGapCollection` -> `WebGapChild` hierarchy with the collection object",
"link intact. Save/reopen matched exactly. Next task: `M16-GAP-00006` (Curve data-block)."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 373,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 11,
"taskTokens": 94
}
}

View File

@@ -0,0 +1,119 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00007",
"parentTask": "M16-GAP-00006",
"status": "in_progress",
"goal": "Curves data-block LOCAL_EXACT slice",
"scope": {
"gap": "datablock:Curves",
"ownerFamily": "RNA_DATABLOCK",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00007.py -- tests/files/web/generated/M16-GAP-00007-datablock-Curves.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00007",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00007"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 4840,
"contextRemainingTokens": 1209
},
"source": {
"bytes": 5064,
"tokens": 1267
},
"selected": [],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00007-datablock-Curves.blend",
"bytes": 86489,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 824532,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00008",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00007.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00006/manifest.json",
"parentStatus": "docs/status/M16-GAP-00006.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00007.md",
"tests/golden/M16-GAP-00006/manifest.json",
"docs/status/M16-GAP-00006.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-00006",
"parentTask": "M16-GAP-00005",
"status": "done",
"nextTask": "M16-GAP-00007",
"artifactCount": 9
},
"statusSummary": [
"# M16-GAP-00006 Status",
"status: done",
"task: Curve data-block LOCAL_EXACT slice",
"updated: 2026-08-19 America/New_York",
"Desktop and full-Main WASM read the same Bezier Curve fixture: one spline, three points, available",
"geometry and exact spline offsets. Save/reopen matched the complete non-mesh data record.",
"Next task: `M16-GAP-00007` (Curves data-block)."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 375,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 11,
"taskTokens": 94
}
}

View File

@@ -0,0 +1,119 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00008",
"parentTask": "M16-GAP-00007",
"status": "in_progress",
"goal": "FreestyleLineStyle data-block LOCAL_EXACT slice",
"scope": {
"gap": "datablock:FreestyleLineStyle",
"ownerFamily": "RNA_DATABLOCK",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00008.py -- tests/files/web/generated/M16-GAP-00008-datablock-FreestyleLineStyle.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00008",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00008"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 4883,
"contextRemainingTokens": 1219
},
"source": {
"bytes": 5021,
"tokens": 1257
},
"selected": [],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00008-datablock-FreestyleLineStyle.blend",
"bytes": 85885,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 824532,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00009",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00008.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00007/manifest.json",
"parentStatus": "docs/status/M16-GAP-00007.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00008.md",
"tests/golden/M16-GAP-00007/manifest.json",
"docs/status/M16-GAP-00007.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-00007",
"parentTask": "M16-GAP-00006",
"status": "done",
"nextTask": "M16-GAP-00008",
"artifactCount": 9
},
"statusSummary": [
"# M16-GAP-00007 Status",
"status: done",
"task: Curves data-block LOCAL_EXACT slice",
"updated: 2026-08-19 America/New_York",
"Desktop and full-Main WASM read the converted Curves data-block with available geometry, four points",
"and at least one spline. Save/reopen matched the complete nonMeshData record.",
"Next task: `M16-GAP-00008` (FreestyleLineStyle data-block)."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 323,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 10,
"taskTokens": 81
}
}

View File

@@ -0,0 +1,120 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00009",
"parentTask": "M16-GAP-00008",
"status": "in_progress",
"goal": "GreasePencil data-block LOCAL_EXACT slice",
"scope": {
"gap": "datablock:GreasePencil",
"ownerFamily": "RNA_DATABLOCK",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00009.py -- tests/files/web/generated/M16-GAP-00009-datablock-GreasePencil.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00009",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00009"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 4402,
"contextRemainingTokens": 1099
},
"source": {
"bytes": 5502,
"tokens": 1377
},
"selected": [],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00009-datablock-GreasePencil.blend",
"bytes": 87788,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 824532,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00010",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00009.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00008/manifest.json",
"parentStatus": "docs/status/M16-GAP-00008.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00009.md",
"tests/golden/M16-GAP-00008/manifest.json",
"docs/status/M16-GAP-00008.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-00008",
"parentTask": "M16-GAP-00007",
"status": "done",
"nextTask": "M16-GAP-00009",
"artifactCount": 11
},
"statusSummary": [
"# M16-GAP-00008 Status",
"status: done",
"task: FreestyleLineStyle data-block LOCAL_EXACT slice",
"updated: 2026-08-19 America/New_York",
"Added bounded optional `lineStyles` SceneIR data with name, color, alpha, thickness, chaining/caps,",
"dashed state and modifier counts. Desktop and full-Main WASM matched the real style fixture and save/",
"reopen was exact. This does not claim Freestyle stroke rendering parity.",
"Next task: `M16-GAP-00009` (GreasePencil data-block)."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 327,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 10,
"taskTokens": 82
}
}

View File

@@ -0,0 +1,137 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00010",
"parentTask": "M16-GAP-00009",
"status": "done",
"goal": "让同一个 Lattice fixture 在 Blender desktop 和 WASM/Main 中得到一致的点阵/形变数据,并在 save/reopen 后保持一致。",
"scope": {
"gap": "datablock:Lattice",
"ownerFamily": "RNA_DATABLOCK",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00010.py -- tests/files/web/generated/M16-GAP-00010-datablock-Lattice.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00010",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00010"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00010.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3192,
"contextRemainingTokens": 797
},
"source": {
"bytes": 6712,
"tokens": 1679
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00010.py",
"bytes": 1286,
"tokens": 322
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00010-datablock-Lattice.blend",
"bytes": 86081,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "blender-5.2.0/source/blender/web_engine/",
"bytes": 131451,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/app/src/vendor/blender/",
"bytes": 134728,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tools/web/check-generated-gap.mjs",
"bytes": 824532,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 1,
"bytes": 1286,
"tokens": 322
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00011",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00010.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00009/manifest.json",
"parentStatus": "docs/status/M16-GAP-00009.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00010.md",
"tests/golden/M16-GAP-00009/manifest.json",
"docs/status/M16-GAP-00009.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-00009",
"parentTask": "M16-GAP-00008",
"status": "done",
"nextTask": "M16-GAP-00010",
"artifactCount": 7
},
"statusSummary": [
"# M16-GAP-00009 Status",
"status: done",
"task: GreasePencil data-block LOCAL_EXACT slice",
"updated: 2026-08-19 America/New_York",
"Reused the existing real Grease Pencil Main fixture. Blender desktop and full-Main WASM both observed",
"GreasePencilData layers/frames, and save/reopen matched exactly.",
"Next task: `M16-GAP-00010` (Lattice data-block)."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 2331,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 51,
"taskTokens": 583
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00070",
"parentTask": "M16-GAP-00069",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:GREASE_PENCIL_VERTEX_WEIGHT_ANGLE 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": "modifier:GREASE_PENCIL_VERTEX_WEIGHT_ANGLE",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00070.py -- tests/files/web/generated/M16-GAP-00070-modifier-GREASE_PENCIL_VERTEX_WEIGHT_ANGLE.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00070",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00070"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00070.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2837,
"contextRemainingTokens": 708
},
"source": {
"bytes": 7067,
"tokens": 1768
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00070.py",
"bytes": 535,
"tokens": 134
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00070-modifier-GREASE_PENCIL_VERTEX_WEIGHT_ANGLE.blend",
"bytes": 87791,
"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-00070/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00070.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00070/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 535,
"tokens": 134
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00071",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00070.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00069/manifest.json",
"parentStatus": "docs/status/M16-GAP-00069.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00070.md",
"tests/golden/M16-GAP-00069/manifest.json",
"docs/status/M16-GAP-00069.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-00069",
"parentTask": "M16-GAP-00068",
"status": "done",
"nextTask": "M16-GAP-00070",
"artifactCount": 11
},
"statusSummary": [
"# M16-GAP-00069 Status",
"status: done",
"task: GREASE_PENCIL_TINT modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Grease Pencil TINT modifier stack exposure for `object:GreasePencilObject`.",
"evidence:",
"- Desktop fixture exposes `Gp Tint`; save/reopen is exact.",
"- WASM/Main exposes `GREASE_PENCIL_TINT` on the object scene node; save/reopen is exact."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1854,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 464
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00072",
"parentTask": "M16-GAP-00071",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:HOOK 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": "modifier:HOOK",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00072.py -- tests/files/web/generated/M16-GAP-00072-modifier-HOOK.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00072",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00072"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00072.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2817,
"contextRemainingTokens": 702
},
"source": {
"bytes": 7087,
"tokens": 1774
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00072.py",
"bytes": 411,
"tokens": 103
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00072-modifier-HOOK.blend",
"bytes": 86521,
"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-00072/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00072.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00072/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 411,
"tokens": 103
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00073",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00072.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00071/manifest.json",
"parentStatus": "docs/status/M16-GAP-00071.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00072.md",
"tests/golden/M16-GAP-00071/manifest.json",
"docs/status/M16-GAP-00071.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-00071",
"parentTask": "M16-GAP-00070",
"status": "done",
"nextTask": "M16-GAP-00072",
"artifactCount": 11
},
"statusSummary": [
"# M16-GAP-00071 Status",
"status: done",
"task: GREASE_PENCIL_VERTEX_WEIGHT_PROXIMITY modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Grease Pencil VERTEX_WEIGHT_PROXIMITY modifier stack exposure for `object:GreasePencilObject`.",
"evidence:",
"- Desktop fixture exposes `Gp Vertex Weight Proximity`; save/reopen is exact.",
"- WASM/Main exposes `GREASE_PENCIL_VERTEX_WEIGHT_PROXIMITY` with type code 76 on the object scene node."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1709,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 428
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00073",
"parentTask": "M16-GAP-00072",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:LAPLACIANDEFORM 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": "modifier:LAPLACIANDEFORM",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00073.py -- tests/files/web/generated/M16-GAP-00073-modifier-LAPLACIANDEFORM.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00073",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00073"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00073.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2997,
"contextRemainingTokens": 748
},
"source": {
"bytes": 6907,
"tokens": 1728
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00073.py",
"bytes": 433,
"tokens": 109
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00073-modifier-LAPLACIANDEFORM.blend",
"bytes": 86523,
"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-00073/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00073.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00073/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 433,
"tokens": 109
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00074",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00073.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00072/manifest.json",
"parentStatus": "docs/status/M16-GAP-00072.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00073.md",
"tests/golden/M16-GAP-00072/manifest.json",
"docs/status/M16-GAP-00072.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-00072",
"parentTask": "M16-GAP-00071",
"status": "done",
"nextTask": "M16-GAP-00073",
"artifactCount": 11
},
"statusSummary": [
"# M16-GAP-00072 Status",
"status: done",
"task: HOOK modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh HOOK modifier stack exposure for `object:WebGapHookObject`.",
"evidence:",
"- Desktop fixture exposes `WebGapHook`; save/reopen is exact.",
"- WASM/Main exposes HOOK type code 9 with metadata parameters on the mesh scene node."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1764,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 441
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00074",
"parentTask": "M16-GAP-00073",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:LAPLACIANSMOOTH 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": "modifier:LAPLACIANSMOOTH",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00074.py -- tests/files/web/generated/M16-GAP-00074-modifier-LAPLACIANSMOOTH.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00074",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00074"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00074.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2942,
"contextRemainingTokens": 734
},
"source": {
"bytes": 6962,
"tokens": 1742
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00074.py",
"bytes": 433,
"tokens": 109
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00074-modifier-LAPLACIANSMOOTH.blend",
"bytes": 86545,
"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-00074/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00074.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00074/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 433,
"tokens": 109
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00075",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00074.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00073/manifest.json",
"parentStatus": "docs/status/M16-GAP-00073.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00074.md",
"tests/golden/M16-GAP-00073/manifest.json",
"docs/status/M16-GAP-00073.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-00073",
"parentTask": "M16-GAP-00072",
"status": "done",
"nextTask": "M16-GAP-00074",
"artifactCount": 11
},
"statusSummary": [
"# M16-GAP-00073 Status",
"status: done",
"task: LAPLACIANDEFORM modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh LAPLACIANDEFORM modifier stack exposure for `object:WebGapLaplacianDeformObject`.",
"evidence:",
"- Desktop fixture exposes `WebGapLaplacianDeform`; save/reopen is exact.",
"- Corrected the reader type name to Blender RNA `LAPLACIANDEFORM` and rebuilt WASM."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1764,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 441
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00075",
"parentTask": "M16-GAP-00074",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:LATTICE 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": "modifier:LATTICE",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00075.py -- tests/files/web/generated/M16-GAP-00075-modifier-LATTICE.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00075",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00075"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00075.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2984,
"contextRemainingTokens": 745
},
"source": {
"bytes": 6920,
"tokens": 1731
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00075.py",
"bytes": 425,
"tokens": 107
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00075-modifier-LATTICE.blend",
"bytes": 86504,
"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-00075/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00075.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00075/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 425,
"tokens": 107
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00076",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00075.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00074/manifest.json",
"parentStatus": "docs/status/M16-GAP-00074.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00075.md",
"tests/golden/M16-GAP-00074/manifest.json",
"docs/status/M16-GAP-00074.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-00074",
"parentTask": "M16-GAP-00073",
"status": "done",
"nextTask": "M16-GAP-00075",
"artifactCount": 11
},
"statusSummary": [
"# M16-GAP-00074 Status",
"status: done",
"task: LAPLACIANSMOOTH modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh LAPLACIANSMOOTH modifier stack exposure for `object:WebGapLaplacianSmoothObject`.",
"evidence:",
"- Desktop fixture exposes `WebGapLaplacianSmooth`; save/reopen is exact.",
"- Corrected the reader type name to Blender RNA `LAPLACIANSMOOTH` and rebuilt WASM."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1724,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 431
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00099",
"parentTask": "M16-GAP-00098",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:SURFACE_DEFORM 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": "modifier:SURFACE_DEFORM",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00099.py -- tests/files/web/generated/M16-GAP-00099-modifier-SURFACE_DEFORM.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00099",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00099"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00099.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2233,
"contextRemainingTokens": 557
},
"source": {
"bytes": 7671,
"tokens": 1919
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00099.py",
"bytes": 1002,
"tokens": 251
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00099-modifier-SURFACE_DEFORM.blend",
"bytes": 86421,
"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-00099/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00099.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00099/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 1002,
"tokens": 251
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00100",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00099.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00098/manifest.json",
"parentStatus": "docs/status/M16-GAP-00098.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00099.md",
"tests/golden/M16-GAP-00098/manifest.json",
"docs/status/M16-GAP-00098.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-00098",
"parentTask": "M16-GAP-00097",
"status": "done",
"nextTask": "M16-GAP-00099",
"artifactCount": 15
},
"statusSummary": [
"# M16-GAP-00098 Status",
"status: done",
"task: SURFACE modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh SURFACE modifier stack exposure for `mesh:WebGapSurfaceMesh`.",
"evidence:",
"- Desktop fixture exposes `WebGapSurface` as SURFACE type code 30; save/reopen is exact.",
"- WASM/Main exposes the same SURFACE stack entry with matching generic visibility flags; save/reopen is exact."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1759,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 440
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00100",
"parentTask": "M16-GAP-00099",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:TRIANGULATE 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": "modifier:TRIANGULATE",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00100.py -- tests/files/web/generated/M16-GAP-00100-modifier-TRIANGULATE.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00100",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00100"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00100.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2172,
"contextRemainingTokens": 542
},
"source": {
"bytes": 7732,
"tokens": 1934
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00100.py",
"bytes": 1062,
"tokens": 266
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00100-modifier-TRIANGULATE.blend",
"bytes": 86387,
"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-00100/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00100.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00100/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 1062,
"tokens": 266
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00101",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00100.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00099/manifest.json",
"parentStatus": "docs/status/M16-GAP-00099.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00100.md",
"tests/golden/M16-GAP-00099/manifest.json",
"docs/status/M16-GAP-00099.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-00099",
"parentTask": "M16-GAP-00098",
"status": "done",
"nextTask": "M16-GAP-00100",
"artifactCount": 15
},
"statusSummary": [
"# M16-GAP-00099 Status",
"status: done",
"task: SURFACE_DEFORM modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh SURFACE_DEFORM modifier stack exposure for `mesh:WebGapSurfaceDeformMesh`.",
"evidence:",
"- Desktop fixture exposes `WebGapSurfaceDeform` as SURFACE_DEFORM type code 52; save/reopen is exact.",
"- WASM/Main exposes the same SURFACE_DEFORM stack entry with matching generic visibility flags; save/reopen is exact."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1744,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 436
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00101",
"parentTask": "M16-GAP-00100",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:UV_PROJECT 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": "modifier:UV_PROJECT",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00101.py -- tests/files/web/generated/M16-GAP-00101-modifier-UV_PROJECT.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00101",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00101"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00101.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2176,
"contextRemainingTokens": 543
},
"source": {
"bytes": 7728,
"tokens": 1933
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00101.py",
"bytes": 986,
"tokens": 247
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00101-modifier-UV_PROJECT.blend",
"bytes": 86395,
"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-00101/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00101.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00101/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 986,
"tokens": 247
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00102",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00101.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00100/manifest.json",
"parentStatus": "docs/status/M16-GAP-00100.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00101.md",
"tests/golden/M16-GAP-00100/manifest.json",
"docs/status/M16-GAP-00100.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-00100",
"parentTask": "M16-GAP-00099",
"status": "done",
"nextTask": "M16-GAP-00101",
"artifactCount": 15
},
"statusSummary": [
"# M16-GAP-00100 Status",
"status: done",
"task: TRIANGULATE modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh TRIANGULATE modifier stack exposure for `mesh:WebGapTriangulateMesh`.",
"evidence:",
"- Desktop fixture exposes `WebGapTriangulate` as TRIANGULATE type code 44 with FIXED quad and CLIP ngon methods; save/reopen is exact.",
"- WASM/Main exposes the same TRIANGULATE stack entry and matching triangulation methods; save/reopen is exact."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1739,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 435
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00102",
"parentTask": "M16-GAP-00101",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:UV_WARP 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": "modifier:UV_WARP",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00102.py -- tests/files/web/generated/M16-GAP-00102-modifier-UV_WARP.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00102",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00102"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00102.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2246,
"contextRemainingTokens": 561
},
"source": {
"bytes": 7658,
"tokens": 1915
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00102.py",
"bytes": 974,
"tokens": 244
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00102-modifier-UV_WARP.blend",
"bytes": 86398,
"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-00102/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00102.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00102/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 974,
"tokens": 244
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00103",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00102.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00101/manifest.json",
"parentStatus": "docs/status/M16-GAP-00101.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00102.md",
"tests/golden/M16-GAP-00101/manifest.json",
"docs/status/M16-GAP-00101.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-00101",
"parentTask": "M16-GAP-00100",
"status": "done",
"nextTask": "M16-GAP-00102",
"artifactCount": 15
},
"statusSummary": [
"# M16-GAP-00101 Status",
"status: done",
"task: UV_PROJECT modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh UV_PROJECT modifier stack exposure for `mesh:WebGapUvProjectMesh`.",
"evidence:",
"- Desktop fixture exposes `WebGapUvProject` as UV_PROJECT type code 15; save/reopen is exact.",
"- WASM/Main exposes the same UV_PROJECT stack entry with matching generic visibility flags; save/reopen is exact."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1724,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 431
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00103",
"parentTask": "M16-GAP-00102",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:VERTEX_WEIGHT_EDIT 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": "modifier:VERTEX_WEIGHT_EDIT",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00103.py -- tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00103",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00103"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00103.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2227,
"contextRemainingTokens": 556
},
"source": {
"bytes": 7677,
"tokens": 1920
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00103.py",
"bytes": 1015,
"tokens": 254
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend",
"bytes": 86454,
"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-00103/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00103.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00103/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 1015,
"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-00104",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00103.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00102/manifest.json",
"parentStatus": "docs/status/M16-GAP-00102.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00103.md",
"tests/golden/M16-GAP-00102/manifest.json",
"docs/status/M16-GAP-00102.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-00102",
"parentTask": "M16-GAP-00101",
"status": "done",
"nextTask": "M16-GAP-00103",
"artifactCount": 15
},
"statusSummary": [
"# M16-GAP-00102 Status",
"status: done",
"task: UV_WARP modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh UV_WARP modifier stack exposure for `mesh:WebGapUvWarpMesh`.",
"evidence:",
"- Desktop fixture exposes `WebGapUvWarp` as UV_WARP type code 47; save/reopen is exact.",
"- WASM/Main exposes the same UV_WARP stack entry with matching generic visibility flags; save/reopen is exact."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1779,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 445
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00104",
"parentTask": "M16-GAP-00103",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:VERTEX_WEIGHT_MIX 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": "modifier:VERTEX_WEIGHT_MIX",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00104.py -- tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00104",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00104"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00104.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2045,
"contextRemainingTokens": 510
},
"source": {
"bytes": 7859,
"tokens": 1966
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00104.py",
"bytes": 1011,
"tokens": 253
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend",
"bytes": 86411,
"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-00104/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00104.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00104/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 1011,
"tokens": 253
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00105",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00104.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00103/manifest.json",
"parentStatus": "docs/status/M16-GAP-00103.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00104.md",
"tests/golden/M16-GAP-00103/manifest.json",
"docs/status/M16-GAP-00103.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-00103",
"parentTask": "M16-GAP-00102",
"status": "done",
"nextTask": "M16-GAP-00104",
"artifactCount": 15
},
"statusSummary": [
"# M16-GAP-00103 Status",
"status: done",
"task: VERTEX_WEIGHT_EDIT modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh VERTEX_WEIGHT_EDIT modifier stack exposure for `mesh:WebGapVertexWeightEditMesh`.",
"evidence:",
"- Desktop fixture exposes `WebGapVertexWeightEdit` as VERTEX_WEIGHT_EDIT type code 36; save/reopen is exact.",
"- Reader name table now uses Blender's canonical VERTEX_WEIGHT_EDIT name for type code 36; rebuilt WASM/Main exposes the same stack entry with matching generic flags."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1774,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 444
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00105",
"parentTask": "M16-GAP-00104",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:VERTEX_WEIGHT_PROXIMITY 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": "modifier:VERTEX_WEIGHT_PROXIMITY",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00105.py -- tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00105",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00105"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00105.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2088,
"contextRemainingTokens": 521
},
"source": {
"bytes": 7816,
"tokens": 1955
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00105.py",
"bytes": 1035,
"tokens": 259
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend",
"bytes": 86460,
"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-00105/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00105.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00105/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 1035,
"tokens": 259
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00106",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00105.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00104/manifest.json",
"parentStatus": "docs/status/M16-GAP-00104.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00105.md",
"tests/golden/M16-GAP-00104/manifest.json",
"docs/status/M16-GAP-00104.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-00104",
"parentTask": "M16-GAP-00103",
"status": "done",
"nextTask": "M16-GAP-00105",
"artifactCount": 15
},
"statusSummary": [
"# M16-GAP-00104 Status",
"status: done",
"task: VERTEX_WEIGHT_MIX modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh VERTEX_WEIGHT_MIX modifier stack exposure for `mesh:WebGapVertexWeightMixMesh`.",
"evidence:",
"- Desktop fixture exposes `WebGapVertexWeightMix` as VERTEX_WEIGHT_MIX type code 37; save/reopen is exact.",
"- WASM/Main exposes the same VERTEX_WEIGHT_MIX stack entry with matching generic visibility flags; save/reopen is exact."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1804,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 451
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00106",
"parentTask": "M16-GAP-00105",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:VOLUME_DISPLACE 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": "modifier:VOLUME_DISPLACE",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00106.py -- tests/files/web/generated/M16-GAP-00106-modifier-VOLUME_DISPLACE.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00106",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00106"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00106.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2065,
"contextRemainingTokens": 515
},
"source": {
"bytes": 7839,
"tokens": 1961
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00106.py",
"bytes": 918,
"tokens": 230
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00106-modifier-VOLUME_DISPLACE.blend",
"bytes": 86077,
"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-00106/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00106.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00106/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 918,
"tokens": 230
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00107",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00106.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00105/manifest.json",
"parentStatus": "docs/status/M16-GAP-00105.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00106.md",
"tests/golden/M16-GAP-00105/manifest.json",
"docs/status/M16-GAP-00105.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-00105",
"parentTask": "M16-GAP-00104",
"status": "done",
"nextTask": "M16-GAP-00106",
"artifactCount": 15
},
"statusSummary": [
"# M16-GAP-00105 Status",
"status: done",
"task: VERTEX_WEIGHT_PROXIMITY modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Mesh VERTEX_WEIGHT_PROXIMITY modifier stack exposure for `mesh:WebGapVertexWeightProximityMesh`.",
"evidence:",
"- Desktop fixture exposes `WebGapVertexWeightProximity` as VERTEX_WEIGHT_PROXIMITY type code 38; save/reopen is exact.",
"- WASM/Main exposes the same VERTEX_WEIGHT_PROXIMITY stack entry with matching generic visibility flags; save/reopen is exact."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1764,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 441
}
}

View File

@@ -0,0 +1,148 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00107",
"parentTask": "M16-GAP-00106",
"status": "in_progress",
"goal": "Make the same minimal fixture produce observable modifier:VOLUME_TO_MESH 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": "modifier:VOLUME_TO_MESH",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00107.py -- tests/files/web/generated/M16-GAP-00107-modifier-VOLUME_TO_MESH.blend",
"npm --prefix web run test:generated-gap -- --task M16-GAP-00107",
"node tools/web/check-generated-gap.mjs --task M16-GAP-00107"
],
"inputPaths": [
"tools/web/generated/M16-GAP-00107.py"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2120,
"contextRemainingTokens": 529
},
"source": {
"bytes": 7784,
"tokens": 1947
},
"selected": [
{
"path": "tools/web/generated/M16-GAP-00107.py",
"bytes": 999,
"tokens": 250
}
],
"excluded": [
{
"path": "tests/files/web/generated/M16-GAP-00107-modifier-VOLUME_TO_MESH.blend",
"bytes": 86415,
"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-00107/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/M16-GAP-00107.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/M16-GAP-00107/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 999,
"tokens": 250
}
},
"exitCriteria": [
"desktop fixture evidence exists",
"WASM uses the same fixture",
"comparator passes",
"save/reopen preserves Main",
"manifest hashes all artifacts"
],
"nextTask": "M16-GAP-00108",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/M16-GAP-00107.md",
"taskIndex": "tests/golden/M15-03A/task-index.json",
"parentManifest": "tests/golden/M16-GAP-00106/manifest.json",
"parentStatus": "docs/status/M16-GAP-00106.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/M16-GAP-00107.md",
"tests/golden/M16-GAP-00106/manifest.json",
"docs/status/M16-GAP-00106.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-00106",
"parentTask": "M16-GAP-00105",
"status": "done",
"nextTask": "M16-GAP-00107",
"artifactCount": 15
},
"statusSummary": [
"# M16-GAP-00106 Status",
"status: done",
"task: VOLUME_DISPLACE modifier LOCAL_EXACT slice",
"updated: 2026-08-20 America/New_York",
"scope: Volume-object VOLUME_DISPLACE modifier stack exposure for `object:WebGapVolumeDisplaceObject`.",
"evidence:",
"- Desktop fixture exposes `WebGapVolumeDisplace` as VOLUME_DISPLACE type code 59 on a Volume object; save/reopen is exact.",
"- WASM/Main exposes the same VOLUME_DISPLACE stack entry with matching generic visibility flags; save/reopen is exact."
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1759,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 38,
"taskTokens": 440
}
}

View File

@@ -0,0 +1,42 @@
{
"schemaVersion": 1,
"task": "M15-03E",
"parentTask": "M15-03D",
"status": "BLOCKED",
"enablingTask": false,
"parityStateChange": false,
"operation": "BLENDER_ZERO_GAP_GATE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M15-03D/manifest.json",
"sha256": "2838a248140ebc944ee85190de5b2ae73bdc28e8d0be5972fb04e5cf2bf345c3"
},
"checker": {
"path": "tools/web/check-blender-zero-gap-gate.mjs",
"sha256": "169c37861ee4422fd2eacf4886a99e71d5ed4e5220132866dccaf961b4a6ac2b"
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "a5c46410b419ede40a5adb6a84029e7f303e28e823f33d9d63d5e1815c1b0032"
},
"report": {
"path": "tests/golden/M15-03E/zero-gap-gate-report.json",
"sha256": "41a5611e2719ed377db55bdfe6623c2a73dc91560e0f38266164d10645b57a69"
},
"package": {
"path": "web/package.json",
"sha256": "540fcf5a711fe65654f5f9dcfccf4dfb4549dcdbef498a4eb37946cc24a76912"
}
},
"nextTask": "M16-GAP-00001",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"parentPointerRepair": {
"task": "M16-GAP-00001",
"parentTask": "M15-03E",
"originalNextTask": "M16-GAP-00018",
"resignedNextTask": "M16-GAP-00001"
}
}
}

View File

@@ -0,0 +1,71 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00001",
"parentTask": "M15-03E",
"enablingTask": true,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "ACTION_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M15-03E/manifest.json",
"sha256": "8c81caa2e601aba51381d72c5a5f35e0dd5561458946c1c4795e9e055eec3474"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00001-datablock-Action.blend",
"sha256": "cb921e862eff1dcf68f22d77ef8558679207203ace0b80239a5bc5874ec2a551"
},
"desktopChecker": {
"path": "tools/web/check-action-desktop.py",
"sha256": "7c32d786a8daedcf5e995d0ff29b6034e7c4f4c25c309ccd0542adecc19319f2"
},
"webChecker": {
"path": "tools/web/check-generated-gap.mjs",
"sha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00001/action-desktop-report.json",
"sha256": "f6bea0003a9e8eb25048797156bc0ab59b6a63d76ce4156283b6d9761dbfb0ee"
},
"webReport": {
"path": "tests/golden/M16-GAP-00001/action-local-exact-report.json",
"sha256": "eb7a604af8b071c3186a39a30f3a9974a6fed03008751da5319d54d170b841d6"
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
},
"package": {
"path": "web/package.json",
"sha256": "9c553a1e0614bcd190149a409759c8fe5d83a0bd00fe49b4bce049ffa01e0f0a"
}
},
"nextTask": "M16-GAP-00002",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tests/golden/M15-03E/manifest.json",
"originalSha256": "9e50746ba11f29a3a26c1eb04c25e7153f2edebbf32e092c5bdc89516f274f64",
"resignedSha256": "8c81caa2e601aba51381d72c5a5f35e0dd5561458946c1c4795e9e055eec3474"
},
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "a987e77c1e35f70d820fe12430d74d90e72bfb594b65dbbf39f005748c6683f8",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "tests/golden/M15-03A/next-task-plan.json",
"originalSha256": "732d34b5a696077ae6f7f11df768e1e1671379e2face64496f46fcbf352878ed",
"resignedSha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
},
{
"path": "web/package.json",
"originalSha256": "159af906f4e468e3f18cfcd2f599a7e22c9c180cdc8032ba4eac5eaf5ad8cc0e",
"resignedSha256": "9c553a1e0614bcd190149a409759c8fe5d83a0bd00fe49b4bce049ffa01e0f0a"
}
]
}
}

View File

@@ -0,0 +1,66 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00002",
"parentTask": "M16-GAP-00001",
"enablingTask": true,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "ARMATURE_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00001/manifest.json",
"sha256": "ef0a497b61ee95fae55be76ab9dbbc047aeb7619bb161c0711319f4288f5d170"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00002-datablock-Armature.blend",
"sha256": "b7d1c05b70e97be9a70890d45fea60b143073462d2a4f62eb3cc607bd2d665ca"
},
"desktopChecker": {
"path": "tools/web/check-armature-desktop.py",
"sha256": "5a03e4c6d195219b6fe567973565b0d29f8957716d03c419b04d2003ed67429e"
},
"webChecker": {
"path": "tools/web/check-generated-gap.mjs",
"sha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00002/armature-desktop-report.json",
"sha256": "970538d481dd9b2169c5e39e6901e6eeff0d9b2d26b42491837321841bcb4a5e"
},
"webReport": {
"path": "tests/golden/M16-GAP-00002/armature-local-exact-report.json",
"sha256": "eeb775648b186a9728851b8cffa0fa9c41701de4a8142e73f6ad98ef050dc877"
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
},
"package": {
"path": "web/package.json",
"sha256": "9c553a1e0614bcd190149a409759c8fe5d83a0bd00fe49b4bce049ffa01e0f0a"
}
},
"nextTask": "M16-GAP-00003",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "a987e77c1e35f70d820fe12430d74d90e72bfb594b65dbbf39f005748c6683f8",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "tests/golden/M15-03A/next-task-plan.json",
"originalSha256": "732d34b5a696077ae6f7f11df768e1e1671379e2face64496f46fcbf352878ed",
"resignedSha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
},
{
"path": "web/package.json",
"originalSha256": "159af906f4e468e3f18cfcd2f599a7e22c9c180cdc8032ba4eac5eaf5ad8cc0e",
"resignedSha256": "9c553a1e0614bcd190149a409759c8fe5d83a0bd00fe49b4bce049ffa01e0f0a"
}
]
}
}

View File

@@ -0,0 +1,97 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00003",
"parentTask": "M16-GAP-00002",
"enablingTask": true,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "BRUSH_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00002/manifest.json",
"sha256": "b8705243e00f62deb82644976838e197d84e72edb8113439efacfd95d4da4188"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00003-datablock-Brush.blend",
"sha256": "f1f6922c4c9c31542a9cefad6932d616ef5dcde0067c0a9668f67902023f4f80"
},
"fixtureGenerator": {
"path": "tools/web/generate-brush-fixture.py",
"sha256": "c4fd4a6c28c595b742b1ef083285ac87f9af56b65d75ba03750925079a0aa637"
},
"desktopChecker": {
"path": "tools/web/check-brush-desktop.py",
"sha256": "515b1eab3b6e2dc0a4e9a65d20764816916228f41082739c98efd6cc882926bf"
},
"webChecker": {
"path": "tools/web/check-generated-gap.mjs",
"sha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00003/brush-desktop-report.json",
"sha256": "ca992c23e2c302ef0b85b91305eabdbf71da6b5bc60c49b71710d145d0787e09"
},
"webReport": {
"path": "tests/golden/M16-GAP-00003/brush-local-exact-report.json",
"sha256": "e48dcad3974b94404d5d9f0c7222b6c45ea5f3b7a467ea2b88691a6ff50e22a6"
},
"nativeReader": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"
},
"protocol": {
"path": "web/protocol/scene-ir.ts",
"sha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
},
"package": {
"path": "web/package.json",
"sha256": "9c553a1e0614bcd190149a409759c8fe5d83a0bd00fe49b4bce049ffa01e0f0a"
}
},
"nextTask": "M16-GAP-00004",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "a987e77c1e35f70d820fe12430d74d90e72bfb594b65dbbf39f005748c6683f8",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"originalSha256": "9c2d9536cba500763ffc425d7f09132dfdb2d9c3c8e5e9dfd7246ee972cca3f9",
"resignedSha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"
},
{
"path": "web/protocol/scene-ir.ts",
"originalSha256": "8ba177250f629d6c2f83f78c376101e536e01388cda7b1672ceec9a15034b3b9",
"resignedSha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "6667cefcccdba3379ad2fd25a50339a2ad94d498d6c9360f1fc2fbd8319597c4",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "tests/golden/M15-03A/next-task-plan.json",
"originalSha256": "732d34b5a696077ae6f7f11df768e1e1671379e2face64496f46fcbf352878ed",
"resignedSha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
},
{
"path": "web/package.json",
"originalSha256": "159af906f4e468e3f18cfcd2f599a7e22c9c180cdc8032ba4eac5eaf5ad8cc0e",
"resignedSha256": "9c553a1e0614bcd190149a409759c8fe5d83a0bd00fe49b4bce049ffa01e0f0a"
}
]
}
}

View File

@@ -0,0 +1,70 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00004",
"parentTask": "M16-GAP-00003",
"enablingTask": true,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "CAMERA_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00003/manifest.json",
"sha256": "789282e4c913c77d8805490a132b26026f8d4a650539c1378f2dba546d4fcba1"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00004-datablock-Camera.blend",
"sha256": "c637587ce3011cbe9b038ab87803a9a2f945d4512b55d616a5dda268628988a0"
},
"fixtureGenerator": {
"path": "tools/web/generate-camera-fixture.py",
"sha256": "23c1bf411ed483f4bf111fb52f63e9ec77610f30819c68ac248075a851a59c97"
},
"desktopChecker": {
"path": "tools/web/check-camera-desktop.py",
"sha256": "27831385e1ed7e464c6b627bcbcb81af01ad2afa7ec66f28d2256641005802b4"
},
"webChecker": {
"path": "tools/web/check-generated-gap.mjs",
"sha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00004/camera-desktop-report.json",
"sha256": "b11254b3e0cdeb5e5c39e350ea1d349f5e2991f8c62a5ad28f744c391beab3b5"
},
"webReport": {
"path": "tests/golden/M16-GAP-00004/camera-local-exact-report.json",
"sha256": "a2b2c321efbcf2ed765f2e8b1019fef7e2cd34af872f78474d18594c6cee5d1c"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
},
"nextTask": "M16-GAP-00005",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "a987e77c1e35f70d820fe12430d74d90e72bfb594b65dbbf39f005748c6683f8",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "6667cefcccdba3379ad2fd25a50339a2ad94d498d6c9360f1fc2fbd8319597c4",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "tests/golden/M15-03A/next-task-plan.json",
"originalSha256": "732d34b5a696077ae6f7f11df768e1e1671379e2face64496f46fcbf352878ed",
"resignedSha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
]
}
}

View File

@@ -0,0 +1,61 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00005",
"parentTask": "M16-GAP-00004",
"enablingTask": true,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "COLLECTION_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00004/manifest.json",
"sha256": "905c8f507a7c2e3c43a6d3c99a873124e1dc0aa1647e09a0b66f7e6a77462add"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00005-datablock-Collection.blend",
"sha256": "c33d2b1b85b0272aa3bf06a012000db5f383a9a73b79bd4b90042110b70a912b"
},
"fixtureGenerator": {
"path": "tools/web/generate-collection-fixture.py",
"sha256": "3f2a02903a1c1d74a3ba707342b6617b39a3857ccf58e30162ab993c7e112544"
},
"desktopChecker": {
"path": "tools/web/check-collection-desktop.py",
"sha256": "fca7970f55b654527226b1b39a88934db35da787772c69ba65075f11e2664f26"
},
"webChecker": {
"path": "tools/web/check-generated-gap.mjs",
"sha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00005/collection-desktop-report.json",
"sha256": "6e6bcf8e5575d46c324d51409d19be6f89e5397b1f094f528b164ea72c607887"
},
"webReport": {
"path": "tests/golden/M16-GAP-00005/collection-local-exact-report.json",
"sha256": "2db40433007886b24f5ceb18dccf7470e0c393163838a11f2feb48bab516d740"
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
},
"nextTask": "M16-GAP-00006",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "a987e77c1e35f70d820fe12430d74d90e72bfb594b65dbbf39f005748c6683f8",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "tests/golden/M15-03A/next-task-plan.json",
"originalSha256": "732d34b5a696077ae6f7f11df768e1e1671379e2face64496f46fcbf352878ed",
"resignedSha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
]
}
}

View File

@@ -0,0 +1,70 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00006",
"parentTask": "M16-GAP-00005",
"enablingTask": true,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "CURVE_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00005/manifest.json",
"sha256": "581d3757a300c6dea5f8a989932f2787915c30ef84de8494a20fd65d2058551a"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00006-datablock-Curve.blend",
"sha256": "49af45a70c7e050277a9b4b643c41aa9f29978b1df5214b5e48dc629b0027a21"
},
"fixtureGenerator": {
"path": "tools/web/generate-curve-fixture.py",
"sha256": "bb93a2ca07e8e8ae81341c46edc7cbceb72ada2023b8fe956ee3b6ad03c7ae11"
},
"desktopChecker": {
"path": "tools/web/check-curve-desktop.py",
"sha256": "e66ba2ae04f6de97e9643e581fa4426650ce4ddcfea0ffc8b3bf9fb14fdd26ee"
},
"webChecker": {
"path": "tools/web/check-generated-gap.mjs",
"sha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00006/curve-desktop-report.json",
"sha256": "85e8eee37daea993653bfa1785f5df19f953c2d013543e8a27743ed74d49d4ff"
},
"webReport": {
"path": "tests/golden/M16-GAP-00006/curve-local-exact-report.json",
"sha256": "048c9fb9116ab2a1b4460c74696340a263cd342ba4886ce56f8b03bef8743e58"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
},
"nextTask": "M16-GAP-00007",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "a987e77c1e35f70d820fe12430d74d90e72bfb594b65dbbf39f005748c6683f8",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "6667cefcccdba3379ad2fd25a50339a2ad94d498d6c9360f1fc2fbd8319597c4",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "tests/golden/M15-03A/next-task-plan.json",
"originalSha256": "732d34b5a696077ae6f7f11df768e1e1671379e2face64496f46fcbf352878ed",
"resignedSha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
]
}
}

View File

@@ -0,0 +1,70 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00007",
"parentTask": "M16-GAP-00006",
"enablingTask": true,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "CURVES_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00006/manifest.json",
"sha256": "d17d368089b84c23ce4cc4016f61cc3bf0ea86ade968045a7a8dc6a3063394f0"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00007-datablock-Curves.blend",
"sha256": "d6489313473ced7f55cc1d43f3fa73181672c0a5db4b6854002f18354ca1d9a6"
},
"fixtureGenerator": {
"path": "tools/web/generate-curves-fixture.py",
"sha256": "792ec1d58d495cd9d425215aa631dd5e1d66f7bd5cf75e783b961760667faacc"
},
"desktopChecker": {
"path": "tools/web/check-curves-desktop.py",
"sha256": "3a8372a8ba072df2f5a3a1b3cccef44d219dde2193b551110017436cbd38e85c"
},
"webChecker": {
"path": "tools/web/check-generated-gap.mjs",
"sha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00007/curves-desktop-report.json",
"sha256": "db15e64bfe202720b463ab742cbed2e6ec80b872456b825078afbba7a2540531"
},
"webReport": {
"path": "tests/golden/M16-GAP-00007/curves-local-exact-report.json",
"sha256": "bf093708e23b8318e1f50b925b5c033d66aa8c1f97303174ad2489a82191705f"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
},
"nextTask": "M16-GAP-00008",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "a987e77c1e35f70d820fe12430d74d90e72bfb594b65dbbf39f005748c6683f8",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "6667cefcccdba3379ad2fd25a50339a2ad94d498d6c9360f1fc2fbd8319597c4",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "tests/golden/M15-03A/next-task-plan.json",
"originalSha256": "732d34b5a696077ae6f7f11df768e1e1671379e2face64496f46fcbf352878ed",
"resignedSha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
]
}
}

View File

@@ -0,0 +1,88 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00008",
"parentTask": "M16-GAP-00007",
"enablingTask": true,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "FREESTYLE_LINE_STYLE_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00007/manifest.json",
"sha256": "0c115415e196995788045b412c37da40af5cac0f2200efc124515d730b63af14"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00008-datablock-FreestyleLineStyle.blend",
"sha256": "94de965ad54018f7072f2b4f4b752dc6f28f6608836040dc353d18d19fe31fd9"
},
"fixtureGenerator": {
"path": "tools/web/generate-freestyle-fixture.py",
"sha256": "e73088d9097c6ee94baaa07d3e8e279a55a0a34ccec2618e629699f840fd1ed1"
},
"desktopChecker": {
"path": "tools/web/check-freestyle-desktop.py",
"sha256": "7621b52c88adbae0bb611b2fd6ea2ccf1a0666341c36d4d03eda8f4c565efdc8"
},
"webChecker": {
"path": "tools/web/check-generated-gap.mjs",
"sha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00008/freestyle-desktop-report.json",
"sha256": "2c42936cd8e4046b752f7e86949927769d1cb8f2086a2c9ba27eebf61a6f4a89"
},
"webReport": {
"path": "tests/golden/M16-GAP-00008/freestyle-local-exact-report.json",
"sha256": "ab75a7fdfa71a4abd4a5e97f7e726440bde7891163c0b256be0815e1cc51a99a"
},
"nativeReader": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"sha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"
},
"protocol": {
"path": "web/protocol/scene-ir.ts",
"sha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
},
"nextTask": "M16-GAP-00009",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "a987e77c1e35f70d820fe12430d74d90e72bfb594b65dbbf39f005748c6683f8",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"originalSha256": "9c2d9536cba500763ffc425d7f09132dfdb2d9c3c8e5e9dfd7246ee972cca3f9",
"resignedSha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"
},
{
"path": "web/protocol/scene-ir.ts",
"originalSha256": "8ba177250f629d6c2f83f78c376101e536e01388cda7b1672ceec9a15034b3b9",
"resignedSha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "6667cefcccdba3379ad2fd25a50339a2ad94d498d6c9360f1fc2fbd8319597c4",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "tests/golden/M15-03A/next-task-plan.json",
"originalSha256": "732d34b5a696077ae6f7f11df768e1e1671379e2face64496f46fcbf352878ed",
"resignedSha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
]
}
}

View File

@@ -0,0 +1,57 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00009",
"parentTask": "M16-GAP-00008",
"enablingTask": true,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "GREASE_PENCIL_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00008/manifest.json",
"sha256": "3b4c0eb24867cef0054cffb31d1e3320379dbf70e13e8920eaa08da6ace06c89"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00009-datablock-GreasePencil.blend",
"sha256": "3a8525077807f9178dac3a5ba84b524e5f8e80874b15c54e2a6658ecb80315a3"
},
"desktopChecker": {
"path": "tools/web/check-grease-pencil-desktop.py",
"sha256": "4d99d5e81fcdc8289e462279f2da278e2aea573f4d947fa5e71e959b506d1ee1"
},
"webChecker": {
"path": "tools/web/check-generated-gap.mjs",
"sha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00009/grease-pencil-desktop-report.json",
"sha256": "6a1145d7447a08f51d751dca797e67f2be7eb12cba052a726c4c2f8ee28b585e"
},
"webReport": {
"path": "tests/golden/M16-GAP-00009/grease-pencil-local-exact-report.json",
"sha256": "94aaf84cc072ef13998517d610740d81d94c14593ba776ea7f4b88c673a0a71f"
},
"plan": {
"path": "tests/golden/M15-03A/next-task-plan.json",
"sha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
},
"nextTask": "M16-GAP-00010",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "a987e77c1e35f70d820fe12430d74d90e72bfb594b65dbbf39f005748c6683f8",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "tests/golden/M15-03A/next-task-plan.json",
"originalSha256": "732d34b5a696077ae6f7f11df768e1e1671379e2face64496f46fcbf352878ed",
"resignedSha256": "2235d0d250d28e63ab1c9b0e956292560785cf340c612312b316be0ceb2463a9"
}
]
}
}

View File

@@ -0,0 +1,88 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00010",
"parentTask": "M16-GAP-00009",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "LATTICE_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00009/manifest.json",
"sha256": "c242975eccdcb4c516dfae17763f9a15b9db29b856bd9f845e9eceb429e8ce69"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00010-datablock-Lattice.blend",
"sha256": "ec40e2661e20c8f7e3b18d9b42f9e585175be8c2f210a1c8c190e76a6e9fbc63"
},
"generator": {
"path": "tools/web/generated/M16-GAP-00010.py",
"sha256": "35303113c57f1cc6c6b7bd1afc269be0c824b71f0c7bfbb0fd33f35fea40a8c2"
},
"desktopChecker": {
"path": "tools/web/check-lattice-desktop.py",
"sha256": "56f48405407b4baba4ee9a13038fddc951c6fe607a3d64d6894a00e61d30be9b"
},
"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"
},
"protocol": {
"path": "web/protocol/scene-ir.ts",
"sha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"wasmJs": {
"path": "web/app/src/vendor/blender/web_engine.js",
"sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00010/lattice-desktop-report.json",
"sha256": "bb8effdcf18a89794914d88311a598b3285e64f18c402c9cff477ae5700ba089"
},
"webReport": {
"path": "tests/golden/M16-GAP-00010/lattice-local-exact-report.json",
"sha256": "489c9d25a6e4164860f5528944eca0e173f8a7e4130e89404b6fa09da9b469a0"
}
},
"nextTask": "M16-GAP-00011",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "8d93d0d65a0c3e0268dfb1ce9cdd27bdf7aab33f2234d6433b6749aa81403ad3",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"originalSha256": "3c2c69a66d60692049956530c2570db377e5d10838d0048aa4e0f3fb210f9c62",
"resignedSha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"
},
{
"path": "web/protocol/scene-ir.ts",
"originalSha256": "7d96e706de6b42f4372d937708600be150190ae593e214066a06d030bcac8b73",
"resignedSha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "4a33528e8bd4d50956e741cba93ab0215350943c59f56b7c82e18df19f4ee450",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "web/app/src/vendor/blender/web_engine.js",
"originalSha256": "9c831d0351ac9d0714cce3b1da748cba416ced3086e3c59595cf24ac4da459ed",
"resignedSha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
}
]
}
}

View File

@@ -0,0 +1,92 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00011",
"parentTask": "M16-GAP-00010",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "LIBRARY_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00010/manifest.json",
"sha256": "cb3be7f0917ca95d831ffabaa11470eb528ce3fe5eda1ba1e3f7925ea2288737"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00011-datablock-Library.blend",
"sha256": "d6b00d6cdc0c1c73158ba91433d8344f4b6b0a2f1d5c81e57cc4e0b42d23c34a"
},
"librarySource": {
"path": "tests/files/web/generated/WebGapLibrary.blend",
"sha256": "1fe24e423713bc18dc936e723e97f7c306db4aa62cc24736055eb2d341375088"
},
"generator": {
"path": "tools/web/generated/M16-GAP-00011.py",
"sha256": "f33b9d5482193439fedd34f138b192d2e086db01205560276fa43bfd08ed430a"
},
"desktopChecker": {
"path": "tools/web/check-library-desktop.py",
"sha256": "34eda5a724ca7eab9fcb2e4f39cec46125e363f548fc77beb3f09133151fdeb4"
},
"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"
},
"protocol": {
"path": "web/protocol/scene-ir.ts",
"sha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"wasmJs": {
"path": "web/app/src/vendor/blender/web_engine.js",
"sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00011/library-desktop-report.json",
"sha256": "0bc9032490f2450e99d30fd67fe95b164f8d359ca042d0e0b772ee1a28e39dbd"
},
"webReport": {
"path": "tests/golden/M16-GAP-00011/library-local-exact-report.json",
"sha256": "82c3a7ebb204da9dd8f817f0378374be062993892a4405d01f81c960677f45bf"
}
},
"nextTask": "M16-GAP-00012",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "0e13f61a7f34ddc10388f8e6ee5215fe941714e2bbf759a795efbcdd0fbc3aa0",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"originalSha256": "3c2c69a66d60692049956530c2570db377e5d10838d0048aa4e0f3fb210f9c62",
"resignedSha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"
},
{
"path": "web/protocol/scene-ir.ts",
"originalSha256": "7d96e706de6b42f4372d937708600be150190ae593e214066a06d030bcac8b73",
"resignedSha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "4a33528e8bd4d50956e741cba93ab0215350943c59f56b7c82e18df19f4ee450",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "web/app/src/vendor/blender/web_engine.js",
"originalSha256": "9c831d0351ac9d0714cce3b1da748cba416ced3086e3c59595cf24ac4da459ed",
"resignedSha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
}
]
}
}

View File

@@ -0,0 +1,88 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00012",
"parentTask": "M16-GAP-00011",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "LIGHT_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00011/manifest.json",
"sha256": "a29ac9278d37d187f5e421f365a71fb3d18a8aeb74cfe4ae733f8510a43446de"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00012-datablock-Light.blend",
"sha256": "b92565305572d48cc2311b749d50024f1df68c4084ae8bc52ce2ba2c3832a3fa"
},
"generator": {
"path": "tools/web/generated/M16-GAP-00012.py",
"sha256": "9b261d7d516e0514e6e96a876661d0ab8eb83b844e92cd72dc4ffda460da0b2b"
},
"desktopChecker": {
"path": "tools/web/check-light-desktop.py",
"sha256": "90025507cc88c1c2be028e52a0b6e0b80561915bf109f38c64b95191c716505c"
},
"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"
},
"protocol": {
"path": "web/protocol/scene-ir.ts",
"sha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"wasmJs": {
"path": "web/app/src/vendor/blender/web_engine.js",
"sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00012/light-desktop-report.json",
"sha256": "92bd381ec7b8242de6379d9e266ebbb63bd34c2d28e852d2ac7610eb7e67b8d3"
},
"webReport": {
"path": "tests/golden/M16-GAP-00012/light-local-exact-report.json",
"sha256": "103958f99cc13fccef7acb4128f3707e48580c8ad86813821a2ce40986c5a964"
}
},
"nextTask": "M16-GAP-00013",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "cf0cc4ebefcd319d6351d70864efd20c66e415dd0adb1637224e1390d1d38e70",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"originalSha256": "3c2c69a66d60692049956530c2570db377e5d10838d0048aa4e0f3fb210f9c62",
"resignedSha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"
},
{
"path": "web/protocol/scene-ir.ts",
"originalSha256": "7d96e706de6b42f4372d937708600be150190ae593e214066a06d030bcac8b73",
"resignedSha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "4a33528e8bd4d50956e741cba93ab0215350943c59f56b7c82e18df19f4ee450",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "web/app/src/vendor/blender/web_engine.js",
"originalSha256": "9c831d0351ac9d0714cce3b1da748cba416ced3086e3c59595cf24ac4da459ed",
"resignedSha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
}
]
}
}

View File

@@ -0,0 +1,88 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00013",
"parentTask": "M16-GAP-00012",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "MATERIAL_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00012/manifest.json",
"sha256": "c71a0d9e23d13bf51a190c99f16e4e7e98da1f12cba50f2404bef8fcb6e94d4c"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00013-datablock-Material.blend",
"sha256": "e17880024b28e0fbc8fac5b815a2c673fe11d5000cb1d23a794cdc3d83658d76"
},
"generator": {
"path": "tools/web/generated/M16-GAP-00013.py",
"sha256": "bb04dd1da461e061c27be9d4e160b2787026855198661e72ff4fee802b72c817"
},
"desktopChecker": {
"path": "tools/web/check-material-desktop.py",
"sha256": "42a870bb79eceb8e1789686db689842dfe390d58db2744fded8dd571fe9cd8f5"
},
"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"
},
"protocol": {
"path": "web/protocol/scene-ir.ts",
"sha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"wasmJs": {
"path": "web/app/src/vendor/blender/web_engine.js",
"sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00013/material-desktop-report.json",
"sha256": "7adfdd70f9b116268301e0bb6cf7e0b88cf8eb2ab20d25c944586df3a9cc000c"
},
"webReport": {
"path": "tests/golden/M16-GAP-00013/material-local-exact-report.json",
"sha256": "229f3fc85518da4539e311e6ca70fd6b156cdcc9ae4c4b901e0de5c895b3d333"
}
},
"nextTask": "M16-GAP-00014",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "e0e510273337e56435cf44adef246ff5bf12d6857691376ac2aacf6a4fc79ed8",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"originalSha256": "3c2c69a66d60692049956530c2570db377e5d10838d0048aa4e0f3fb210f9c62",
"resignedSha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"
},
{
"path": "web/protocol/scene-ir.ts",
"originalSha256": "7d96e706de6b42f4372d937708600be150190ae593e214066a06d030bcac8b73",
"resignedSha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "4a33528e8bd4d50956e741cba93ab0215350943c59f56b7c82e18df19f4ee450",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "web/app/src/vendor/blender/web_engine.js",
"originalSha256": "9c831d0351ac9d0714cce3b1da748cba416ced3086e3c59595cf24ac4da459ed",
"resignedSha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
}
]
}
}

View File

@@ -0,0 +1,88 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00014",
"parentTask": "M16-GAP-00013",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "MESH_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00013/manifest.json",
"sha256": "47663ad9012f36f2947f3ac8dc0d628f8f5bc338809686692e92dd59ca46c591"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00014-datablock-Mesh.blend",
"sha256": "1676a26f95de4eb90e55ea169a497c382ca68f195c6b883de49b6a3223d84bb5"
},
"generator": {
"path": "tools/web/generated/M16-GAP-00014.py",
"sha256": "c1333fbd1f86bac31f1db1f09056d2152f3b537fe59353f3d6f50767e8d724db"
},
"desktopChecker": {
"path": "tools/web/check-mesh-desktop.py",
"sha256": "8fe5859138f84079ddb43030fc8d22b596044b08d4f863da5dd25acaeedafdd5"
},
"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"
},
"protocol": {
"path": "web/protocol/scene-ir.ts",
"sha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"wasmJs": {
"path": "web/app/src/vendor/blender/web_engine.js",
"sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00014/mesh-desktop-report.json",
"sha256": "e26f0333707fa915b7261f305af413340f9edb26d050a82fb3c6afac12ee2169"
},
"webReport": {
"path": "tests/golden/M16-GAP-00014/mesh-local-exact-report.json",
"sha256": "36066f715b9993f0e789e12a0d29f9c0c9e79e0b5ff5914268e839fa648cb28a"
}
},
"nextTask": "M16-GAP-00015",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "82796fdee398c4d97d1506610b8d4b838eeb0ea6b33218ed8c749cf06d747289",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"originalSha256": "3c2c69a66d60692049956530c2570db377e5d10838d0048aa4e0f3fb210f9c62",
"resignedSha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"
},
{
"path": "web/protocol/scene-ir.ts",
"originalSha256": "7d96e706de6b42f4372d937708600be150190ae593e214066a06d030bcac8b73",
"resignedSha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "4a33528e8bd4d50956e741cba93ab0215350943c59f56b7c82e18df19f4ee450",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "web/app/src/vendor/blender/web_engine.js",
"originalSha256": "9c831d0351ac9d0714cce3b1da748cba416ced3086e3c59595cf24ac4da459ed",
"resignedSha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
}
]
}
}

View File

@@ -0,0 +1,88 @@
{
"schemaVersion": 1,
"task": "M16-GAP-00015",
"parentTask": "M16-GAP-00014",
"enablingTask": false,
"parityStateChange": true,
"runtime": "BLENDER_5_2_LOCAL_EXACT",
"operation": "METABALL_DATABLOCK_LOCAL_EXACT",
"status": "done",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M16-GAP-00014/manifest.json",
"sha256": "97e0da40860f7095157068fd4545d7cd9c25ba94a68d56ab87e32b6fd032b655"
},
"fixture": {
"path": "tests/files/web/generated/M16-GAP-00015-datablock-MetaBall.blend",
"sha256": "b4901e5c71f10b79a2061bf7599b43ff1b20b7df59f227aa78c1e66a38080b4f"
},
"generator": {
"path": "tools/web/generated/M16-GAP-00015.py",
"sha256": "db1da7ca090d37b6590eab38f49cbcac9972e7ade1966d78f316048c6b0acf54"
},
"desktopChecker": {
"path": "tools/web/check-metaball-desktop.py",
"sha256": "77a03db581b17eda4219b42ffbf18e5d1809dfb3bf45f3ac0c0051f27934dc0c"
},
"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"
},
"protocol": {
"path": "web/protocol/scene-ir.ts",
"sha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
"wasm": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
"wasmJs": {
"path": "web/app/src/vendor/blender/web_engine.js",
"sha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
},
"desktopReport": {
"path": "tests/golden/M16-GAP-00015/metaball-desktop-report.json",
"sha256": "5b2b7d79397675792bf54b568646a1714f75fab355049e7227f634403345c74c"
},
"webReport": {
"path": "tests/golden/M16-GAP-00015/metaball-local-exact-report.json",
"sha256": "7253a7de7d2aad035ef38cceee33c0bd04ca743f181f28ac740e09799684a636"
}
},
"nextTask": "M16-GAP-00016",
"reconciliation": {
"mode": "CURRENT_WORKTREE_RESIGN",
"authorized": true,
"artifactDrift": [
{
"path": "tools/web/check-generated-gap.mjs",
"originalSha256": "ead5bd538ba919fa51ec303d1d1af5ae0f648b1453c02d20383824dcfd9da12f",
"resignedSha256": "60427df6b18192a5cf1fa892204330e14b43857f8367a33db0be5db4dcc34c1c"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"originalSha256": "3c2c69a66d60692049956530c2570db377e5d10838d0048aa4e0f3fb210f9c62",
"resignedSha256": "9c0af422cc14634979497e2c8585e945a8402ab9f30b182d882da46786a1a711"
},
{
"path": "web/protocol/scene-ir.ts",
"originalSha256": "7d96e706de6b42f4372d937708600be150190ae593e214066a06d030bcac8b73",
"resignedSha256": "9e877612886c629786405e03e1939d3954af2d38dfea2d6359b367934d06f226"
},
{
"path": "web/app/src/vendor/blender/web_engine.wasm",
"originalSha256": "4a33528e8bd4d50956e741cba93ab0215350943c59f56b7c82e18df19f4ee450",
"resignedSha256": "aa26c3b422e79ff84557245dc8d5870125f237aa365ac7ebdc727c2d0b83f615"
},
{
"path": "web/app/src/vendor/blender/web_engine.js",
"originalSha256": "9c831d0351ac9d0714cce3b1da748cba416ced3086e3c59595cf24ac4da459ed",
"resignedSha256": "2263ccecdf7193aeb8508119accfe01c65fa991124969e0e7ede7b3af3057b35"
}
]
}
}

Some files were not shown because too many files have changed in this diff Show More