Files
workinf_Blender_Wasm/tests/golden/WBV2-P1256-000/module-execution-plan.json
mes123456 80b3656bed
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
chore(web): continuous handoff WBV2-P1256-001
2026-09-04 09:17:56 +08:00

25899 lines
1.0 MiB

{
"schemaVersion": 1,
"planId": "BLENDER_WEB_MODULE_EXECUTION_P1256",
"operation": "FUNCTION_MODULE_MIGRATION_PLAN",
"status": "COMPLETED_MODULE_EXECUTION",
"authority": "blender_main_source_and_existing_hash_bound_receipts",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"inventory": {
"path": "tests/golden/WBV2-P0-002/parity-map.json",
"sha256": "a60a77cae000941a953d55adbf93d8f6e275533891713d6eae993f60faed94e8",
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"mutation": "forbidden_by_module_execution"
},
"reusePolicy": {
"completedReceipts": "reuse_without_rerun",
"continuationEvidence": "excluded",
"duplicateValidation": "forbidden",
"fullFamilyParity": "never_inferred"
},
"verificationPolicy": {
"browser": "chromium_only",
"required": [
"sourceHash",
"wasmBuild",
"positiveMainMutation",
"negativeNoMutation",
"undoRedo",
"saveReopen",
"aggregateManifest"
],
"failure": "keep_module_in_progress_and_do_not_advance"
},
"modules": [
{
"id": "RENDER_LIGHT_CAMERA",
"task": "WBV2-P1100-001",
"owner": "RENDER",
"sourceBacked": true,
"capabilities": [
"CAP-RENDER-LIGHT-TYPE",
"CAP-RENDER-LIGHT-AREA-SHAPE",
"CAP-RENDER-LIGHT-CONTRIBUTION-FACTORS",
"CAP-RENDER-LIGHT-SHADOW-CONTROLS",
"CAP-RENDER-LIGHT-CASCADE-CONTROLS",
"CAP-RENDER-LIGHT-AREA-SIZE-Z",
"CAP-RENDER-LIGHT-CLIP-START",
"CAP-RENDER-WORLD-LIGHTING-CONTROLS",
"CAP-RENDER-WORLD-PROBE-CONTROLS",
"CAP-RENDER-WORLD-ENVIRONMENT-STRENGTH",
"CAP-RENDER-CAMERA-DOF-FOCUS-OBJECT",
"CAP-RENDER-CAMERA-PANORAMA"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P595-002/manifest.json",
"report": "tests/golden/WBV2-P595-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P596-002/manifest.json",
"report": "tests/golden/WBV2-P596-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P597-002/manifest.json",
"report": "tests/golden/WBV2-P597-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P598-002/manifest.json",
"report": "tests/golden/WBV2-P598-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P599-002/manifest.json",
"report": "tests/golden/WBV2-P599-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P600-002/manifest.json",
"report": "tests/golden/WBV2-P600-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P601-002/manifest.json",
"report": "tests/golden/WBV2-P601-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P602-002/manifest.json",
"report": "tests/golden/WBV2-P602-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P603-002/manifest.json",
"report": "tests/golden/WBV2-P603-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P604-002/manifest.json",
"report": "tests/golden/WBV2-P604-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P605-002/manifest.json",
"report": "tests/golden/WBV2-P605-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P606-002/manifest.json",
"report": "tests/golden/WBV2-P606-002/implementation-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "SCENE_OBJECT_MESH",
"task": "WBV2-P1100-002",
"owner": "SCENE_MESH",
"sourceBacked": true,
"capabilities": [
"CAP-MESH-TOPOLOGY-FAMILY",
"CAP-CORE-SCENE-OBJECT",
"CAP-OBJECT-MOVE-COLLECTION"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P11-001/manifest.json",
"report": "tests/golden/WBV2-P11-001/mesh-topology-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P12-002/manifest.json",
"report": "tests/golden/WBV2-P12-002/scene-object-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P24-002/manifest.json",
"report": "tests/golden/WBV2-P24-002/object-move-receipt-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "MATERIAL_ANIMATION",
"task": "WBV2-P1100-003",
"owner": "MATERIAL_ANIMATION",
"sourceBacked": true,
"capabilities": [
"CAP-MATERIAL-ANIMATION"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P12-003/manifest.json",
"report": "tests/golden/WBV2-P12-003/material-animation-receipt-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "NONMESH_GEOMETRY",
"task": "WBV2-P1101-000",
"owner": "GEOMETRY",
"sourceBacked": true,
"capabilities": [
"CAP-VIEWPORT-NONMESH",
"CAP-NATIVE-DATABLOCK"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P12-004/manifest.json",
"report": "tests/golden/WBV2-P12-004/viewport-nonmesh-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P29-003/manifest.json",
"report": "tests/golden/WBV2-P29-003/implementation-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "NODES_SIMULATION",
"task": "WBV2-P1101-001",
"owner": "NODES_SIMULATION",
"sourceBacked": true,
"capabilities": [
"CAP-GEOMETRY-NODES",
"CAP-SIMULATION"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P13-002/manifest.json",
"report": "tests/golden/WBV2-P13-002/geometry-nodes-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P13-004/manifest.json",
"report": "tests/golden/WBV2-P13-004/advanced-domain-receipt-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "ASSET_IO",
"task": "WBV2-P1101-002",
"owner": "ASSET",
"sourceBacked": true,
"capabilities": [
"CAP-ASSET-LINK-OVERRIDE-RELOAD",
"CAP-ASSET-CATALOG-MUTATION"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P11-003/manifest.json",
"report": "tests/golden/WBV2-P11-003/asset-link-override-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P10-003/manifest.json",
"report": "tests/golden/WBV2-P10-003/module-matrix-receipt-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "SCULPT_PAINT",
"task": "WBV2-P1101-003",
"owner": "SCULPT_PAINT",
"sourceBacked": true,
"capabilities": [
"CAP-PAINT-ATTRIBUTES",
"CAP-SCULPT-PAINT"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P16-002/manifest.json",
"report": "tests/golden/WBV2-P16-002/paint-attributes-receipt-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "UI_EDITOR",
"task": "WBV2-P1102-000",
"owner": "EDITOR",
"sourceBacked": true,
"capabilities": [
"CAP-UI-EDITOR"
],
"reusedReceipts": [],
"fullFamilyParity": false
},
{
"id": "INVENTORY_GATE",
"task": "WBV2-P1102-001",
"owner": "RELEASE",
"sourceBacked": true,
"capabilities": [],
"reusedReceipts": [],
"fullFamilyParity": false
},
{
"id": "OBJECT_OPERATIONS",
"task": "WBV2-P1103-000",
"owner": "OBJECT",
"sourceBacked": true,
"capabilities": [
"CAP-OBJECT-DUPLICATE",
"CAP-OBJECT-CREATE",
"CAP-OBJECT-PARENT",
"CAP-OBJECT-COLLECTION",
"CAP-OBJECT-RENAME",
"CAP-OBJECT-DELETE",
"CAP-OBJECT-TRANSFORM"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P17-002/manifest.json",
"report": "tests/golden/WBV2-P17-002/object-duplicate-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P18-002/manifest.json",
"report": "tests/golden/WBV2-P18-002/object-create-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P19-002/manifest.json",
"report": "tests/golden/WBV2-P19-002/object-parent-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P20-002/manifest.json",
"report": "tests/golden/WBV2-P20-002/collection-create-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P21-002/manifest.json",
"report": "tests/golden/WBV2-P21-002/object-rename-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P22-002/manifest.json",
"report": "tests/golden/WBV2-P22-002/object-delete-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P23-002/manifest.json",
"report": "tests/golden/WBV2-P23-002/object-transform-receipt-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "COMPOSITOR_SEQUENCER",
"task": "WBV2-P1104-000",
"owner": "MEDIA",
"sourceBacked": true,
"capabilities": [
"CAP-COMPOSITOR-NODE-GRAPH",
"CAP-COMPOSITOR-UNSUPPORTED-GATE",
"CAP-SEQUENCER-MEDIA-RECOVERY"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P29-003/manifest.json",
"report": "tests/golden/WBV2-P29-003/implementation-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUDIO_PARTICLE",
"task": "WBV2-P1105-000",
"owner": "AUDIO_PARTICLE",
"sourceBacked": true,
"capabilities": [
"CAP-SOUND-PROPERTIES",
"CAP-SPEAKER-PROPERTIES",
"CAP-PARTICLE-SETTINGS"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P33-001/manifest.json",
"report": "tests/golden/WBV2-P33-001/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P33-002/manifest.json",
"report": "tests/golden/WBV2-P33-002/implementation-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "RIG_ANIMATION",
"task": "WBV2-P1106-000",
"owner": "RIG",
"sourceBacked": true,
"capabilities": [
"CAP-RIG-POSE",
"CAP-CONSTRAINTS",
"CAP-NLA-ANIMATION"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P13-003/manifest.json",
"report": "tests/golden/WBV2-P13-003/rig-pose-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P13-004/manifest.json",
"report": "tests/golden/WBV2-P13-004/advanced-domain-receipt-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "CORE_SCENE_GRAPH_SETTINGS",
"task": "WBV2-P1129-001",
"owner": "CORE_SCENE",
"sourceBacked": true,
"capabilities": [
"CAP-SCENE-COMPOSITOR-SETTINGS",
"CAP-SCENE-PERFORMANCE-SETTINGS",
"CAP-SCENE-SAMPLING-SETTINGS"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P65-002/manifest.json",
"report": "tests/golden/WBV2-P65-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P66-002/manifest.json",
"report": "tests/golden/WBV2-P66-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P67-002/manifest.json",
"report": "tests/golden/WBV2-P67-002/implementation-report.json"
}
],
"fullFamilyParity": false
},
{
"id": "UI_EDITOR_VIEW2D_STATE",
"task": "WBV2-P1130-001",
"owner": "EDITOR",
"sourceBacked": true,
"capabilities": [
"CAP-EDITOR-VIEW2D-CUR",
"CAP-EDITOR-VIEW2D-MASK",
"CAP-EDITOR-VIEW2D-FAIL-CLOSED"
],
"reusedReceipts": [],
"fullFamilyParity": false
},
{
"id": "CURVE_TOPOLOGY_EDITOR",
"task": "WBV2-P1131-001",
"owner": "EDITOR",
"sourceBacked": true,
"capabilities": [
"CAP-CURVE-TOPOLOGY-TOGGLE-CYCLIC",
"CAP-CURVE-TOPOLOGY-GATE",
"CAP-CURVE-TOPOLOGY-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/M9-05/manifest.json",
"report": "tests/golden/M9-05/curve-toggle-cyclic.json"
}
],
"fullFamilyParity": false
},
{
"id": "CURVE_HANDLE_GIZMO",
"task": "WBV2-P1132-001",
"owner": "EDITOR",
"sourceBacked": true,
"capabilities": [
"CAP-CURVE-HANDLE-MAIN",
"CAP-CURVE-HANDLE-GIZMO-PREVIEW",
"CAP-CURVE-HANDLE-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "CURVE_SPLINES_TRANSACTION",
"task": "WBV2-P1133-001",
"owner": "EDITOR",
"sourceBacked": true,
"capabilities": [
"CAP-CURVE-SPLINES-MAIN",
"CAP-CURVE-SPLINES-RECOVERY",
"CAP-CURVE-SPLINES-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "SURFACE_TOPOLOGY_TRANSACTION",
"task": "WBV2-P1134-001",
"owner": "GEOMETRY",
"sourceBacked": true,
"capabilities": [
"CAP-SURFACE-TOPOLOGY-MAIN",
"CAP-SURFACE-NURBS-BOUNDS",
"CAP-SURFACE-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "FONT_BODY_TRANSACTION",
"task": "WBV2-P1135-001",
"owner": "GEOMETRY",
"sourceBacked": true,
"capabilities": [
"CAP-FONT-BODY-MAIN",
"CAP-FONT-BODY-RECOVERY",
"CAP-FONT-BODY-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "FONT_PROPERTIES_TRANSACTION",
"task": "WBV2-P1136-001",
"owner": "GEOMETRY",
"sourceBacked": true,
"capabilities": [
"CAP-FONT-PROPERTIES-MAIN",
"CAP-FONT-PROPERTIES-RECOVERY",
"CAP-FONT-PROPERTIES-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "METABALL_ELEMENTS_TRANSACTION",
"task": "WBV2-P1137-001",
"owner": "GEOMETRY",
"sourceBacked": true,
"capabilities": [
"CAP-METABALL-ELEMENTS-MAIN",
"CAP-METABALL-ELEMENTS-RECOVERY",
"CAP-METABALL-ELEMENTS-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "TEXT_SOURCE_TRANSACTION",
"task": "WBV2-P1138-001",
"owner": "SCRIPTING",
"sourceBacked": true,
"capabilities": [
"CAP-TEXT-SOURCE-MAIN",
"CAP-TEXT-SOURCE-RECOVERY",
"CAP-TEXT-SOURCE-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1137-001/manifest.json",
"report": "tests/golden/WBV2-P1137-001/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "TEXTURE_PROPERTIES_TRANSACTION",
"task": "WBV2-P1139-001",
"owner": "TEXTURE",
"sourceBacked": true,
"capabilities": [
"CAP-TEXTURE-PROPERTIES-MAIN",
"CAP-TEXTURE-PROPERTIES-RECOVERY",
"CAP-TEXTURE-PROPERTIES-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1138-001/manifest.json",
"report": "tests/golden/WBV2-P1138-001/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "ACTION_GROUP_READER",
"task": "WBV2-P1140-001",
"owner": "ANIMATION",
"sourceBacked": true,
"capabilities": [
"CAP-ACTION-GROUP-READER",
"CAP-ACTION-GROUP-RECOVERY",
"CAP-ACTION-GROUP-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1112-000/manifest.json",
"report": "tests/golden/WBV2-P1112-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "ACTION_POSE_MARKERS_READER",
"task": "WBV2-P1141-001",
"owner": "ANIMATION",
"sourceBacked": true,
"capabilities": [
"CAP-ACTION-POSE-MARKERS-READER",
"CAP-ACTION-POSE-MARKERS-RECOVERY",
"CAP-ACTION-POSE-MARKERS-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1140-001/manifest.json",
"report": "tests/golden/WBV2-P1140-001/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "FCURVE_SAMPLE_READER",
"task": "WBV2-P1142-001",
"owner": "ANIMATION",
"sourceBacked": true,
"capabilities": [
"CAP-FCURVE-SAMPLE-READER",
"CAP-FCURVE-SAMPLE-RECOVERY",
"CAP-FCURVE-SAMPLE-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1141-001/manifest.json",
"report": "tests/golden/WBV2-P1141-001/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "FCURVE_MODIFIER_READER",
"task": "WBV2-P1143-001",
"owner": "ANIMATION",
"sourceBacked": true,
"capabilities": [
"CAP-FCURVE-MODIFIER-READER",
"CAP-FCURVE-MODIFIER-RECOVERY",
"CAP-FCURVE-MODIFIER-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1142-001/manifest.json",
"report": "tests/golden/WBV2-P1142-001/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "DRIVER_READER",
"task": "WBV2-P1144-001",
"owner": "ANIMATION",
"sourceBacked": true,
"capabilities": [
"CAP-DRIVER-READER",
"CAP-DRIVER-RECOVERY",
"CAP-DRIVER-FAIL-CLOSED"
],
"reusedReceipts": [
{
"manifest": "tests/golden/WBV2-P1143-001/manifest.json",
"report": "tests/golden/WBV2-P1143-001/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "CORRECTIVE_SMOOTH_READER",
"task": "WBV2-P1145-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-CORRECTIVE-SMOOTH-READER",
"CAP-CORRECTIVE-SMOOTH-RECOVERY",
"CAP-CORRECTIVE-SMOOTH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_correctivesmooth.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts",
"tests/files/web/modifier_corrective_smooth_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_READER_BATCH",
"task": "WBV2-P1146-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH-READER",
"CAP-MODIFIER_READER_BATCH-RECOVERY",
"CAP-MODIFIER_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_datatransfer.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_dynamicpaint.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_explode.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_fluid.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fluid.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-production.spec.ts",
"tests/files/web/modifier_reader_batch_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_READER_BATCH_TWO",
"task": "WBV2-P1147-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH_TWO-READER",
"CAP-MODIFIER_READER_BATCH_TWO-RECOVERY",
"CAP-MODIFIER_READER_BATCH_TWO-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_laplaciandeform.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_laplaciansmooth.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_mask.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_shrinkwrap.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts",
"tests/files/web/modifier_reader_batch_two_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_READER_BATCH_THREE",
"task": "WBV2-P1148-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH_THREE-READER",
"CAP-MODIFIER_READER_BATCH_THREE-RECOVERY",
"CAP-MODIFIER_READER_BATCH_THREE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_remesh.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_skin.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weighted_normal.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_warp.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts",
"tests/files/web/modifier_reader_batch_three_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_READER_BATCH_FOUR",
"task": "WBV2-P1149-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH_FOUR-READER",
"CAP-MODIFIER_READER_BATCH_FOUR-RECOVERY",
"CAP-MODIFIER_READER_BATCH_FOUR-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_uvproject.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_uvwarp.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_normal_edit.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_volume_to_mesh.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts",
"tests/files/web/modifier_reader_batch_four_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_READER_BATCH_FIVE",
"task": "WBV2-P1150-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH_FIVE-READER",
"CAP-MODIFIER_READER_BATCH_FIVE-RECOVERY",
"CAP-MODIFIER_READER_BATCH_FIVE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshsequencecache.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_multires.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_ocean.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts",
"tests/files/web/modifier_reader_batch_five_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "GREASE_PENCIL_MODIFIER_READER_BATCH",
"task": "WBV2-P1151-001",
"owner": "DRAWING",
"sourceBacked": true,
"capabilities": [
"CAP-GREASE_PENCIL_MODIFIER_READER_BATCH-READER",
"CAP-GREASE_PENCIL_MODIFIER_READER_BATCH-RECOVERY",
"CAP-GREASE_PENCIL_MODIFIER_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_armature.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_array.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_build.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_color.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_dash.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_envelope.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_hook.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_lattice.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_length.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_mirror.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_multiply.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_noise.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_offset.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_opacity.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_outline.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_shrinkwrap.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_simplify.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_smooth.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_subdiv.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_texture.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_thickness.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_time.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_tint.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_weight_angle.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_weight_proximity.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts",
"tests/files/web/modifier_grease_pencil_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_READER_BATCH_SIX",
"task": "WBV2-P1152-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH_SIX-READER",
"CAP-MODIFIER_READER_BATCH_SIX-RECOVERY",
"CAP-MODIFIER_READER_BATCH_SIX-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_mesh_to_volume.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_particleinstance.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_surface.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgmix.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgproximity.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts",
"tests/files/web/generated/M16-GAP-00081-modifier-MESH_TO_VOLUME.blend",
"tests/files/web/generated/M16-GAP-00087-modifier-PARTICLE_INSTANCE.blend",
"tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend",
"tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend",
"tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend",
"tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_SOURCE_DEPENDENCY_REUSE",
"task": "WBV2-P1153-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_SOURCE_DEPENDENCY_REUSE-READER",
"CAP-MODIFIER_SOURCE_DEPENDENCY_REUSE-RECOVERY",
"CAP-MODIFIER_SOURCE_DEPENDENCY_REUSE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_util.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache_mdd.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache_pc2.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache_util.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvg_util.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_array.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc",
"tests/golden/WBV2-P1151-001/modifier-reader-batch-production.json",
"tests/golden/WBV2-P1150-001/modifier-reader-batch-production.json",
"tests/golden/WBV2-P1150-001/modifier-reader-batch-production.json",
"tests/golden/WBV2-P1150-001/modifier-reader-batch-production.json",
"tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"tools/web/reuse-wbv2-source-dependencies.mjs"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1150-001/manifest.json",
"report": "tests/golden/WBV2-P1150-001/module-receipt.json"
},
{
"manifest": "tests/golden/WBV2-P1151-001/manifest.json",
"report": "tests/golden/WBV2-P1151-001/module-receipt.json"
},
{
"manifest": "tests/golden/WBV2-P1152-001/manifest.json",
"report": "tests/golden/WBV2-P1152-001/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_SOLIDIFY_DEPENDENCY_REUSE",
"task": "WBV2-P1154-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_SOLIDIFY_DEPENDENCY_REUSE-READER",
"CAP-MODIFIER_SOLIDIFY_DEPENDENCY_REUSE-RECOVERY",
"CAP-MODIFIER_SOLIDIFY_DEPENDENCY_REUSE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_solidify_extrude.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_solidify_nonmanifold.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_solidify.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_solidify.cc",
"tests/golden/WBV2-P1107-000/modifier-source-roundtrip-production.json",
"tests/golden/WBV2-P1107-000/modifier-source-roundtrip-production.json",
"tools/web/reuse-wbv2-source-dependencies.mjs"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/modifier-source-roundtrip-production.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_RNA_READER_BATCH",
"task": "WBV2-P1155-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_RNA_READER_BATCH-READER",
"CAP-MODIFIER_RNA_READER_BATCH-RECOVERY",
"CAP-MODIFIER_RNA_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts",
"tests/files/web/modifier_grease_pencil_scene.blend",
"tests/files/web/generated/M16-GAP-00088-modifier-PARTICLE_SYSTEM.blend",
"tests/files/web/generated/M16-GAP-00041-modifier-DECIMATE.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_VOLUME_DISPLACE_BATCH",
"task": "WBV2-P1156-001",
"owner": "MODIFIER",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_VOLUME_DISPLACE_BATCH-READER",
"CAP-MODIFIER_VOLUME_DISPLACE_BATCH-RECOVERY",
"CAP-MODIFIER_VOLUME_DISPLACE_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_volume_displace.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts",
"tests/files/web/generated/M16-GAP-00106-modifier-VOLUME_DISPLACE.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "SHAPE_KEY_POINT_READER_BATCH",
"task": "WBV2-P1157-001",
"owner": "ANIMATION",
"sourceBacked": true,
"capabilities": [
"CAP-SHAPE_KEY_POINT_READER_BATCH-READER",
"CAP-SHAPE_KEY_POINT_READER_BATCH-RECOVERY",
"CAP-SHAPE_KEY_POINT_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_key.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-shape-key-reader-production.spec.ts",
"tests/files/web/rigged_shape_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "LINE_STYLE_READER_BATCH",
"task": "WBV2-P1158-001",
"owner": "DRAWING",
"sourceBacked": true,
"capabilities": [
"CAP-LINE_STYLE_READER_BATCH-READER",
"CAP-LINE_STYLE_READER_BATCH-RECOVERY",
"CAP-LINE_STYLE_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-line-style-reader-production.spec.ts",
"tests/files/web/generated/M16-GAP-00008-datablock-FreestyleLineStyle.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "LINE_STYLE_COLLECTION_READER_BATCH",
"task": "WBV2-P1159-001",
"owner": "DRAWING",
"sourceBacked": true,
"capabilities": [
"CAP-LINE_STYLE_COLLECTION_READER_BATCH-READER",
"CAP-LINE_STYLE_COLLECTION_READER_BATCH-RECOVERY",
"CAP-LINE_STYLE_COLLECTION_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_main_api.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-line-style-reader-production.spec.ts",
"tests/files/web/line_style_modifier_batch_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "LINE_STYLE_SUBTYPE_READER_BATCH",
"task": "WBV2-P1160-001",
"owner": "DRAWING",
"sourceBacked": true,
"capabilities": [
"CAP-LINE_STYLE_SUBTYPE_READER_BATCH-READER",
"CAP-LINE_STYLE_SUBTYPE_READER_BATCH-RECOVERY",
"CAP-LINE_STYLE_SUBTYPE_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-line-style-reader-production.spec.ts",
"tests/files/web/line_style_subtype_batch_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "FCURVE_MODIFIER_SUBTYPE_READER_BATCH",
"task": "WBV2-P1161-001",
"owner": "ANIMATION",
"sourceBacked": true,
"capabilities": [
"CAP-FCURVE_MODIFIER_SUBTYPE_READER_BATCH-READER",
"CAP-FCURVE_MODIFIER_SUBTYPE_READER_BATCH-RECOVERY",
"CAP-FCURVE_MODIFIER_SUBTYPE_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-fcurve-modifier-production.spec.ts",
"tests/files/web/fcurve_modifier_subtype_batch_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "MODIFIER_SHAPEKEY_READER_BATCH",
"task": "WBV2-P1162-001",
"owner": "MODIFIER",
"sourceBacked": true,
"batchId": "WBV2-P1162-001:MODIFIER_SHAPEKEY_READER_BATCH:f7a317a63fdee0cb",
"selectedRecordIds": [
"modifier-source:MOD_shapekey"
],
"capabilities": [
"CAP-MODIFIER_SHAPEKEY_READER_BATCH-READER",
"CAP-MODIFIER_SHAPEKEY_READER_BATCH-RECOVERY",
"CAP-MODIFIER_SHAPEKEY_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_shapekey.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-shape-key-reader-production.spec.ts",
"tests/files/web/rigged_shape_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "COMPOSITOR_NODE_READER_BATCH",
"task": "WBV2-P1163-001",
"owner": "MEDIA",
"sourceBacked": true,
"batchId": "WBV2-P1163-001:COMPOSITOR_NODE_READER_BATCH:6e59dc4f2b686518",
"selectedRecordIds": [
"node:CompositorNodeGlare",
"node:CompositorNodeViewer"
],
"capabilities": [
"CAP-COMPOSITOR_NODE_READER_BATCH-READER",
"CAP-COMPOSITOR_NODE_READER_BATCH-RECOVERY",
"CAP-COMPOSITOR_NODE_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_glare.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_viewer.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/compositor_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "COMPOSITOR_NATIVE_NODE_BATCH",
"task": "WBV2-P1164-001",
"owner": "MEDIA",
"sourceBacked": true,
"batchId": "WBV2-P1164-001:COMPOSITOR_NATIVE_NODE_BATCH:91a76e1ee4077587",
"selectedRecordIds": [
"node:CompositorNodeTransform",
"node:CompositorNodeBlur",
"node:CompositorNodeAlphaOver"
],
"capabilities": [
"CAP-COMPOSITOR_NATIVE_NODE_BATCH-READER",
"CAP-COMPOSITOR_NATIVE_NODE_BATCH-RECOVERY",
"CAP-COMPOSITOR_NATIVE_NODE_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_transform.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_blur.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_alpha_over.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/compositor_node_batch_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1165-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1165-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:f0276fdfa1169691",
"selectedRecordIds": [
"node:CompositorNodeAntiAliasing",
"node:CompositorNodeBilateralblur",
"node:CompositorNodeBlankImage",
"node:CompositorNodeBokehBlur",
"node:CompositorNodeBokehImage",
"node:CompositorNodeBoxMask",
"node:CompositorNodeBrightContrast",
"node:CompositorNodeChannelMatte"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_anti_aliasing.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_bilateral_blur.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_blank_image.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_bokeh_blur.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_bokeh_image.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_box_mask.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_brightness_contrast.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_channel_key.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-f0276fdfa1169691.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1166-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1166-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:5b79ae1d2da8300c",
"selectedRecordIds": [
"node:CompositorNodeChromaMatte",
"node:CompositorNodeColorBalance",
"node:CompositorNodeColorCorrection",
"node:CompositorNodeColorMatte",
"node:CompositorNodeColorSpill",
"node:CompositorNodeCombineColor",
"node:CompositorNodeConvertColorSpace",
"node:CompositorNodeConvertToDisplay"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_chroma_key.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_color_balance.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_color_correction.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_color_key.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_color_spill.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_combine_color.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_convert_color_space.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_convert_to_display.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-5b79ae1d2da8300c.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1167-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1167-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:6c1d64f20df459f4",
"selectedRecordIds": [
"node:CompositorNodeConvolve",
"node:CompositorNodeCornerPin",
"node:CompositorNodeCrop",
"node:CompositorNodeCryptomatte",
"node:CompositorNodeCryptomatteV2",
"node:CompositorNodeCurveRGB",
"node:CompositorNodeDBlur",
"node:CompositorNodeDefocus"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_convolve.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_corner_pin.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_crop.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_cryptomatte.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_cryptomatte.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_rgb_curves.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_directional_blur.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_defocus.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-6c1d64f20df459f4.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1168-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1168-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:56e154dff1afd9ba",
"selectedRecordIds": [
"node:CompositorNodeDenoise",
"node:CompositorNodeDespeckle",
"node:CompositorNodeDiffMatte",
"node:CompositorNodeDilateErode",
"node:CompositorNodeDisplace",
"node:CompositorNodeDistanceMatte",
"node:CompositorNodeDoubleEdgeMask",
"node:CompositorNodeEllipseMask"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_denoise.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_despeckle.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_difference_key.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_dilate_erode.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_displace.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_distance_key.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_double_edge_mask.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_ellipse_mask.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-56e154dff1afd9ba.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1169-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1169-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:21d6a496860ad568",
"selectedRecordIds": [
"node:CompositorNodeFilter",
"node:CompositorNodeFlip",
"node:CompositorNodeHueCorrect",
"node:CompositorNodeHueSat",
"node:CompositorNodeIDMask",
"node:CompositorNodeImage",
"node:CompositorNodeImageCoordinates",
"node:CompositorNodeImageInfo"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_filter.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_flip.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_hue_correct.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_hue_saturation_value.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_id_mask.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_image.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_image_coordinates.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_image_info.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-21d6a496860ad568.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1170-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1170-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:8ee7e86684d23363",
"selectedRecordIds": [
"node:CompositorNodeImage",
"node:CompositorNodeImageCoordinates",
"node:CompositorNodeImageInfo",
"node:CompositorNodeInpaint",
"node:CompositorNodeKeying",
"node:CompositorNodeKeyingScreen",
"node:CompositorNodeKuwahara",
"node:CompositorNodeLensdist"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_image.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_image_coordinates.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_image_info.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_inpaint.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_keying.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_keying_screen.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_kuwahara.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_lens_distortion.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-8ee7e86684d23363.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1171-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1171-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:c7c1993f19c6c688",
"selectedRecordIds": [
"node:CompositorNodeLevels",
"node:CompositorNodeLumaMatte",
"node:CompositorNodeMapUV",
"node:CompositorNodeMask",
"node:CompositorNodeMaskToSDF",
"node:CompositorNodeMovieClip",
"node:CompositorNodeMovieDistortion",
"node:CompositorNodeNormal"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_levels.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_luminance_key.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_map_uv.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_mask.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_mask_to_sdf.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_movie_clip.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_movie_distortion.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_normal.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-c7c1993f19c6c688.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1172-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1172-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:bf66c685c7c6fd95",
"selectedRecordIds": [
"node:CompositorNodeNormalize",
"node:CompositorNodeOutputFile",
"node:CompositorNodePixelate",
"node:CompositorNodePlaneTrackDeform",
"node:CompositorNodePosterize",
"node:CompositorNodePremulKey",
"node:CompositorNodeRGBToBW",
"node:CompositorNodeRLayers"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_normalize.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_file_output.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_pixelate.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_plane_track_deform.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_posterize.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_alpha_convert.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_rgb_to_bw.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_render_layers.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-bf66c685c7c6fd95.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1173-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1173-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:a1b966b1af421537",
"selectedRecordIds": [
"node:CompositorNodeRelativeToPixel",
"node:CompositorNodeRotate",
"node:CompositorNodeScale",
"node:CompositorNodeSceneTime",
"node:CompositorNodeSeparateColor",
"node:CompositorNodeSequencerStripInfo",
"node:CompositorNodeSetAlpha",
"node:CompositorNodeSplit"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_relative_to_pixel.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_rotate.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_scale.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_scene_time.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_separate_color.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_strip_info.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_set_alpha.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_split.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-a1b966b1af421537.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1174-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1174-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:8f71e517e24622f2",
"selectedRecordIds": [
"node:CompositorNodeStabilize",
"node:CompositorNodeStringToImage",
"node:CompositorNodeSwitch",
"node:CompositorNodeSwitchView",
"node:CompositorNodeTime",
"node:CompositorNodeTonemap",
"node:CompositorNodeTrackPos",
"node:CompositorNodeTranslate"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_stabilize_2d.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_string_to_image.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_switch.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_switch_view.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_time_curve.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_tone_map.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_track_position.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_translate.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-8f71e517e24622f2.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"task": "WBV2-P1175-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1175-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:4c3e128e97498ba4",
"selectedRecordIds": [
"node:CompositorNodeVecBlur",
"node:CompositorNodeZcombine"
],
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_vector_blur.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_depth_combine.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-4c3e128e97498ba4.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1176-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1176-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1177-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1177-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1178-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1178-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1179-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1179-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1180-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1180-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1181-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1181-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1182-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1182-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1183-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1183-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1184-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1184-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1185-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1185-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1186-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1186-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1187-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1187-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1188-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1188-001:AUTO_GEOMETRY_NATIVE_NODE_READER:0f87459df8986017",
"selectedRecordIds": [
"node:GeometryNodeBoneInfo",
"node:GeometryNodeBoundBox",
"node:GeometryNodeCameraInfo",
"node:GeometryNodeCaptureAttribute",
"node:GeometryNodeClosureToList"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bone_info.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bounding_box.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_camera_info.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_capture.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_closure_to_list.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-0f87459df8986017.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1189-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1189-001:AUTO_GEOMETRY_NATIVE_NODE_READER:447074d84f4807db",
"selectedRecordIds": [
"node:GeometryNodeClusterByConnected",
"node:GeometryNodeClusterByDistance",
"node:GeometryNodeCollectionChildren",
"node:GeometryNodeConvexHull",
"node:GeometryNodeCornersOfEdge"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_cluster_by_connected.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_cluster_by_distance.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_collection_children.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_edge.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-447074d84f4807db.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1190-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1190-001:AUTO_GEOMETRY_NATIVE_NODE_READER:b123b8cea34de98b",
"selectedRecordIds": [
"node:GeometryNodeCornersOfFace",
"node:GeometryNodeCornersOfVertex",
"node:GeometryNodeCubeGridTopology",
"node:GeometryNodeCurveArc",
"node:GeometryNodeCurveEndpointSelection"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_face.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_vertex.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_cube_grid_topology.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_arc.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_endpoint_selection.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-b123b8cea34de98b.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1191-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1191-001:AUTO_GEOMETRY_NATIVE_NODE_READER:71424076a2a8f339",
"selectedRecordIds": [
"node:GeometryNodeCurveHandleTypeSelection",
"node:GeometryNodeCurveLength",
"node:GeometryNodeCurveOfPoint",
"node:GeometryNodeCurvePrimitiveBezierSegment",
"node:GeometryNodeCurvePrimitiveCircle"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_handle_type_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_length.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_topology_curve_of_point.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_bezier_segment.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_circle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-71424076a2a8f339.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1192-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1192-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c206ba8fc6cf75d5",
"selectedRecordIds": [
"node:GeometryNodeCurvePrimitiveLine",
"node:GeometryNodeCurvePrimitiveQuadrilateral",
"node:GeometryNodeCurveQuadraticBezier",
"node:GeometryNodeCurveSetHandles",
"node:GeometryNodeCurveSpiral"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_line.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_quadrilateral.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_quadratic_bezier.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_set_handle_type.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_spiral.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-c206ba8fc6cf75d5.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1193-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1193-001:AUTO_GEOMETRY_NATIVE_NODE_READER:2ae9d67e9fb6b5f9",
"selectedRecordIds": [
"node:GeometryNodeCurveSplineType",
"node:GeometryNodeCurveStar",
"node:GeometryNodeCurveToMesh",
"node:GeometryNodeCurveToPoints",
"node:GeometryNodeCurvesToGreasePencil"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_spline_type.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_star.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_to_mesh.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_to_points.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curves_to_grease_pencil.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-2ae9d67e9fb6b5f9.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1194-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1194-001:AUTO_GEOMETRY_NATIVE_NODE_READER:8f6105d06959322c",
"selectedRecordIds": [
"node:GeometryNodeDeformCurvesOnSurface",
"node:GeometryNodeDeleteGeometry",
"node:GeometryNodeDistributePointsInGrid",
"node:GeometryNodeDistributePointsInVolume",
"node:GeometryNodeDistributePointsOnFaces"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_deform_curves_on_surface.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_distribute_points_in_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_distribute_points_in_volume.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-8f6105d06959322c.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1195-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1195-001:AUTO_GEOMETRY_NATIVE_NODE_READER:35aea559d5d0f343",
"selectedRecordIds": [
"node:GeometryNodeDualMesh",
"node:GeometryNodeDuplicateElements",
"node:GeometryNodeEdgePathsToCurves",
"node:GeometryNodeEdgePathsToSelection",
"node:GeometryNodeEdgesOfCorner"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_edge_paths_to_curves.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_edge_paths_to_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_edges_of_corner.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-35aea559d5d0f343.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1196-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1196-001:AUTO_GEOMETRY_NATIVE_NODE_READER:96303bc7f7c8d232",
"selectedRecordIds": [
"node:GeometryNodeEdgesOfVertex",
"node:GeometryNodeEdgesToFaceGroups",
"node:GeometryNodeExtrudeMesh",
"node:GeometryNodeFaceOfCorner",
"node:GeometryNodeFieldAtIndex"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_edges_of_vertex.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_edges_to_face_groups.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_face_of_corner.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_evaluate_at_index.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-96303bc7f7c8d232.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1197-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1197-001:AUTO_GEOMETRY_NATIVE_NODE_READER:4e53a3a8ffb6f8a7",
"selectedRecordIds": [
"node:GeometryNodeFieldAverage",
"node:GeometryNodeFieldMinAndMax",
"node:GeometryNodeFieldOnDomain",
"node:GeometryNodeFieldToGrid",
"node:GeometryNodeFieldToList"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_field_average.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_field_min_and_max.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_evaluate_on_domain.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_field_to_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_field_to_list.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-4e53a3a8ffb6f8a7.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1198-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1198-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6581c99986be795f",
"selectedRecordIds": [
"node:GeometryNodeFieldVariance",
"node:GeometryNodeFillCurve",
"node:GeometryNodeFilletCurve",
"node:GeometryNodeFilterList",
"node:GeometryNodeFlipFaces"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_field_variance.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_fillet.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_filter_list.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-6581c99986be795f.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1199-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1199-001:AUTO_GEOMETRY_NATIVE_NODE_READER:240d704df4420718",
"selectedRecordIds": [
"node:GeometryNodeForeachGeometryElementInput",
"node:GeometryNodeForeachGeometryElementOutput",
"node:GeometryNodeGeometryToInstance",
"node:GeometryNodeGetAttributeNames",
"node:GeometryNodeGetGeometryBundle"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_foreach_geometry_element.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_foreach_geometry_element.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_geometry_to_instance.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_get_attribute_names.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_get_geometry_bundle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-240d704df4420718.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1200-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1200-001:AUTO_GEOMETRY_NATIVE_NODE_READER:2657bc0520c4b632",
"selectedRecordIds": [
"node:GeometryNodeGetGeometryComponent",
"node:GeometryNodeGetNamedGrid",
"node:GeometryNodeGizmoDial",
"node:GeometryNodeGizmoLinear",
"node:GeometryNodeGizmoTransform"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_get_geometry_component.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_get_named_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_gizmo_dial.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_gizmo_linear.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_gizmo_transform.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-2657bc0520c4b632.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1201-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1201-001:AUTO_GEOMETRY_NATIVE_NODE_READER:163fbe66b349eb14",
"selectedRecordIds": [
"node:GeometryNodeGreasePencilToCurves",
"node:GeometryNodeGridAdvect",
"node:GeometryNodeGridClip",
"node:GeometryNodeGridCurl",
"node:GeometryNodeGridDilateAndErode"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grease_pencil_to_curves.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_advect.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_clip.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_curl.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_dilate_erode.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-163fbe66b349eb14.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1202-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1202-001:AUTO_GEOMETRY_NATIVE_NODE_READER:5aa18e58ddffee84",
"selectedRecordIds": [
"node:GeometryNodeGridDivergence",
"node:GeometryNodeGridGradient",
"node:GeometryNodeGridInfo",
"node:GeometryNodeGridLaplacian",
"node:GeometryNodeGridMean"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_divergence.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_gradient.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_info.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_laplacian.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_mean.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-5aa18e58ddffee84.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1203-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1203-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6897ad7bf98e7228",
"selectedRecordIds": [
"node:GeometryNodeGridMedian",
"node:GeometryNodeGridPrune",
"node:GeometryNodeGridToMesh",
"node:GeometryNodeGridToPoints",
"node:GeometryNodeGridVoxelize"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_median.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_prune.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_to_mesh.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_to_points.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_voxelize.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-6897ad7bf98e7228.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1204-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1204-001:AUTO_GEOMETRY_NATIVE_NODE_READER:cee66fd20924b9e5",
"selectedRecordIds": [
"node:GeometryNodeImageTexture",
"node:GeometryNodeImportCSV",
"node:GeometryNodeImportOBJ",
"node:GeometryNodeImportPLY",
"node:GeometryNodeImportSTL"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_image_texture.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_csv.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_obj.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_ply.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_stl.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-cee66fd20924b9e5.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1205-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1205-001:AUTO_GEOMETRY_NATIVE_NODE_READER:e55a1c8c151fc9dc",
"selectedRecordIds": [
"node:GeometryNodeImportText",
"node:GeometryNodeImportVDB",
"node:GeometryNodeIndexOfNearest",
"node:GeometryNodeIndexSwitch",
"node:GeometryNodeInputActiveCamera"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_text.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_vdb.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_index_of_nearest.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_index_switch.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_active_camera.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-e55a1c8c151fc9dc.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1206-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1206-001:AUTO_GEOMETRY_NATIVE_NODE_READER:150a227b3433d301",
"selectedRecordIds": [
"node:GeometryNodeInputCollection",
"node:GeometryNodeInputCurveHandlePositions",
"node:GeometryNodeInputCurveTilt",
"node:GeometryNodeInputEdgeSmooth",
"node:GeometryNodeInputFont"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_collection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_curve_handles.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_curve_tilt.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_edge_smooth.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_font.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-150a227b3433d301.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1207-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1207-001:AUTO_GEOMETRY_NATIVE_NODE_READER:32a41ae9caf449dc",
"selectedRecordIds": [
"node:GeometryNodeInputID",
"node:GeometryNodeInputImage",
"node:GeometryNodeInputIndex",
"node:GeometryNodeInputInstanceBounds",
"node:GeometryNodeInputInstanceReference"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_id.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_image.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_index.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_instance_bounds.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_instance_reference.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-32a41ae9caf449dc.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1208-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1208-001:AUTO_GEOMETRY_NATIVE_NODE_READER:e4c0acdab580fad4",
"selectedRecordIds": [
"node:GeometryNodeInputInstanceRotation",
"node:GeometryNodeInputInstanceScale",
"node:GeometryNodeInputMaterial",
"node:GeometryNodeInputMaterialIndex",
"node:GeometryNodeInputMeshEdgeAngle"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_instance_rotation.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_instance_scale.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_material.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_material_index.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_angle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-e4c0acdab580fad4.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1209-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1209-001:AUTO_GEOMETRY_NATIVE_NODE_READER:e28f27c297406a24",
"selectedRecordIds": [
"node:GeometryNodeInputMeshEdgeNeighbors",
"node:GeometryNodeInputMeshEdgeVertices",
"node:GeometryNodeInputMeshFaceArea",
"node:GeometryNodeInputMeshFaceIsPlanar",
"node:GeometryNodeInputMeshFaceNeighbors"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_neighbors.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_vertices.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_area.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_is_planar.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_neighbors.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-e28f27c297406a24.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1210-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1210-001:AUTO_GEOMETRY_NATIVE_NODE_READER:94bb44cb6fb6c1c0",
"selectedRecordIds": [
"node:GeometryNodeInputMeshIsland",
"node:GeometryNodeInputMeshVertexNeighbors",
"node:GeometryNodeInputNamedAttribute",
"node:GeometryNodeInputNamedLayerSelection",
"node:GeometryNodeInputNormal"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_island.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_vertex_neighbors.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_named_attribute.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_named_layer_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_normal.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-94bb44cb6fb6c1c0.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1211-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1211-001:AUTO_GEOMETRY_NATIVE_NODE_READER:abc1ee2d37430201",
"selectedRecordIds": [
"node:FunctionNodeAlignRotationToVector",
"node:FunctionNodeAxesToRotation",
"node:FunctionNodeAxisAngleToRotation",
"node:FunctionNodeCombineMatrix",
"node:FunctionNodeEulerToRotation"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_align_rotation_to_vector.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_axes_to_rotation.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_axis_angle_to_rotation.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_combine_matrix.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_euler_to_rotation.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-abc1ee2d37430201.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1212-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1212-001:AUTO_GEOMETRY_NATIVE_NODE_READER:3cfb811ea55c672e",
"selectedRecordIds": [
"node:FunctionNodeFindInString",
"node:FunctionNodeFormatString",
"node:FunctionNodeInputBool",
"node:FunctionNodeInputInt",
"node:FunctionNodeInputIntVector"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_find_in_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_format_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_bool.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_int.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_int_vector.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-3cfb811ea55c672e.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1213-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1213-001:AUTO_GEOMETRY_NATIVE_NODE_READER:88ba8e6e3716dd8d",
"selectedRecordIds": [
"node:FunctionNodeInputMenu",
"node:FunctionNodeInputRotation",
"node:FunctionNodeInputSpecialCharacters",
"node:FunctionNodeInputString",
"node:FunctionNodeInputVector"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_menu.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_rotation.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_special_characters.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_vector.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-88ba8e6e3716dd8d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1214-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1214-001:AUTO_GEOMETRY_NATIVE_NODE_READER:7d31b4b0866780ae",
"selectedRecordIds": [
"node:FunctionNodeInvertMatrix",
"node:FunctionNodeInvertRotation",
"node:FunctionNodeMatchString",
"node:FunctionNodeMatrixDeterminant",
"node:FunctionNodeMatrixMultiply"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_invert_matrix.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_invert_rotation.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_match_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_matrix_determinant.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_matrix_multiply.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-7d31b4b0866780ae.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1215-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1215-001:AUTO_GEOMETRY_NATIVE_NODE_READER:0a8d3bb55b10e188",
"selectedRecordIds": [
"node:FunctionNodeProjectPoint",
"node:FunctionNodeQuaternionToRotation",
"node:FunctionNodeReplaceString",
"node:FunctionNodeReverseString",
"node:FunctionNodeRotateRotation"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_project_point.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_quaternion_to_rotation.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_replace_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_reverse_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_rotate_rotation.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-0a8d3bb55b10e188.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1216-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1216-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c598026385cc94dc",
"selectedRecordIds": [
"node:FunctionNodeRotateVector",
"node:FunctionNodeRotationToAxisAngle",
"node:FunctionNodeRotationToEuler",
"node:FunctionNodeRotationToQuaternion",
"node:FunctionNodeSeparateMatrix"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_rotate_vector.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_rotation_to_axis_angle.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_rotation_to_euler.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_rotation_to_quaternion.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_separate_matrix.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-c598026385cc94dc.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1217-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1217-001:AUTO_GEOMETRY_NATIVE_NODE_READER:dbc0fb8bb88f3d37",
"selectedRecordIds": [
"node:FunctionNodeSetStringCase",
"node:FunctionNodeSliceString",
"node:FunctionNodeStringLength",
"node:FunctionNodeStringToValue",
"node:FunctionNodeTransformDirection"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_set_string_case.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_slice_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_string_length.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_string_to_value.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_transform_direction.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-dbc0fb8bb88f3d37.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1218-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1218-001:AUTO_GEOMETRY_NATIVE_NODE_READER:34abb58eedf43c5f",
"selectedRecordIds": [
"node:FunctionNodeTransformPoint",
"node:FunctionNodeTransposeMatrix",
"node:FunctionNodeTrimString",
"node:FunctionNodeValueToString",
"node:GeometryNodeInputObject"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_transform_point.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_transpose_matrix.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_trim_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_value_to_string.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_object.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-34abb58eedf43c5f.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1219-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1219-001:AUTO_GEOMETRY_NATIVE_NODE_READER:3cccf2d7fb85d3b8",
"selectedRecordIds": [
"node:GeometryNodeInputPosition",
"node:GeometryNodeInputRadius",
"node:GeometryNodeInputSceneTime",
"node:GeometryNodeInputShadeSmooth",
"node:GeometryNodeInputShortestEdgePaths"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_position.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_radius.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_scene_time.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_face_smooth.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_shortest_edge_paths.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-3cccf2d7fb85d3b8.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1220-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1220-001:AUTO_GEOMETRY_NATIVE_NODE_READER:8d0f07a9289283d0",
"selectedRecordIds": [
"node:GeometryNodeInputSplineCyclic",
"node:GeometryNodeInputSplineResolution",
"node:GeometryNodeInputTangent",
"node:GeometryNodeInputVoxelIndex",
"node:GeometryNodeInstanceOnPoints"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_spline_cyclic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_spline_resolution.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_tangent.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_voxel_index.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_instance_on_points.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-8d0f07a9289283d0.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1221-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1221-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c30b3d2a341bc8b1",
"selectedRecordIds": [
"node:GeometryNodeInstanceTransform",
"node:GeometryNodeInstancesToPoints",
"node:GeometryNodeInterpolateCurves",
"node:GeometryNodeIsViewport",
"node:GeometryNodeListGetItem"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_instance_transform.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_instances_to_points.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_interpolate_curves.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_is_viewport.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_list_get_item.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-c30b3d2a341bc8b1.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1222-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1222-001:AUTO_GEOMETRY_NATIVE_NODE_READER:838d8958e4b989d1",
"selectedRecordIds": [
"node:GeometryNodeListLength",
"node:GeometryNodeMaterialSelection",
"node:GeometryNodeMenuSwitch",
"node:GeometryNodeMergeByDistance",
"node:GeometryNodeMergeLayers"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_list_length.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_material_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_menu_switch.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_merge_layers.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-838d8958e4b989d1.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1223-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1223-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c3b7b0656afe6a91",
"selectedRecordIds": [
"node:GeometryNodeMergePoints",
"node:GeometryNodeMeshBevel",
"node:GeometryNodeMeshBoolean",
"node:GeometryNodeMeshCircle",
"node:GeometryNodeMeshCone"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_merge_points.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_bevel.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_boolean.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-c3b7b0656afe6a91.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1224-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1224-001:AUTO_GEOMETRY_NATIVE_NODE_READER:0dca701c57915fc7",
"selectedRecordIds": [
"node:GeometryNodeMeshCube",
"node:GeometryNodeMeshCylinder",
"node:GeometryNodeMeshFaceSetBoundaries",
"node:GeometryNodeMeshGrid",
"node:GeometryNodeMeshIcoSphere"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cube.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_face_group_boundaries.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_ico_sphere.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-0dca701c57915fc7.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1225-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1225-001:AUTO_GEOMETRY_NATIVE_NODE_READER:142ee68a2ed9492b",
"selectedRecordIds": [
"node:GeometryNodeMeshLine",
"node:GeometryNodeMeshToCurve",
"node:GeometryNodeMeshToDensityGrid",
"node:GeometryNodeMeshToPoints",
"node:GeometryNodeMeshToSDFGrid"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_line.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_to_curve.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_to_density_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_to_sdf_grid.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-142ee68a2ed9492b.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1226-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1226-001:AUTO_GEOMETRY_NATIVE_NODE_READER:abb1c596d4ee21b2",
"selectedRecordIds": [
"node:GeometryNodeMeshToVolume",
"node:GeometryNodeMeshUVSphere",
"node:GeometryNodeOffsetCornerInFace",
"node:GeometryNodeOffsetPointInCurve",
"node:GeometryNodePoints"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_to_volume.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_offset_corner_in_face.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_offset_point_in_curve.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_points.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-abb1c596d4ee21b2.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1227-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1227-001:AUTO_GEOMETRY_NATIVE_NODE_READER:81deda73b9188c10",
"selectedRecordIds": [
"node:GeometryNodePointsOfCurve",
"node:GeometryNodePointsToCurves",
"node:GeometryNodePointsToSDFGrid",
"node:GeometryNodePointsToVertices",
"node:GeometryNodePointsToVolume"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_topology_points_of_curve.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_points_to_curves.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_points_to_sdf_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_points_to_vertices.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-81deda73b9188c10.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1228-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1228-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6b022a1a8e99f7fd",
"selectedRecordIds": [
"node:GeometryNodeProximity",
"node:GeometryNodeRaycast",
"node:GeometryNodeRemoveAttribute",
"node:GeometryNodeRenameAttribute",
"node:GeometryNodeRepeatInput"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_proximity.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_raycast.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_remove_attribute.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_rename_attribute.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_repeat.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-6b022a1a8e99f7fd.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1229-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1229-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1323c437a10e245b",
"selectedRecordIds": [
"node:GeometryNodeRepeatOutput"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_repeat.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1323c437a10e245b.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1230-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1230-001:AUTO_GEOMETRY_NATIVE_NODE_READER:bb5c9b89367c9d6d",
"selectedRecordIds": [
"node:GeometryNodeReplaceMaterial",
"node:GeometryNodeResampleCurve",
"node:GeometryNodeReverseCurve",
"node:GeometryNodeRotateInstances",
"node:GeometryNodeSDFGridBoolean"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_material_replace.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_resample.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_reverse.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_rotate_instances.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_boolean.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-bb5c9b89367c9d6d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1231-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1231-001:AUTO_GEOMETRY_NATIVE_NODE_READER:4e423b626a07145e",
"selectedRecordIds": [
"node:GeometryNodeSDFGridFillet",
"node:GeometryNodeSDFGridLaplacian",
"node:GeometryNodeSDFGridMean",
"node:GeometryNodeSDFGridMeanCurvature",
"node:GeometryNodeSDFGridMedian"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_fillet.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_laplacian.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_mean.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_mean_curvature.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_median.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-4e423b626a07145e.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1232-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1232-001:AUTO_GEOMETRY_NATIVE_NODE_READER:404eb303152ba922",
"selectedRecordIds": [
"node:GeometryNodeSDFGridOffset",
"node:GeometryNodeSampleCurve",
"node:GeometryNodeSampleGrid",
"node:GeometryNodeSampleGridIndex",
"node:GeometryNodeSampleIndex"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_offset.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_sample.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_grid_index.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_index.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-404eb303152ba922.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1233-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1233-001:AUTO_GEOMETRY_NATIVE_NODE_READER:529a042eb604c0e1",
"selectedRecordIds": [
"node:GeometryNodeSampleNearest",
"node:GeometryNodeSampleNearestSurface",
"node:GeometryNodeSampleSoundFrequencies",
"node:GeometryNodeSampleUVSurface",
"node:GeometryNodeScaleElements"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_nearest_surface.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_sound_frequencies.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_uv_surface.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_scale_elements.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-529a042eb604c0e1.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1234-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1234-001:AUTO_GEOMETRY_NATIVE_NODE_READER:ad9e5b4bf235659f",
"selectedRecordIds": [
"node:GeometryNodeScaleInstances",
"node:GeometryNodeSelfObject",
"node:GeometryNodeSeparateComponents",
"node:GeometryNodeSetCurveHandlePositions",
"node:GeometryNodeSetCurveNormal"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_scale_instances.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_self_object.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_separate_components.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_curve_handles.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_curve_normal.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-ad9e5b4bf235659f.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1235-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1235-001:AUTO_GEOMETRY_NATIVE_NODE_READER:91beafd1d1c04670",
"selectedRecordIds": [
"node:GeometryNodeSetCurveRadius",
"node:GeometryNodeSetCurveTilt",
"node:GeometryNodeSetGeometryBundle",
"node:GeometryNodeSetGeometryName",
"node:GeometryNodeSetGreasePencilColor"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_curve_radius.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_curve_tilt.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_geometry_bundle.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_geometry_name.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_grease_pencil_color.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-91beafd1d1c04670.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1236-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1236-001:AUTO_GEOMETRY_NATIVE_NODE_READER:b7b77a5dec80a14d",
"selectedRecordIds": [
"node:GeometryNodeSetGreasePencilDepth",
"node:GeometryNodeSetGreasePencilSoftness",
"node:GeometryNodeSetGridBackground",
"node:GeometryNodeSetGridTransform",
"node:GeometryNodeSetID"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_grease_pencil_depth_mode.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_grease_pencil_softness.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_grid_background.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_grid_transform.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_id.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-b7b77a5dec80a14d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1237-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1237-001:AUTO_GEOMETRY_NATIVE_NODE_READER:95ccfa5892bb7a33",
"selectedRecordIds": [
"node:GeometryNodeSetInstanceTransform",
"node:GeometryNodeSetMaterial",
"node:GeometryNodeSetMaterialIndex",
"node:GeometryNodeSetMeshNormal",
"node:GeometryNodeSetNURBSOrder"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_instance_transform.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_material.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_material_index.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_mesh_normal.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_nurbs_order.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-95ccfa5892bb7a33.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1238-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1238-001:AUTO_GEOMETRY_NATIVE_NODE_READER:8d3751cce437cb33",
"selectedRecordIds": [
"node:GeometryNodeSetNURBSWeight",
"node:GeometryNodeSetPointRadius",
"node:GeometryNodeSetShadeSmooth",
"node:GeometryNodeSetSplineCyclic",
"node:GeometryNodeSetSplineResolution"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_nurbs_weight.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_point_radius.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_shade_smooth.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_spline_cyclic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_spline_resolution.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-8d3751cce437cb33.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1239-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1239-001:AUTO_GEOMETRY_NATIVE_NODE_READER:2de2c5e6ce0c4914",
"selectedRecordIds": [
"node:GeometryNodeSortElements",
"node:GeometryNodeSortList",
"node:GeometryNodeSplineLength",
"node:GeometryNodeSplineParameter",
"node:GeometryNodeSplitEdges"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sort_elements.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sort_list.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_spline_length.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_spline_parameter.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_edge_split.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-2de2c5e6ce0c4914.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1240-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1240-001:AUTO_GEOMETRY_NATIVE_NODE_READER:70077c253f8e9738",
"selectedRecordIds": [
"node:GeometryNodeSplitToInstances",
"node:GeometryNodeStoreNamedGrid",
"node:GeometryNodeStringJoin",
"node:GeometryNodeStringToCurves",
"node:GeometryNodeSubdivideCurve"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_split_to_instances.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_store_named_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_string_join.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_string_to_curves.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_subdivide.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-70077c253f8e9738.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1241-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1241-001:AUTO_GEOMETRY_NATIVE_NODE_READER:518360e680870ecc",
"selectedRecordIds": [
"node:GeometryNodeSubdivideMesh",
"node:GeometryNodeSubdivisionSurface",
"node:GeometryNodeSwitch",
"node:GeometryNodeTagFilter",
"node:GeometryNodeTool3DCursor"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_subdivide.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_subdivision_surface.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_switch.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tag_filter.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_3d_cursor.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-518360e680870ecc.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1242-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1242-001:AUTO_GEOMETRY_NATIVE_NODE_READER:f355dda8099b8a6f",
"selectedRecordIds": [
"node:GeometryNodeToolActiveElement",
"node:GeometryNodeToolFaceSet",
"node:GeometryNodeToolMousePosition",
"node:GeometryNodeToolSelection",
"node:GeometryNodeToolSetFaceSet"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_active_element.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_face_set.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mouse_position.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_set_face_set.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-f355dda8099b8a6f.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1243-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1243-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6399364bfcbc157c",
"selectedRecordIds": [
"node:GeometryNodeToolSetSelection",
"node:GeometryNodeTransferAttributes",
"node:GeometryNodeTranslateInstances",
"node:GeometryNodeTriangulate",
"node:GeometryNodeTrimCurve"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_set_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_transfer_attributes.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_translate_instances.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_triangulate.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_trim.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-6399364bfcbc157c.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1244-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1244-001:AUTO_GEOMETRY_NATIVE_NODE_READER:b2e40edae0bea18d",
"selectedRecordIds": [
"node:GeometryNodeUVPackIslands",
"node:GeometryNodeUVTangent",
"node:GeometryNodeUVUnwrap",
"node:GeometryNodeVertexOfCorner",
"node:GeometryNodeViewer"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_uv_pack_islands.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_uv_tangent.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_uv_unwrap.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_vertex_of_corner.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_viewer.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-b2e40edae0bea18d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"task": "WBV2-P1245-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1245-001:AUTO_GEOMETRY_NATIVE_NODE_READER:06a9b0a82fc0bc5b",
"selectedRecordIds": [
"node:GeometryNodeViewportTransform",
"node:GeometryNodeVolumeCube",
"node:GeometryNodeVolumeToMesh",
"node:GeometryNodeWarning",
"node:GeometryNodeXPBDSolver"
],
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_viewport_transform.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_volume_cube.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_warning.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_xpbd_solver.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-06a9b0a82fc0bc5b.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1246-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1246-001:AUTO_SHADER_NATIVE_NODE_READER:6084b65cc9b4dd13",
"selectedRecordIds": [
"node:ShaderNodeAddShader",
"node:ShaderNodeAmbientOcclusion",
"node:ShaderNodeAttribute",
"node:ShaderNodeBackground",
"node:ShaderNodeBevel"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_add_shader.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_ambient_occlusion.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_attribute.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_background.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bevel.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-6084b65cc9b4dd13.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1247-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1247-001:AUTO_SHADER_NATIVE_NODE_READER:492bd603ac3e7b39",
"selectedRecordIds": [
"node:ShaderNodeBlackbody",
"node:ShaderNodeBrightContrast",
"node:ShaderNodeBsdfAnisotropic",
"node:ShaderNodeBsdfDiffuse",
"node:ShaderNodeBsdfGlass"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_blackbody.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_brightness.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-492bd603ac3e7b39.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1248-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1248-001:AUTO_SHADER_NATIVE_NODE_READER:5d3fdcd95f8dcb4a",
"selectedRecordIds": [
"node:ShaderNodeBsdfHair",
"node:ShaderNodeBsdfHairPrincipled",
"node:ShaderNodeBsdfMetallic",
"node:ShaderNodeBsdfRayPortal",
"node:ShaderNodeBsdfRefraction"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_hair.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_hair_principled.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_metallic.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_ray_portal.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_refraction.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-5d3fdcd95f8dcb4a.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1249-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1249-001:AUTO_SHADER_NATIVE_NODE_READER:3dd8ce20c676372b",
"selectedRecordIds": [
"node:ShaderNodeBsdfSheen",
"node:ShaderNodeBsdfToon",
"node:ShaderNodeBsdfTranslucent",
"node:ShaderNodeBsdfTransparent",
"node:ShaderNodeBump"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_sheen.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_toon.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bump.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-3dd8ce20c676372b.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1250-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1250-001:AUTO_SHADER_NATIVE_NODE_READER:4962cd49b587a2f9",
"selectedRecordIds": [
"node:ShaderNodeCameraData",
"node:ShaderNodeClamp",
"node:ShaderNodeCombineColor",
"node:ShaderNodeCombineXYZ",
"node:ShaderNodeDisplacement"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_camera.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_clamp.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_sepcomb_color.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_sepcomb_xyz.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_displacement.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-4962cd49b587a2f9.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1251-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1251-001:AUTO_SHADER_NATIVE_NODE_READER:2367477c6dfff68d",
"selectedRecordIds": [
"node:ShaderNodeEeveeSpecular",
"node:ShaderNodeEmission",
"node:ShaderNodeFloatCurve",
"node:ShaderNodeFresnel",
"node:ShaderNodeGamma"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_eevee_specular.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_emission.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_curves.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_fresnel.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_gamma.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-2367477c6dfff68d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1252-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1252-001:AUTO_SHADER_NATIVE_NODE_READER:f8e029f92dbfd33d",
"selectedRecordIds": [
"node:ShaderNodeHairInfo",
"node:ShaderNodeHoldout",
"node:ShaderNodeHueSaturation",
"node:ShaderNodeInvert",
"node:ShaderNodeLayerWeight"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_hair_info.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_holdout.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_hueSatVal.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_invert.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_layer_weight.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-f8e029f92dbfd33d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1253-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1253-001:AUTO_SHADER_NATIVE_NODE_READER:c56bc2ebdfa34be7",
"selectedRecordIds": [
"node:ShaderNodeLightFalloff",
"node:ShaderNodeLightPath",
"node:ShaderNodeMapRange",
"node:ShaderNodeMapping",
"node:ShaderNodeMix"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_light_falloff.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_light_path.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_map_range.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_mapping.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_mix.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-c56bc2ebdfa34be7.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1254-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1254-001:AUTO_SHADER_NATIVE_NODE_READER:dbc531eb397b06df",
"selectedRecordIds": [
"node:ShaderNodeMixRGB",
"node:ShaderNodeMixShader",
"node:ShaderNodeNewGeometry",
"node:ShaderNodeNormal",
"node:ShaderNodeObjectInfo"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_mix_shader.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_geometry.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_normal.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_object_info.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-dbc531eb397b06df.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1255-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1255-001:AUTO_SHADER_NATIVE_NODE_READER:dd18d1b1e2d07fd3",
"selectedRecordIds": [
"node:ShaderNodeOutputAOV",
"node:ShaderNodeOutputLight",
"node:ShaderNodeOutputLineStyle",
"node:ShaderNodeOutputWorld",
"node:ShaderNodeParticleInfo"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_output_aov.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_output_light.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_output_linestyle.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_output_world.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_particle_info.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-dd18d1b1e2d07fd3.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
},
{
"id": "AUTO_SHADER_NATIVE_NODE_READER",
"task": "WBV2-P1256-001",
"owner": "NODES",
"sourceBacked": true,
"batchId": "WBV2-P1256-001:AUTO_SHADER_NATIVE_NODE_READER:d37c82dd11ef35c6",
"selectedRecordIds": [
"node:ShaderNodePointInfo",
"node:ShaderNodeRGBCurve",
"node:ShaderNodeRGBToBW",
"node:ShaderNodeRadialTiling",
"node:ShaderNodeRaycast"
],
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_point_info.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_curves.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_rgb_to_bw.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_radial_tiling.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_raycast.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-d37c82dd11ef35c6.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"fullFamilyParity": false
}
],
"tasks": [
{
"id": "WBV2-P1096-000",
"phase": "1096",
"title": "supersede_generic_continuation_queue",
"kind": "bridge",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1095-003"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "bridge",
"gate": "QUEUE",
"card": "docs/tasks/WBV2-P1096-000.md",
"behavior": "Replace the generic continuation queue with a finite module execution plan without claiming capability parity.",
"outputs": [
"bridge manifest",
"status"
],
"acceptance": [
"no parity claim",
"inventory preserved",
"module plan hash-bound"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1100-000",
"phase": "1100",
"title": "reorganize_module_execution_plan",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1096-000"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1100-000.md",
"behavior": "Reuse completed source-backed work and activate finite module-level implementation and verification.",
"outputs": [
"module plan",
"manifest",
"status"
],
"acceptance": [
"completed receipts reused",
"generic continuation excluded",
"one module active",
"inventory preserved"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1100-001",
"phase": "1100",
"title": "verify_render_light_camera_module",
"kind": "module",
"owner": "RENDER",
"dependsOn": [
"WBV2-P1100-000"
],
"parityId": "RENDER_LIGHT_CAMERA",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-render_light_camera",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1100-001.md",
"behavior": "Complete the RENDER_LIGHT_CAMERA module through its shared Blender Main primitives and aggregate case matrix.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "RENDER_LIGHT_CAMERA",
"sourceBacked": true,
"capabilities": [
"CAP-RENDER-LIGHT-TYPE",
"CAP-RENDER-LIGHT-AREA-SHAPE",
"CAP-RENDER-LIGHT-CONTRIBUTION-FACTORS",
"CAP-RENDER-LIGHT-SHADOW-CONTROLS",
"CAP-RENDER-LIGHT-CASCADE-CONTROLS",
"CAP-RENDER-LIGHT-AREA-SIZE-Z",
"CAP-RENDER-LIGHT-CLIP-START",
"CAP-RENDER-WORLD-LIGHTING-CONTROLS",
"CAP-RENDER-WORLD-PROBE-CONTROLS",
"CAP-RENDER-WORLD-ENVIRONMENT-STRENGTH",
"CAP-RENDER-CAMERA-DOF-FOCUS-OBJECT",
"CAP-RENDER-CAMERA-PANORAMA"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/scene-ir.ts",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P595-002/manifest.json",
"report": "tests/golden/WBV2-P595-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P596-002/manifest.json",
"report": "tests/golden/WBV2-P596-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P597-002/manifest.json",
"report": "tests/golden/WBV2-P597-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P598-002/manifest.json",
"report": "tests/golden/WBV2-P598-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P599-002/manifest.json",
"report": "tests/golden/WBV2-P599-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P600-002/manifest.json",
"report": "tests/golden/WBV2-P600-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P601-002/manifest.json",
"report": "tests/golden/WBV2-P601-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P602-002/manifest.json",
"report": "tests/golden/WBV2-P602-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P603-002/manifest.json",
"report": "tests/golden/WBV2-P603-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P604-002/manifest.json",
"report": "tests/golden/WBV2-P604-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P605-002/manifest.json",
"report": "tests/golden/WBV2-P605-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P606-002/manifest.json",
"report": "tests/golden/WBV2-P606-002/implementation-report.json"
}
],
"positive": [
"setLightProperties",
"setWorldProperties",
"setCameraProperties",
"camera panorama",
"world environment",
"light shadow/cascade"
],
"negative": [
"invalid enum",
"invalid numeric bounds",
"near/far conflict",
"unknown target",
"stale revision"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"worker disposal"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run test:lighting-field-roundtrip",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-lighting-fields-production.spec.ts tests/e2e/lighting-field-roundtrip.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1100-002",
"phase": "1100",
"title": "verify_scene_object_mesh_module",
"kind": "module",
"owner": "SCENE_MESH",
"dependsOn": [
"WBV2-P1100-001"
],
"parityId": "SCENE_OBJECT_MESH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-scene_object_mesh",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1100-002.md",
"behavior": "Complete the SCENE_OBJECT_MESH module through its shared Blender Main primitives and aggregate case matrix.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "SCENE_OBJECT_MESH",
"sourceBacked": true,
"capabilities": [
"CAP-MESH-TOPOLOGY-FAMILY",
"CAP-CORE-SCENE-OBJECT",
"CAP-OBJECT-MOVE-COLLECTION"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P11-001/manifest.json",
"report": "tests/golden/WBV2-P11-001/mesh-topology-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P12-002/manifest.json",
"report": "tests/golden/WBV2-P12-002/scene-object-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P24-002/manifest.json",
"report": "tests/golden/WBV2-P24-002/object-move-receipt-report.json"
}
],
"positive": [
"mesh topology",
"visibility",
"transform",
"collection membership"
],
"negative": [
"invalid selection",
"stale revision",
"linked data"
],
"recovery": [
"undo",
"redo",
"save/reopen"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-mesh-topology-production.spec.ts tests/e2e/wbv2-scene-object-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1100-003",
"phase": "1100",
"title": "verify_material_animation_module",
"kind": "module",
"owner": "MATERIAL_ANIMATION",
"dependsOn": [
"WBV2-P1100-002"
],
"parityId": "MATERIAL_ANIMATION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-material_animation",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1100-003.md",
"behavior": "Complete the MATERIAL_ANIMATION module through its shared Blender Main primitives and aggregate case matrix.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MATERIAL_ANIMATION",
"sourceBacked": true,
"capabilities": [
"CAP-MATERIAL-ANIMATION"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P12-003/manifest.json",
"report": "tests/golden/WBV2-P12-003/material-animation-receipt-report.json"
}
],
"positive": [
"principled material",
"image node",
"keyframe",
"FCurve"
],
"negative": [
"unsupported graph",
"stale revision"
],
"recovery": [
"undo",
"redo",
"save/reopen"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-material-animation-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1101-000",
"phase": "1101",
"title": "verify_nonmesh_geometry_module",
"kind": "module",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P1100-003"
],
"parityId": "NONMESH_GEOMETRY",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-nonmesh_geometry",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1101-000.md",
"behavior": "Complete the NONMESH_GEOMETRY module through its shared Blender Main primitives and aggregate case matrix.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "NONMESH_GEOMETRY",
"sourceBacked": true,
"capabilities": [
"CAP-VIEWPORT-NONMESH",
"CAP-NATIVE-DATABLOCK"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P12-004/manifest.json",
"report": "tests/golden/WBV2-P12-004/viewport-nonmesh-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P29-003/manifest.json",
"report": "tests/golden/WBV2-P29-003/implementation-report.json"
}
],
"positive": [
"curve",
"surface",
"font",
"volume",
"metaball",
"grease pencil"
],
"negative": [
"unsupported data",
"resource missing",
"malformed geometry"
],
"recovery": [
"save/reopen",
"resource disposal"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-viewport-nonmesh-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1101-001",
"phase": "1101",
"title": "verify_nodes_simulation_module",
"kind": "module",
"owner": "NODES_SIMULATION",
"dependsOn": [
"WBV2-P1101-000"
],
"parityId": "NODES_SIMULATION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-nodes_simulation",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1101-001.md",
"behavior": "Complete the NODES_SIMULATION module through its shared Blender Main primitives and aggregate case matrix.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "NODES_SIMULATION",
"sourceBacked": true,
"capabilities": [
"CAP-GEOMETRY-NODES",
"CAP-SIMULATION"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P13-002/manifest.json",
"report": "tests/golden/WBV2-P13-002/geometry-nodes-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P13-004/manifest.json",
"report": "tests/golden/WBV2-P13-004/advanced-domain-receipt-report.json"
}
],
"positive": [
"allowlisted node graph",
"physics manifest",
"stable hash"
],
"negative": [
"unsupported node",
"budget exceeded",
"stale revision"
],
"recovery": [
"save/reopen",
"cache disposal"
],
"commands": [
"npm --prefix web run test:geometry-node-main-reader",
"npm --prefix web run test:physics-main-reader"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1101-002",
"phase": "1101",
"title": "verify_asset_io_module",
"kind": "module",
"owner": "ASSET",
"dependsOn": [
"WBV2-P1101-001"
],
"parityId": "ASSET_IO",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-asset_io",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1101-002.md",
"behavior": "Complete the ASSET_IO module through its shared Blender Main primitives and aggregate case matrix.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "ASSET_IO",
"sourceBacked": true,
"capabilities": [
"CAP-ASSET-LINK-OVERRIDE-RELOAD",
"CAP-ASSET-CATALOG-MUTATION"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P11-003/manifest.json",
"report": "tests/golden/WBV2-P11-003/asset-link-override-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P10-003/manifest.json",
"report": "tests/golden/WBV2-P10-003/module-matrix-receipt-report.json"
}
],
"positive": [
"append",
"link",
"override",
"reload",
"asset catalog v2"
],
"negative": [
"missing source",
"ownership violation",
"hash drift",
"collision"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"IndexedDB restart"
],
"commands": [
"npm --prefix web run test:asset-catalog-v2",
"npm --prefix web run test:asset-catalog-migration",
"npm --prefix web run test:asset-catalog-negatives",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-asset-link-override-production.spec.ts tests/e2e/wbv2-asset-catalog-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1101-003",
"phase": "1101",
"title": "verify_sculpt_paint_module",
"kind": "module",
"owner": "SCULPT_PAINT",
"dependsOn": [
"WBV2-P1101-002"
],
"parityId": "SCULPT_PAINT",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-sculpt_paint",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1101-003.md",
"behavior": "Complete the SCULPT_PAINT module through its shared Blender Main primitives and aggregate case matrix.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "SCULPT_PAINT",
"sourceBacked": true,
"capabilities": [
"CAP-PAINT-ATTRIBUTES",
"CAP-SCULPT-PAINT"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P16-002/manifest.json",
"report": "tests/golden/WBV2-P16-002/paint-attributes-receipt-report.json"
}
],
"positive": [
"vertex colors",
"vertex weights",
"bounded sculpt stroke"
],
"negative": [
"mirror unverified",
"invalid patch",
"unsupported brush"
],
"recovery": [
"undo",
"redo",
"save/reopen"
],
"commands": [
"npm --prefix web run test:paint-roundtrip",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-paint-attributes-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1102-000",
"phase": "1102",
"title": "implement_ui_editor_module",
"kind": "module",
"owner": "EDITOR",
"dependsOn": [
"WBV2-P1101-003"
],
"parityId": "UI_EDITOR",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-ui_editor",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1102-000.md",
"behavior": "Complete the UI_EDITOR module through its shared Blender Main primitives and aggregate case matrix.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "UI_EDITOR",
"sourceBacked": true,
"capabilities": [
"CAP-UI-EDITOR"
],
"sourcePaths": [
"web/protocol/editor-workflow.ts",
"web/app/src/app/App.tsx",
"web/app/src/workers/web-engine.worker.ts"
],
"reuseReceipts": [],
"positive": [
"editor context",
"workspace",
"area/region"
],
"negative": [
"unsupported editor",
"invalid context"
],
"recovery": [
"worker restart",
"save/reopen"
],
"commands": [
"npm --prefix web run test:editor-main-reader",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/ui-editor-workflow-production.spec.ts",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1102-001",
"phase": "1102",
"title": "close_module_execution_gate",
"kind": "module",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P1102-000"
],
"parityId": "INVENTORY_GATE",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-inventory_gate",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1102-001.md",
"behavior": "Complete the INVENTORY_GATE module through its shared Blender Main primitives and aggregate case matrix.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "INVENTORY_GATE",
"sourceBacked": true,
"capabilities": [],
"sourcePaths": [
"tests/golden/WBV2-P0-002/parity-map.json",
"tests/golden/WBV2-P1100-000/module-execution-plan.json"
],
"reuseReceipts": [],
"positive": [
"aggregate module receipts",
"catalog hash"
],
"negative": [
"missing receipt",
"hash drift",
"false completion"
],
"recovery": [
"re-run affected module only"
],
"commands": [
"node tools/web/check-wbv2-module-execution.mjs",
"npm --prefix web run build"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1103-000",
"phase": "1103",
"title": "aggregate_object_operations_module",
"kind": "module",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P1102-001"
],
"parityId": "OBJECT_OPERATIONS",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-object_operations",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1103-000.md",
"behavior": "Aggregate the existing source-backed Object Main operations into one module and revalidate the Chromium operator matrix.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "OBJECT_OPERATIONS",
"sourceBacked": true,
"capabilities": [
"CAP-OBJECT-DUPLICATE",
"CAP-OBJECT-CREATE",
"CAP-OBJECT-PARENT",
"CAP-OBJECT-COLLECTION",
"CAP-OBJECT-RENAME",
"CAP-OBJECT-DELETE",
"CAP-OBJECT-TRANSFORM"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P17-002/manifest.json",
"report": "tests/golden/WBV2-P17-002/object-duplicate-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P18-002/manifest.json",
"report": "tests/golden/WBV2-P18-002/object-create-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P19-002/manifest.json",
"report": "tests/golden/WBV2-P19-002/object-parent-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P20-002/manifest.json",
"report": "tests/golden/WBV2-P20-002/collection-create-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P21-002/manifest.json",
"report": "tests/golden/WBV2-P21-002/object-rename-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P22-002/manifest.json",
"report": "tests/golden/WBV2-P22-002/object-delete-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P23-002/manifest.json",
"report": "tests/golden/WBV2-P23-002/object-transform-receipt-report.json"
}
],
"positive": [
"duplicate",
"create",
"parent",
"collection",
"rename",
"delete",
"transform apply"
],
"negative": [
"unknown object",
"invalid parent cycle",
"malformed transform"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"deterministic second run"
],
"commands": [
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-object-duplicate-production.spec.ts tests/e2e/wbv2-object-create-production.spec.ts tests/e2e/wbv2-object-parent-production.spec.ts tests/e2e/wbv2-collection-create-production.spec.ts tests/e2e/wbv2-object-rename-production.spec.ts tests/e2e/wbv2-object-delete-production.spec.ts tests/e2e/wbv2-object-transform-production.spec.ts",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1104-000",
"phase": "1104",
"title": "verify_compositor_sequencer_module",
"kind": "module",
"owner": "MEDIA",
"dependsOn": [
"WBV2-P1103-000"
],
"parityId": "COMPOSITOR_SEQUENCER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-compositor_sequencer",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1104-000.md",
"behavior": "Verify the source-backed compositor and sequencer module through golden, unsupported-gate and media recovery cases.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main or compositor mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "COMPOSITOR_SEQUENCER",
"sourceBacked": true,
"capabilities": [
"CAP-COMPOSITOR-NODE-GRAPH",
"CAP-COMPOSITOR-UNSUPPORTED-GATE",
"CAP-SEQUENCER-MEDIA-RECOVERY"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/compositor.ts",
"web/protocol/sequencer.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P29-003/manifest.json",
"report": "tests/golden/WBV2-P29-003/implementation-report.json"
}
],
"positive": [
"compositor node graph",
"sequencer still-image timeline",
"media cache contract"
],
"negative": [
"unsupported compositor node",
"invalid sequencer strip",
"stale media revision"
],
"recovery": [
"worker restart",
"save/reopen",
"media cache replay",
"movie codec blocked without READY receipt"
],
"commands": [
"npm --prefix web run test:compositor-node-golden",
"npm --prefix web run test:compositor-unsupported-gate",
"npm --prefix web run test:sequencer-main-reader",
"node --test web/tests/unit/sequencer-media-cache.test.mjs",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/smoke.spec.ts -g \"N-021 sequencer|real Blender 5.2 sequencer\"",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1105-000",
"phase": "1105",
"title": "verify_audio_particle_module",
"kind": "module",
"owner": "AUDIO_PARTICLE",
"dependsOn": [
"WBV2-P1104-000"
],
"parityId": "AUDIO_PARTICLE",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-audio_particle",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1105-000.md",
"behavior": "Verify Sound, Speaker and ParticleSettings mutations against authoritative Blender Main with explicit build capability gates.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven or a typed build capability blocker is recorded",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "AUDIO_PARTICLE",
"sourceBacked": true,
"capabilities": [
"CAP-SOUND-PROPERTIES",
"CAP-SPEAKER-PROPERTIES",
"CAP-PARTICLE-SETTINGS"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/protocol/io-media-commands.ts",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P33-001/manifest.json",
"report": "tests/golden/WBV2-P33-001/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P33-002/manifest.json",
"report": "tests/golden/WBV2-P33-002/implementation-report.json"
}
],
"positive": [
"Sound properties",
"Speaker properties",
"ParticleSettings properties"
],
"negative": [
"missing Main datablock",
"unsupported build feature",
"out-of-range property"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"worker restart"
],
"commands": [
"cmake --build build_web_blender6 --target web_engine -- -j8",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-audio-particle-production.spec.ts",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1106-000",
"phase": "1106",
"title": "verify_rig_animation_module",
"kind": "module",
"owner": "RIG",
"dependsOn": [
"WBV2-P1105-000"
],
"parityId": "RIG_ANIMATION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-rig_animation",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1106-000.md",
"behavior": "Verify armature pose, constraints and NLA animation through the existing Blender Main primitives.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "RIG_ANIMATION",
"sourceBacked": true,
"capabilities": [
"CAP-RIG-POSE",
"CAP-CONSTRAINTS",
"CAP-NLA-ANIMATION"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/protocol/nla.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P13-003/manifest.json",
"report": "tests/golden/WBV2-P13-003/rig-pose-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P13-004/manifest.json",
"report": "tests/golden/WBV2-P13-004/advanced-domain-receipt-report.json"
}
],
"positive": [
"armature pose",
"constraint edit",
"NLA stack"
],
"negative": [
"missing bone",
"invalid constraint influence",
"stale NLA revision"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"deterministic second run"
],
"commands": [
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-rig-pose-production.spec.ts",
"npm --prefix web run test:nla-operator",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1107-000",
"phase": "1107",
"title": "verify_modifier_system_module",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1106-000"
],
"parityId": "MODIFIER_SYSTEM",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_system",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1107-000.md",
"behavior": "Verify modifier stack visibility and bounded parameter mutation through authoritative Blender Main.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_SYSTEM",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER-STATE-MUTATION",
"CAP-MODIFIER-PARAMETER-EDIT",
"CAP-MODIFIER-STACK-READER"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/protocol/modifier-graph.ts",
"web/protocol/depsgraph.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P9-002/manifest.json",
"report": "tests/golden/WBV2-P9-002/modifier-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P11-002/manifest.json",
"report": "tests/golden/WBV2-P11-002/modifier-parameter-receipt-report.json"
}
],
"positive": [
"modifier visibility toggle",
"bounded DECIMATE parameter mutation",
"modifier stack evaluation reader"
],
"negative": [
"unknown modifier UUID",
"stale mesh revision",
"out-of-range parameter"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"deterministic second run"
],
"commands": [
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-production.spec.ts tests/e2e/wbv2-modifier-parameter-production.spec.ts",
"npm --prefix web run test:modifier-goldens",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1108-000",
"phase": "1108",
"title": "verify_nodes_graph_module",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1107-000"
],
"parityId": "NODES_GRAPH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-nodes_graph",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1108-000.md",
"behavior": "Verify Geometry Nodes graph identity, allowlisted evaluation, field budgets and unsupported graph retention.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive graph reader/evaluation evidence is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "NODES_GRAPH",
"sourceBacked": true,
"capabilities": [
"CAP-GEOMETRY-NODES-GRAPH",
"CAP-GEOMETRY-NODES-ALLOWLIST",
"CAP-GEOMETRY-NODES-FIELD-BUDGET"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/protocol/geometry-nodes.ts",
"web/protocol/geometry-node-commands.ts",
"web/protocol/depsgraph.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P13-002/manifest.json",
"report": "tests/golden/WBV2-P13-002/geometry-nodes-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P13-004/manifest.json",
"report": "tests/golden/WBV2-P13-004/advanced-domain-receipt-report.json"
}
],
"positive": [
"allowlisted graph identity",
"Blender depsgraph geometry evaluation",
"field materialization with exact domain cardinality"
],
"negative": [
"unsupported node graph",
"field budget overflow",
"stale or invalid graph command"
],
"recovery": [
"save/reopen",
"worker restart",
"graph retention after rejected command",
"deterministic second run"
],
"commands": [
"npm --prefix web run test:geometry-node-evaluator-golden",
"npm --prefix web run test:geometry-node-field-budget",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-geometry-nodes-production.spec.ts",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1109-000",
"phase": "1109",
"title": "verify_io_format_module",
"kind": "module",
"owner": "MEDIA",
"dependsOn": [
"WBV2-P1108-000"
],
"parityId": "IO_FORMAT",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-io_format",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1109-000.md",
"behavior": "Verify format capability routing, runtime receipts, recovery and fail-closed file UI gates.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive format routing/readiness evidence is proven",
"negative and recovery cases are proven",
"Chromium and deterministic recovery receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "IO_FORMAT",
"sourceBacked": true,
"capabilities": [
"CAP-IO-FORMAT-CAPABILITY-MATRIX",
"CAP-IO-FORMAT-RUNTIME-RECEIPTS",
"CAP-IO-FORMAT-RECOVERY",
"CAP-IO-FORMAT-UI-GATE"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/asset-library-io.ts",
"web/protocol/io-format-capability-matrix.ts",
"web/protocol/io-format-receipt-binding.ts",
"web/protocol/io-format-runtime-receipt.ts",
"web/protocol/io-format-recovery.ts",
"web/protocol/io-format-ui-gate.ts",
"web/protocol/glb-export.ts",
"web/protocol/glb-import.ts",
"web/protocol/nonmesh-export.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx"
],
"reuseReceipts": [],
"positive": [
"GLB export readiness",
"format runtime receipt inventory",
"declared .blend import route"
],
"negative": [
"unverified format route",
"cancelled or OOM operation",
"unsupported file extension"
],
"recovery": [
"worker restart",
"small operation recovery",
"deterministic receipt replay",
"fail-closed UI route"
],
"commands": [
"node tools/web/check-io-format-receipt-bindings.mjs",
"node tools/web/check-io-format-runtime-receipts.mjs",
"node tools/web/check-io-format-recovery.mjs",
"node tools/web/check-io-format-ui-gate.mjs",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/io-format-recovery.spec.ts tests/e2e/io-format-ui-gate.spec.ts",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1110-000",
"phase": "1110",
"title": "verify_render_pipeline_module",
"kind": "module",
"owner": "RENDER",
"dependsOn": [
"WBV2-P1109-000"
],
"parityId": "RENDER_PIPELINE",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-render_pipeline",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1110-000.md",
"behavior": "Verify render backend routing, explicit resource budgets and Blender reference comparison in Chromium.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive render/reference evidence is proven",
"negative and recovery cases are proven",
"Chromium and deterministic render receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "RENDER_PIPELINE",
"sourceBacked": true,
"capabilities": [
"CAP-RENDER-BACKEND-ROUTING",
"CAP-RENDER-RESOURCE-BUDGET",
"CAP-RENDER-REFERENCE-COMPARISON"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/render-routing.ts",
"web/protocol/render-budget.ts",
"web/protocol/render-capabilities.ts",
"web/protocol/render-image-comparison.ts",
"web/protocol/server-render-job.ts",
"web/app/src/three-adapter/render-routing.ts",
"web/app/src/three-adapter/render-image-comparison.ts",
"web/app/src/workers/viewport-render.worker.ts",
"web/app/src/app/App.tsx",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [],
"positive": [
"bounded local backend routing",
"reference render metrics",
"resource budget acceptance"
],
"negative": [
"unknown or unavailable backend",
"aggregate texture/light budget overflow",
"wrong composition reference"
],
"recovery": [
"retain previous texture set",
"offscreen renderer parity",
"worker restart",
"deterministic second render"
],
"commands": [
"npm --prefix web run test:render-resource-budget",
"npm --prefix web run test:render-routing",
"npm --prefix web run test:render-reference",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1111-000",
"phase": "1111",
"title": "verify_scripting_security_module",
"kind": "module",
"owner": "SCRIPTING",
"dependsOn": [
"WBV2-P1110-000"
],
"parityId": "SCRIPTING_SECURITY",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-scripting_security",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1111-000.md",
"behavior": "Verify script source Main reader, deny-by-default permission policy and sandbox isolation/recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive reader and policy evidence is proven",
"negative and recovery cases are proven",
"Chromium sandbox receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "SCRIPTING_SECURITY",
"sourceBacked": true,
"capabilities": [
"CAP-SCRIPT-MAIN-READER",
"CAP-SCRIPT-PERMISSION-POLICY",
"CAP-SCRIPT-SANDBOX-ISOLATION",
"CAP-SCRIPT-SANDBOX-RECOVERY"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/scene-ir.ts",
"web/protocol/scripting-platform.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/workers/script-permission-policy-test.worker.ts",
"web/app/src/workers/script-sandbox-isolation-test.worker.ts",
"web/app/src/workers/script-sandbox-recovery-test.worker.ts",
"web/app/src/testing/script-sandbox-recovery.ts",
"web/app/src/app/App.tsx"
],
"reuseReceipts": [],
"positive": [
"script source inventory reader",
"explicit READ_MAIN permission",
"new-generation recovery audit"
],
"negative": [
"autorun denied by default",
"undeclared permission",
"sandbox crash/timeout/late result"
],
"recovery": [
"worker restart",
"sandbox generation rollover",
"continuous audit chain",
"deterministic second run"
],
"commands": [
"npm --prefix web run test:script-main-reader",
"npm --prefix web run test:scripting-isolation",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/script-permission-policy.spec.ts tests/e2e/script-sandbox-isolation.spec.ts tests/e2e/script-sandbox-recovery.spec.ts",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1112-000",
"phase": "1112",
"title": "verify_animation_timeline_module",
"kind": "module",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1111-000"
],
"parityId": "ANIMATION_TIMELINE",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-animation_timeline",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1112-000.md",
"behavior": "Verify frame evaluation and NLA time mapping through the production Worker and Blender Main.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive frame/NLA evaluation is proven",
"negative and recovery cases are proven",
"Chromium and deterministic evaluation receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "ANIMATION_TIMELINE",
"sourceBacked": true,
"capabilities": [
"CAP-FRAME-EVALUATION",
"CAP-NLA-TIME-MAPPING",
"CAP-ANIMATION-SAVE-REOPEN"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/protocol/nla.ts",
"web/protocol/depsgraph.ts",
"web/protocol/scene-ir.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P13-004/manifest.json",
"report": "tests/golden/WBV2-P13-004/advanced-domain-receipt-report.json"
}
],
"positive": [
"frame 1/5/10 evaluation",
"NLA track and strip mapping",
"Blender depsgraph animation result"
],
"negative": [
"stale NLA revision",
"invalid strip topology",
"unsupported animation domain"
],
"recovery": [
"save/reopen",
"worker restart",
"deterministic repeated evaluation",
"preserve rejected stack"
],
"commands": [
"npm --prefix web run test:frame-evaluation",
"node tools/web/check-nla-evaluation-golden.mjs",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/nla-evaluation-golden.spec.ts",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1113-000",
"phase": "1113",
"title": "verify_shader_material_module",
"kind": "module",
"owner": "MATERIAL",
"dependsOn": [
"WBV2-P1112-000"
],
"parityId": "SHADER_MATERIAL",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-shader_material",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1113-000.md",
"behavior": "Verify bounded Shader graph compilation, stable compile keys and fail-closed pipeline recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Shader Main compilation is proven",
"negative and recovery cases are proven",
"Chromium and deterministic compile receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "SHADER_MATERIAL",
"sourceBacked": true,
"capabilities": [
"CAP-SHADER-GRAPH-COMPILER",
"CAP-SHADER-COMPILE-KEY",
"CAP-SHADER-FAIL-CLOSED-RECOVERY"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/protocol/shader-graph.ts",
"web/protocol/shader-graph-commands.ts",
"web/protocol/shader-compiler.ts",
"web/protocol/render-capabilities.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [],
"positive": [
"Principled/Image/Normal/Math graph compile",
"stable compile key",
"real Main shader material path"
],
"negative": [
"unknown shader node",
"graph cycle or duplicate link",
"unsupported renderer backend"
],
"recovery": [
"retain previous material after compile failure",
"worker restart",
"deterministic repeated compile",
"save/reopen material graph"
],
"commands": [
"npm --prefix web run test:shader-compile",
"npm --prefix web run test:shader-pipeline",
"npm --prefix web run test:shader-capability",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1114-000",
"phase": "1114",
"title": "verify_grease_pencil_module",
"kind": "module",
"owner": "DRAWING",
"dependsOn": [
"WBV2-P1113-000"
],
"parityId": "GREASE_PENCIL",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-grease_pencil",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1114-000.md",
"behavior": "Verify Grease Pencil layer/frame Main mutations, stable identity validation and roundtrip recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Grease Pencil Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "GREASE_PENCIL",
"sourceBacked": true,
"capabilities": [
"CAP-GREASE-PENCIL-LAYER-FRAME",
"CAP-GREASE-PENCIL-STROKE-READER",
"CAP-GREASE-PENCIL-ROUNDTRIP"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/scene-ir.ts",
"web/protocol/grease-pencil.ts",
"web/protocol/grease-pencil-reorder.ts",
"web/protocol/grease-pencil-selection.ts",
"web/protocol/grease-pencil-marquee.ts",
"web/app/src/app/App.tsx",
"web/app/src/three-adapter/grease-pencil.ts",
"web/app/src/three-adapter/viewport.ts",
"web/app/src/three-adapter/offscreen-viewport.ts",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [],
"positive": [
"create and reorder layer",
"insert and move frame",
"stable Grease Pencil drawing reader"
],
"negative": [
"forged drawing identity",
"occupied frame target",
"stale layer/frame revision"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"deterministic layer/frame replay"
],
"commands": [
"npm --prefix web run test:grease-pencil-reorder",
"npm --prefix web run test:grease-pencil",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1115-000",
"phase": "1115",
"title": "verify_curve_surface_editing_module",
"kind": "module",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P1114-000"
],
"parityId": "CURVE_SURFACE_EDITING",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-curve_surface_editing",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1115-000.md",
"behavior": "Verify Curve topology/handle edits, Surface topology and non-mesh/font roundtrip through Blender Main.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive non-mesh Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "CURVE_SURFACE_EDITING",
"sourceBacked": true,
"capabilities": [
"CAP-CURVE-TOPOLOGY-HANDLES",
"CAP-SURFACE-TOPOLOGY",
"CAP-NONMESH-FONT-ROUNDTRIP"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/web-engine.ts",
"web/protocol/nonmesh-geometry-commands.ts",
"web/protocol/curve-topology-editor.ts",
"web/protocol/non-mesh.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P12-004/manifest.json",
"report": "tests/golden/WBV2-P12-004/viewport-nonmesh-receipt-report.json"
}
],
"positive": [
"Curve control point and handle edit",
"Curve cyclic/topology operator",
"Surface and Font property mutation"
],
"negative": [
"invalid curve selection/domain",
"occupied or stale frame/topology target",
"malformed non-mesh property"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"deterministic multispline replay"
],
"commands": [
"npm --prefix web run test:curve-topology-operator",
"npm --prefix web run test:nonmesh-roundtrip",
"npm --prefix web run test:nonmesh-desktop-golden",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1116-000",
"phase": "1116",
"title": "verify_storage_recovery_module",
"kind": "module",
"owner": "STORAGE",
"dependsOn": [
"WBV2-P1115-000"
],
"parityId": "STORAGE_RECOVERY",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-storage_recovery",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1116-000.md",
"behavior": "Verify IndexedDB catalog migration/restart and OPFS asset preview deduplication, quarantine and reference GC.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive storage commit/recovery evidence is proven",
"negative and quarantine cases are proven",
"Chromium restart receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "STORAGE_RECOVERY",
"sourceBacked": true,
"capabilities": [
"CAP-INDEXEDDB-CATALOG-MIGRATION",
"CAP-OPFS-PREVIEW-COMMIT",
"CAP-OPFS-QUARANTINE-GC"
],
"sourcePaths": [
"web/protocol/storage.ts",
"web/protocol/storage-budget.ts",
"web/protocol/save-transaction.ts",
"web/protocol/recent-projects.ts",
"web/protocol/asset-preview.ts",
"web/protocol/asset-preview-decode.ts",
"web/app/src/storage/asset-catalog-indexeddb.ts",
"web/app/src/storage/asset-preview-opfs-commit.ts",
"web/app/src/storage/asset-preview-quarantine.ts",
"web/app/src/storage/asset-preview-reference-gc.ts",
"web/app/src/storage/opfs-files.ts",
"web/app/src/storage/migrations.ts",
"web/app/src/workers/storage.worker.ts",
"web/app/src/app/App.tsx"
],
"reuseReceipts": [],
"positive": [
"v1 to v2 catalog migration",
"page/Worker restart identity",
"content-addressed preview deduplication"
],
"negative": [
"partial catalog migration",
"corrupt preview quarantine",
"cross-project or non-final reference GC"
],
"recovery": [
"IndexedDB restart",
"OPFS commit replay",
"quarantine cleanup",
"deterministic reference reclamation"
],
"commands": [
"npm --prefix web run test:asset-catalog-restart",
"npm --prefix web run test:asset-preview-dedup",
"npm --prefix web run test:asset-preview-quarantine",
"npm --prefix web run test:asset-preview-reference-gc",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1117-000",
"phase": "1117",
"title": "verify_simulation_cache_module",
"kind": "module",
"owner": "SIMULATION",
"dependsOn": [
"WBV2-P1116-000"
],
"parityId": "SIMULATION_CACHE",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-simulation_cache",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1117-000.md",
"behavior": "Verify simulation cache identity, physics-family payload integrity, lifecycle recovery and deterministic LRU pruning.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive cache identity/lifecycle evidence is proven",
"negative integrity and budget cases are proven",
"Chromium restart and quarantine receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "SIMULATION_CACHE",
"sourceBacked": true,
"capabilities": [
"CAP-SIMULATION-CACHE-IDENTITY",
"CAP-PHYSICS-CACHE-INTEGRITY",
"CAP-SIMULATION-CACHE-RECOVERY"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/simulation-cache.ts",
"web/protocol/physics-simulation.ts",
"web/protocol/physics-cache-playback.ts",
"web/protocol/storage.ts",
"web/app/src/workers/storage.worker.ts",
"web/app/src/app/App.tsx"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P13-004/manifest.json",
"report": "tests/golden/WBV2-P13-004/advanced-domain-receipt-report.json"
}
],
"positive": [
"graph/source/revision cache identity",
"all physics-family frame hashes",
"verified playback lifecycle"
],
"negative": [
"source or payload hash drift",
"revision/range mismatch",
"cache byte/frame budget overflow"
],
"recovery": [
"cancel and cleanup",
"LRU prune with protected playback",
"corruption quarantine",
"worker restart"
],
"commands": [
"npm --prefix web run test:simulation-cache-identity",
"npm --prefix web run test:simulation-cache-lifecycle",
"npm --prefix web run test:physics-cache-family",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1118-000",
"phase": "1118",
"title": "verify_ui_input_interaction_module",
"kind": "module",
"owner": "EDITOR",
"dependsOn": [
"WBV2-P1117-000"
],
"parityId": "UI_INPUT_INTERACTION",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-ui_input_interaction",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1118-000.md",
"behavior": "Verify keyboard-only user actions, input mutex, IME/pointer state and responsive editor interaction under deployment CSP.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive keyboard Main mutation and save are proven",
"negative mutex/input cases are proven",
"Chromium accessibility and responsive receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "UI_INPUT_INTERACTION",
"sourceBacked": true,
"capabilities": [
"CAP-KEYBOARD-USER-ACTIONS",
"CAP-INPUT-MODAL-STATE",
"CAP-IME-SHORTCUT-GUARD",
"CAP-RESPONSIVE-CSP-UI"
],
"sourcePaths": [
"web/app/index.html",
"web/app/src/app/App.tsx",
"web/app/src/app/app-shell.css",
"web/app/src/workers/web-engine.worker.ts",
"web/protocol/user-action-state.ts",
"web/protocol/project-action-mutex.ts",
"web/protocol/ime-composition.ts",
"web/protocol/input-modal.ts",
"web/protocol/pointer-contract.ts",
"web/protocol/worker-fault.ts",
"web/tests/unit/user-action-state.test.mjs",
"web/tests/unit/project-action-mutex.test.mjs",
"web/tests/unit/ime-composition.test.mjs",
"web/tests/unit/input-modal.test.mjs",
"web/tests/unit/pointer-contract.test.mjs"
],
"reuseReceipts": [],
"positive": [
"keyboard-only Add Cube Main mutation",
"keyboard save/reopen and GLB export",
"responsive controls at desktop/mobile viewports"
],
"negative": [
"concurrent project action mutex",
"IME shortcut suppression",
"pointer cancel/touch modal cleanup"
],
"recovery": [
"worker restart",
"save interruption recovery",
"responsive layout preservation",
"deterministic repeated keyboard loop"
],
"commands": [
"node --test web/tests/unit/user-action-state.test.mjs web/tests/unit/project-action-mutex.test.mjs web/tests/unit/ime-composition.test.mjs web/tests/unit/input-modal.test.mjs web/tests/unit/pointer-contract.test.mjs",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/user-action-state.spec.ts tests/e2e/project-action-mutex.spec.ts tests/e2e/keyboard-accessibility.spec.ts tests/e2e/responsive-layout.spec.ts",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1119-000",
"phase": "1119",
"title": "verify_library_workflow_module",
"kind": "module",
"owner": "ASSET",
"dependsOn": [
"WBV2-P1118-000"
],
"parityId": "LIBRARY_WORKFLOW",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-library_workflow",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1119-000.md",
"behavior": "Verify append, link, override and reload library flows through authoritative Main with path and dependency safety gates.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive library Main mutation is proven",
"negative and recovery cases are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "LIBRARY_WORKFLOW",
"sourceBacked": true,
"capabilities": [
"CAP-LIBRARY-APPEND",
"CAP-LIBRARY-LINK",
"CAP-LIBRARY-OVERRIDE",
"CAP-LIBRARY-RELOAD-SAFETY"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/library-main-append.ts",
"web/protocol/library-linked-mutation.ts",
"web/protocol/library-linked-reload.ts",
"web/protocol/library-linked-missing.ts",
"web/protocol/library-override-writer.ts",
"web/protocol/library-override-freshness.ts",
"web/protocol/library-negative-cases.ts",
"web/protocol/library-operation-identity.ts",
"web/protocol/library-source-origin.ts",
"web/protocol/asset-path.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P11-003/manifest.json",
"report": "tests/golden/WBV2-P11-003/asset-link-override-receipt-report.json"
},
{
"manifest": "tests/golden/WBV2-P9-003/manifest.json",
"report": "tests/golden/WBV2-P9-003/asset-catalog-receipt-report.json"
}
],
"positive": [
"append object into Main",
"linked read-only object",
"local override and reload identity"
],
"negative": [
"missing library source",
"dependency/cross-library cycle",
"unsafe path or ownership mutation"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"deterministic library replay"
],
"commands": [
"npm --prefix web run test:library-main-append",
"npm --prefix web run test:library-link-chromium",
"npm --prefix web run test:library-override-chromium",
"npm --prefix web run test:library-negative-cases",
"npm --prefix web run test:library-path-security",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1120-000",
"phase": "1120",
"title": "verify_volume_nanovdb_module",
"kind": "module",
"owner": "MEDIA",
"dependsOn": [
"WBV2-P1119-000"
],
"parityId": "VOLUME_NANOVDB",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-volume_nanovdb",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1120-000.md",
"behavior": "Verify NanoVDB manifest, paged feedback, OPFS commit/restart and production viewport volume roundtrip.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive volume resource and viewport evidence is proven",
"negative and recovery cases are proven",
"Chromium OPFS/restart receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "VOLUME_NANOVDB",
"sourceBacked": true,
"capabilities": [
"CAP-NANOVDB-MANIFEST",
"CAP-NANOVDB-PAGED-FEEDBACK",
"CAP-NANOVDB-OPFS-RESTART",
"CAP-NANOVDB-VIEWPORT-ROUNDTRIP"
],
"sourcePaths": [
"web/protocol/volume-vdb.ts",
"web/protocol/nanovdb-page-feedback.ts",
"web/protocol/nanovdb-device-recovery.ts",
"web/protocol/storage.ts",
"web/app/src/volume/nanovdb-opfs.ts",
"web/app/src/volume/nanovdb-stream.ts",
"web/app/src/volume/nanovdb-viewport.ts",
"web/app/src/volume/nanovdb-float32.ts",
"web/app/src/render/nanovdb-volume-renderer.ts",
"web/app/src/workers/vdb-opfs-test.worker.ts",
"web/app/src/workers/storage.worker.ts",
"web/app/src/app/App.tsx"
],
"reuseReceipts": [],
"positive": [
"validated NanoVDB bundle manifest",
"content-addressed OPFS commit",
"main/offscreen production viewport volume"
],
"negative": [
"manifest/chunk hash mismatch",
"stale source binding",
"WebGPU/resource availability block"
],
"recovery": [
"OPFS Worker restart",
"paged feedback resume",
"quota/device loss cleanup",
"deterministic volume save/reopen"
],
"commands": [
"npm --prefix web run test:vdb-availability",
"npm --prefix web run test:vdb-native",
"npm --prefix web run test:nanovdb-page-feedback",
"npm --prefix web run test:nanovdb-opfs-restart",
"npm --prefix web run test:nanovdb-volume-roundtrip",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1121-000",
"phase": "1121",
"title": "verify_paint_stroke_module",
"kind": "module",
"owner": "SCULPT",
"dependsOn": [
"WBV2-P1120-000"
],
"parityId": "PAINT_STROKE",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-paint_stroke",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1121-000.md",
"behavior": "Verify paint pointer sessions, depth visibility and PBVH capability gates through the production Worker.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive paint Main transaction is proven",
"negative and recovery cases are proven",
"Chromium pointer/GPU receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "PAINT_STROKE",
"sourceBacked": true,
"capabilities": [
"CAP-PAINT-POINTER-SESSION",
"CAP-PAINT-DEPTH-VISIBILITY",
"CAP-PAINT-PBVH-GATE"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/protocol/sculpt.ts",
"web/protocol/paint.ts",
"web/protocol/paint-stroke-session.ts",
"web/protocol/paint-depth-visibility.ts",
"web/protocol/paint-pbvh-capability.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/three-adapter/paint-depth-visibility.ts",
"web/app/src/three-adapter/viewport.ts",
"web/app/src/three-adapter/offscreen-viewport.ts",
"web/app/src/app/App.tsx",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [],
"positive": [
"ordered paint pointer chunks",
"main/offscreen depth visibility",
"PBVH inventory capability query"
],
"negative": [
"stale/discontinuous pointer chunks",
"forged or over-budget depth samples",
"missing PBVH WASM entrypoint"
],
"recovery": [
"pointer cancel without Main mutation",
"undo step after paint commit",
"worker restart",
"deterministic capability replay"
],
"commands": [
"npm --prefix web run test:paint-stroke-session",
"npm --prefix web run test:paint-depth-visibility",
"npm --prefix web run test:paint-pbvh-capability",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1122-000",
"phase": "1122",
"title": "verify_engine_runtime_module",
"kind": "module",
"owner": "RUNTIME",
"dependsOn": [
"WBV2-P1121-000"
],
"parityId": "ENGINE_RUNTIME",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-engine_runtime",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1122-000.md",
"behavior": "Verify WebEngine variant manifest/selection, compiled WASM Main ABI and Worker crash recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive compiled WASM Main lifecycle is proven",
"negative variant/hash cases are proven",
"Chromium Worker restart receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "ENGINE_RUNTIME",
"sourceBacked": true,
"capabilities": [
"CAP-ENGINE-VARIANT-MANIFEST",
"CAP-ENGINE-WASM-MAIN-ABI",
"CAP-WORKER-CRASH-RECOVERY"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_api.h",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/CMakeLists.txt",
"web/protocol/engine-variant.ts",
"web/protocol/worker-fault.ts",
"web/protocol/save-transaction.ts",
"web/app/src/engine-client/engine-variant-bootstrap.ts",
"web/app/src/engine-client/browser-engine-variant-session.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/workers/storage.worker.ts",
"web/app/src/app/App.tsx",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [],
"positive": [
"single/pthread manifest binding",
"compiled WASM Main open/save lifecycle",
"engine and storage Worker recovery"
],
"negative": [
"malformed variant/resource declaration",
"mixed-version/hash mismatch",
"pthread unavailable fallback"
],
"recovery": [
"single-thread fallback",
"Worker crash restart",
"operation-log restore",
"deterministic repeated startup"
],
"commands": [
"npm --prefix web run test:engine-manifest-v2",
"npm --prefix web run test:engine-variant-selection",
"npm --prefix web run test:engine-variant-fallback",
"npm --prefix web run test:engine-variant-install",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-native-engine-production.spec.ts tests/e2e/worker-crash-recovery.spec.ts",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1123-000",
"phase": "1123",
"title": "repair_glb_roundtrip_dependency_module",
"kind": "module",
"owner": "MEDIA",
"dependsOn": [
"WBV2-P1122-000"
],
"parityId": "GLB_ROUNDTRIP_REPAIR",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-glb_roundtrip_repair",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1123-000.md",
"behavior": "Repair the standalone GLB checker dependency chain and verify mesh/non-mesh Blender roundtrip plus Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive GLB and non-mesh roundtrip are proven",
"negative and recovery cases are proven",
"Chromium save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "GLB_ROUNDTRIP_REPAIR",
"sourceBacked": true,
"capabilities": [
"CAP-GLB-MESH-ROUNDTRIP",
"CAP-GLB-NONMESH-ROUNDTRIP",
"CAP-GLB-CHROMIUM-RECOVERY"
],
"sourcePaths": [
"tools/web/check-glb-blender-roundtrip.mjs",
"tools/web/check-nonmesh-glb-blender-roundtrip.mjs",
"tools/web/blender-check-glb-roundtrip.py",
"web/protocol/glb-export.ts",
"web/protocol/glb-import.ts",
"web/protocol/nonmesh-export.ts",
"web/protocol/nonmesh-binary.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx"
],
"reuseReceipts": [],
"positive": [
"mesh/material/skin/animation GLB roundtrip",
"Curve/Surface/Font/Metaball non-mesh mapping",
"desktop GLB Main persistence in Chromium"
],
"negative": [
"sparse or oversized GLB",
"external URI/extension rejection",
"non-mesh export loss gate"
],
"recovery": [
"cancel without publishing output",
"Worker restart",
"OPFS quota retains old asset",
"deterministic Blender roundtrip"
],
"commands": [
"npm --prefix web run test:glb-blender-roundtrip",
"npm --prefix web run test:nonmesh-glb-blender-roundtrip",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/glb-negative-cases.spec.ts tests/e2e/glb-recovery.spec.ts tests/e2e/glb-main-persistence.spec.ts",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1124-000",
"phase": "1124",
"title": "record_historical_hash_drift_module",
"kind": "module",
"owner": "PROVENANCE",
"dependsOn": [
"WBV2-P1123-000"
],
"parityId": "HISTORICAL_HASH_DRIFT",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-historical_hash_drift",
"gate": "EVIDENCE",
"card": "docs/tasks/WBV2-P1124-000.md",
"behavior": "Record legacy M12 artifact hash drift without re-signing historical manifests or changing the immutable inventory.",
"outputs": [
"drift report",
"module receipt",
"manifest",
"status"
],
"acceptance": [
"original and observed hashes are recorded",
"provenance remains BLOCKED_SOURCE_LOST where bytes cannot be restored",
"historical manifests and inventory remain unchanged",
"deterministic drift evidence is reproducible",
"no full-family parity claim"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "HISTORICAL_HASH_DRIFT",
"sourceBacked": true,
"capabilities": [
"CAP-HISTORICAL-HASH-AUDIT",
"CAP-PROVENANCE-SOURCE-LOST-GATE"
],
"sourcePaths": [
"tools/web/check-m12-manifest-drift.mjs",
"tests/golden/corrective/rehydration/M12-manifest-sha-drift.json",
"tests/golden/WBV2-P0-002/parity-map.json"
],
"reuseReceipts": [],
"positive": [
"84 drift entries captured",
"43 affected artifact paths indexed",
"immutable inventory binding preserved"
],
"negative": [
"missing original bytes",
"attempted historical re-signing",
"inventory mutation"
],
"recovery": [
"deterministic report rerun",
"source cache can restore original bytes later",
"new capability manifests reference drift evidence only"
],
"commands": [
"node tools/web/check-m12-manifest-drift.mjs --write",
"node tools/web/check-m12-manifest-drift.mjs",
"node tools/web/check-wbv2-module-execution.mjs"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1125-000",
"phase": "1125",
"title": "repair_geometry_nodes_allowlist_module",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1124-000"
],
"parityId": "GEOMETRY_NODES_ALLOWLIST_REPAIR",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-geometry_nodes_allowlist_repair",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1125-000.md",
"behavior": "Persist Geometry Nodes graph overrides in Web-safe Main storage and align allowlist assertions with real materialization behavior.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"supported graph Main materialization is proven",
"unsupported graph remains rejected without mutation",
"save/reopen graph retention is exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "GEOMETRY_NODES_ALLOWLIST_REPAIR",
"sourceBacked": true,
"capabilities": [
"CAP-GEOMETRY-NODES-MAIN-PERSISTENCE",
"CAP-GEOMETRY-NODES-ALLOWLIST-CONSISTENCY",
"CAP-GEOMETRY-NODES-SAVE-REOPEN"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/geometry-nodes.ts",
"web/protocol/geometry-node-commands.ts",
"web/protocol/web-engine.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/tests/e2e/geometry-node-allowlist.spec.ts",
"web/tests/e2e/wbv2-geometry-nodes-production.spec.ts",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [],
"positive": [
"allowlisted graph materializes into Main",
"Scene IDProperty graph override persists",
"save/reopen retains graph identity/hash"
],
"negative": [
"unsupported simulation node",
"invalid graph schema",
"missing node/link endpoint"
],
"recovery": [
"rejected graph leaves baseline unchanged",
"undo/redo graph override",
"save/reopen",
"deterministic second run"
],
"commands": [
"cmake --build build_web_blender6 --target web_engine -- -j8",
"npm --prefix web run test:geometry-node-allowlist",
"npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-geometry-nodes-production.spec.ts",
"npm --prefix web run test:geometry-node-field-budget",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1126-000",
"phase": "1126",
"title": "verify_grease_pencil_viewport_module",
"kind": "module",
"owner": "DRAWING",
"dependsOn": [
"WBV2-P1125-000"
],
"parityId": "GREASE_PENCIL_VIEWPORT",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-grease_pencil_viewport",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1126-000.md",
"behavior": "Verify Grease Pencil 2D/3D selection and marquee integration on both viewport backends using an isolated Chromium port.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"2D and 3D selection revisions converge",
"main-thread and Offscreen marquee are exact",
"stale/foreign selection cases remain fail-closed",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "GREASE_PENCIL_VIEWPORT",
"sourceBacked": true,
"capabilities": [
"CAP-GREASE-PENCIL-SELECTION-REVISION",
"CAP-GREASE-PENCIL-MARQUEE-MAIN",
"CAP-GREASE-PENCIL-MARQUEE-OFFSCREEN"
],
"sourcePaths": [
"web/protocol/grease-pencil-selection.ts",
"web/protocol/grease-pencil-marquee.ts",
"web/app/src/app/App.tsx",
"web/app/src/three-adapter/grease-pencil.ts",
"web/app/src/three-adapter/viewport.ts",
"web/app/src/three-adapter/offscreen-viewport.ts",
"web/app/src/workers/viewport-render.worker.ts"
],
"reuseReceipts": [],
"positive": [
"2D canvas selection revision",
"main-thread 3D marquee selection",
"OffscreenCanvas 3D marquee selection"
],
"negative": [
"stale selection revision",
"foreign drawing identity",
"duplicate or forged point candidate"
],
"recovery": [
"selection convergence across backends",
"worker viewport restart",
"deterministic repeated marquee",
"preserve Main revision"
],
"commands": [
"WEB_TEST_PORT=5331 npm --prefix web run test:e2e -- --workers=1 tests/e2e/grease-pencil-selection.spec.ts tests/e2e/grease-pencil-marquee.spec.ts",
"node --test web/tests/unit/grease-pencil-selection.test.mjs web/tests/unit/grease-pencil-marquee.test.mjs",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1127-000",
"phase": "1127",
"title": "verify_tracking_mask_module",
"kind": "module",
"owner": "TRACKING",
"dependsOn": [
"WBV2-P1126-000"
],
"parityId": "TRACKING_MASK",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-tracking_mask",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1127-000.md",
"behavior": "Verify Mask reader, editable point raycast/marquee and tracking capability gates through Chromium.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Mask reader and interaction evidence is proven",
"negative solve/resource cases are proven",
"Chromium stable IDs and recovery receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "TRACKING_MASK",
"sourceBacked": true,
"capabilities": [
"CAP-MASK-MAIN-READER",
"CAP-MASK-POINT-RAYCAST",
"CAP-TRACKING-SOLVE-GATE"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/tracking-mask.ts",
"web/protocol/scene-ir.ts",
"web/app/src/tracking/MaskSelection.ts",
"web/app/src/app/App.tsx",
"web/app/src/three-adapter/viewport.ts",
"web/app/src/three-adapter/offscreen-viewport.ts",
"web/tests/e2e/smoke.spec.ts"
],
"reuseReceipts": [],
"positive": [
"Mask layers and splines reader",
"editable Mask point raycast",
"N-022 tracking marker/mask gate"
],
"negative": [
"foreign mask point identity",
"missing resource binding",
"camera solve unavailable"
],
"recovery": [
"main/offscreen marquee parity",
"worker restart",
"deterministic stable IDs",
"preserve source Main on blocked solve"
],
"commands": [
"npm --prefix web run test:mask-main-reader",
"WEB_TEST_PORT=5340 npm --prefix web run test:e2e -- --workers=1 tests/e2e/smoke.spec.ts -g \"N-022 tracking|real Blender 5.2 Mask\"",
"npm --prefix web run typecheck"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1128-000",
"phase": "1128",
"title": "verify_ffmpeg_movie_codec_module",
"kind": "module",
"owner": "MEDIA",
"dependsOn": [
"WBV2-P1127-000"
],
"parityId": "SEQUENCER_MOVIE_CODEC",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "module-sequencer_movie_codec",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1128-000.md",
"behavior": "Use a local ffmpeg.wasm Worker fallback for movie probing and proxy-frame extraction when Chromium HTML media decoding is unavailable.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and core-resource hashes are bound",
"positive MP4 probe and RGBA frame are proven",
"corrupt and source-identity cases are rejected",
"AbortSignal cancellation leaves no live Worker",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "SEQUENCER_MOVIE_CODEC",
"sourceBacked": true,
"capabilities": [
"CAP-FFMPEG-WASM-MOVIE-PROBE",
"CAP-FFMPEG-WASM-PROXY-FRAME",
"CAP-MOVIE-CODEC-RECOVERY"
],
"sourcePaths": [
"web/package.json",
"web/package-lock.json",
"web/protocol/sequencer.ts",
"web/app/src/sequencer/SequencerCodecProbe.ts",
"web/app/src/sequencer/FFmpegMovieProbe.ts",
"web/app/src/sequencer/ffmpeg-movie-probe.worker.ts",
"web/app/src/sequencer/SequencerMediaProxyCache.ts",
"web/app/src/vendor/ffmpeg/ffmpeg-core.js",
"web/app/src/vendor/ffmpeg/ffmpeg-core.wasm",
"web/app/public/vendor/ffmpeg/ffmpeg-core.js",
"web/app/public/vendor/ffmpeg/ffmpeg-core.wasm",
"third_party/ffmpeg.wasm/package.json",
"third_party/ffmpeg.wasm/README.md",
"web/tests/e2e/ffmpeg-movie-probe-production.spec.ts"
],
"reuseReceipts": [],
"positive": [
"browser decode fallback to ffmpeg.wasm",
"16x16 MP4 metadata probe",
"8x8 RGBA proxy frame extraction"
],
"negative": [
"corrupt movie payload",
"source SHA mismatch",
"ffmpeg runtime unavailable"
],
"recovery": [
"AbortSignal cancellation",
"Worker termination after response",
"cache manifest identity binding",
"deterministic repeated probe"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5342 npm --prefix web run test:e2e -- --workers=1 tests/e2e/ffmpeg-movie-probe-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1129-000",
"phase": "1129",
"title": "authorize_scene_settings_module",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1128-000"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1129",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1129-000.md",
"behavior": "Authorize one source-backed Core Scene Graph settings module after the terminal P1128 module epoch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1128 evidence remains hash-bound",
"existing receipts are reused",
"inventory remains immutable",
"one source-backed module is active"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"commands": [
"node tools/web/check-execution-control-plane.mjs"
]
},
{
"id": "WBV2-P1129-001",
"phase": "1129",
"title": "verify_scene_settings_module",
"kind": "module",
"owner": "CORE_SCENE",
"dependsOn": [
"WBV2-P1129-000"
],
"parityId": "CORE_SCENE_GRAPH_SETTINGS",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-core_scene_graph_settings",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1129-001.md",
"behavior": "Verify the existing Blender Main scene compositor, performance and sampling setting transactions as one aggregate module.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutations are proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen receipts are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "CORE_SCENE_GRAPH_SETTINGS",
"sourceBacked": true,
"capabilities": [
"CAP-SCENE-COMPOSITOR-SETTINGS",
"CAP-SCENE-PERFORMANCE-SETTINGS",
"CAP-SCENE-SAMPLING-SETTINGS"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/tests/e2e/wbv2-scene-settings-production.spec.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P65-002/manifest.json",
"report": "tests/golden/WBV2-P65-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P66-002/manifest.json",
"report": "tests/golden/WBV2-P66-002/implementation-report.json"
},
{
"manifest": "tests/golden/WBV2-P67-002/manifest.json",
"report": "tests/golden/WBV2-P67-002/implementation-report.json"
}
],
"positive": [
"compositor device/precision mutation",
"performance thread/persistence mutation",
"sampling filter/dither mutation"
],
"negative": [
"invalid sampling range",
"unknown scene target",
"malformed property set"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"deterministic scene settings snapshot"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5344 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-scene-settings-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1130-000",
"phase": "1130",
"title": "authorize_editor_view2d_module",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1129-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1130",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1130-000.md",
"behavior": "Authorize one source-backed UI editor View2D reader/protocol module after the P1129 scene settings module.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1129 evidence remains hash-bound",
"P1102 editor workflow source remains unchanged",
"inventory remains immutable",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1130-001",
"phase": "1130",
"title": "verify_editor_view2d_module",
"kind": "module",
"owner": "EDITOR",
"dependsOn": [
"WBV2-P1130-000"
],
"parityId": "UI_EDITOR_VIEW2D_STATE",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-ui_editor_view2d_state",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1130-001.md",
"behavior": "Preserve Blender Graph/Dope Sheet View2D cur and mask state through the Web editor protocol without changing the existing editor workflow parser.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive reader state is proven",
"negative no-publish and recovery are proven",
"Chromium and save/reopen compatibility are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "UI_EDITOR_VIEW2D_STATE",
"sourceBacked": true,
"capabilities": [
"CAP-EDITOR-VIEW2D-CUR",
"CAP-EDITOR-VIEW2D-MASK",
"CAP-EDITOR-VIEW2D-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/editor-view2d.ts",
"web/app/src/workers/editor-view2d-test.worker.ts",
"web/app/src/app/App.tsx",
"web/tests/e2e/ui-editor-view2d-production.spec.ts"
],
"reuseReceipts": [],
"positive": [
"Graph main-region View2D cur retention",
"Graph main-region pixel mask retention",
"reader/protocol exact state"
],
"negative": [
"inverted View2D bounds",
"malformed mask range",
"missing View2D payload"
],
"recovery": [
"immutable base editor workflow",
"worker termination",
"deterministic repeated parse",
"save/reopen reader compatibility"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5346 npm --prefix web run test:e2e -- --workers=1 tests/e2e/ui-editor-view2d-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1131-000",
"phase": "1131",
"title": "authorize_curve_topology_module",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1130-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1131",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1131-000.md",
"behavior": "Authorize one source-backed Curve topology editor module after the P1130 View2D module.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1130 evidence remains hash-bound",
"Curve topology source and protocol are present",
"inventory remains immutable",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1131-001",
"phase": "1131",
"title": "verify_curve_topology_module",
"kind": "module",
"owner": "EDITOR",
"dependsOn": [
"WBV2-P1131-000"
],
"parityId": "CURVE_TOPOLOGY_EDITOR",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-curve_topology_editor",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1131-001.md",
"behavior": "Verify the Blender Curve TOGGLE_CYCLIC topology transaction through the existing Main, protocol, Worker and frontend path.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "CURVE_TOPOLOGY_EDITOR",
"sourceBacked": true,
"capabilities": [
"CAP-CURVE-TOPOLOGY-TOGGLE-CYCLIC",
"CAP-CURVE-TOPOLOGY-GATE",
"CAP-CURVE-TOPOLOGY-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/editors/curve/curve_ops.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"web/protocol/curve-topology-editor.ts",
"web/app/src/workers/curve-topology-contract-test.worker.ts",
"web/app/src/app/App.tsx",
"web/tests/e2e/curve-topology-contract.spec.ts",
"web/tests/e2e/curve-topology-operator.spec.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"positive": [
"TOGGLE_CYCLIC Main mutation",
"operator gate exposes only verified capability",
"save/reopen preserves cyclic spline state"
],
"negative": [
"unknown curve operator",
"stale revision claim",
"selection and payload budget overflow"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"worker termination and deterministic contract parse"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5347 npm --prefix web run test:e2e -- --workers=1 tests/e2e/curve-topology-contract.spec.ts tests/e2e/curve-topology-operator.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1132-000",
"phase": "1132",
"title": "authorize_curve_handle_module",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1131-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1132",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1132-000.md",
"behavior": "Authorize one source-backed Curve handle gizmo module after the P1131 topology module.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1131 evidence remains hash-bound",
"Curve handle source and protocol are present",
"inventory remains immutable",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1132-001",
"phase": "1132",
"title": "verify_curve_handle_module",
"kind": "module",
"owner": "EDITOR",
"dependsOn": [
"WBV2-P1132-000"
],
"parityId": "CURVE_HANDLE_GIZMO",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-curve_handle_gizmo",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1132-001.md",
"behavior": "Verify Curve handle position edits through Blender Main, protocol, Worker, renderer preview and frontend gizmo.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "CURVE_HANDLE_GIZMO",
"sourceBacked": true,
"capabilities": [
"CAP-CURVE-HANDLE-MAIN",
"CAP-CURVE-HANDLE-GIZMO-PREVIEW",
"CAP-CURVE-HANDLE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"web/protocol/nonmesh-interaction.ts",
"web/app/src/workers/nonmesh-interaction-test.worker.ts",
"web/app/src/app/App.tsx",
"web/app/src/three-adapter/nonmesh.ts",
"web/app/src/three-adapter/viewport.ts",
"web/app/src/three-adapter/offscreen-viewport.ts",
"web/tests/e2e/wbv2-curve-handle-production.spec.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"positive": [
"Curve handle position Main mutation",
"local handle gizmo preview",
"save/reopen preserves handle state"
],
"negative": [
"invalid handle identity",
"stale base revision",
"malformed handle position"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"Worker termination and deterministic preview"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5348 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-curve-handle-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1133-000",
"phase": "1133",
"title": "authorize_curve_splines_module",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1132-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1133",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1133-000.md",
"behavior": "Authorize one source-backed Curve spline transaction module after the P1132 handle module.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1132 evidence remains hash-bound",
"Curve spline source and protocol are present",
"inventory remains immutable",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1133-001",
"phase": "1133",
"title": "verify_curve_splines_module",
"kind": "module",
"owner": "EDITOR",
"dependsOn": [
"WBV2-P1133-000"
],
"parityId": "CURVE_SPLINES_TRANSACTION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-curve_splines_transaction",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1133-001.md",
"behavior": "Verify complete Curve spline replacement through Blender Main, protocol, Worker and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "CURVE_SPLINES_TRANSACTION",
"sourceBacked": true,
"capabilities": [
"CAP-CURVE-SPLINES-MAIN",
"CAP-CURVE-SPLINES-RECOVERY",
"CAP-CURVE-SPLINES-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/tests/e2e/wbv2-curve-splines-production.spec.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"positive": [
"complete Curve spline Main transaction",
"POLY/BEZIER descriptor retention",
"save/reopen preserves spline state"
],
"negative": [
"invalid spline offsets",
"stale base revision",
"mismatched handle payload"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"deterministic binary-geometry transaction"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5349 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-curve-splines-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1134-000",
"phase": "1134",
"title": "authorize_surface_topology_module",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1133-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1134",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1134-000.md",
"behavior": "Authorize one source-backed Surface topology transaction module after the P1133 Curve spline module.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1133 evidence remains hash-bound",
"Surface topology source and protocol are present",
"inventory remains immutable",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1134-001",
"phase": "1134",
"title": "verify_surface_topology_module",
"kind": "module",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P1134-000"
],
"parityId": "SURFACE_TOPOLOGY_TRANSACTION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-surface_topology_transaction",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1134-001.md",
"behavior": "Verify Surface NURBS topology replacement through Blender Main, protocol, Worker and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "SURFACE_TOPOLOGY_TRANSACTION",
"sourceBacked": true,
"capabilities": [
"CAP-SURFACE-TOPOLOGY-MAIN",
"CAP-SURFACE-NURBS-BOUNDS",
"CAP-SURFACE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/tests/e2e/wbv2-surface-topology-production.spec.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"positive": [
"Surface topology Main transaction",
"NURBS dimensions and weights retention",
"save/reopen preserves surface state"
],
"negative": [
"invalid surface dimensions",
"stale base revision",
"control grid budget mismatch"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"deterministic surface transaction"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5350 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-surface-topology-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1135-000",
"phase": "1135",
"title": "authorize_font_body_module",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1134-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1135",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1135-000.md",
"behavior": "Authorize one source-backed Font body transaction module after the P1134 Surface topology module.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1134 evidence remains hash-bound",
"Font body source and protocol are present",
"inventory remains immutable",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1135-001",
"phase": "1135",
"title": "verify_font_body_module",
"kind": "module",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P1135-000"
],
"parityId": "FONT_BODY_TRANSACTION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-font_body_transaction",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1135-001.md",
"behavior": "Verify Font body replacement through Blender Main, protocol, Worker and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "FONT_BODY_TRANSACTION",
"sourceBacked": true,
"capabilities": [
"CAP-FONT-BODY-MAIN",
"CAP-FONT-BODY-RECOVERY",
"CAP-FONT-BODY-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/tests/e2e/wbv2-font-body-production.spec.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"positive": [
"Font body Main mutation",
"UTF-8 text retention",
"save/reopen preserves text"
],
"negative": [
"unknown Font data ID",
"body byte budget overflow",
"malformed body payload"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"Worker termination and deterministic text state"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5351 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-font-body-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1136-000",
"phase": "1136",
"title": "authorize_font_properties_module",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1135-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1136",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1136-000.md",
"behavior": "Authorize one source-backed Font properties transaction module after the P1135 Font body module.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1135 evidence remains hash-bound",
"Font property source and protocol are present",
"inventory remains immutable",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1136-001",
"phase": "1136",
"title": "verify_font_properties_module",
"kind": "module",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P1136-000"
],
"parityId": "FONT_PROPERTIES_TRANSACTION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-font_properties_transaction",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1136-001.md",
"behavior": "Verify Font property replacement through Blender Main, protocol, Worker and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "FONT_PROPERTIES_TRANSACTION",
"sourceBacked": true,
"capabilities": [
"CAP-FONT-PROPERTIES-MAIN",
"CAP-FONT-PROPERTIES-RECOVERY",
"CAP-FONT-PROPERTIES-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/tests/e2e/wbv2-font-properties-production.spec.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"positive": [
"Font property Main mutation",
"bounded alignment/extrude fields",
"save/reopen preserves properties"
],
"negative": [
"unknown Font data ID",
"invalid alignment enum",
"out-of-range numeric property"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"Worker termination and deterministic property state"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5352 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-font-properties-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1137-000",
"phase": "1137",
"title": "authorize_metaball_elements_module",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1136-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1137",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1137-000.md",
"behavior": "Authorize one source-backed Metaball element transaction module after the P1136 Font properties module.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1136 evidence remains hash-bound",
"Metaball element source and protocol are present",
"inventory remains immutable",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1137-001",
"phase": "1137",
"title": "verify_metaball_elements_module",
"kind": "module",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P1137-000"
],
"parityId": "METABALL_ELEMENTS_TRANSACTION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-metaball_elements_transaction",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1137-001.md",
"behavior": "Verify Metaball element replacement through Blender Main, protocol, Worker and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "METABALL_ELEMENTS_TRANSACTION",
"sourceBacked": true,
"capabilities": [
"CAP-METABALL-ELEMENTS-MAIN",
"CAP-METABALL-ELEMENTS-RECOVERY",
"CAP-METABALL-ELEMENTS-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/tests/e2e/wbv2-metaball-elements-production.spec.ts"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1101-000/manifest.json",
"report": "tests/golden/WBV2-P1101-000/module-receipt.json"
}
],
"positive": [
"Metaball element Main mutation",
"bounded position/radius/scale retention",
"save/reopen preserves elements"
],
"negative": [
"unknown Metaball data ID",
"invalid radius",
"element count topology mismatch"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"Worker termination and deterministic element state"
],
"commands": [
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5353 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-metaball-elements-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1138-000",
"phase": "1138",
"title": "authorize_text_source_module",
"kind": "enabling",
"owner": "SCRIPTING",
"dependsOn": [
"WBV2-P1137-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1138",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1138-000.md",
"behavior": "Authorize a source-backed Text datablock mutation after the P1137 Metaball module.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1137 evidence remains hash-bound",
"ID_TXT is registered for WITH_WEB",
"inventory remains source-derived",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1138-001",
"phase": "1138",
"title": "verify_text_source_module",
"kind": "module",
"owner": "SCRIPTING",
"dependsOn": [
"WBV2-P1138-000"
],
"parityId": "TEXT_SOURCE_TRANSACTION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-text_source_transaction",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1138-001.md",
"behavior": "Verify Text source replacement through Blender Main, protocol, Worker and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "TEXT_SOURCE_TRANSACTION",
"sourceBacked": true,
"capabilities": [
"CAP-TEXT-SOURCE-MAIN",
"CAP-TEXT-SOURCE-RECOVERY",
"CAP-TEXT-SOURCE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/blenkernel/intern/idtype.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/tests/e2e/wbv2-text-source-production.spec.ts",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1137-001/manifest.json",
"report": "tests/golden/WBV2-P1137-001/module-receipt.json"
}
],
"positive": [
"Text source Main mutation",
"ID_TXT registration in WITH_WEB",
"save/reopen preserves source"
],
"negative": [
"unknown Text data ID",
"source over 1 MiB",
"linked/read-only Text"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"Worker termination and deterministic source state"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5353 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-text-source-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1139-000",
"phase": "1139",
"title": "authorize_texture_properties_module",
"kind": "enabling",
"owner": "TEXTURE",
"dependsOn": [
"WBV2-P1138-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1139",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1139-000.md",
"behavior": "Authorize a source-backed Texture property mutation module after P1138 Text.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1138 evidence remains hash-bound",
"ID_TE is registered for WITH_WEB",
"inventory remains source-derived",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1139-001",
"phase": "1139",
"title": "verify_texture_properties_module",
"kind": "module",
"owner": "TEXTURE",
"dependsOn": [
"WBV2-P1139-000"
],
"parityId": "TEXTURE_PROPERTIES_TRANSACTION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-texture_properties_transaction",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1139-001.md",
"behavior": "Verify Texture property replacement through Blender Main, protocol, Worker and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main mutation is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "TEXTURE_PROPERTIES_TRANSACTION",
"sourceBacked": true,
"capabilities": [
"CAP-TEXTURE-PROPERTIES-MAIN",
"CAP-TEXTURE-PROPERTIES-RECOVERY",
"CAP-TEXTURE-PROPERTIES-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/blenkernel/intern/idtype.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"web/protocol/web-engine.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/app/App.tsx",
"web/tests/e2e/wbv2-texture-properties-production.spec.ts",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1138-001/manifest.json",
"report": "tests/golden/WBV2-P1138-001/module-receipt.json"
}
],
"positive": [
"Texture property Main mutation",
"ID_TE registration in WITH_WEB",
"save/reopen preserves properties"
],
"negative": [
"unknown Texture data ID",
"noise depth outside Blender bounds",
"non-finite numeric property"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"Worker termination and deterministic property state"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5353 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-texture-properties-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1140-000",
"phase": "1140",
"title": "authorize_action_group_reader_module",
"kind": "enabling",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1139-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1140",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1140-000.md",
"behavior": "Authorize a source-backed ActionGroup reader and recovery module after P1139 Texture.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1139 evidence remains hash-bound",
"ActionGroup has explicit Blender source mapping",
"inventory remains source-derived",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1140-001",
"phase": "1140",
"title": "verify_action_group_reader_module",
"kind": "module",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1140-000"
],
"parityId": "ACTION_GROUP_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-action_group_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1140-001.md",
"behavior": "Verify ActionGroup metadata through Blender Main reader, protocol and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main reader is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "ACTION_GROUP_READER",
"sourceBacked": true,
"capabilities": [
"CAP-ACTION-GROUP-READER",
"CAP-ACTION-GROUP-RECOVERY",
"CAP-ACTION-GROUP-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/scene-ir.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/tests/e2e/wbv2-action-group-reader-production.spec.ts",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1112-000/manifest.json",
"report": "tests/golden/WBV2-P1112-000/module-receipt.json"
}
],
"positive": [
"ActionGroup Main reader exposes group and expanded metadata",
"three grouped location F-Curves remain grouped",
"save/reopen preserves group metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"missing animation target is fail-closed",
"unsupported group payload is not synthesized"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"worker termination and deterministic group state"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5356 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-action-group-reader-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1141-000",
"phase": "1141",
"title": "authorize_action_pose_markers_module",
"kind": "enabling",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1140-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1141",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1141-000.md",
"behavior": "Authorize a source-backed ActionPoseMarkers reader and recovery module after P1140.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1140 evidence remains hash-bound",
"ActionPoseMarkers has explicit Blender source mapping",
"inventory remains source-derived",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1141-001",
"phase": "1141",
"title": "verify_action_pose_markers_reader_module",
"kind": "module",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1141-000"
],
"parityId": "ACTION_POSE_MARKERS_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-action_pose_markers_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1141-001.md",
"behavior": "Verify ActionPoseMarkers metadata through Blender Main reader, protocol and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main reader is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "ACTION_POSE_MARKERS_READER",
"sourceBacked": true,
"capabilities": [
"CAP-ACTION-POSE-MARKERS-READER",
"CAP-ACTION-POSE-MARKERS-RECOVERY",
"CAP-ACTION-POSE-MARKERS-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/scene-ir.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/tests/e2e/wbv2-action-pose-markers-production.spec.ts",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1140-001/manifest.json",
"report": "tests/golden/WBV2-P1140-001/module-receipt.json"
}
],
"positive": [
"ActionPoseMarkers Main reader exposes marker names and frames",
"three Blender pose markers remain ordered",
"save/reopen preserves marker metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"missing animation target is fail-closed",
"non-finite marker frame is not synthesized"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"worker termination and deterministic marker state"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5359 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-action-pose-markers-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1142-000",
"phase": "1142",
"title": "authorize_fcurve_sample_reader_module",
"kind": "enabling",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1141-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1142",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1142-000.md",
"behavior": "Authorize a source-backed FCurveSample reader and recovery module after P1141.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1141 evidence remains hash-bound",
"FCurveSample has explicit Blender source mapping",
"inventory remains source-derived",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1142-001",
"phase": "1142",
"title": "verify_fcurve_sample_reader_module",
"kind": "module",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1142-000"
],
"parityId": "FCURVE_SAMPLE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-fcurve_sample_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1142-001.md",
"behavior": "Verify FCurveSample data through Blender Main reader, protocol and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main reader is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "FCURVE_SAMPLE_READER",
"sourceBacked": true,
"capabilities": [
"CAP-FCURVE-SAMPLE-READER",
"CAP-FCURVE-SAMPLE-RECOVERY",
"CAP-FCURVE-SAMPLE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/scene-ir.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/tests/e2e/wbv2-fcurve-sample-production.spec.ts",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1141-001/manifest.json",
"report": "tests/golden/WBV2-P1141-001/module-receipt.json"
}
],
"positive": [
"FCurveSample Main reader exposes sampled source and values",
"four native FPoint samples remain ordered",
"save/reopen preserves sampled data"
],
"negative": [
"malformed blend is rejected without Main mutation",
"missing sampled payload is fail-closed",
"non-finite sampled value is not synthesized"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"worker termination and deterministic sampled state"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5365 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-fcurve-sample-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1143-000",
"phase": "1143",
"title": "authorize_fcurve_modifier_reader_module",
"kind": "enabling",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1142-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1143",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1143-000.md",
"behavior": "Authorize a source-backed FCurve modifier reader and recovery module after P1142.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1142 evidence remains hash-bound",
"FCurveModifiers has explicit Blender source mapping",
"inventory remains source-derived",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1143-001",
"phase": "1143",
"title": "verify_fcurve_modifier_reader_module",
"kind": "module",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1143-000"
],
"parityId": "FCURVE_MODIFIER_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-fcurve_modifier_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1143-001.md",
"behavior": "Verify FCurve modifier metadata through Blender Main reader, protocol and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main reader is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "FCURVE_MODIFIER_READER",
"sourceBacked": true,
"capabilities": [
"CAP-FCURVE-MODIFIER-READER",
"CAP-FCURVE-MODIFIER-RECOVERY",
"CAP-FCURVE-MODIFIER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/scene-ir.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/tests/e2e/wbv2-fcurve-modifier-production.spec.ts",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1142-001/manifest.json",
"report": "tests/golden/WBV2-P1142-001/module-receipt.json"
}
],
"positive": [
"FCurveModifiers Main reader exposes native modifier stack",
"FModifierCycles preserves type/name/flags/influence",
"save/reopen preserves modifier metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"missing modifier payload is fail-closed",
"unsupported modifier type is not synthesized"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"worker termination and deterministic modifier state"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5368 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-fcurve-modifier-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1144-000",
"phase": "1144",
"title": "authorize_driver_reader_module",
"kind": "enabling",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1143-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1144",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1144-000.md",
"behavior": "Authorize a source-backed Driver reader and recovery module after P1143.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"P1143 evidence remains hash-bound",
"Driver has explicit Blender source mapping",
"inventory remains source-derived",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1144-001",
"phase": "1144",
"title": "verify_driver_reader_module",
"kind": "module",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1144-000"
],
"parityId": "DRIVER_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-driver_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1144-001.md",
"behavior": "Verify Driver metadata through Blender Main reader, protocol and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main reader is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "DRIVER_READER",
"sourceBacked": true,
"capabilities": [
"CAP-DRIVER-READER",
"CAP-DRIVER-RECOVERY",
"CAP-DRIVER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/protocol/scene-ir.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/tests/e2e/wbv2-driver-reader-production.spec.ts",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1143-001/manifest.json",
"report": "tests/golden/WBV2-P1143-001/module-receipt.json"
}
],
"positive": [
"AnimData driver list is read from Blender Main",
"Driver preserves scripted expression and variables",
"save/reopen preserves driver metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"missing driver target is fail-closed",
"non-finite driver influence is not synthesized"
],
"recovery": [
"undo",
"redo",
"save/reopen",
"worker termination and deterministic driver state"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-driver-reader-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1145-000",
"phase": "1145",
"title": "authorize_corrective_smooth_reader_module",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1144-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1145",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1145-000.md",
"behavior": "Authorize a source-backed Corrective Smooth reader/recovery module after the Driver reader.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"Corrective Smooth has explicit Blender source mapping",
"inventory remains source-derived",
"one source-backed module is active"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1145-001",
"phase": "1145",
"title": "verify_corrective_smooth_reader_module",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1145-000"
],
"parityId": "CORRECTIVE_SMOOTH_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-corrective_smooth_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1145-001.md",
"behavior": "Verify Corrective Smooth modifier type and RNA metadata through Blender Main reader, protocol and Chromium recovery.",
"outputs": [
"module receipt",
"negative matrix",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"positive Main reader is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "CORRECTIVE_SMOOTH_READER",
"sourceBacked": true,
"capabilities": [
"CAP-CORRECTIVE-SMOOTH-READER",
"CAP-CORRECTIVE-SMOOTH-RECOVERY",
"CAP-CORRECTIVE-SMOOTH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_correctivesmooth.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts",
"tests/files/web/modifier_corrective_smooth_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"positive": [
"Corrective Smooth type is read from Blender Main",
"RNA metadata is preserved",
"save/reopen preserves modifier metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported modifier data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts"
],
"fullFamilyParity": false
}
},
{
"id": "WBV2-P1146-000",
"phase": "1146",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1145-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1146",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1146-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1146-001",
"phase": "1146",
"title": "verify modifier reader batch",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1146-000"
],
"parityId": "MODIFIER_READER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_reader_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1146-001.md",
"behavior": "Verify the MODIFIER_READER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_READER_BATCH",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH-READER",
"CAP-MODIFIER_READER_BATCH-RECOVERY",
"CAP-MODIFIER_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_datatransfer.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_dynamicpaint.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_explode.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_fluid.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fluid.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-production.spec.ts",
"tests/files/web/modifier_reader_batch_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"positive": [
"MOD_datatransfer type is read from Blender Main",
"MOD_dynamicpaint type is read from Blender Main",
"MOD_explode type is read from Blender Main",
"MOD_fluid type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-reader-batch-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1146-001/modifier-reader-batch-production.json"
],
"coverageBindings": [
"modifier-source:MOD_datatransfer",
"modifier-source:MOD_dynamicpaint",
"modifier-source:MOD_explode",
"modifier-source:MOD_fluid",
"rna-struct:DataTransferModifier",
"rna-struct:DynamicPaintModifier",
"rna-struct:ExplodeModifier",
"rna-struct:FluidModifier",
"rna-struct:FluidDomainSettings"
]
}
},
{
"id": "WBV2-P1147-000",
"phase": "1147",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1146-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1147",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1147-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1147-001",
"phase": "1147",
"title": "verify modifier reader batch two",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1147-000"
],
"parityId": "MODIFIER_READER_BATCH_TWO",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_reader_batch_two",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1147-001.md",
"behavior": "Verify the MODIFIER_READER_BATCH_TWO batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_READER_BATCH_TWO",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH_TWO-READER",
"CAP-MODIFIER_READER_BATCH_TWO-RECOVERY",
"CAP-MODIFIER_READER_BATCH_TWO-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_laplaciandeform.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_laplaciansmooth.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_mask.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_shrinkwrap.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts",
"tests/files/web/modifier_reader_batch_two_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"positive": [
"MOD_laplaciandeform type is read from Blender Main",
"MOD_laplaciansmooth type is read from Blender Main",
"MOD_mask type is read from Blender Main",
"MOD_mesh_to_volume type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1147-001/modifier-reader-batch-production.json"
],
"coverageBindings": [
"modifier-source:MOD_laplaciandeform",
"modifier-source:MOD_laplaciansmooth",
"modifier-source:MOD_mask",
"modifier-source:MOD_shrinkwrap",
"rna-struct:LaplacianDeformModifier",
"rna-struct:LaplacianSmoothModifier",
"rna-struct:MaskModifier",
"rna-struct:ShrinkwrapModifier"
]
}
},
{
"id": "WBV2-P1148-000",
"phase": "1148",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1147-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1148",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1148-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1148-001",
"phase": "1148",
"title": "verify modifier reader batch three",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1148-000"
],
"parityId": "MODIFIER_READER_BATCH_THREE",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_reader_batch_three",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1148-001.md",
"behavior": "Verify the MODIFIER_READER_BATCH_THREE batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_READER_BATCH_THREE",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH_THREE-READER",
"CAP-MODIFIER_READER_BATCH_THREE-RECOVERY",
"CAP-MODIFIER_READER_BATCH_THREE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_remesh.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_skin.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weighted_normal.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_warp.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts",
"tests/files/web/modifier_reader_batch_three_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"positive": [
"MOD_remesh type is read from Blender Main",
"MOD_skin type is read from Blender Main",
"MOD_weighted_normal type is read from Blender Main",
"MOD_warp type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1148-001 WBV2_BATCH_FIXTURE=tests/files/web/modifier_reader_batch_three_scene.blend WBV2_BATCH_TYPES='[\"REMESH\",\"SKIN\",\"WEIGHTED_NORMAL\",\"WARP\"]' WBV2_BATCH_UNITS='[\"modifier-source:MOD_remesh\",\"modifier-source:MOD_skin\",\"modifier-source:MOD_weighted_normal\",\"modifier-source:MOD_warp\",\"rna-struct:RemeshModifier\",\"rna-struct:SkinModifier\",\"rna-struct:WeightedNormalModifier\",\"rna-struct:WarpModifier\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1148-001/modifier-reader-batch-production.json"
],
"coverageBindings": [
"modifier-source:MOD_remesh",
"modifier-source:MOD_skin",
"modifier-source:MOD_weighted_normal",
"modifier-source:MOD_warp",
"rna-struct:RemeshModifier",
"rna-struct:SkinModifier",
"rna-struct:WeightedNormalModifier",
"rna-struct:WarpModifier"
]
}
},
{
"id": "WBV2-P1149-000",
"phase": "1149",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1148-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1149",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1149-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1149-001",
"phase": "1149",
"title": "verify modifier reader batch four",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1149-000"
],
"parityId": "MODIFIER_READER_BATCH_FOUR",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_reader_batch_four",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1149-001.md",
"behavior": "Verify the MODIFIER_READER_BATCH_FOUR batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_READER_BATCH_FOUR",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH_FOUR-READER",
"CAP-MODIFIER_READER_BATCH_FOUR-RECOVERY",
"CAP-MODIFIER_READER_BATCH_FOUR-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_uvproject.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_uvwarp.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_normal_edit.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_volume_to_mesh.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts",
"tests/files/web/modifier_reader_batch_four_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"positive": [
"MOD_uvproject type is read from Blender Main",
"MOD_uvwarp type is read from Blender Main",
"MOD_volume_displace type is read from Blender Main",
"MOD_volume_to_mesh type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1149-001 WBV2_BATCH_FIXTURE=tests/files/web/modifier_reader_batch_four_scene.blend WBV2_BATCH_TYPES='[\"UV_PROJECT\",\"UV_WARP\",\"NORMAL_EDIT\",\"VOLUME_TO_MESH\"]' WBV2_BATCH_UNITS='[\"modifier-source:MOD_uvproject\",\"modifier-source:MOD_uvwarp\",\"modifier-source:MOD_normal_edit\",\"modifier-source:MOD_volume_to_mesh\",\"rna-struct:UVProjectModifier\",\"rna-struct:UVWarpModifier\",\"rna-struct:NormalEditModifier\",\"rna-struct:VolumeToMeshModifier\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1149-001/modifier-reader-batch-production.json"
],
"coverageBindings": [
"modifier-source:MOD_uvproject",
"modifier-source:MOD_uvwarp",
"modifier-source:MOD_normal_edit",
"modifier-source:MOD_volume_to_mesh",
"rna-struct:UVProjectModifier",
"rna-struct:UVWarpModifier",
"rna-struct:NormalEditModifier",
"rna-struct:VolumeToMeshModifier"
]
}
},
{
"id": "WBV2-P1150-000",
"phase": "1150",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1149-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1150",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1150-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1150-001",
"phase": "1150",
"title": "verify modifier reader batch five",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1150-000"
],
"parityId": "MODIFIER_READER_BATCH_FIVE",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_reader_batch_five",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1150-001.md",
"behavior": "Verify the MODIFIER_READER_BATCH_FIVE batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_READER_BATCH_FIVE",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH_FIVE-READER",
"CAP-MODIFIER_READER_BATCH_FIVE-RECOVERY",
"CAP-MODIFIER_READER_BATCH_FIVE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshsequencecache.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_multires.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_ocean.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts",
"tests/files/web/modifier_reader_batch_five_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"positive": [
"MOD_meshcache type is read from Blender Main",
"MOD_meshsequencecache type is read from Blender Main",
"MOD_multires type is read from Blender Main",
"MOD_ocean type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1150-001 WBV2_BATCH_FIXTURE=tests/files/web/modifier_reader_batch_five_scene.blend WBV2_BATCH_TYPES='[\"MESH_CACHE\",\"MESH_SEQUENCE_CACHE\",\"MULTIRES\",\"OCEAN\"]' WBV2_BATCH_UNITS='[\"modifier-source:MOD_meshcache\",\"modifier-source:MOD_meshsequencecache\",\"modifier-source:MOD_multires\",\"modifier-source:MOD_ocean\",\"rna-struct:MeshCacheModifier\",\"rna-struct:MeshSequenceCacheModifier\",\"rna-struct:MultiresModifier\",\"rna-struct:OceanModifier\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1150-001/modifier-reader-batch-production.json"
],
"coverageBindings": [
"modifier-source:MOD_meshcache",
"modifier-source:MOD_meshsequencecache",
"modifier-source:MOD_multires",
"modifier-source:MOD_ocean",
"rna-struct:MeshCacheModifier",
"rna-struct:MeshSequenceCacheModifier",
"rna-struct:MultiresModifier",
"rna-struct:OceanModifier"
]
}
},
{
"id": "WBV2-P1151-000",
"phase": "1151",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1150-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1151",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1151-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1151-001",
"phase": "1151",
"title": "verify Grease Pencil modifier reader batch",
"kind": "module",
"owner": "DRAWING",
"dependsOn": [
"WBV2-P1151-000"
],
"parityId": "GREASE_PENCIL_MODIFIER_READER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-grease_pencil_modifier_reader_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1151-001.md",
"behavior": "Verify the GREASE_PENCIL_MODIFIER_READER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "GREASE_PENCIL_MODIFIER_READER_BATCH",
"sourceBacked": true,
"capabilities": [
"CAP-GREASE_PENCIL_MODIFIER_READER_BATCH-READER",
"CAP-GREASE_PENCIL_MODIFIER_READER_BATCH-RECOVERY",
"CAP-GREASE_PENCIL_MODIFIER_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_armature.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_array.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_build.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_color.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_dash.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_envelope.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_hook.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_lattice.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_length.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_mirror.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_multiply.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_noise.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_offset.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_opacity.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_outline.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_shrinkwrap.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_simplify.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_smooth.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_subdiv.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_texture.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_thickness.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_time.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_tint.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_weight_angle.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_weight_proximity.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts",
"tests/files/web/modifier_grease_pencil_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"positive": [
"MOD_grease_pencil_armature type is read from Blender Main",
"MOD_grease_pencil_array type is read from Blender Main",
"MOD_grease_pencil_build type is read from Blender Main",
"MOD_grease_pencil_color type is read from Blender Main",
"MOD_grease_pencil_dash type is read from Blender Main",
"MOD_grease_pencil_envelope type is read from Blender Main",
"MOD_grease_pencil_hook type is read from Blender Main",
"MOD_grease_pencil_lattice type is read from Blender Main",
"MOD_grease_pencil_length type is read from Blender Main",
"MOD_grease_pencil_mirror type is read from Blender Main",
"MOD_grease_pencil_multiply type is read from Blender Main",
"MOD_grease_pencil_noise type is read from Blender Main",
"MOD_grease_pencil_offset type is read from Blender Main",
"MOD_grease_pencil_opacity type is read from Blender Main",
"MOD_grease_pencil_outline type is read from Blender Main",
"MOD_grease_pencil_shrinkwrap type is read from Blender Main",
"MOD_grease_pencil_simplify type is read from Blender Main",
"MOD_grease_pencil_smooth type is read from Blender Main",
"MOD_grease_pencil_subdiv type is read from Blender Main",
"MOD_grease_pencil_texture type is read from Blender Main",
"MOD_grease_pencil_thickness type is read from Blender Main",
"MOD_grease_pencil_time type is read from Blender Main",
"MOD_grease_pencil_tint type is read from Blender Main",
"MOD_grease_pencil_weight_angle type is read from Blender Main",
"MOD_grease_pencil_weight_proximity type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1151-001 WBV2_BATCH_FIXTURE=tests/files/web/modifier_grease_pencil_scene.blend WBV2_BATCH_TYPES='[\"GREASE_PENCIL_ARMATURE\",\"GREASE_PENCIL_ARRAY\",\"GREASE_PENCIL_BUILD\",\"GREASE_PENCIL_COLOR\",\"GREASE_PENCIL_DASH\",\"GREASE_PENCIL_ENVELOPE\",\"GREASE_PENCIL_HOOK\",\"GREASE_PENCIL_LATTICE\",\"GREASE_PENCIL_LENGTH\",\"GREASE_PENCIL_MIRROR\",\"GREASE_PENCIL_MULTIPLY\",\"GREASE_PENCIL_NOISE\",\"GREASE_PENCIL_OFFSET\",\"GREASE_PENCIL_OPACITY\",\"GREASE_PENCIL_OUTLINE\",\"GREASE_PENCIL_SHRINKWRAP\",\"GREASE_PENCIL_SIMPLIFY\",\"GREASE_PENCIL_SMOOTH\",\"GREASE_PENCIL_SUBDIV\",\"GREASE_PENCIL_TEXTURE\",\"GREASE_PENCIL_THICKNESS\",\"GREASE_PENCIL_TIME\",\"GREASE_PENCIL_TINT\",\"GREASE_PENCIL_VERTEX_WEIGHT_ANGLE\",\"GREASE_PENCIL_VERTEX_WEIGHT_PROXIMITY\"]' WBV2_BATCH_UNITS='[\"modifier-source:MOD_grease_pencil_armature\",\"modifier-source:MOD_grease_pencil_array\",\"modifier-source:MOD_grease_pencil_build\",\"modifier-source:MOD_grease_pencil_color\",\"modifier-source:MOD_grease_pencil_dash\",\"modifier-source:MOD_grease_pencil_envelope\",\"modifier-source:MOD_grease_pencil_hook\",\"modifier-source:MOD_grease_pencil_lattice\",\"modifier-source:MOD_grease_pencil_length\",\"modifier-source:MOD_grease_pencil_mirror\",\"modifier-source:MOD_grease_pencil_multiply\",\"modifier-source:MOD_grease_pencil_noise\",\"modifier-source:MOD_grease_pencil_offset\",\"modifier-source:MOD_grease_pencil_opacity\",\"modifier-source:MOD_grease_pencil_outline\",\"modifier-source:MOD_grease_pencil_shrinkwrap\",\"modifier-source:MOD_grease_pencil_simplify\",\"modifier-source:MOD_grease_pencil_smooth\",\"modifier-source:MOD_grease_pencil_subdiv\",\"modifier-source:MOD_grease_pencil_texture\",\"modifier-source:MOD_grease_pencil_thickness\",\"modifier-source:MOD_grease_pencil_time\",\"modifier-source:MOD_grease_pencil_tint\",\"modifier-source:MOD_grease_pencil_weight_angle\",\"modifier-source:MOD_grease_pencil_weight_proximity\",\"rna-struct:GreasePencilArmatureModifier\",\"rna-struct:GreasePencilArrayModifier\",\"rna-struct:GreasePencilBuildModifier\",\"rna-struct:GreasePencilColorModifier\",\"rna-struct:GreasePencilEnvelopeModifier\",\"rna-struct:GreasePencilHookModifier\",\"rna-struct:GreasePencilLatticeModifier\",\"rna-struct:GreasePencilLengthModifier\",\"rna-struct:GreasePencilMirrorModifier\",\"rna-struct:GreasePencilMultiplyModifier\",\"rna-struct:GreasePencilNoiseModifier\",\"rna-struct:GreasePencilOffsetModifier\",\"rna-struct:GreasePencilOpacityModifier\",\"rna-struct:GreasePencilOutlineModifier\",\"rna-struct:GreasePencilShrinkwrapModifier\",\"rna-struct:GreasePencilSimplifyModifier\",\"rna-struct:GreasePencilSmoothModifier\",\"rna-struct:GreasePencilSubdivModifier\",\"rna-struct:GreasePencilTextureModifier\",\"rna-struct:GreasePencilTimeModifier\",\"rna-struct:GreasePencilTintModifier\",\"rna-struct:GreasePencilWeightAngleModifier\",\"rna-struct:GreasePencilWeightProximityModifier\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-reader-batch-two-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1151-001/modifier-reader-batch-production.json"
],
"coverageBindings": [
"modifier-source:MOD_grease_pencil_armature",
"modifier-source:MOD_grease_pencil_array",
"modifier-source:MOD_grease_pencil_build",
"modifier-source:MOD_grease_pencil_color",
"modifier-source:MOD_grease_pencil_dash",
"modifier-source:MOD_grease_pencil_envelope",
"modifier-source:MOD_grease_pencil_hook",
"modifier-source:MOD_grease_pencil_lattice",
"modifier-source:MOD_grease_pencil_length",
"modifier-source:MOD_grease_pencil_mirror",
"modifier-source:MOD_grease_pencil_multiply",
"modifier-source:MOD_grease_pencil_noise",
"modifier-source:MOD_grease_pencil_offset",
"modifier-source:MOD_grease_pencil_opacity",
"modifier-source:MOD_grease_pencil_outline",
"modifier-source:MOD_grease_pencil_shrinkwrap",
"modifier-source:MOD_grease_pencil_simplify",
"modifier-source:MOD_grease_pencil_smooth",
"modifier-source:MOD_grease_pencil_subdiv",
"modifier-source:MOD_grease_pencil_texture",
"modifier-source:MOD_grease_pencil_thickness",
"modifier-source:MOD_grease_pencil_time",
"modifier-source:MOD_grease_pencil_tint",
"modifier-source:MOD_grease_pencil_weight_angle",
"modifier-source:MOD_grease_pencil_weight_proximity",
"rna-struct:GreasePencilArmatureModifier",
"rna-struct:GreasePencilArrayModifier",
"rna-struct:GreasePencilBuildModifier",
"rna-struct:GreasePencilColorModifier",
"rna-struct:GreasePencilEnvelopeModifier",
"rna-struct:GreasePencilHookModifier",
"rna-struct:GreasePencilLatticeModifier",
"rna-struct:GreasePencilLengthModifier",
"rna-struct:GreasePencilMirrorModifier",
"rna-struct:GreasePencilMultiplyModifier",
"rna-struct:GreasePencilNoiseModifier",
"rna-struct:GreasePencilOffsetModifier",
"rna-struct:GreasePencilOpacityModifier",
"rna-struct:GreasePencilOutlineModifier",
"rna-struct:GreasePencilShrinkwrapModifier",
"rna-struct:GreasePencilSimplifyModifier",
"rna-struct:GreasePencilSmoothModifier",
"rna-struct:GreasePencilSubdivModifier",
"rna-struct:GreasePencilTextureModifier",
"rna-struct:GreasePencilTimeModifier",
"rna-struct:GreasePencilTintModifier",
"rna-struct:GreasePencilWeightAngleModifier",
"rna-struct:GreasePencilWeightProximityModifier"
]
}
},
{
"id": "WBV2-P1152-000",
"phase": "1152",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1151-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1152",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1152-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1152-001",
"phase": "1152",
"title": "verify modifier reader batch six",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1152-000"
],
"parityId": "MODIFIER_READER_BATCH_SIX",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_reader_batch_six",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1152-001.md",
"behavior": "Verify the MODIFIER_READER_BATCH_SIX batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_READER_BATCH_SIX",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_READER_BATCH_SIX-READER",
"CAP-MODIFIER_READER_BATCH_SIX-RECOVERY",
"CAP-MODIFIER_READER_BATCH_SIX-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_mesh_to_volume.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_particleinstance.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_surface.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgmix.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgproximity.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts",
"tests/files/web/generated/M16-GAP-00081-modifier-MESH_TO_VOLUME.blend",
"tests/files/web/generated/M16-GAP-00087-modifier-PARTICLE_INSTANCE.blend",
"tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend",
"tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend",
"tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend",
"tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"positive": [
"MOD_mesh_to_volume type is read from Blender Main",
"MOD_particleinstance type is read from Blender Main",
"MOD_surface type is read from Blender Main",
"MOD_weightvgedit type is read from Blender Main",
"MOD_weightvgmix type is read from Blender Main",
"MOD_weightvgproximity type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1152-001 WBV2_BATCH_FIXTURES='[\"tests/files/web/generated/M16-GAP-00081-modifier-MESH_TO_VOLUME.blend\",\"tests/files/web/generated/M16-GAP-00087-modifier-PARTICLE_INSTANCE.blend\",\"tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend\",\"tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend\",\"tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend\",\"tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend\"]' WBV2_BATCH_TYPES='[\"MESH_TO_VOLUME\",\"PARTICLE_INSTANCE\",\"SURFACE\",\"VERTEX_WEIGHT_EDIT\",\"VERTEX_WEIGHT_MIX\",\"VERTEX_WEIGHT_PROXIMITY\"]' WBV2_BATCH_UNITS='[\"modifier-source:MOD_mesh_to_volume\",\"modifier-source:MOD_particleinstance\",\"modifier-source:MOD_surface\",\"modifier-source:MOD_weightvgedit\",\"modifier-source:MOD_weightvgmix\",\"modifier-source:MOD_weightvgproximity\",\"rna-struct:MeshToVolumeModifier\",\"rna-struct:ParticleInstanceModifier\",\"rna-struct:SurfaceModifier\",\"rna-struct:VertexWeightEditModifier\",\"rna-struct:VertexWeightMixModifier\",\"rna-struct:VertexWeightProximityModifier\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json"
],
"coverageBindings": [
"modifier-source:MOD_mesh_to_volume",
"modifier-source:MOD_particleinstance",
"modifier-source:MOD_surface",
"modifier-source:MOD_weightvgedit",
"modifier-source:MOD_weightvgmix",
"modifier-source:MOD_weightvgproximity",
"rna-struct:MeshToVolumeModifier",
"rna-struct:ParticleInstanceModifier",
"rna-struct:SurfaceModifier",
"rna-struct:VertexWeightEditModifier",
"rna-struct:VertexWeightMixModifier",
"rna-struct:VertexWeightProximityModifier"
]
}
},
{
"id": "WBV2-P1153-000",
"phase": "1153",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1152-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1153",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1153-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1153-001",
"phase": "1153",
"title": "reuse verified modifier receipts for shared source utilities",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1153-000"
],
"parityId": "MODIFIER_SOURCE_DEPENDENCY_REUSE",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_source_dependency_reuse",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1153-001.md",
"behavior": "Verify the MODIFIER_SOURCE_DEPENDENCY_REUSE batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_SOURCE_DEPENDENCY_REUSE",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_SOURCE_DEPENDENCY_REUSE-READER",
"CAP-MODIFIER_SOURCE_DEPENDENCY_REUSE-RECOVERY",
"CAP-MODIFIER_SOURCE_DEPENDENCY_REUSE-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_util.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache_mdd.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache_pc2.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache_util.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvg_util.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_array.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc",
"tests/golden/WBV2-P1151-001/modifier-reader-batch-production.json",
"tests/golden/WBV2-P1150-001/modifier-reader-batch-production.json",
"tests/golden/WBV2-P1150-001/modifier-reader-batch-production.json",
"tests/golden/WBV2-P1150-001/modifier-reader-batch-production.json",
"tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"tools/web/reuse-wbv2-source-dependencies.mjs"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1150-001/manifest.json",
"report": "tests/golden/WBV2-P1150-001/module-receipt.json"
},
{
"manifest": "tests/golden/WBV2-P1151-001/manifest.json",
"report": "tests/golden/WBV2-P1151-001/module-receipt.json"
},
{
"manifest": "tests/golden/WBV2-P1152-001/manifest.json",
"report": "tests/golden/WBV2-P1152-001/module-receipt.json"
}
],
"dependencyReuse": [
{
"unitId": "modifier-source:MOD_grease_pencil_util",
"representativeUnitId": "modifier-source:MOD_grease_pencil_array",
"proofSource": "blender-5.2.0/source/blender/modifiers/intern/MOD_grease_pencil_array.cc",
"marker": "MOD_grease_pencil_util.hh",
"productionEvidence": "tests/golden/WBV2-P1151-001/modifier-reader-batch-production.json"
},
{
"unitId": "modifier-source:MOD_meshcache_mdd",
"representativeUnitId": "modifier-source:MOD_meshcache",
"proofSource": "blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"marker": "MOD_meshcache_read_mdd_times",
"productionEvidence": "tests/golden/WBV2-P1150-001/modifier-reader-batch-production.json"
},
{
"unitId": "modifier-source:MOD_meshcache_pc2",
"representativeUnitId": "modifier-source:MOD_meshcache",
"proofSource": "blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"marker": "MOD_meshcache_read_pc2_times",
"productionEvidence": "tests/golden/WBV2-P1150-001/modifier-reader-batch-production.json"
},
{
"unitId": "modifier-source:MOD_meshcache_util",
"representativeUnitId": "modifier-source:MOD_meshcache",
"proofSource": "blender-5.2.0/source/blender/modifiers/intern/MOD_meshcache.cc",
"marker": "MOD_meshcache_util.hh",
"productionEvidence": "tests/golden/WBV2-P1150-001/modifier-reader-batch-production.json"
},
{
"unitId": "modifier-source:MOD_weightvg_util",
"representativeUnitId": "modifier-source:MOD_weightvgedit",
"proofSource": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc",
"marker": "MOD_weightvg_util.hh",
"productionEvidence": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json"
}
],
"positive": [
"MOD_grease_pencil_util type is read from Blender Main",
"MOD_meshcache_mdd type is read from Blender Main",
"MOD_meshcache_pc2 type is read from Blender Main",
"MOD_meshcache_util type is read from Blender Main",
"MOD_weightvg_util type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"node tools/web/reuse-wbv2-source-dependencies.mjs --task WBV2-P1153-001 --write"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1153-001/source-dependency-reuse-production.json"
],
"coverageBindings": [
"modifier-source:MOD_grease_pencil_util",
"modifier-source:MOD_meshcache_mdd",
"modifier-source:MOD_meshcache_pc2",
"modifier-source:MOD_meshcache_util",
"modifier-source:MOD_weightvg_util"
]
}
},
{
"id": "WBV2-P1154-000",
"phase": "1154",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1153-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1154",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1154-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1154-001",
"phase": "1154",
"title": "verify solidify split helper sources",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1154-000"
],
"parityId": "MODIFIER_SOLIDIFY_HELPER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_solidify_dependency_reuse",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1154-001.md",
"behavior": "Verify the MODIFIER_SOLIDIFY_HELPER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_SOLIDIFY_HELPER_BATCH",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_SOLIDIFY_HELPER_BATCH-READER",
"CAP-MODIFIER_SOLIDIFY_HELPER_BATCH-RECOVERY",
"CAP-MODIFIER_SOLIDIFY_HELPER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_solidify_extrude.cc",
"blender-5.2.0/source/blender/modifiers/intern/MOD_solidify_nonmanifold.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts",
"tests/files/web/modifier_generate_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/modifier-source-roundtrip-production.json"
}
],
"positive": [
"MOD_solidify_extrude type is read from Blender Main",
"MOD_solidify_nonmanifold type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1154-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1154-001/modifier-reader-batch-production.json WBV2_BATCH_FIXTURE=tests/files/web/modifier_generate_scene.blend WBV2_BATCH_TYPES='[\"SOLIDIFY\"]' WBV2_BATCH_UNITS='[\"modifier-source:MOD_solidify_extrude\",\"modifier-source:MOD_solidify_nonmanifold\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1154-001/modifier-reader-batch-production.json"
],
"coverageBindings": [
"modifier-source:MOD_solidify_extrude",
"modifier-source:MOD_solidify_nonmanifold"
]
}
},
{
"id": "WBV2-P1155-000",
"phase": "1155",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1154-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1155",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1155-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1155-001",
"phase": "1155",
"title": "verify modifier RNA reader batch",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1155-000"
],
"parityId": "MODIFIER_RNA_READER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_rna_reader_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1155-001.md",
"behavior": "Verify the MODIFIER_RNA_READER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_RNA_READER_BATCH",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_RNA_READER_BATCH-READER",
"CAP-MODIFIER_RNA_READER_BATCH-RECOVERY",
"CAP-MODIFIER_RNA_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts",
"tests/files/web/modifier_grease_pencil_scene.blend",
"tests/files/web/generated/M16-GAP-00088-modifier-PARTICLE_SYSTEM.blend",
"tests/files/web/generated/M16-GAP-00041-modifier-DECIMATE.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"MOD_lineart type is read from Blender Main",
"MOD_particlesystem type is read from Blender Main",
"MOD_decimate type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1155-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1155-001/modifier-reader-batch-production.json WBV2_BATCH_FIXTURES='[\"tests/files/web/modifier_grease_pencil_scene.blend\",\"tests/files/web/generated/M16-GAP-00088-modifier-PARTICLE_SYSTEM.blend\",\"tests/files/web/generated/M16-GAP-00041-modifier-DECIMATE.blend\"]' WBV2_BATCH_TYPES='[\"LINEART\",\"PARTICLE_SYSTEM\",\"DECIMATE\"]' WBV2_BATCH_UNITS='[\"rna-struct:GreasePencilLineartModifier\",\"rna-struct:ParticleSystemModifier\",\"rna-struct:DecimateModifier\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1155-001/modifier-reader-batch-production.json"
],
"coverageBindings": [
"rna-struct:GreasePencilLineartModifier",
"rna-struct:ParticleSystemModifier",
"rna-struct:DecimateModifier"
]
}
},
{
"id": "WBV2-P1156-000",
"phase": "1156",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1155-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1156",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1156-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1156-001",
"phase": "1156",
"title": "verify volume displace modifier reader",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1156-000"
],
"parityId": "MODIFIER_VOLUME_DISPLACE_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_volume_displace_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1156-001.md",
"behavior": "Verify the MODIFIER_VOLUME_DISPLACE_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "MODIFIER_VOLUME_DISPLACE_BATCH",
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_VOLUME_DISPLACE_BATCH-READER",
"CAP-MODIFIER_VOLUME_DISPLACE_BATCH-RECOVERY",
"CAP-MODIFIER_VOLUME_DISPLACE_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_volume_displace.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts",
"tests/files/web/generated/M16-GAP-00106-modifier-VOLUME_DISPLACE.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"MOD_volume_displace type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1156-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1156-001/modifier-reader-batch-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/M16-GAP-00106-modifier-VOLUME_DISPLACE.blend WBV2_BATCH_TYPES='[\"VOLUME_DISPLACE\"]' WBV2_BATCH_UNITS='[\"modifier-source:MOD_volume_displace\",\"rna-struct:VolumeDisplaceModifier\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1156-001/modifier-reader-batch-production.json"
],
"coverageBindings": [
"modifier-source:MOD_volume_displace",
"rna-struct:VolumeDisplaceModifier"
]
}
},
{
"id": "WBV2-P1157-000",
"phase": "1157",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1156-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1157",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1157-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1157-001",
"phase": "1157",
"title": "verify shape key point reader",
"kind": "module",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1157-000"
],
"parityId": "SHAPE_KEY_POINT_READER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-shape_key_point_reader_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1157-001.md",
"behavior": "Verify the SHAPE_KEY_POINT_READER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "SHAPE_KEY_POINT_READER_BATCH",
"sourceBacked": true,
"capabilities": [
"CAP-SHAPE_KEY_POINT_READER_BATCH-READER",
"CAP-SHAPE_KEY_POINT_READER_BATCH-RECOVERY",
"CAP-SHAPE_KEY_POINT_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_key.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-shape-key-reader-production.spec.ts",
"tests/files/web/rigged_shape_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1157-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1157-001/shape-key-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/rigged_shape_scene.blend WBV2_BATCH_TYPES='[]' WBV2_BATCH_UNITS='[\"rna-struct:ShapeKeyPoint\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-shape-key-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1157-001/shape-key-reader-production.json"
],
"coverageBindings": [
"rna-struct:ShapeKeyPoint"
]
}
},
{
"id": "WBV2-P1158-000",
"phase": "1158",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1157-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1158",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1158-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1158-001",
"phase": "1158",
"title": "verify line style reader batch",
"kind": "module",
"owner": "DRAWING",
"dependsOn": [
"WBV2-P1158-000"
],
"parityId": "LINE_STYLE_READER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-line_style_reader_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1158-001.md",
"behavior": "Verify the LINE_STYLE_READER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "LINE_STYLE_READER_BATCH",
"sourceBacked": true,
"capabilities": [
"CAP-LINE_STYLE_READER_BATCH-READER",
"CAP-LINE_STYLE_READER_BATCH-RECOVERY",
"CAP-LINE_STYLE_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-line-style-reader-production.spec.ts",
"tests/files/web/generated/M16-GAP-00008-datablock-FreestyleLineStyle.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1158-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1158-001/line-style-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/M16-GAP-00008-datablock-FreestyleLineStyle.blend WBV2_BATCH_TYPES='[]' WBV2_BATCH_UNITS='[\"rna-struct:FreestyleLineStyle\",\"rna-struct:LineStyleModifier\",\"rna-struct:LineStyleAlphaModifier\",\"rna-struct:LineStyleColorModifier\",\"rna-struct:LineStyleGeometryModifier\",\"rna-struct:LineStyleThicknessModifier\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-line-style-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1158-001/line-style-reader-production.json"
],
"coverageBindings": [
"rna-struct:FreestyleLineStyle",
"rna-struct:LineStyleModifier",
"rna-struct:LineStyleAlphaModifier",
"rna-struct:LineStyleColorModifier",
"rna-struct:LineStyleGeometryModifier",
"rna-struct:LineStyleThicknessModifier"
]
}
},
{
"id": "WBV2-P1159-000",
"phase": "1159",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1158-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1159",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1159-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1159-001",
"phase": "1159",
"title": "verify line style collection reader batch",
"kind": "module",
"owner": "DRAWING",
"dependsOn": [
"WBV2-P1159-000"
],
"parityId": "LINE_STYLE_COLLECTION_READER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-line_style_collection_reader_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1159-001.md",
"behavior": "Verify the LINE_STYLE_COLLECTION_READER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "LINE_STYLE_COLLECTION_READER_BATCH",
"sourceBacked": true,
"capabilities": [
"CAP-LINE_STYLE_COLLECTION_READER_BATCH-READER",
"CAP-LINE_STYLE_COLLECTION_READER_BATCH-RECOVERY",
"CAP-LINE_STYLE_COLLECTION_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_main_api.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-line-style-reader-production.spec.ts",
"tests/files/web/line_style_modifier_batch_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1159-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1159-001/line-style-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/line_style_modifier_batch_scene.blend WBV2_BATCH_TYPES='[]' WBV2_BATCH_UNITS='[\"rna-struct:BlendDataLineStyles\",\"rna-struct:LineStyleColorModifiers\",\"rna-struct:LineStyleAlphaModifiers\",\"rna-struct:LineStyleThicknessModifiers\",\"rna-struct:LineStyleGeometryModifiers\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-line-style-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1159-001/line-style-reader-production.json"
],
"coverageBindings": [
"rna-struct:BlendDataLineStyles",
"rna-struct:LineStyleColorModifiers",
"rna-struct:LineStyleAlphaModifiers",
"rna-struct:LineStyleThicknessModifiers",
"rna-struct:LineStyleGeometryModifiers"
]
}
},
{
"id": "WBV2-P1160-000",
"phase": "1160",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1159-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1160",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1160-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1160-001",
"phase": "1160",
"title": "verify line style modifier subtype reader batch",
"kind": "module",
"owner": "DRAWING",
"dependsOn": [
"WBV2-P1160-000"
],
"parityId": "LINE_STYLE_SUBTYPE_READER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-line_style_subtype_reader_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1160-001.md",
"behavior": "Verify the LINE_STYLE_SUBTYPE_READER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "LINE_STYLE_SUBTYPE_READER_BATCH",
"sourceBacked": true,
"capabilities": [
"CAP-LINE_STYLE_SUBTYPE_READER_BATCH-READER",
"CAP-LINE_STYLE_SUBTYPE_READER_BATCH-RECOVERY",
"CAP-LINE_STYLE_SUBTYPE_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-line-style-reader-production.spec.ts",
"tests/files/web/line_style_subtype_batch_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1160-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1160-001/line-style-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/line_style_subtype_batch_scene.blend WBV2_BATCH_TYPES='[]' WBV2_BATCH_UNITS='[\"rna-struct:LineStyleAlphaModifier_AlongStroke\",\"rna-struct:LineStyleAlphaModifier_CreaseAngle\",\"rna-struct:LineStyleAlphaModifier_Curvature_3D\",\"rna-struct:LineStyleAlphaModifier_DistanceFromCamera\",\"rna-struct:LineStyleAlphaModifier_DistanceFromObject\",\"rna-struct:LineStyleAlphaModifier_Material\",\"rna-struct:LineStyleAlphaModifier_Noise\",\"rna-struct:LineStyleAlphaModifier_Tangent\",\"rna-struct:LineStyleColorModifier_AlongStroke\",\"rna-struct:LineStyleColorModifier_CreaseAngle\",\"rna-struct:LineStyleColorModifier_Curvature_3D\",\"rna-struct:LineStyleColorModifier_DistanceFromCamera\",\"rna-struct:LineStyleColorModifier_DistanceFromObject\",\"rna-struct:LineStyleColorModifier_Material\",\"rna-struct:LineStyleColorModifier_Noise\",\"rna-struct:LineStyleColorModifier_Tangent\",\"rna-struct:LineStyleGeometryModifier_2DOffset\",\"rna-struct:LineStyleGeometryModifier_2DTransform\",\"rna-struct:LineStyleGeometryModifier_BackboneStretcher\",\"rna-struct:LineStyleGeometryModifier_BezierCurve\",\"rna-struct:LineStyleGeometryModifier_Blueprint\",\"rna-struct:LineStyleGeometryModifier_GuidingLines\",\"rna-struct:LineStyleGeometryModifier_PerlinNoise1D\",\"rna-struct:LineStyleGeometryModifier_PerlinNoise2D\",\"rna-struct:LineStyleGeometryModifier_Polygonalization\",\"rna-struct:LineStyleGeometryModifier_Sampling\",\"rna-struct:LineStyleGeometryModifier_Simplification\",\"rna-struct:LineStyleGeometryModifier_SinusDisplacement\",\"rna-struct:LineStyleGeometryModifier_SpatialNoise\",\"rna-struct:LineStyleGeometryModifier_TipRemover\",\"rna-struct:LineStyleThicknessModifier_AlongStroke\",\"rna-struct:LineStyleThicknessModifier_Calligraphy\",\"rna-struct:LineStyleThicknessModifier_CreaseAngle\",\"rna-struct:LineStyleThicknessModifier_Curvature_3D\",\"rna-struct:LineStyleThicknessModifier_DistanceFromCamera\",\"rna-struct:LineStyleThicknessModifier_DistanceFromObject\",\"rna-struct:LineStyleThicknessModifier_Material\",\"rna-struct:LineStyleThicknessModifier_Noise\",\"rna-struct:LineStyleThicknessModifier_Tangent\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-line-style-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1160-001/line-style-reader-production.json"
],
"coverageBindings": [
"rna-struct:LineStyleAlphaModifier_AlongStroke",
"rna-struct:LineStyleAlphaModifier_CreaseAngle",
"rna-struct:LineStyleAlphaModifier_Curvature_3D",
"rna-struct:LineStyleAlphaModifier_DistanceFromCamera",
"rna-struct:LineStyleAlphaModifier_DistanceFromObject",
"rna-struct:LineStyleAlphaModifier_Material",
"rna-struct:LineStyleAlphaModifier_Noise",
"rna-struct:LineStyleAlphaModifier_Tangent",
"rna-struct:LineStyleColorModifier_AlongStroke",
"rna-struct:LineStyleColorModifier_CreaseAngle",
"rna-struct:LineStyleColorModifier_Curvature_3D",
"rna-struct:LineStyleColorModifier_DistanceFromCamera",
"rna-struct:LineStyleColorModifier_DistanceFromObject",
"rna-struct:LineStyleColorModifier_Material",
"rna-struct:LineStyleColorModifier_Noise",
"rna-struct:LineStyleColorModifier_Tangent",
"rna-struct:LineStyleGeometryModifier_2DOffset",
"rna-struct:LineStyleGeometryModifier_2DTransform",
"rna-struct:LineStyleGeometryModifier_BackboneStretcher",
"rna-struct:LineStyleGeometryModifier_BezierCurve",
"rna-struct:LineStyleGeometryModifier_Blueprint",
"rna-struct:LineStyleGeometryModifier_GuidingLines",
"rna-struct:LineStyleGeometryModifier_PerlinNoise1D",
"rna-struct:LineStyleGeometryModifier_PerlinNoise2D",
"rna-struct:LineStyleGeometryModifier_Polygonalization",
"rna-struct:LineStyleGeometryModifier_Sampling",
"rna-struct:LineStyleGeometryModifier_Simplification",
"rna-struct:LineStyleGeometryModifier_SinusDisplacement",
"rna-struct:LineStyleGeometryModifier_SpatialNoise",
"rna-struct:LineStyleGeometryModifier_TipRemover",
"rna-struct:LineStyleThicknessModifier_AlongStroke",
"rna-struct:LineStyleThicknessModifier_Calligraphy",
"rna-struct:LineStyleThicknessModifier_CreaseAngle",
"rna-struct:LineStyleThicknessModifier_Curvature_3D",
"rna-struct:LineStyleThicknessModifier_DistanceFromCamera",
"rna-struct:LineStyleThicknessModifier_DistanceFromObject",
"rna-struct:LineStyleThicknessModifier_Material",
"rna-struct:LineStyleThicknessModifier_Noise",
"rna-struct:LineStyleThicknessModifier_Tangent"
]
}
},
{
"id": "WBV2-P1161-000",
"phase": "1161",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1160-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1161",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1161-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1161-001",
"phase": "1161",
"title": "verify FCurve modifier subtype reader batch",
"kind": "module",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P1161-000"
],
"parityId": "FCURVE_MODIFIER_SUBTYPE_READER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-fcurve_modifier_subtype_reader_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1161-001.md",
"behavior": "Verify the FCURVE_MODIFIER_SUBTYPE_READER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"module": {
"moduleId": "FCURVE_MODIFIER_SUBTYPE_READER_BATCH",
"sourceBacked": true,
"capabilities": [
"CAP-FCURVE_MODIFIER_SUBTYPE_READER_BATCH-READER",
"CAP-FCURVE_MODIFIER_SUBTYPE_READER_BATCH-RECOVERY",
"CAP-FCURVE_MODIFIER_SUBTYPE_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_fcurve.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-fcurve-modifier-production.spec.ts",
"tests/files/web/fcurve_modifier_subtype_batch_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1161-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1161-001/fcurve-modifier-production.json WBV2_BATCH_FIXTURE=tests/files/web/fcurve_modifier_subtype_batch_scene.blend WBV2_BATCH_TYPES='[]' WBV2_BATCH_UNITS='[\"rna-struct:FModifierEnvelope\",\"rna-struct:FModifierGenerator\",\"rna-struct:FModifierLimits\",\"rna-struct:FModifierNoise\",\"rna-struct:FModifierSmooth\",\"rna-struct:FModifierStepped\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-fcurve-modifier-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1161-001/fcurve-modifier-production.json"
],
"coverageBindings": [
"rna-struct:FModifierEnvelope",
"rna-struct:FModifierGenerator",
"rna-struct:FModifierLimits",
"rna-struct:FModifierNoise",
"rna-struct:FModifierSmooth",
"rna-struct:FModifierStepped"
]
}
},
{
"id": "WBV2-P1162-000",
"phase": "1162",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1161-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1162",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1162-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1162-001",
"phase": "1162",
"title": "verify shape key modifier reader dependency",
"kind": "module",
"owner": "MODIFIER",
"dependsOn": [
"WBV2-P1162-000"
],
"parityId": "MODIFIER_SHAPEKEY_READER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-modifier_shapekey_reader_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1162-001.md",
"behavior": "Verify the MODIFIER_SHAPEKEY_READER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1162-001:MODIFIER_SHAPEKEY_READER_BATCH:f7a317a63fdee0cb",
"selectedRecordIds": [
"modifier-source:MOD_shapekey"
],
"module": {
"moduleId": "MODIFIER_SHAPEKEY_READER_BATCH",
"batchId": "WBV2-P1162-001:MODIFIER_SHAPEKEY_READER_BATCH:f7a317a63fdee0cb",
"selectedRecordIds": [
"modifier-source:MOD_shapekey"
],
"sourceBacked": true,
"capabilities": [
"CAP-MODIFIER_SHAPEKEY_READER_BATCH-READER",
"CAP-MODIFIER_SHAPEKEY_READER_BATCH-RECOVERY",
"CAP-MODIFIER_SHAPEKEY_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_shapekey.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-shape-key-reader-production.spec.ts",
"tests/files/web/rigged_shape_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"MOD_shapekey type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1162-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1162-001/shape-key-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/rigged_shape_scene.blend WBV2_BATCH_TYPES='[]' WBV2_BATCH_UNITS='[\"modifier-source:MOD_shapekey\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-shape-key-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1162-001/shape-key-reader-production.json"
],
"coverageBindings": [
"modifier-source:MOD_shapekey"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1163-000",
"phase": "1163",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1162-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1163",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1163-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1163-001",
"phase": "1163",
"title": "verify compositor node reader batch",
"kind": "module",
"owner": "MEDIA",
"dependsOn": [
"WBV2-P1163-000"
],
"parityId": "COMPOSITOR_NODE_READER_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-compositor_node_reader_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1163-001.md",
"behavior": "Verify the COMPOSITOR_NODE_READER_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1163-001:COMPOSITOR_NODE_READER_BATCH:6e59dc4f2b686518",
"selectedRecordIds": [
"node:CompositorNodeGlare",
"node:CompositorNodeViewer"
],
"module": {
"moduleId": "COMPOSITOR_NODE_READER_BATCH",
"batchId": "WBV2-P1163-001:COMPOSITOR_NODE_READER_BATCH:6e59dc4f2b686518",
"selectedRecordIds": [
"node:CompositorNodeGlare",
"node:CompositorNodeViewer"
],
"sourceBacked": true,
"capabilities": [
"CAP-COMPOSITOR_NODE_READER_BATCH-READER",
"CAP-COMPOSITOR_NODE_READER_BATCH-RECOVERY",
"CAP-COMPOSITOR_NODE_READER_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_glare.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_viewer.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/compositor_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1163-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1163-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/compositor_scene.blend WBV2_BATCH_TYPES='[\"CompositorNodeGlare\",\"VIEWER\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeGlare\",\"node:CompositorNodeViewer\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1163-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeGlare",
"node:CompositorNodeViewer"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1164-000",
"phase": "1164",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1163-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1164",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1164-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1164-001",
"phase": "1164",
"title": "verify native compositor transform blur alpha reader",
"kind": "module",
"owner": "MEDIA",
"dependsOn": [
"WBV2-P1164-000"
],
"parityId": "COMPOSITOR_NATIVE_NODE_BATCH",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-compositor_native_node_batch",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1164-001.md",
"behavior": "Verify the COMPOSITOR_NATIVE_NODE_BATCH batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1164-001:COMPOSITOR_NATIVE_NODE_BATCH:91a76e1ee4077587",
"selectedRecordIds": [
"node:CompositorNodeTransform",
"node:CompositorNodeBlur",
"node:CompositorNodeAlphaOver"
],
"module": {
"moduleId": "COMPOSITOR_NATIVE_NODE_BATCH",
"batchId": "WBV2-P1164-001:COMPOSITOR_NATIVE_NODE_BATCH:91a76e1ee4077587",
"selectedRecordIds": [
"node:CompositorNodeTransform",
"node:CompositorNodeBlur",
"node:CompositorNodeAlphaOver"
],
"sourceBacked": true,
"capabilities": [
"CAP-COMPOSITOR_NATIVE_NODE_BATCH-READER",
"CAP-COMPOSITOR_NATIVE_NODE_BATCH-RECOVERY",
"CAP-COMPOSITOR_NATIVE_NODE_BATCH-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_transform.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_blur.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_alpha_over.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/compositor_node_batch_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeTransform type is read from Blender Main",
"CompositorNodeBlur type is read from Blender Main",
"CompositorNodeAlphaOver type is read from Blender Main",
"CompositorNodeViewer type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1164-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1164-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/compositor_node_batch_scene.blend WBV2_BATCH_TYPES='[\"CompositorNodeTransform\",\"CompositorNodeBlur\",\"CompositorNodeAlphaOver\",\"VIEWER\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeTransform\",\"node:CompositorNodeBlur\",\"node:CompositorNodeAlphaOver\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1164-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeTransform",
"node:CompositorNodeBlur",
"node:CompositorNodeAlphaOver"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1165-000",
"phase": "1165",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1164-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1165",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1165-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1165-001",
"phase": "1165",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1165-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1165-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1165-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:f0276fdfa1169691",
"selectedRecordIds": [
"node:CompositorNodeAntiAliasing",
"node:CompositorNodeBilateralblur",
"node:CompositorNodeBlankImage",
"node:CompositorNodeBokehBlur",
"node:CompositorNodeBokehImage",
"node:CompositorNodeBoxMask",
"node:CompositorNodeBrightContrast",
"node:CompositorNodeChannelMatte"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1165-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:f0276fdfa1169691",
"selectedRecordIds": [
"node:CompositorNodeAntiAliasing",
"node:CompositorNodeBilateralblur",
"node:CompositorNodeBlankImage",
"node:CompositorNodeBokehBlur",
"node:CompositorNodeBokehImage",
"node:CompositorNodeBoxMask",
"node:CompositorNodeBrightContrast",
"node:CompositorNodeChannelMatte"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_anti_aliasing.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_bilateral_blur.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_blank_image.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_bokeh_blur.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_bokeh_image.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_box_mask.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_brightness_contrast.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_channel_key.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-f0276fdfa1169691.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeAntiAliasing type is read from Blender Main",
"CompositorNodeBilateralblur type is read from Blender Main",
"CompositorNodeBlankImage type is read from Blender Main",
"CompositorNodeBokehBlur type is read from Blender Main",
"CompositorNodeBokehImage type is read from Blender Main",
"CompositorNodeBoxMask type is read from Blender Main",
"CompositorNodeBrightContrast type is read from Blender Main",
"CompositorNodeChannelMatte type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1165-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1165-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-f0276fdfa1169691.blend WBV2_BATCH_TYPES='[\"CompositorNodeAntiAliasing\",\"CompositorNodeBilateralblur\",\"CompositorNodeBlankImage\",\"CompositorNodeBokehBlur\",\"CompositorNodeBokehImage\",\"CompositorNodeBoxMask\",\"CompositorNodeBrightContrast\",\"CompositorNodeChannelMatte\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeAntiAliasing\",\"node:CompositorNodeBilateralblur\",\"node:CompositorNodeBlankImage\",\"node:CompositorNodeBokehBlur\",\"node:CompositorNodeBokehImage\",\"node:CompositorNodeBoxMask\",\"node:CompositorNodeBrightContrast\",\"node:CompositorNodeChannelMatte\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1165-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeAntiAliasing",
"node:CompositorNodeBilateralblur",
"node:CompositorNodeBlankImage",
"node:CompositorNodeBokehBlur",
"node:CompositorNodeBokehImage",
"node:CompositorNodeBoxMask",
"node:CompositorNodeBrightContrast",
"node:CompositorNodeChannelMatte"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1166-000",
"phase": "1166",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1165-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1166",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1166-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1166-001",
"phase": "1166",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1166-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1166-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1166-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:5b79ae1d2da8300c",
"selectedRecordIds": [
"node:CompositorNodeChromaMatte",
"node:CompositorNodeColorBalance",
"node:CompositorNodeColorCorrection",
"node:CompositorNodeColorMatte",
"node:CompositorNodeColorSpill",
"node:CompositorNodeCombineColor",
"node:CompositorNodeConvertColorSpace",
"node:CompositorNodeConvertToDisplay"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1166-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:5b79ae1d2da8300c",
"selectedRecordIds": [
"node:CompositorNodeChromaMatte",
"node:CompositorNodeColorBalance",
"node:CompositorNodeColorCorrection",
"node:CompositorNodeColorMatte",
"node:CompositorNodeColorSpill",
"node:CompositorNodeCombineColor",
"node:CompositorNodeConvertColorSpace",
"node:CompositorNodeConvertToDisplay"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_chroma_key.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_color_balance.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_color_correction.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_color_key.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_color_spill.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_combine_color.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_convert_color_space.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_convert_to_display.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-5b79ae1d2da8300c.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeChromaMatte type is read from Blender Main",
"CompositorNodeColorBalance type is read from Blender Main",
"CompositorNodeColorCorrection type is read from Blender Main",
"CompositorNodeColorMatte type is read from Blender Main",
"CompositorNodeColorSpill type is read from Blender Main",
"CompositorNodeCombineColor type is read from Blender Main",
"CompositorNodeConvertColorSpace type is read from Blender Main",
"CompositorNodeConvertToDisplay type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1166-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1166-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-5b79ae1d2da8300c.blend WBV2_BATCH_TYPES='[\"CompositorNodeChromaMatte\",\"CompositorNodeColorBalance\",\"CompositorNodeColorCorrection\",\"CompositorNodeColorMatte\",\"CompositorNodeColorSpill\",\"CompositorNodeCombineColor\",\"CompositorNodeConvertColorSpace\",\"CompositorNodeConvertToDisplay\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeChromaMatte\",\"node:CompositorNodeColorBalance\",\"node:CompositorNodeColorCorrection\",\"node:CompositorNodeColorMatte\",\"node:CompositorNodeColorSpill\",\"node:CompositorNodeCombineColor\",\"node:CompositorNodeConvertColorSpace\",\"node:CompositorNodeConvertToDisplay\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1166-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeChromaMatte",
"node:CompositorNodeColorBalance",
"node:CompositorNodeColorCorrection",
"node:CompositorNodeColorMatte",
"node:CompositorNodeColorSpill",
"node:CompositorNodeCombineColor",
"node:CompositorNodeConvertColorSpace",
"node:CompositorNodeConvertToDisplay"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1167-000",
"phase": "1167",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1166-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1167",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1167-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1167-001",
"phase": "1167",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1167-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1167-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1167-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:6c1d64f20df459f4",
"selectedRecordIds": [
"node:CompositorNodeConvolve",
"node:CompositorNodeCornerPin",
"node:CompositorNodeCrop",
"node:CompositorNodeCryptomatte",
"node:CompositorNodeCryptomatteV2",
"node:CompositorNodeCurveRGB",
"node:CompositorNodeDBlur",
"node:CompositorNodeDefocus"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1167-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:6c1d64f20df459f4",
"selectedRecordIds": [
"node:CompositorNodeConvolve",
"node:CompositorNodeCornerPin",
"node:CompositorNodeCrop",
"node:CompositorNodeCryptomatte",
"node:CompositorNodeCryptomatteV2",
"node:CompositorNodeCurveRGB",
"node:CompositorNodeDBlur",
"node:CompositorNodeDefocus"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_convolve.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_corner_pin.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_crop.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_cryptomatte.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_cryptomatte.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_rgb_curves.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_directional_blur.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_defocus.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-6c1d64f20df459f4.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeConvolve type is read from Blender Main",
"CompositorNodeCornerPin type is read from Blender Main",
"CompositorNodeCrop type is read from Blender Main",
"CompositorNodeCryptomatte type is read from Blender Main",
"CompositorNodeCryptomatteV2 type is read from Blender Main",
"CompositorNodeCurveRGB type is read from Blender Main",
"CompositorNodeDBlur type is read from Blender Main",
"CompositorNodeDefocus type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1167-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1167-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-6c1d64f20df459f4.blend WBV2_BATCH_TYPES='[\"CompositorNodeConvolve\",\"CompositorNodeCornerPin\",\"CompositorNodeCrop\",\"CompositorNodeCryptomatte\",\"CompositorNodeCryptomatteV2\",\"CompositorNodeCurveRGB\",\"CompositorNodeDBlur\",\"CompositorNodeDefocus\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeConvolve\",\"node:CompositorNodeCornerPin\",\"node:CompositorNodeCrop\",\"node:CompositorNodeCryptomatte\",\"node:CompositorNodeCryptomatteV2\",\"node:CompositorNodeCurveRGB\",\"node:CompositorNodeDBlur\",\"node:CompositorNodeDefocus\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1167-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeConvolve",
"node:CompositorNodeCornerPin",
"node:CompositorNodeCrop",
"node:CompositorNodeCryptomatte",
"node:CompositorNodeCryptomatteV2",
"node:CompositorNodeCurveRGB",
"node:CompositorNodeDBlur",
"node:CompositorNodeDefocus"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1168-000",
"phase": "1168",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1167-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1168",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1168-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1168-001",
"phase": "1168",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1168-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1168-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1168-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:56e154dff1afd9ba",
"selectedRecordIds": [
"node:CompositorNodeDenoise",
"node:CompositorNodeDespeckle",
"node:CompositorNodeDiffMatte",
"node:CompositorNodeDilateErode",
"node:CompositorNodeDisplace",
"node:CompositorNodeDistanceMatte",
"node:CompositorNodeDoubleEdgeMask",
"node:CompositorNodeEllipseMask"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1168-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:56e154dff1afd9ba",
"selectedRecordIds": [
"node:CompositorNodeDenoise",
"node:CompositorNodeDespeckle",
"node:CompositorNodeDiffMatte",
"node:CompositorNodeDilateErode",
"node:CompositorNodeDisplace",
"node:CompositorNodeDistanceMatte",
"node:CompositorNodeDoubleEdgeMask",
"node:CompositorNodeEllipseMask"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_denoise.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_despeckle.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_difference_key.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_dilate_erode.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_displace.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_distance_key.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_double_edge_mask.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_ellipse_mask.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-56e154dff1afd9ba.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeDenoise type is read from Blender Main",
"CompositorNodeDespeckle type is read from Blender Main",
"CompositorNodeDiffMatte type is read from Blender Main",
"CompositorNodeDilateErode type is read from Blender Main",
"CompositorNodeDisplace type is read from Blender Main",
"CompositorNodeDistanceMatte type is read from Blender Main",
"CompositorNodeDoubleEdgeMask type is read from Blender Main",
"CompositorNodeEllipseMask type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1168-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1168-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-56e154dff1afd9ba.blend WBV2_BATCH_TYPES='[\"CompositorNodeDenoise\",\"CompositorNodeDespeckle\",\"CompositorNodeDiffMatte\",\"CompositorNodeDilateErode\",\"CompositorNodeDisplace\",\"CompositorNodeDistanceMatte\",\"CompositorNodeDoubleEdgeMask\",\"CompositorNodeEllipseMask\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeDenoise\",\"node:CompositorNodeDespeckle\",\"node:CompositorNodeDiffMatte\",\"node:CompositorNodeDilateErode\",\"node:CompositorNodeDisplace\",\"node:CompositorNodeDistanceMatte\",\"node:CompositorNodeDoubleEdgeMask\",\"node:CompositorNodeEllipseMask\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1168-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeDenoise",
"node:CompositorNodeDespeckle",
"node:CompositorNodeDiffMatte",
"node:CompositorNodeDilateErode",
"node:CompositorNodeDisplace",
"node:CompositorNodeDistanceMatte",
"node:CompositorNodeDoubleEdgeMask",
"node:CompositorNodeEllipseMask"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1169-000",
"phase": "1169",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1168-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1169",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1169-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1169-001",
"phase": "1169",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1169-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1169-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1169-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:cd9ae59d0f9640d1",
"selectedRecordIds": [
"node:CompositorNodeFilter",
"node:CompositorNodeFlip",
"node:CompositorNodeHueCorrect",
"node:CompositorNodeHueSat",
"node:CompositorNodeIDMask"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1169-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:cd9ae59d0f9640d1",
"selectedRecordIds": [
"node:CompositorNodeFilter",
"node:CompositorNodeFlip",
"node:CompositorNodeHueCorrect",
"node:CompositorNodeHueSat",
"node:CompositorNodeIDMask"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_filter.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_flip.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_hue_correct.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_hue_saturation_value.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_id_mask.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-cd9ae59d0f9640d1.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeFilter type is read from Blender Main",
"CompositorNodeFlip type is read from Blender Main",
"CompositorNodeHueCorrect type is read from Blender Main",
"CompositorNodeHueSat type is read from Blender Main",
"CompositorNodeIDMask type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1169-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1169-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-cd9ae59d0f9640d1.blend WBV2_BATCH_TYPES='[\"CompositorNodeFilter\",\"CompositorNodeFlip\",\"CompositorNodeHueCorrect\",\"CompositorNodeHueSat\",\"CompositorNodeIDMask\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeFilter\",\"node:CompositorNodeFlip\",\"node:CompositorNodeHueCorrect\",\"node:CompositorNodeHueSat\",\"node:CompositorNodeIDMask\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1169-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeFilter",
"node:CompositorNodeFlip",
"node:CompositorNodeHueCorrect",
"node:CompositorNodeHueSat",
"node:CompositorNodeIDMask"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1170-000",
"phase": "1170",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1169-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1170",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1170-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1170-001",
"phase": "1170",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1170-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1170-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1170-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:8ee7e86684d23363",
"selectedRecordIds": [
"node:CompositorNodeImage",
"node:CompositorNodeImageCoordinates",
"node:CompositorNodeImageInfo",
"node:CompositorNodeInpaint",
"node:CompositorNodeKeying",
"node:CompositorNodeKeyingScreen",
"node:CompositorNodeKuwahara",
"node:CompositorNodeLensdist"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1170-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:8ee7e86684d23363",
"selectedRecordIds": [
"node:CompositorNodeImage",
"node:CompositorNodeImageCoordinates",
"node:CompositorNodeImageInfo",
"node:CompositorNodeInpaint",
"node:CompositorNodeKeying",
"node:CompositorNodeKeyingScreen",
"node:CompositorNodeKuwahara",
"node:CompositorNodeLensdist"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_image.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_image_coordinates.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_image_info.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_inpaint.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_keying.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_keying_screen.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_kuwahara.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_lens_distortion.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-8ee7e86684d23363.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeImage type is read from Blender Main",
"CompositorNodeImageCoordinates type is read from Blender Main",
"CompositorNodeImageInfo type is read from Blender Main",
"CompositorNodeInpaint type is read from Blender Main",
"CompositorNodeKeying type is read from Blender Main",
"CompositorNodeKeyingScreen type is read from Blender Main",
"CompositorNodeKuwahara type is read from Blender Main",
"CompositorNodeLensdist type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1170-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1170-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-8ee7e86684d23363.blend WBV2_BATCH_TYPES='[\"CompositorNodeImage\",\"CompositorNodeImageCoordinates\",\"CompositorNodeImageInfo\",\"CompositorNodeInpaint\",\"CompositorNodeKeying\",\"CompositorNodeKeyingScreen\",\"CompositorNodeKuwahara\",\"CompositorNodeLensdist\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeImage\",\"node:CompositorNodeImageCoordinates\",\"node:CompositorNodeImageInfo\",\"node:CompositorNodeInpaint\",\"node:CompositorNodeKeying\",\"node:CompositorNodeKeyingScreen\",\"node:CompositorNodeKuwahara\",\"node:CompositorNodeLensdist\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1170-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeImage",
"node:CompositorNodeImageCoordinates",
"node:CompositorNodeImageInfo",
"node:CompositorNodeInpaint",
"node:CompositorNodeKeying",
"node:CompositorNodeKeyingScreen",
"node:CompositorNodeKuwahara",
"node:CompositorNodeLensdist"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1171-000",
"phase": "1171",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1170-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1171",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1171-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1171-001",
"phase": "1171",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1171-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1171-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1171-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:c7c1993f19c6c688",
"selectedRecordIds": [
"node:CompositorNodeLevels",
"node:CompositorNodeLumaMatte",
"node:CompositorNodeMapUV",
"node:CompositorNodeMask",
"node:CompositorNodeMaskToSDF",
"node:CompositorNodeMovieClip",
"node:CompositorNodeMovieDistortion",
"node:CompositorNodeNormal"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1171-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:c7c1993f19c6c688",
"selectedRecordIds": [
"node:CompositorNodeLevels",
"node:CompositorNodeLumaMatte",
"node:CompositorNodeMapUV",
"node:CompositorNodeMask",
"node:CompositorNodeMaskToSDF",
"node:CompositorNodeMovieClip",
"node:CompositorNodeMovieDistortion",
"node:CompositorNodeNormal"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_levels.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_luminance_key.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_map_uv.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_mask.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_mask_to_sdf.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_movie_clip.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_movie_distortion.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_normal.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-c7c1993f19c6c688.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeLevels type is read from Blender Main",
"CompositorNodeLumaMatte type is read from Blender Main",
"CompositorNodeMapUV type is read from Blender Main",
"CompositorNodeMask type is read from Blender Main",
"CompositorNodeMaskToSDF type is read from Blender Main",
"CompositorNodeMovieClip type is read from Blender Main",
"CompositorNodeMovieDistortion type is read from Blender Main",
"CompositorNodeNormal type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1171-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1171-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-c7c1993f19c6c688.blend WBV2_BATCH_TYPES='[\"CompositorNodeLevels\",\"CompositorNodeLumaMatte\",\"CompositorNodeMapUV\",\"CompositorNodeMask\",\"CompositorNodeMaskToSDF\",\"CompositorNodeMovieClip\",\"CompositorNodeMovieDistortion\",\"CompositorNodeNormal\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeLevels\",\"node:CompositorNodeLumaMatte\",\"node:CompositorNodeMapUV\",\"node:CompositorNodeMask\",\"node:CompositorNodeMaskToSDF\",\"node:CompositorNodeMovieClip\",\"node:CompositorNodeMovieDistortion\",\"node:CompositorNodeNormal\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1171-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeLevels",
"node:CompositorNodeLumaMatte",
"node:CompositorNodeMapUV",
"node:CompositorNodeMask",
"node:CompositorNodeMaskToSDF",
"node:CompositorNodeMovieClip",
"node:CompositorNodeMovieDistortion",
"node:CompositorNodeNormal"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1172-000",
"phase": "1172",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1171-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1172",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1172-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1172-001",
"phase": "1172",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1172-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1172-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1172-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:bf66c685c7c6fd95",
"selectedRecordIds": [
"node:CompositorNodeNormalize",
"node:CompositorNodeOutputFile",
"node:CompositorNodePixelate",
"node:CompositorNodePlaneTrackDeform",
"node:CompositorNodePosterize",
"node:CompositorNodePremulKey",
"node:CompositorNodeRGBToBW",
"node:CompositorNodeRLayers"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1172-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:bf66c685c7c6fd95",
"selectedRecordIds": [
"node:CompositorNodeNormalize",
"node:CompositorNodeOutputFile",
"node:CompositorNodePixelate",
"node:CompositorNodePlaneTrackDeform",
"node:CompositorNodePosterize",
"node:CompositorNodePremulKey",
"node:CompositorNodeRGBToBW",
"node:CompositorNodeRLayers"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_normalize.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_file_output.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_pixelate.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_plane_track_deform.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_posterize.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_alpha_convert.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_rgb_to_bw.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_render_layers.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-bf66c685c7c6fd95.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeNormalize type is read from Blender Main",
"CompositorNodeOutputFile type is read from Blender Main",
"CompositorNodePixelate type is read from Blender Main",
"CompositorNodePlaneTrackDeform type is read from Blender Main",
"CompositorNodePosterize type is read from Blender Main",
"CompositorNodePremulKey type is read from Blender Main",
"CompositorNodeRGBToBW type is read from Blender Main",
"CompositorNodeRLayers type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1172-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1172-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-bf66c685c7c6fd95.blend WBV2_BATCH_TYPES='[\"CompositorNodeNormalize\",\"CompositorNodeOutputFile\",\"CompositorNodePixelate\",\"CompositorNodePlaneTrackDeform\",\"CompositorNodePosterize\",\"CompositorNodePremulKey\",\"CompositorNodeRGBToBW\",\"CompositorNodeRLayers\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeNormalize\",\"node:CompositorNodeOutputFile\",\"node:CompositorNodePixelate\",\"node:CompositorNodePlaneTrackDeform\",\"node:CompositorNodePosterize\",\"node:CompositorNodePremulKey\",\"node:CompositorNodeRGBToBW\",\"node:CompositorNodeRLayers\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1172-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeNormalize",
"node:CompositorNodeOutputFile",
"node:CompositorNodePixelate",
"node:CompositorNodePlaneTrackDeform",
"node:CompositorNodePosterize",
"node:CompositorNodePremulKey",
"node:CompositorNodeRGBToBW",
"node:CompositorNodeRLayers"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1173-000",
"phase": "1173",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1172-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1173",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1173-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1173-001",
"phase": "1173",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1173-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1173-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1173-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:a1b966b1af421537",
"selectedRecordIds": [
"node:CompositorNodeRelativeToPixel",
"node:CompositorNodeRotate",
"node:CompositorNodeScale",
"node:CompositorNodeSceneTime",
"node:CompositorNodeSeparateColor",
"node:CompositorNodeSequencerStripInfo",
"node:CompositorNodeSetAlpha",
"node:CompositorNodeSplit"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1173-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:a1b966b1af421537",
"selectedRecordIds": [
"node:CompositorNodeRelativeToPixel",
"node:CompositorNodeRotate",
"node:CompositorNodeScale",
"node:CompositorNodeSceneTime",
"node:CompositorNodeSeparateColor",
"node:CompositorNodeSequencerStripInfo",
"node:CompositorNodeSetAlpha",
"node:CompositorNodeSplit"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_relative_to_pixel.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_rotate.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_scale.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_scene_time.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_separate_color.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_strip_info.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_set_alpha.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_split.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-a1b966b1af421537.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeRelativeToPixel type is read from Blender Main",
"CompositorNodeRotate type is read from Blender Main",
"CompositorNodeScale type is read from Blender Main",
"CompositorNodeSceneTime type is read from Blender Main",
"CompositorNodeSeparateColor type is read from Blender Main",
"CompositorNodeSequencerStripInfo type is read from Blender Main",
"CompositorNodeSetAlpha type is read from Blender Main",
"CompositorNodeSplit type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1173-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1173-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-a1b966b1af421537.blend WBV2_BATCH_TYPES='[\"CompositorNodeRelativeToPixel\",\"CompositorNodeRotate\",\"CompositorNodeScale\",\"CompositorNodeSceneTime\",\"CompositorNodeSeparateColor\",\"CompositorNodeSequencerStripInfo\",\"CompositorNodeSetAlpha\",\"CompositorNodeSplit\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeRelativeToPixel\",\"node:CompositorNodeRotate\",\"node:CompositorNodeScale\",\"node:CompositorNodeSceneTime\",\"node:CompositorNodeSeparateColor\",\"node:CompositorNodeSequencerStripInfo\",\"node:CompositorNodeSetAlpha\",\"node:CompositorNodeSplit\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1173-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeRelativeToPixel",
"node:CompositorNodeRotate",
"node:CompositorNodeScale",
"node:CompositorNodeSceneTime",
"node:CompositorNodeSeparateColor",
"node:CompositorNodeSequencerStripInfo",
"node:CompositorNodeSetAlpha",
"node:CompositorNodeSplit"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1174-000",
"phase": "1174",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1173-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1174",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1174-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1174-001",
"phase": "1174",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1174-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1174-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1174-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:8f71e517e24622f2",
"selectedRecordIds": [
"node:CompositorNodeStabilize",
"node:CompositorNodeStringToImage",
"node:CompositorNodeSwitch",
"node:CompositorNodeSwitchView",
"node:CompositorNodeTime",
"node:CompositorNodeTonemap",
"node:CompositorNodeTrackPos",
"node:CompositorNodeTranslate"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1174-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:8f71e517e24622f2",
"selectedRecordIds": [
"node:CompositorNodeStabilize",
"node:CompositorNodeStringToImage",
"node:CompositorNodeSwitch",
"node:CompositorNodeSwitchView",
"node:CompositorNodeTime",
"node:CompositorNodeTonemap",
"node:CompositorNodeTrackPos",
"node:CompositorNodeTranslate"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_stabilize_2d.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_string_to_image.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_switch.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_switch_view.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_time_curve.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_tone_map.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_track_position.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_translate.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-8f71e517e24622f2.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeStabilize type is read from Blender Main",
"CompositorNodeStringToImage type is read from Blender Main",
"CompositorNodeSwitch type is read from Blender Main",
"CompositorNodeSwitchView type is read from Blender Main",
"CompositorNodeTime type is read from Blender Main",
"CompositorNodeTonemap type is read from Blender Main",
"CompositorNodeTrackPos type is read from Blender Main",
"CompositorNodeTranslate type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1174-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1174-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-8f71e517e24622f2.blend WBV2_BATCH_TYPES='[\"CompositorNodeStabilize\",\"CompositorNodeStringToImage\",\"CompositorNodeSwitch\",\"CompositorNodeSwitchView\",\"CompositorNodeTime\",\"CompositorNodeTonemap\",\"CompositorNodeTrackPos\",\"CompositorNodeTranslate\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeStabilize\",\"node:CompositorNodeStringToImage\",\"node:CompositorNodeSwitch\",\"node:CompositorNodeSwitchView\",\"node:CompositorNodeTime\",\"node:CompositorNodeTonemap\",\"node:CompositorNodeTrackPos\",\"node:CompositorNodeTranslate\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1174-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeStabilize",
"node:CompositorNodeStringToImage",
"node:CompositorNodeSwitch",
"node:CompositorNodeSwitchView",
"node:CompositorNodeTime",
"node:CompositorNodeTonemap",
"node:CompositorNodeTrackPos",
"node:CompositorNodeTranslate"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1175-000",
"phase": "1175",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1174-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1175",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1175-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1175-001",
"phase": "1175",
"title": "verify auto-generated native compositor reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1175-000"
],
"parityId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_compositor_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1175-001.md",
"behavior": "Verify the AUTO_COMPOSITOR_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1175-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:4c3e128e97498ba4",
"selectedRecordIds": [
"node:CompositorNodeVecBlur",
"node:CompositorNodeZcombine"
],
"module": {
"moduleId": "AUTO_COMPOSITOR_NATIVE_NODE_READER",
"batchId": "WBV2-P1175-001:AUTO_COMPOSITOR_NATIVE_NODE_READER:4c3e128e97498ba4",
"selectedRecordIds": [
"node:CompositorNodeVecBlur",
"node:CompositorNodeZcombine"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-READER",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_COMPOSITOR_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_vector_blur.cc",
"blender-5.2.0/source/blender/nodes/composite/nodes/node_composite_depth_combine.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/compositor-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-compositor-4c3e128e97498ba4.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"CompositorNodeVecBlur type is read from Blender Main",
"CompositorNodeZcombine type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1175-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1175-001/compositor-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-compositor-4c3e128e97498ba4.blend WBV2_BATCH_TYPES='[\"CompositorNodeVecBlur\",\"CompositorNodeZcombine\"]' WBV2_BATCH_UNITS='[\"node:CompositorNodeVecBlur\",\"node:CompositorNodeZcombine\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/compositor-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1175-001/compositor-main-reader-production.json"
],
"coverageBindings": [
"node:CompositorNodeVecBlur",
"node:CompositorNodeZcombine"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1176-000",
"phase": "1176",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1175-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1176",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1176-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1176-001",
"phase": "1176",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1176-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1176-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1176-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1176-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1176-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1176-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1176-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1177-000",
"phase": "1177",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1176-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1177",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1177-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1177-001",
"phase": "1177",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1177-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1177-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1177-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1177-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1177-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1177-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1177-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1178-000",
"phase": "1178",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1177-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1178",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1178-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1178-001",
"phase": "1178",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1178-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1178-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1178-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1178-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1178-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1178-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1178-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1179-000",
"phase": "1179",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1178-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1179",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1179-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1179-001",
"phase": "1179",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1179-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1179-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1179-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1179-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1179-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1179-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1179-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1180-000",
"phase": "1180",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1179-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1180",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1180-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1180-001",
"phase": "1180",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1180-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1180-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1180-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1180-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1180-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1180-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1180-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1181-000",
"phase": "1181",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1180-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1181",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1181-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1181-001",
"phase": "1181",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1181-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1181-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1181-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1181-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1181-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1181-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1181-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1182-000",
"phase": "1182",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1181-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1182",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1182-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1182-001",
"phase": "1182",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1182-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1182-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1182-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1182-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1182-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1182-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1182-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1183-000",
"phase": "1183",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1182-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1183",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1183-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1183-001",
"phase": "1183",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1183-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1183-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1183-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1183-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1183-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1183-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1183-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1184-000",
"phase": "1184",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1183-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1184",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1184-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1184-001",
"phase": "1184",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1184-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1184-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1184-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1184-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1184-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1184-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1184-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1185-000",
"phase": "1185",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1184-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1185",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1185-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1185-001",
"phase": "1185",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1185-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1185-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1185-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1185-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1185-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1185-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1185-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1186-000",
"phase": "1186",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1185-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1186",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1186-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1186-001",
"phase": "1186",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1186-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1186-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1186-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1186-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1186-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1186-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1186-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1187-000",
"phase": "1187",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1186-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1187",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1187-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1187-001",
"phase": "1187",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1187-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1187-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1187-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1187-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1344290dd2cb9042",
"selectedRecordIds": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_accumulate_field.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_domain_size.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_statistic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bake.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_blur_attribute.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeAccumulateField type is read from Blender Main",
"GeometryNodeAttributeDomainSize type is read from Blender Main",
"GeometryNodeAttributeStatistic type is read from Blender Main",
"GeometryNodeBake type is read from Blender Main",
"GeometryNodeBlurAttribute type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1187-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1187-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1344290dd2cb9042.blend WBV2_BATCH_TYPES='[\"GeometryNodeAccumulateField\",\"GeometryNodeAttributeDomainSize\",\"GeometryNodeAttributeStatistic\",\"GeometryNodeBake\",\"GeometryNodeBlurAttribute\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeAccumulateField\",\"node:GeometryNodeAttributeDomainSize\",\"node:GeometryNodeAttributeStatistic\",\"node:GeometryNodeBake\",\"node:GeometryNodeBlurAttribute\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1187-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeAccumulateField",
"node:GeometryNodeAttributeDomainSize",
"node:GeometryNodeAttributeStatistic",
"node:GeometryNodeBake",
"node:GeometryNodeBlurAttribute"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1188-000",
"phase": "1188",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1187-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1188",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1188-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1188-001",
"phase": "1188",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1188-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1188-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1188-001:AUTO_GEOMETRY_NATIVE_NODE_READER:0f87459df8986017",
"selectedRecordIds": [
"node:GeometryNodeBoneInfo",
"node:GeometryNodeBoundBox",
"node:GeometryNodeCameraInfo",
"node:GeometryNodeCaptureAttribute",
"node:GeometryNodeClosureToList"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1188-001:AUTO_GEOMETRY_NATIVE_NODE_READER:0f87459df8986017",
"selectedRecordIds": [
"node:GeometryNodeBoneInfo",
"node:GeometryNodeBoundBox",
"node:GeometryNodeCameraInfo",
"node:GeometryNodeCaptureAttribute",
"node:GeometryNodeClosureToList"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bone_info.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_bounding_box.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_camera_info.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_attribute_capture.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_closure_to_list.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-0f87459df8986017.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeBoneInfo type is read from Blender Main",
"GeometryNodeBoundBox type is read from Blender Main",
"GeometryNodeCameraInfo type is read from Blender Main",
"GeometryNodeCaptureAttribute type is read from Blender Main",
"GeometryNodeClosureToList type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1188-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1188-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-0f87459df8986017.blend WBV2_BATCH_TYPES='[\"GeometryNodeBoneInfo\",\"GeometryNodeBoundBox\",\"GeometryNodeCameraInfo\",\"GeometryNodeCaptureAttribute\",\"GeometryNodeClosureToList\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeBoneInfo\",\"node:GeometryNodeBoundBox\",\"node:GeometryNodeCameraInfo\",\"node:GeometryNodeCaptureAttribute\",\"node:GeometryNodeClosureToList\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1188-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeBoneInfo",
"node:GeometryNodeBoundBox",
"node:GeometryNodeCameraInfo",
"node:GeometryNodeCaptureAttribute",
"node:GeometryNodeClosureToList"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1189-000",
"phase": "1189",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1188-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1189",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1189-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1189-001",
"phase": "1189",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1189-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1189-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1189-001:AUTO_GEOMETRY_NATIVE_NODE_READER:447074d84f4807db",
"selectedRecordIds": [
"node:GeometryNodeClusterByConnected",
"node:GeometryNodeClusterByDistance",
"node:GeometryNodeCollectionChildren",
"node:GeometryNodeConvexHull",
"node:GeometryNodeCornersOfEdge"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1189-001:AUTO_GEOMETRY_NATIVE_NODE_READER:447074d84f4807db",
"selectedRecordIds": [
"node:GeometryNodeClusterByConnected",
"node:GeometryNodeClusterByDistance",
"node:GeometryNodeCollectionChildren",
"node:GeometryNodeConvexHull",
"node:GeometryNodeCornersOfEdge"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_cluster_by_connected.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_cluster_by_distance.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_collection_children.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_edge.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-447074d84f4807db.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeClusterByConnected type is read from Blender Main",
"GeometryNodeClusterByDistance type is read from Blender Main",
"GeometryNodeCollectionChildren type is read from Blender Main",
"GeometryNodeConvexHull type is read from Blender Main",
"GeometryNodeCornersOfEdge type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1189-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1189-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-447074d84f4807db.blend WBV2_BATCH_TYPES='[\"GeometryNodeClusterByConnected\",\"GeometryNodeClusterByDistance\",\"GeometryNodeCollectionChildren\",\"GeometryNodeConvexHull\",\"GeometryNodeCornersOfEdge\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeClusterByConnected\",\"node:GeometryNodeClusterByDistance\",\"node:GeometryNodeCollectionChildren\",\"node:GeometryNodeConvexHull\",\"node:GeometryNodeCornersOfEdge\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1189-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeClusterByConnected",
"node:GeometryNodeClusterByDistance",
"node:GeometryNodeCollectionChildren",
"node:GeometryNodeConvexHull",
"node:GeometryNodeCornersOfEdge"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1190-000",
"phase": "1190",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1189-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1190",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1190-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1190-001",
"phase": "1190",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1190-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1190-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1190-001:AUTO_GEOMETRY_NATIVE_NODE_READER:b123b8cea34de98b",
"selectedRecordIds": [
"node:GeometryNodeCornersOfFace",
"node:GeometryNodeCornersOfVertex",
"node:GeometryNodeCubeGridTopology",
"node:GeometryNodeCurveArc",
"node:GeometryNodeCurveEndpointSelection"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1190-001:AUTO_GEOMETRY_NATIVE_NODE_READER:b123b8cea34de98b",
"selectedRecordIds": [
"node:GeometryNodeCornersOfFace",
"node:GeometryNodeCornersOfVertex",
"node:GeometryNodeCubeGridTopology",
"node:GeometryNodeCurveArc",
"node:GeometryNodeCurveEndpointSelection"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_face.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_vertex.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_cube_grid_topology.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_arc.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_endpoint_selection.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-b123b8cea34de98b.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeCornersOfFace type is read from Blender Main",
"GeometryNodeCornersOfVertex type is read from Blender Main",
"GeometryNodeCubeGridTopology type is read from Blender Main",
"GeometryNodeCurveArc type is read from Blender Main",
"GeometryNodeCurveEndpointSelection type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1190-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1190-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-b123b8cea34de98b.blend WBV2_BATCH_TYPES='[\"GeometryNodeCornersOfFace\",\"GeometryNodeCornersOfVertex\",\"GeometryNodeCubeGridTopology\",\"GeometryNodeCurveArc\",\"GeometryNodeCurveEndpointSelection\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeCornersOfFace\",\"node:GeometryNodeCornersOfVertex\",\"node:GeometryNodeCubeGridTopology\",\"node:GeometryNodeCurveArc\",\"node:GeometryNodeCurveEndpointSelection\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1190-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeCornersOfFace",
"node:GeometryNodeCornersOfVertex",
"node:GeometryNodeCubeGridTopology",
"node:GeometryNodeCurveArc",
"node:GeometryNodeCurveEndpointSelection"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1191-000",
"phase": "1191",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1190-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1191",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1191-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1191-001",
"phase": "1191",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1191-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1191-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1191-001:AUTO_GEOMETRY_NATIVE_NODE_READER:71424076a2a8f339",
"selectedRecordIds": [
"node:GeometryNodeCurveHandleTypeSelection",
"node:GeometryNodeCurveLength",
"node:GeometryNodeCurveOfPoint",
"node:GeometryNodeCurvePrimitiveBezierSegment",
"node:GeometryNodeCurvePrimitiveCircle"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1191-001:AUTO_GEOMETRY_NATIVE_NODE_READER:71424076a2a8f339",
"selectedRecordIds": [
"node:GeometryNodeCurveHandleTypeSelection",
"node:GeometryNodeCurveLength",
"node:GeometryNodeCurveOfPoint",
"node:GeometryNodeCurvePrimitiveBezierSegment",
"node:GeometryNodeCurvePrimitiveCircle"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_handle_type_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_length.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_topology_curve_of_point.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_bezier_segment.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_circle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-71424076a2a8f339.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeCurveHandleTypeSelection type is read from Blender Main",
"GeometryNodeCurveLength type is read from Blender Main",
"GeometryNodeCurveOfPoint type is read from Blender Main",
"GeometryNodeCurvePrimitiveBezierSegment type is read from Blender Main",
"GeometryNodeCurvePrimitiveCircle type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1191-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1191-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-71424076a2a8f339.blend WBV2_BATCH_TYPES='[\"GeometryNodeCurveHandleTypeSelection\",\"GeometryNodeCurveLength\",\"GeometryNodeCurveOfPoint\",\"GeometryNodeCurvePrimitiveBezierSegment\",\"GeometryNodeCurvePrimitiveCircle\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeCurveHandleTypeSelection\",\"node:GeometryNodeCurveLength\",\"node:GeometryNodeCurveOfPoint\",\"node:GeometryNodeCurvePrimitiveBezierSegment\",\"node:GeometryNodeCurvePrimitiveCircle\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1191-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeCurveHandleTypeSelection",
"node:GeometryNodeCurveLength",
"node:GeometryNodeCurveOfPoint",
"node:GeometryNodeCurvePrimitiveBezierSegment",
"node:GeometryNodeCurvePrimitiveCircle"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1192-000",
"phase": "1192",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1191-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1192",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1192-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1192-001",
"phase": "1192",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1192-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1192-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1192-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c206ba8fc6cf75d5",
"selectedRecordIds": [
"node:GeometryNodeCurvePrimitiveLine",
"node:GeometryNodeCurvePrimitiveQuadrilateral",
"node:GeometryNodeCurveQuadraticBezier",
"node:GeometryNodeCurveSetHandles",
"node:GeometryNodeCurveSpiral"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1192-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c206ba8fc6cf75d5",
"selectedRecordIds": [
"node:GeometryNodeCurvePrimitiveLine",
"node:GeometryNodeCurvePrimitiveQuadrilateral",
"node:GeometryNodeCurveQuadraticBezier",
"node:GeometryNodeCurveSetHandles",
"node:GeometryNodeCurveSpiral"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_line.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_quadrilateral.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_quadratic_bezier.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_set_handle_type.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_spiral.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-c206ba8fc6cf75d5.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeCurvePrimitiveLine type is read from Blender Main",
"GeometryNodeCurvePrimitiveQuadrilateral type is read from Blender Main",
"GeometryNodeCurveQuadraticBezier type is read from Blender Main",
"GeometryNodeCurveSetHandles type is read from Blender Main",
"GeometryNodeCurveSpiral type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1192-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1192-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-c206ba8fc6cf75d5.blend WBV2_BATCH_TYPES='[\"GeometryNodeCurvePrimitiveLine\",\"GeometryNodeCurvePrimitiveQuadrilateral\",\"GeometryNodeCurveQuadraticBezier\",\"GeometryNodeCurveSetHandles\",\"GeometryNodeCurveSpiral\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeCurvePrimitiveLine\",\"node:GeometryNodeCurvePrimitiveQuadrilateral\",\"node:GeometryNodeCurveQuadraticBezier\",\"node:GeometryNodeCurveSetHandles\",\"node:GeometryNodeCurveSpiral\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1192-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeCurvePrimitiveLine",
"node:GeometryNodeCurvePrimitiveQuadrilateral",
"node:GeometryNodeCurveQuadraticBezier",
"node:GeometryNodeCurveSetHandles",
"node:GeometryNodeCurveSpiral"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1193-000",
"phase": "1193",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1192-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1193",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1193-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1193-001",
"phase": "1193",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1193-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1193-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1193-001:AUTO_GEOMETRY_NATIVE_NODE_READER:2ae9d67e9fb6b5f9",
"selectedRecordIds": [
"node:GeometryNodeCurveSplineType",
"node:GeometryNodeCurveStar",
"node:GeometryNodeCurveToMesh",
"node:GeometryNodeCurveToPoints",
"node:GeometryNodeCurvesToGreasePencil"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1193-001:AUTO_GEOMETRY_NATIVE_NODE_READER:2ae9d67e9fb6b5f9",
"selectedRecordIds": [
"node:GeometryNodeCurveSplineType",
"node:GeometryNodeCurveStar",
"node:GeometryNodeCurveToMesh",
"node:GeometryNodeCurveToPoints",
"node:GeometryNodeCurvesToGreasePencil"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_spline_type.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_star.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_to_mesh.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_to_points.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curves_to_grease_pencil.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-2ae9d67e9fb6b5f9.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeCurveSplineType type is read from Blender Main",
"GeometryNodeCurveStar type is read from Blender Main",
"GeometryNodeCurveToMesh type is read from Blender Main",
"GeometryNodeCurveToPoints type is read from Blender Main",
"GeometryNodeCurvesToGreasePencil type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1193-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1193-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-2ae9d67e9fb6b5f9.blend WBV2_BATCH_TYPES='[\"GeometryNodeCurveSplineType\",\"GeometryNodeCurveStar\",\"GeometryNodeCurveToMesh\",\"GeometryNodeCurveToPoints\",\"GeometryNodeCurvesToGreasePencil\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeCurveSplineType\",\"node:GeometryNodeCurveStar\",\"node:GeometryNodeCurveToMesh\",\"node:GeometryNodeCurveToPoints\",\"node:GeometryNodeCurvesToGreasePencil\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1193-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeCurveSplineType",
"node:GeometryNodeCurveStar",
"node:GeometryNodeCurveToMesh",
"node:GeometryNodeCurveToPoints",
"node:GeometryNodeCurvesToGreasePencil"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1194-000",
"phase": "1194",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1193-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1194",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1194-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1194-001",
"phase": "1194",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1194-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1194-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1194-001:AUTO_GEOMETRY_NATIVE_NODE_READER:8f6105d06959322c",
"selectedRecordIds": [
"node:GeometryNodeDeformCurvesOnSurface",
"node:GeometryNodeDeleteGeometry",
"node:GeometryNodeDistributePointsInGrid",
"node:GeometryNodeDistributePointsInVolume",
"node:GeometryNodeDistributePointsOnFaces"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1194-001:AUTO_GEOMETRY_NATIVE_NODE_READER:8f6105d06959322c",
"selectedRecordIds": [
"node:GeometryNodeDeformCurvesOnSurface",
"node:GeometryNodeDeleteGeometry",
"node:GeometryNodeDistributePointsInGrid",
"node:GeometryNodeDistributePointsInVolume",
"node:GeometryNodeDistributePointsOnFaces"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_deform_curves_on_surface.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_distribute_points_in_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_distribute_points_in_volume.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-8f6105d06959322c.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeDeformCurvesOnSurface type is read from Blender Main",
"GeometryNodeDeleteGeometry type is read from Blender Main",
"GeometryNodeDistributePointsInGrid type is read from Blender Main",
"GeometryNodeDistributePointsInVolume type is read from Blender Main",
"GeometryNodeDistributePointsOnFaces type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1194-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1194-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-8f6105d06959322c.blend WBV2_BATCH_TYPES='[\"GeometryNodeDeformCurvesOnSurface\",\"GeometryNodeDeleteGeometry\",\"GeometryNodeDistributePointsInGrid\",\"GeometryNodeDistributePointsInVolume\",\"GeometryNodeDistributePointsOnFaces\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeDeformCurvesOnSurface\",\"node:GeometryNodeDeleteGeometry\",\"node:GeometryNodeDistributePointsInGrid\",\"node:GeometryNodeDistributePointsInVolume\",\"node:GeometryNodeDistributePointsOnFaces\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1194-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeDeformCurvesOnSurface",
"node:GeometryNodeDeleteGeometry",
"node:GeometryNodeDistributePointsInGrid",
"node:GeometryNodeDistributePointsInVolume",
"node:GeometryNodeDistributePointsOnFaces"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1195-000",
"phase": "1195",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1194-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1195",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1195-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1195-001",
"phase": "1195",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1195-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1195-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1195-001:AUTO_GEOMETRY_NATIVE_NODE_READER:35aea559d5d0f343",
"selectedRecordIds": [
"node:GeometryNodeDualMesh",
"node:GeometryNodeDuplicateElements",
"node:GeometryNodeEdgePathsToCurves",
"node:GeometryNodeEdgePathsToSelection",
"node:GeometryNodeEdgesOfCorner"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1195-001:AUTO_GEOMETRY_NATIVE_NODE_READER:35aea559d5d0f343",
"selectedRecordIds": [
"node:GeometryNodeDualMesh",
"node:GeometryNodeDuplicateElements",
"node:GeometryNodeEdgePathsToCurves",
"node:GeometryNodeEdgePathsToSelection",
"node:GeometryNodeEdgesOfCorner"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_edge_paths_to_curves.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_edge_paths_to_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_edges_of_corner.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-35aea559d5d0f343.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeDualMesh type is read from Blender Main",
"GeometryNodeDuplicateElements type is read from Blender Main",
"GeometryNodeEdgePathsToCurves type is read from Blender Main",
"GeometryNodeEdgePathsToSelection type is read from Blender Main",
"GeometryNodeEdgesOfCorner type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1195-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1195-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-35aea559d5d0f343.blend WBV2_BATCH_TYPES='[\"GeometryNodeDualMesh\",\"GeometryNodeDuplicateElements\",\"GeometryNodeEdgePathsToCurves\",\"GeometryNodeEdgePathsToSelection\",\"GeometryNodeEdgesOfCorner\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeDualMesh\",\"node:GeometryNodeDuplicateElements\",\"node:GeometryNodeEdgePathsToCurves\",\"node:GeometryNodeEdgePathsToSelection\",\"node:GeometryNodeEdgesOfCorner\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1195-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeDualMesh",
"node:GeometryNodeDuplicateElements",
"node:GeometryNodeEdgePathsToCurves",
"node:GeometryNodeEdgePathsToSelection",
"node:GeometryNodeEdgesOfCorner"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1196-000",
"phase": "1196",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1195-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1196",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1196-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1196-001",
"phase": "1196",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1196-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1196-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1196-001:AUTO_GEOMETRY_NATIVE_NODE_READER:96303bc7f7c8d232",
"selectedRecordIds": [
"node:GeometryNodeEdgesOfVertex",
"node:GeometryNodeEdgesToFaceGroups",
"node:GeometryNodeExtrudeMesh",
"node:GeometryNodeFaceOfCorner",
"node:GeometryNodeFieldAtIndex"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1196-001:AUTO_GEOMETRY_NATIVE_NODE_READER:96303bc7f7c8d232",
"selectedRecordIds": [
"node:GeometryNodeEdgesOfVertex",
"node:GeometryNodeEdgesToFaceGroups",
"node:GeometryNodeExtrudeMesh",
"node:GeometryNodeFaceOfCorner",
"node:GeometryNodeFieldAtIndex"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_edges_of_vertex.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_edges_to_face_groups.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_face_of_corner.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_evaluate_at_index.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-96303bc7f7c8d232.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeEdgesOfVertex type is read from Blender Main",
"GeometryNodeEdgesToFaceGroups type is read from Blender Main",
"GeometryNodeExtrudeMesh type is read from Blender Main",
"GeometryNodeFaceOfCorner type is read from Blender Main",
"GeometryNodeFieldAtIndex type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1196-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1196-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-96303bc7f7c8d232.blend WBV2_BATCH_TYPES='[\"GeometryNodeEdgesOfVertex\",\"GeometryNodeEdgesToFaceGroups\",\"GeometryNodeExtrudeMesh\",\"GeometryNodeFaceOfCorner\",\"GeometryNodeFieldAtIndex\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeEdgesOfVertex\",\"node:GeometryNodeEdgesToFaceGroups\",\"node:GeometryNodeExtrudeMesh\",\"node:GeometryNodeFaceOfCorner\",\"node:GeometryNodeFieldAtIndex\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1196-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeEdgesOfVertex",
"node:GeometryNodeEdgesToFaceGroups",
"node:GeometryNodeExtrudeMesh",
"node:GeometryNodeFaceOfCorner",
"node:GeometryNodeFieldAtIndex"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1197-000",
"phase": "1197",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1196-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1197",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1197-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1197-001",
"phase": "1197",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1197-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1197-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1197-001:AUTO_GEOMETRY_NATIVE_NODE_READER:4e53a3a8ffb6f8a7",
"selectedRecordIds": [
"node:GeometryNodeFieldAverage",
"node:GeometryNodeFieldMinAndMax",
"node:GeometryNodeFieldOnDomain",
"node:GeometryNodeFieldToGrid",
"node:GeometryNodeFieldToList"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1197-001:AUTO_GEOMETRY_NATIVE_NODE_READER:4e53a3a8ffb6f8a7",
"selectedRecordIds": [
"node:GeometryNodeFieldAverage",
"node:GeometryNodeFieldMinAndMax",
"node:GeometryNodeFieldOnDomain",
"node:GeometryNodeFieldToGrid",
"node:GeometryNodeFieldToList"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_field_average.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_field_min_and_max.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_evaluate_on_domain.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_field_to_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_field_to_list.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-4e53a3a8ffb6f8a7.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeFieldAverage type is read from Blender Main",
"GeometryNodeFieldMinAndMax type is read from Blender Main",
"GeometryNodeFieldOnDomain type is read from Blender Main",
"GeometryNodeFieldToGrid type is read from Blender Main",
"GeometryNodeFieldToList type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1197-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1197-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-4e53a3a8ffb6f8a7.blend WBV2_BATCH_TYPES='[\"GeometryNodeFieldAverage\",\"GeometryNodeFieldMinAndMax\",\"GeometryNodeFieldOnDomain\",\"GeometryNodeFieldToGrid\",\"GeometryNodeFieldToList\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeFieldAverage\",\"node:GeometryNodeFieldMinAndMax\",\"node:GeometryNodeFieldOnDomain\",\"node:GeometryNodeFieldToGrid\",\"node:GeometryNodeFieldToList\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1197-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeFieldAverage",
"node:GeometryNodeFieldMinAndMax",
"node:GeometryNodeFieldOnDomain",
"node:GeometryNodeFieldToGrid",
"node:GeometryNodeFieldToList"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1198-000",
"phase": "1198",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1197-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1198",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1198-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1198-001",
"phase": "1198",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1198-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1198-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1198-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6581c99986be795f",
"selectedRecordIds": [
"node:GeometryNodeFieldVariance",
"node:GeometryNodeFillCurve",
"node:GeometryNodeFilletCurve",
"node:GeometryNodeFilterList",
"node:GeometryNodeFlipFaces"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1198-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6581c99986be795f",
"selectedRecordIds": [
"node:GeometryNodeFieldVariance",
"node:GeometryNodeFillCurve",
"node:GeometryNodeFilletCurve",
"node:GeometryNodeFilterList",
"node:GeometryNodeFlipFaces"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_field_variance.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_fillet.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_filter_list.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-6581c99986be795f.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeFieldVariance type is read from Blender Main",
"GeometryNodeFillCurve type is read from Blender Main",
"GeometryNodeFilletCurve type is read from Blender Main",
"GeometryNodeFilterList type is read from Blender Main",
"GeometryNodeFlipFaces type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1198-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1198-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-6581c99986be795f.blend WBV2_BATCH_TYPES='[\"GeometryNodeFieldVariance\",\"GeometryNodeFillCurve\",\"GeometryNodeFilletCurve\",\"GeometryNodeFilterList\",\"GeometryNodeFlipFaces\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeFieldVariance\",\"node:GeometryNodeFillCurve\",\"node:GeometryNodeFilletCurve\",\"node:GeometryNodeFilterList\",\"node:GeometryNodeFlipFaces\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1198-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeFieldVariance",
"node:GeometryNodeFillCurve",
"node:GeometryNodeFilletCurve",
"node:GeometryNodeFilterList",
"node:GeometryNodeFlipFaces"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1199-000",
"phase": "1199",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1198-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1199",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1199-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1199-001",
"phase": "1199",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1199-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1199-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1199-001:AUTO_GEOMETRY_NATIVE_NODE_READER:240d704df4420718",
"selectedRecordIds": [
"node:GeometryNodeForeachGeometryElementInput",
"node:GeometryNodeForeachGeometryElementOutput",
"node:GeometryNodeGeometryToInstance",
"node:GeometryNodeGetAttributeNames",
"node:GeometryNodeGetGeometryBundle"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1199-001:AUTO_GEOMETRY_NATIVE_NODE_READER:240d704df4420718",
"selectedRecordIds": [
"node:GeometryNodeForeachGeometryElementInput",
"node:GeometryNodeForeachGeometryElementOutput",
"node:GeometryNodeGeometryToInstance",
"node:GeometryNodeGetAttributeNames",
"node:GeometryNodeGetGeometryBundle"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_foreach_geometry_element.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_foreach_geometry_element.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_geometry_to_instance.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_get_attribute_names.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_get_geometry_bundle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-240d704df4420718.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeForeachGeometryElementInput type is read from Blender Main",
"GeometryNodeForeachGeometryElementOutput type is read from Blender Main",
"GeometryNodeGeometryToInstance type is read from Blender Main",
"GeometryNodeGetAttributeNames type is read from Blender Main",
"GeometryNodeGetGeometryBundle type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1199-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1199-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-240d704df4420718.blend WBV2_BATCH_TYPES='[\"GeometryNodeForeachGeometryElementInput\",\"GeometryNodeForeachGeometryElementOutput\",\"GeometryNodeGeometryToInstance\",\"GeometryNodeGetAttributeNames\",\"GeometryNodeGetGeometryBundle\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeForeachGeometryElementInput\",\"node:GeometryNodeForeachGeometryElementOutput\",\"node:GeometryNodeGeometryToInstance\",\"node:GeometryNodeGetAttributeNames\",\"node:GeometryNodeGetGeometryBundle\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1199-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeForeachGeometryElementInput",
"node:GeometryNodeForeachGeometryElementOutput",
"node:GeometryNodeGeometryToInstance",
"node:GeometryNodeGetAttributeNames",
"node:GeometryNodeGetGeometryBundle"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1200-000",
"phase": "1200",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1199-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1200",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1200-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1200-001",
"phase": "1200",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1200-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1200-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1200-001:AUTO_GEOMETRY_NATIVE_NODE_READER:2657bc0520c4b632",
"selectedRecordIds": [
"node:GeometryNodeGetGeometryComponent",
"node:GeometryNodeGetNamedGrid",
"node:GeometryNodeGizmoDial",
"node:GeometryNodeGizmoLinear",
"node:GeometryNodeGizmoTransform"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1200-001:AUTO_GEOMETRY_NATIVE_NODE_READER:2657bc0520c4b632",
"selectedRecordIds": [
"node:GeometryNodeGetGeometryComponent",
"node:GeometryNodeGetNamedGrid",
"node:GeometryNodeGizmoDial",
"node:GeometryNodeGizmoLinear",
"node:GeometryNodeGizmoTransform"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_get_geometry_component.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_get_named_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_gizmo_dial.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_gizmo_linear.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_gizmo_transform.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-2657bc0520c4b632.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeGetGeometryComponent type is read from Blender Main",
"GeometryNodeGetNamedGrid type is read from Blender Main",
"GeometryNodeGizmoDial type is read from Blender Main",
"GeometryNodeGizmoLinear type is read from Blender Main",
"GeometryNodeGizmoTransform type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1200-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1200-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-2657bc0520c4b632.blend WBV2_BATCH_TYPES='[\"GeometryNodeGetGeometryComponent\",\"GeometryNodeGetNamedGrid\",\"GeometryNodeGizmoDial\",\"GeometryNodeGizmoLinear\",\"GeometryNodeGizmoTransform\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeGetGeometryComponent\",\"node:GeometryNodeGetNamedGrid\",\"node:GeometryNodeGizmoDial\",\"node:GeometryNodeGizmoLinear\",\"node:GeometryNodeGizmoTransform\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1200-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeGetGeometryComponent",
"node:GeometryNodeGetNamedGrid",
"node:GeometryNodeGizmoDial",
"node:GeometryNodeGizmoLinear",
"node:GeometryNodeGizmoTransform"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1201-000",
"phase": "1201",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1200-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1201",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1201-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1201-001",
"phase": "1201",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1201-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1201-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1201-001:AUTO_GEOMETRY_NATIVE_NODE_READER:163fbe66b349eb14",
"selectedRecordIds": [
"node:GeometryNodeGreasePencilToCurves",
"node:GeometryNodeGridAdvect",
"node:GeometryNodeGridClip",
"node:GeometryNodeGridCurl",
"node:GeometryNodeGridDilateAndErode"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1201-001:AUTO_GEOMETRY_NATIVE_NODE_READER:163fbe66b349eb14",
"selectedRecordIds": [
"node:GeometryNodeGreasePencilToCurves",
"node:GeometryNodeGridAdvect",
"node:GeometryNodeGridClip",
"node:GeometryNodeGridCurl",
"node:GeometryNodeGridDilateAndErode"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grease_pencil_to_curves.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_advect.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_clip.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_curl.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_dilate_erode.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-163fbe66b349eb14.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeGreasePencilToCurves type is read from Blender Main",
"GeometryNodeGridAdvect type is read from Blender Main",
"GeometryNodeGridClip type is read from Blender Main",
"GeometryNodeGridCurl type is read from Blender Main",
"GeometryNodeGridDilateAndErode type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1201-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1201-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-163fbe66b349eb14.blend WBV2_BATCH_TYPES='[\"GeometryNodeGreasePencilToCurves\",\"GeometryNodeGridAdvect\",\"GeometryNodeGridClip\",\"GeometryNodeGridCurl\",\"GeometryNodeGridDilateAndErode\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeGreasePencilToCurves\",\"node:GeometryNodeGridAdvect\",\"node:GeometryNodeGridClip\",\"node:GeometryNodeGridCurl\",\"node:GeometryNodeGridDilateAndErode\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1201-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeGreasePencilToCurves",
"node:GeometryNodeGridAdvect",
"node:GeometryNodeGridClip",
"node:GeometryNodeGridCurl",
"node:GeometryNodeGridDilateAndErode"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1202-000",
"phase": "1202",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1201-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1202",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1202-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1202-001",
"phase": "1202",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1202-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1202-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1202-001:AUTO_GEOMETRY_NATIVE_NODE_READER:5aa18e58ddffee84",
"selectedRecordIds": [
"node:GeometryNodeGridDivergence",
"node:GeometryNodeGridGradient",
"node:GeometryNodeGridInfo",
"node:GeometryNodeGridLaplacian",
"node:GeometryNodeGridMean"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1202-001:AUTO_GEOMETRY_NATIVE_NODE_READER:5aa18e58ddffee84",
"selectedRecordIds": [
"node:GeometryNodeGridDivergence",
"node:GeometryNodeGridGradient",
"node:GeometryNodeGridInfo",
"node:GeometryNodeGridLaplacian",
"node:GeometryNodeGridMean"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_divergence.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_gradient.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_info.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_laplacian.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_mean.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-5aa18e58ddffee84.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeGridDivergence type is read from Blender Main",
"GeometryNodeGridGradient type is read from Blender Main",
"GeometryNodeGridInfo type is read from Blender Main",
"GeometryNodeGridLaplacian type is read from Blender Main",
"GeometryNodeGridMean type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1202-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1202-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-5aa18e58ddffee84.blend WBV2_BATCH_TYPES='[\"GeometryNodeGridDivergence\",\"GeometryNodeGridGradient\",\"GeometryNodeGridInfo\",\"GeometryNodeGridLaplacian\",\"GeometryNodeGridMean\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeGridDivergence\",\"node:GeometryNodeGridGradient\",\"node:GeometryNodeGridInfo\",\"node:GeometryNodeGridLaplacian\",\"node:GeometryNodeGridMean\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1202-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeGridDivergence",
"node:GeometryNodeGridGradient",
"node:GeometryNodeGridInfo",
"node:GeometryNodeGridLaplacian",
"node:GeometryNodeGridMean"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1203-000",
"phase": "1203",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1202-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1203",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1203-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1203-001",
"phase": "1203",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1203-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1203-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1203-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6897ad7bf98e7228",
"selectedRecordIds": [
"node:GeometryNodeGridMedian",
"node:GeometryNodeGridPrune",
"node:GeometryNodeGridToMesh",
"node:GeometryNodeGridToPoints",
"node:GeometryNodeGridVoxelize"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1203-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6897ad7bf98e7228",
"selectedRecordIds": [
"node:GeometryNodeGridMedian",
"node:GeometryNodeGridPrune",
"node:GeometryNodeGridToMesh",
"node:GeometryNodeGridToPoints",
"node:GeometryNodeGridVoxelize"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_median.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_prune.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_to_mesh.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_to_points.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_grid_voxelize.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-6897ad7bf98e7228.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeGridMedian type is read from Blender Main",
"GeometryNodeGridPrune type is read from Blender Main",
"GeometryNodeGridToMesh type is read from Blender Main",
"GeometryNodeGridToPoints type is read from Blender Main",
"GeometryNodeGridVoxelize type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1203-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1203-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-6897ad7bf98e7228.blend WBV2_BATCH_TYPES='[\"GeometryNodeGridMedian\",\"GeometryNodeGridPrune\",\"GeometryNodeGridToMesh\",\"GeometryNodeGridToPoints\",\"GeometryNodeGridVoxelize\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeGridMedian\",\"node:GeometryNodeGridPrune\",\"node:GeometryNodeGridToMesh\",\"node:GeometryNodeGridToPoints\",\"node:GeometryNodeGridVoxelize\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1203-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeGridMedian",
"node:GeometryNodeGridPrune",
"node:GeometryNodeGridToMesh",
"node:GeometryNodeGridToPoints",
"node:GeometryNodeGridVoxelize"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1204-000",
"phase": "1204",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1203-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1204",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1204-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1204-001",
"phase": "1204",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1204-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1204-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1204-001:AUTO_GEOMETRY_NATIVE_NODE_READER:cee66fd20924b9e5",
"selectedRecordIds": [
"node:GeometryNodeImageTexture",
"node:GeometryNodeImportCSV",
"node:GeometryNodeImportOBJ",
"node:GeometryNodeImportPLY",
"node:GeometryNodeImportSTL"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1204-001:AUTO_GEOMETRY_NATIVE_NODE_READER:cee66fd20924b9e5",
"selectedRecordIds": [
"node:GeometryNodeImageTexture",
"node:GeometryNodeImportCSV",
"node:GeometryNodeImportOBJ",
"node:GeometryNodeImportPLY",
"node:GeometryNodeImportSTL"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_image_texture.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_csv.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_obj.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_ply.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_stl.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-cee66fd20924b9e5.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeImageTexture type is read from Blender Main",
"GeometryNodeImportCSV type is read from Blender Main",
"GeometryNodeImportOBJ type is read from Blender Main",
"GeometryNodeImportPLY type is read from Blender Main",
"GeometryNodeImportSTL type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1204-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1204-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-cee66fd20924b9e5.blend WBV2_BATCH_TYPES='[\"GeometryNodeImageTexture\",\"GeometryNodeImportCSV\",\"GeometryNodeImportOBJ\",\"GeometryNodeImportPLY\",\"GeometryNodeImportSTL\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeImageTexture\",\"node:GeometryNodeImportCSV\",\"node:GeometryNodeImportOBJ\",\"node:GeometryNodeImportPLY\",\"node:GeometryNodeImportSTL\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1204-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeImageTexture",
"node:GeometryNodeImportCSV",
"node:GeometryNodeImportOBJ",
"node:GeometryNodeImportPLY",
"node:GeometryNodeImportSTL"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1205-000",
"phase": "1205",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1204-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1205",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1205-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1205-001",
"phase": "1205",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1205-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1205-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1205-001:AUTO_GEOMETRY_NATIVE_NODE_READER:e55a1c8c151fc9dc",
"selectedRecordIds": [
"node:GeometryNodeImportText",
"node:GeometryNodeImportVDB",
"node:GeometryNodeIndexOfNearest",
"node:GeometryNodeIndexSwitch",
"node:GeometryNodeInputActiveCamera"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1205-001:AUTO_GEOMETRY_NATIVE_NODE_READER:e55a1c8c151fc9dc",
"selectedRecordIds": [
"node:GeometryNodeImportText",
"node:GeometryNodeImportVDB",
"node:GeometryNodeIndexOfNearest",
"node:GeometryNodeIndexSwitch",
"node:GeometryNodeInputActiveCamera"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_text.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_import_vdb.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_index_of_nearest.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_index_switch.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_active_camera.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-e55a1c8c151fc9dc.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeImportText type is read from Blender Main",
"GeometryNodeImportVDB type is read from Blender Main",
"GeometryNodeIndexOfNearest type is read from Blender Main",
"GeometryNodeIndexSwitch type is read from Blender Main",
"GeometryNodeInputActiveCamera type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1205-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1205-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-e55a1c8c151fc9dc.blend WBV2_BATCH_TYPES='[\"GeometryNodeImportText\",\"GeometryNodeImportVDB\",\"GeometryNodeIndexOfNearest\",\"GeometryNodeIndexSwitch\",\"GeometryNodeInputActiveCamera\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeImportText\",\"node:GeometryNodeImportVDB\",\"node:GeometryNodeIndexOfNearest\",\"node:GeometryNodeIndexSwitch\",\"node:GeometryNodeInputActiveCamera\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1205-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeImportText",
"node:GeometryNodeImportVDB",
"node:GeometryNodeIndexOfNearest",
"node:GeometryNodeIndexSwitch",
"node:GeometryNodeInputActiveCamera"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1206-000",
"phase": "1206",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1205-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1206",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1206-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1206-001",
"phase": "1206",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1206-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1206-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1206-001:AUTO_GEOMETRY_NATIVE_NODE_READER:150a227b3433d301",
"selectedRecordIds": [
"node:GeometryNodeInputCollection",
"node:GeometryNodeInputCurveHandlePositions",
"node:GeometryNodeInputCurveTilt",
"node:GeometryNodeInputEdgeSmooth",
"node:GeometryNodeInputFont"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1206-001:AUTO_GEOMETRY_NATIVE_NODE_READER:150a227b3433d301",
"selectedRecordIds": [
"node:GeometryNodeInputCollection",
"node:GeometryNodeInputCurveHandlePositions",
"node:GeometryNodeInputCurveTilt",
"node:GeometryNodeInputEdgeSmooth",
"node:GeometryNodeInputFont"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_collection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_curve_handles.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_curve_tilt.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_edge_smooth.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_font.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-150a227b3433d301.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeInputCollection type is read from Blender Main",
"GeometryNodeInputCurveHandlePositions type is read from Blender Main",
"GeometryNodeInputCurveTilt type is read from Blender Main",
"GeometryNodeInputEdgeSmooth type is read from Blender Main",
"GeometryNodeInputFont type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1206-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1206-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-150a227b3433d301.blend WBV2_BATCH_TYPES='[\"GeometryNodeInputCollection\",\"GeometryNodeInputCurveHandlePositions\",\"GeometryNodeInputCurveTilt\",\"GeometryNodeInputEdgeSmooth\",\"GeometryNodeInputFont\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeInputCollection\",\"node:GeometryNodeInputCurveHandlePositions\",\"node:GeometryNodeInputCurveTilt\",\"node:GeometryNodeInputEdgeSmooth\",\"node:GeometryNodeInputFont\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1206-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeInputCollection",
"node:GeometryNodeInputCurveHandlePositions",
"node:GeometryNodeInputCurveTilt",
"node:GeometryNodeInputEdgeSmooth",
"node:GeometryNodeInputFont"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1207-000",
"phase": "1207",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1206-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1207",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1207-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1207-001",
"phase": "1207",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1207-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1207-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1207-001:AUTO_GEOMETRY_NATIVE_NODE_READER:32a41ae9caf449dc",
"selectedRecordIds": [
"node:GeometryNodeInputID",
"node:GeometryNodeInputImage",
"node:GeometryNodeInputIndex",
"node:GeometryNodeInputInstanceBounds",
"node:GeometryNodeInputInstanceReference"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1207-001:AUTO_GEOMETRY_NATIVE_NODE_READER:32a41ae9caf449dc",
"selectedRecordIds": [
"node:GeometryNodeInputID",
"node:GeometryNodeInputImage",
"node:GeometryNodeInputIndex",
"node:GeometryNodeInputInstanceBounds",
"node:GeometryNodeInputInstanceReference"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_id.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_image.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_index.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_instance_bounds.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_instance_reference.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-32a41ae9caf449dc.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeInputID type is read from Blender Main",
"GeometryNodeInputImage type is read from Blender Main",
"GeometryNodeInputIndex type is read from Blender Main",
"GeometryNodeInputInstanceBounds type is read from Blender Main",
"GeometryNodeInputInstanceReference type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1207-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1207-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-32a41ae9caf449dc.blend WBV2_BATCH_TYPES='[\"GeometryNodeInputID\",\"GeometryNodeInputImage\",\"GeometryNodeInputIndex\",\"GeometryNodeInputInstanceBounds\",\"GeometryNodeInputInstanceReference\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeInputID\",\"node:GeometryNodeInputImage\",\"node:GeometryNodeInputIndex\",\"node:GeometryNodeInputInstanceBounds\",\"node:GeometryNodeInputInstanceReference\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1207-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeInputID",
"node:GeometryNodeInputImage",
"node:GeometryNodeInputIndex",
"node:GeometryNodeInputInstanceBounds",
"node:GeometryNodeInputInstanceReference"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1208-000",
"phase": "1208",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1207-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1208",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1208-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1208-001",
"phase": "1208",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1208-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1208-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1208-001:AUTO_GEOMETRY_NATIVE_NODE_READER:e4c0acdab580fad4",
"selectedRecordIds": [
"node:GeometryNodeInputInstanceRotation",
"node:GeometryNodeInputInstanceScale",
"node:GeometryNodeInputMaterial",
"node:GeometryNodeInputMaterialIndex",
"node:GeometryNodeInputMeshEdgeAngle"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1208-001:AUTO_GEOMETRY_NATIVE_NODE_READER:e4c0acdab580fad4",
"selectedRecordIds": [
"node:GeometryNodeInputInstanceRotation",
"node:GeometryNodeInputInstanceScale",
"node:GeometryNodeInputMaterial",
"node:GeometryNodeInputMaterialIndex",
"node:GeometryNodeInputMeshEdgeAngle"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_instance_rotation.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_instance_scale.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_material.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_material_index.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_angle.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-e4c0acdab580fad4.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeInputInstanceRotation type is read from Blender Main",
"GeometryNodeInputInstanceScale type is read from Blender Main",
"GeometryNodeInputMaterial type is read from Blender Main",
"GeometryNodeInputMaterialIndex type is read from Blender Main",
"GeometryNodeInputMeshEdgeAngle type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1208-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1208-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-e4c0acdab580fad4.blend WBV2_BATCH_TYPES='[\"GeometryNodeInputInstanceRotation\",\"GeometryNodeInputInstanceScale\",\"GeometryNodeInputMaterial\",\"GeometryNodeInputMaterialIndex\",\"GeometryNodeInputMeshEdgeAngle\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeInputInstanceRotation\",\"node:GeometryNodeInputInstanceScale\",\"node:GeometryNodeInputMaterial\",\"node:GeometryNodeInputMaterialIndex\",\"node:GeometryNodeInputMeshEdgeAngle\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1208-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeInputInstanceRotation",
"node:GeometryNodeInputInstanceScale",
"node:GeometryNodeInputMaterial",
"node:GeometryNodeInputMaterialIndex",
"node:GeometryNodeInputMeshEdgeAngle"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1209-000",
"phase": "1209",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1208-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1209",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1209-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1209-001",
"phase": "1209",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1209-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1209-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1209-001:AUTO_GEOMETRY_NATIVE_NODE_READER:e28f27c297406a24",
"selectedRecordIds": [
"node:GeometryNodeInputMeshEdgeNeighbors",
"node:GeometryNodeInputMeshEdgeVertices",
"node:GeometryNodeInputMeshFaceArea",
"node:GeometryNodeInputMeshFaceIsPlanar",
"node:GeometryNodeInputMeshFaceNeighbors"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1209-001:AUTO_GEOMETRY_NATIVE_NODE_READER:e28f27c297406a24",
"selectedRecordIds": [
"node:GeometryNodeInputMeshEdgeNeighbors",
"node:GeometryNodeInputMeshEdgeVertices",
"node:GeometryNodeInputMeshFaceArea",
"node:GeometryNodeInputMeshFaceIsPlanar",
"node:GeometryNodeInputMeshFaceNeighbors"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_neighbors.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_vertices.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_area.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_is_planar.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_neighbors.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-e28f27c297406a24.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeInputMeshEdgeNeighbors type is read from Blender Main",
"GeometryNodeInputMeshEdgeVertices type is read from Blender Main",
"GeometryNodeInputMeshFaceArea type is read from Blender Main",
"GeometryNodeInputMeshFaceIsPlanar type is read from Blender Main",
"GeometryNodeInputMeshFaceNeighbors type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1209-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1209-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-e28f27c297406a24.blend WBV2_BATCH_TYPES='[\"GeometryNodeInputMeshEdgeNeighbors\",\"GeometryNodeInputMeshEdgeVertices\",\"GeometryNodeInputMeshFaceArea\",\"GeometryNodeInputMeshFaceIsPlanar\",\"GeometryNodeInputMeshFaceNeighbors\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeInputMeshEdgeNeighbors\",\"node:GeometryNodeInputMeshEdgeVertices\",\"node:GeometryNodeInputMeshFaceArea\",\"node:GeometryNodeInputMeshFaceIsPlanar\",\"node:GeometryNodeInputMeshFaceNeighbors\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1209-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeInputMeshEdgeNeighbors",
"node:GeometryNodeInputMeshEdgeVertices",
"node:GeometryNodeInputMeshFaceArea",
"node:GeometryNodeInputMeshFaceIsPlanar",
"node:GeometryNodeInputMeshFaceNeighbors"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1210-000",
"phase": "1210",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1209-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1210",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1210-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1210-001",
"phase": "1210",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1210-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1210-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1210-001:AUTO_GEOMETRY_NATIVE_NODE_READER:94bb44cb6fb6c1c0",
"selectedRecordIds": [
"node:GeometryNodeInputMeshIsland",
"node:GeometryNodeInputMeshVertexNeighbors",
"node:GeometryNodeInputNamedAttribute",
"node:GeometryNodeInputNamedLayerSelection",
"node:GeometryNodeInputNormal"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1210-001:AUTO_GEOMETRY_NATIVE_NODE_READER:94bb44cb6fb6c1c0",
"selectedRecordIds": [
"node:GeometryNodeInputMeshIsland",
"node:GeometryNodeInputMeshVertexNeighbors",
"node:GeometryNodeInputNamedAttribute",
"node:GeometryNodeInputNamedLayerSelection",
"node:GeometryNodeInputNormal"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_island.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_mesh_vertex_neighbors.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_named_attribute.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_named_layer_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_normal.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-94bb44cb6fb6c1c0.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeInputMeshIsland type is read from Blender Main",
"GeometryNodeInputMeshVertexNeighbors type is read from Blender Main",
"GeometryNodeInputNamedAttribute type is read from Blender Main",
"GeometryNodeInputNamedLayerSelection type is read from Blender Main",
"GeometryNodeInputNormal type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1210-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1210-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-94bb44cb6fb6c1c0.blend WBV2_BATCH_TYPES='[\"GeometryNodeInputMeshIsland\",\"GeometryNodeInputMeshVertexNeighbors\",\"GeometryNodeInputNamedAttribute\",\"GeometryNodeInputNamedLayerSelection\",\"GeometryNodeInputNormal\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeInputMeshIsland\",\"node:GeometryNodeInputMeshVertexNeighbors\",\"node:GeometryNodeInputNamedAttribute\",\"node:GeometryNodeInputNamedLayerSelection\",\"node:GeometryNodeInputNormal\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1210-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeInputMeshIsland",
"node:GeometryNodeInputMeshVertexNeighbors",
"node:GeometryNodeInputNamedAttribute",
"node:GeometryNodeInputNamedLayerSelection",
"node:GeometryNodeInputNormal"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1211-000",
"phase": "1211",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1210-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1211",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1211-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1211-001",
"phase": "1211",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1211-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1211-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1211-001:AUTO_GEOMETRY_NATIVE_NODE_READER:abc1ee2d37430201",
"selectedRecordIds": [
"node:FunctionNodeAlignRotationToVector",
"node:FunctionNodeAxesToRotation",
"node:FunctionNodeAxisAngleToRotation",
"node:FunctionNodeCombineMatrix",
"node:FunctionNodeEulerToRotation"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1211-001:AUTO_GEOMETRY_NATIVE_NODE_READER:abc1ee2d37430201",
"selectedRecordIds": [
"node:FunctionNodeAlignRotationToVector",
"node:FunctionNodeAxesToRotation",
"node:FunctionNodeAxisAngleToRotation",
"node:FunctionNodeCombineMatrix",
"node:FunctionNodeEulerToRotation"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_align_rotation_to_vector.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_axes_to_rotation.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_axis_angle_to_rotation.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_combine_matrix.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_euler_to_rotation.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-abc1ee2d37430201.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"FunctionNodeAlignRotationToVector type is read from Blender Main",
"FunctionNodeAxesToRotation type is read from Blender Main",
"FunctionNodeAxisAngleToRotation type is read from Blender Main",
"FunctionNodeCombineMatrix type is read from Blender Main",
"FunctionNodeEulerToRotation type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1211-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1211-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-abc1ee2d37430201.blend WBV2_BATCH_TYPES='[\"FunctionNodeAlignRotationToVector\",\"FunctionNodeAxesToRotation\",\"FunctionNodeAxisAngleToRotation\",\"FunctionNodeCombineMatrix\",\"FunctionNodeEulerToRotation\"]' WBV2_BATCH_UNITS='[\"node:FunctionNodeAlignRotationToVector\",\"node:FunctionNodeAxesToRotation\",\"node:FunctionNodeAxisAngleToRotation\",\"node:FunctionNodeCombineMatrix\",\"node:FunctionNodeEulerToRotation\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1211-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:FunctionNodeAlignRotationToVector",
"node:FunctionNodeAxesToRotation",
"node:FunctionNodeAxisAngleToRotation",
"node:FunctionNodeCombineMatrix",
"node:FunctionNodeEulerToRotation"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1212-000",
"phase": "1212",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1211-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1212",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1212-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1212-001",
"phase": "1212",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1212-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1212-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1212-001:AUTO_GEOMETRY_NATIVE_NODE_READER:3cfb811ea55c672e",
"selectedRecordIds": [
"node:FunctionNodeFindInString",
"node:FunctionNodeFormatString",
"node:FunctionNodeInputBool",
"node:FunctionNodeInputInt",
"node:FunctionNodeInputIntVector"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1212-001:AUTO_GEOMETRY_NATIVE_NODE_READER:3cfb811ea55c672e",
"selectedRecordIds": [
"node:FunctionNodeFindInString",
"node:FunctionNodeFormatString",
"node:FunctionNodeInputBool",
"node:FunctionNodeInputInt",
"node:FunctionNodeInputIntVector"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_find_in_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_format_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_bool.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_int.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_int_vector.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-3cfb811ea55c672e.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"FunctionNodeFindInString type is read from Blender Main",
"FunctionNodeFormatString type is read from Blender Main",
"FunctionNodeInputBool type is read from Blender Main",
"FunctionNodeInputInt type is read from Blender Main",
"FunctionNodeInputIntVector type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1212-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1212-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-3cfb811ea55c672e.blend WBV2_BATCH_TYPES='[\"FunctionNodeFindInString\",\"FunctionNodeFormatString\",\"FunctionNodeInputBool\",\"FunctionNodeInputInt\",\"FunctionNodeInputIntVector\"]' WBV2_BATCH_UNITS='[\"node:FunctionNodeFindInString\",\"node:FunctionNodeFormatString\",\"node:FunctionNodeInputBool\",\"node:FunctionNodeInputInt\",\"node:FunctionNodeInputIntVector\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1212-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:FunctionNodeFindInString",
"node:FunctionNodeFormatString",
"node:FunctionNodeInputBool",
"node:FunctionNodeInputInt",
"node:FunctionNodeInputIntVector"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1213-000",
"phase": "1213",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1212-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1213",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1213-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1213-001",
"phase": "1213",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1213-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1213-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1213-001:AUTO_GEOMETRY_NATIVE_NODE_READER:88ba8e6e3716dd8d",
"selectedRecordIds": [
"node:FunctionNodeInputMenu",
"node:FunctionNodeInputRotation",
"node:FunctionNodeInputSpecialCharacters",
"node:FunctionNodeInputString",
"node:FunctionNodeInputVector"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1213-001:AUTO_GEOMETRY_NATIVE_NODE_READER:88ba8e6e3716dd8d",
"selectedRecordIds": [
"node:FunctionNodeInputMenu",
"node:FunctionNodeInputRotation",
"node:FunctionNodeInputSpecialCharacters",
"node:FunctionNodeInputString",
"node:FunctionNodeInputVector"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_menu.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_rotation.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_special_characters.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_input_vector.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-88ba8e6e3716dd8d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"FunctionNodeInputMenu type is read from Blender Main",
"FunctionNodeInputRotation type is read from Blender Main",
"FunctionNodeInputSpecialCharacters type is read from Blender Main",
"FunctionNodeInputString type is read from Blender Main",
"FunctionNodeInputVector type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1213-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1213-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-88ba8e6e3716dd8d.blend WBV2_BATCH_TYPES='[\"FunctionNodeInputMenu\",\"FunctionNodeInputRotation\",\"FunctionNodeInputSpecialCharacters\",\"FunctionNodeInputString\",\"FunctionNodeInputVector\"]' WBV2_BATCH_UNITS='[\"node:FunctionNodeInputMenu\",\"node:FunctionNodeInputRotation\",\"node:FunctionNodeInputSpecialCharacters\",\"node:FunctionNodeInputString\",\"node:FunctionNodeInputVector\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1213-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:FunctionNodeInputMenu",
"node:FunctionNodeInputRotation",
"node:FunctionNodeInputSpecialCharacters",
"node:FunctionNodeInputString",
"node:FunctionNodeInputVector"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1214-000",
"phase": "1214",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1213-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1214",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1214-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1214-001",
"phase": "1214",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1214-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1214-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1214-001:AUTO_GEOMETRY_NATIVE_NODE_READER:7d31b4b0866780ae",
"selectedRecordIds": [
"node:FunctionNodeInvertMatrix",
"node:FunctionNodeInvertRotation",
"node:FunctionNodeMatchString",
"node:FunctionNodeMatrixDeterminant",
"node:FunctionNodeMatrixMultiply"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1214-001:AUTO_GEOMETRY_NATIVE_NODE_READER:7d31b4b0866780ae",
"selectedRecordIds": [
"node:FunctionNodeInvertMatrix",
"node:FunctionNodeInvertRotation",
"node:FunctionNodeMatchString",
"node:FunctionNodeMatrixDeterminant",
"node:FunctionNodeMatrixMultiply"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_invert_matrix.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_invert_rotation.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_match_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_matrix_determinant.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_matrix_multiply.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-7d31b4b0866780ae.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"FunctionNodeInvertMatrix type is read from Blender Main",
"FunctionNodeInvertRotation type is read from Blender Main",
"FunctionNodeMatchString type is read from Blender Main",
"FunctionNodeMatrixDeterminant type is read from Blender Main",
"FunctionNodeMatrixMultiply type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1214-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1214-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-7d31b4b0866780ae.blend WBV2_BATCH_TYPES='[\"FunctionNodeInvertMatrix\",\"FunctionNodeInvertRotation\",\"FunctionNodeMatchString\",\"FunctionNodeMatrixDeterminant\",\"FunctionNodeMatrixMultiply\"]' WBV2_BATCH_UNITS='[\"node:FunctionNodeInvertMatrix\",\"node:FunctionNodeInvertRotation\",\"node:FunctionNodeMatchString\",\"node:FunctionNodeMatrixDeterminant\",\"node:FunctionNodeMatrixMultiply\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1214-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:FunctionNodeInvertMatrix",
"node:FunctionNodeInvertRotation",
"node:FunctionNodeMatchString",
"node:FunctionNodeMatrixDeterminant",
"node:FunctionNodeMatrixMultiply"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1215-000",
"phase": "1215",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1214-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1215",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1215-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1215-001",
"phase": "1215",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1215-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1215-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1215-001:AUTO_GEOMETRY_NATIVE_NODE_READER:0a8d3bb55b10e188",
"selectedRecordIds": [
"node:FunctionNodeProjectPoint",
"node:FunctionNodeQuaternionToRotation",
"node:FunctionNodeReplaceString",
"node:FunctionNodeReverseString",
"node:FunctionNodeRotateRotation"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1215-001:AUTO_GEOMETRY_NATIVE_NODE_READER:0a8d3bb55b10e188",
"selectedRecordIds": [
"node:FunctionNodeProjectPoint",
"node:FunctionNodeQuaternionToRotation",
"node:FunctionNodeReplaceString",
"node:FunctionNodeReverseString",
"node:FunctionNodeRotateRotation"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_project_point.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_quaternion_to_rotation.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_replace_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_reverse_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_rotate_rotation.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-0a8d3bb55b10e188.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"FunctionNodeProjectPoint type is read from Blender Main",
"FunctionNodeQuaternionToRotation type is read from Blender Main",
"FunctionNodeReplaceString type is read from Blender Main",
"FunctionNodeReverseString type is read from Blender Main",
"FunctionNodeRotateRotation type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1215-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1215-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-0a8d3bb55b10e188.blend WBV2_BATCH_TYPES='[\"FunctionNodeProjectPoint\",\"FunctionNodeQuaternionToRotation\",\"FunctionNodeReplaceString\",\"FunctionNodeReverseString\",\"FunctionNodeRotateRotation\"]' WBV2_BATCH_UNITS='[\"node:FunctionNodeProjectPoint\",\"node:FunctionNodeQuaternionToRotation\",\"node:FunctionNodeReplaceString\",\"node:FunctionNodeReverseString\",\"node:FunctionNodeRotateRotation\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1215-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:FunctionNodeProjectPoint",
"node:FunctionNodeQuaternionToRotation",
"node:FunctionNodeReplaceString",
"node:FunctionNodeReverseString",
"node:FunctionNodeRotateRotation"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1216-000",
"phase": "1216",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1215-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1216",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1216-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1216-001",
"phase": "1216",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1216-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1216-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1216-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c598026385cc94dc",
"selectedRecordIds": [
"node:FunctionNodeRotateVector",
"node:FunctionNodeRotationToAxisAngle",
"node:FunctionNodeRotationToEuler",
"node:FunctionNodeRotationToQuaternion",
"node:FunctionNodeSeparateMatrix"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1216-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c598026385cc94dc",
"selectedRecordIds": [
"node:FunctionNodeRotateVector",
"node:FunctionNodeRotationToAxisAngle",
"node:FunctionNodeRotationToEuler",
"node:FunctionNodeRotationToQuaternion",
"node:FunctionNodeSeparateMatrix"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_rotate_vector.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_rotation_to_axis_angle.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_rotation_to_euler.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_rotation_to_quaternion.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_separate_matrix.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-c598026385cc94dc.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"FunctionNodeRotateVector type is read from Blender Main",
"FunctionNodeRotationToAxisAngle type is read from Blender Main",
"FunctionNodeRotationToEuler type is read from Blender Main",
"FunctionNodeRotationToQuaternion type is read from Blender Main",
"FunctionNodeSeparateMatrix type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1216-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1216-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-c598026385cc94dc.blend WBV2_BATCH_TYPES='[\"FunctionNodeRotateVector\",\"FunctionNodeRotationToAxisAngle\",\"FunctionNodeRotationToEuler\",\"FunctionNodeRotationToQuaternion\",\"FunctionNodeSeparateMatrix\"]' WBV2_BATCH_UNITS='[\"node:FunctionNodeRotateVector\",\"node:FunctionNodeRotationToAxisAngle\",\"node:FunctionNodeRotationToEuler\",\"node:FunctionNodeRotationToQuaternion\",\"node:FunctionNodeSeparateMatrix\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1216-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:FunctionNodeRotateVector",
"node:FunctionNodeRotationToAxisAngle",
"node:FunctionNodeRotationToEuler",
"node:FunctionNodeRotationToQuaternion",
"node:FunctionNodeSeparateMatrix"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1217-000",
"phase": "1217",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1216-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1217",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1217-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1217-001",
"phase": "1217",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1217-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1217-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1217-001:AUTO_GEOMETRY_NATIVE_NODE_READER:dbc0fb8bb88f3d37",
"selectedRecordIds": [
"node:FunctionNodeSetStringCase",
"node:FunctionNodeSliceString",
"node:FunctionNodeStringLength",
"node:FunctionNodeStringToValue",
"node:FunctionNodeTransformDirection"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1217-001:AUTO_GEOMETRY_NATIVE_NODE_READER:dbc0fb8bb88f3d37",
"selectedRecordIds": [
"node:FunctionNodeSetStringCase",
"node:FunctionNodeSliceString",
"node:FunctionNodeStringLength",
"node:FunctionNodeStringToValue",
"node:FunctionNodeTransformDirection"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_set_string_case.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_slice_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_string_length.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_string_to_value.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_transform_direction.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-dbc0fb8bb88f3d37.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"FunctionNodeSetStringCase type is read from Blender Main",
"FunctionNodeSliceString type is read from Blender Main",
"FunctionNodeStringLength type is read from Blender Main",
"FunctionNodeStringToValue type is read from Blender Main",
"FunctionNodeTransformDirection type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1217-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1217-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-dbc0fb8bb88f3d37.blend WBV2_BATCH_TYPES='[\"FunctionNodeSetStringCase\",\"FunctionNodeSliceString\",\"FunctionNodeStringLength\",\"FunctionNodeStringToValue\",\"FunctionNodeTransformDirection\"]' WBV2_BATCH_UNITS='[\"node:FunctionNodeSetStringCase\",\"node:FunctionNodeSliceString\",\"node:FunctionNodeStringLength\",\"node:FunctionNodeStringToValue\",\"node:FunctionNodeTransformDirection\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1217-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:FunctionNodeSetStringCase",
"node:FunctionNodeSliceString",
"node:FunctionNodeStringLength",
"node:FunctionNodeStringToValue",
"node:FunctionNodeTransformDirection"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1218-000",
"phase": "1218",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1217-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1218",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1218-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1218-001",
"phase": "1218",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1218-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1218-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1218-001:AUTO_GEOMETRY_NATIVE_NODE_READER:34abb58eedf43c5f",
"selectedRecordIds": [
"node:FunctionNodeTransformPoint",
"node:FunctionNodeTransposeMatrix",
"node:FunctionNodeTrimString",
"node:FunctionNodeValueToString",
"node:GeometryNodeInputObject"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1218-001:AUTO_GEOMETRY_NATIVE_NODE_READER:34abb58eedf43c5f",
"selectedRecordIds": [
"node:FunctionNodeTransformPoint",
"node:FunctionNodeTransposeMatrix",
"node:FunctionNodeTrimString",
"node:FunctionNodeValueToString",
"node:GeometryNodeInputObject"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_transform_point.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_transpose_matrix.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_trim_string.cc",
"blender-5.2.0/source/blender/nodes/function/nodes/node_fn_value_to_string.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_object.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-34abb58eedf43c5f.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"FunctionNodeTransformPoint type is read from Blender Main",
"FunctionNodeTransposeMatrix type is read from Blender Main",
"FunctionNodeTrimString type is read from Blender Main",
"FunctionNodeValueToString type is read from Blender Main",
"GeometryNodeInputObject type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1218-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1218-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-34abb58eedf43c5f.blend WBV2_BATCH_TYPES='[\"FunctionNodeTransformPoint\",\"FunctionNodeTransposeMatrix\",\"FunctionNodeTrimString\",\"FunctionNodeValueToString\",\"GeometryNodeInputObject\"]' WBV2_BATCH_UNITS='[\"node:FunctionNodeTransformPoint\",\"node:FunctionNodeTransposeMatrix\",\"node:FunctionNodeTrimString\",\"node:FunctionNodeValueToString\",\"node:GeometryNodeInputObject\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1218-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:FunctionNodeTransformPoint",
"node:FunctionNodeTransposeMatrix",
"node:FunctionNodeTrimString",
"node:FunctionNodeValueToString",
"node:GeometryNodeInputObject"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1219-000",
"phase": "1219",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1218-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1219",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1219-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1219-001",
"phase": "1219",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1219-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1219-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1219-001:AUTO_GEOMETRY_NATIVE_NODE_READER:3cccf2d7fb85d3b8",
"selectedRecordIds": [
"node:GeometryNodeInputPosition",
"node:GeometryNodeInputRadius",
"node:GeometryNodeInputSceneTime",
"node:GeometryNodeInputShadeSmooth",
"node:GeometryNodeInputShortestEdgePaths"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1219-001:AUTO_GEOMETRY_NATIVE_NODE_READER:3cccf2d7fb85d3b8",
"selectedRecordIds": [
"node:GeometryNodeInputPosition",
"node:GeometryNodeInputRadius",
"node:GeometryNodeInputSceneTime",
"node:GeometryNodeInputShadeSmooth",
"node:GeometryNodeInputShortestEdgePaths"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_position.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_radius.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_scene_time.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_face_smooth.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_shortest_edge_paths.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-3cccf2d7fb85d3b8.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeInputPosition type is read from Blender Main",
"GeometryNodeInputRadius type is read from Blender Main",
"GeometryNodeInputSceneTime type is read from Blender Main",
"GeometryNodeInputShadeSmooth type is read from Blender Main",
"GeometryNodeInputShortestEdgePaths type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1219-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1219-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-3cccf2d7fb85d3b8.blend WBV2_BATCH_TYPES='[\"GeometryNodeInputPosition\",\"GeometryNodeInputRadius\",\"GeometryNodeInputSceneTime\",\"GeometryNodeInputShadeSmooth\",\"GeometryNodeInputShortestEdgePaths\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeInputPosition\",\"node:GeometryNodeInputRadius\",\"node:GeometryNodeInputSceneTime\",\"node:GeometryNodeInputShadeSmooth\",\"node:GeometryNodeInputShortestEdgePaths\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1219-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeInputPosition",
"node:GeometryNodeInputRadius",
"node:GeometryNodeInputSceneTime",
"node:GeometryNodeInputShadeSmooth",
"node:GeometryNodeInputShortestEdgePaths"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1220-000",
"phase": "1220",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1219-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1220",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1220-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1220-001",
"phase": "1220",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1220-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1220-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1220-001:AUTO_GEOMETRY_NATIVE_NODE_READER:8d0f07a9289283d0",
"selectedRecordIds": [
"node:GeometryNodeInputSplineCyclic",
"node:GeometryNodeInputSplineResolution",
"node:GeometryNodeInputTangent",
"node:GeometryNodeInputVoxelIndex",
"node:GeometryNodeInstanceOnPoints"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1220-001:AUTO_GEOMETRY_NATIVE_NODE_READER:8d0f07a9289283d0",
"selectedRecordIds": [
"node:GeometryNodeInputSplineCyclic",
"node:GeometryNodeInputSplineResolution",
"node:GeometryNodeInputTangent",
"node:GeometryNodeInputVoxelIndex",
"node:GeometryNodeInstanceOnPoints"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_spline_cyclic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_spline_resolution.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_tangent.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_voxel_index.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_instance_on_points.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-8d0f07a9289283d0.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeInputSplineCyclic type is read from Blender Main",
"GeometryNodeInputSplineResolution type is read from Blender Main",
"GeometryNodeInputTangent type is read from Blender Main",
"GeometryNodeInputVoxelIndex type is read from Blender Main",
"GeometryNodeInstanceOnPoints type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1220-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1220-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-8d0f07a9289283d0.blend WBV2_BATCH_TYPES='[\"GeometryNodeInputSplineCyclic\",\"GeometryNodeInputSplineResolution\",\"GeometryNodeInputTangent\",\"GeometryNodeInputVoxelIndex\",\"GeometryNodeInstanceOnPoints\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeInputSplineCyclic\",\"node:GeometryNodeInputSplineResolution\",\"node:GeometryNodeInputTangent\",\"node:GeometryNodeInputVoxelIndex\",\"node:GeometryNodeInstanceOnPoints\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1220-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeInputSplineCyclic",
"node:GeometryNodeInputSplineResolution",
"node:GeometryNodeInputTangent",
"node:GeometryNodeInputVoxelIndex",
"node:GeometryNodeInstanceOnPoints"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1221-000",
"phase": "1221",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1220-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1221",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1221-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1221-001",
"phase": "1221",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1221-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1221-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1221-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c30b3d2a341bc8b1",
"selectedRecordIds": [
"node:GeometryNodeInstanceTransform",
"node:GeometryNodeInstancesToPoints",
"node:GeometryNodeInterpolateCurves",
"node:GeometryNodeIsViewport",
"node:GeometryNodeListGetItem"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1221-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c30b3d2a341bc8b1",
"selectedRecordIds": [
"node:GeometryNodeInstanceTransform",
"node:GeometryNodeInstancesToPoints",
"node:GeometryNodeInterpolateCurves",
"node:GeometryNodeIsViewport",
"node:GeometryNodeListGetItem"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_instance_transform.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_instances_to_points.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_interpolate_curves.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_is_viewport.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_list_get_item.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-c30b3d2a341bc8b1.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeInstanceTransform type is read from Blender Main",
"GeometryNodeInstancesToPoints type is read from Blender Main",
"GeometryNodeInterpolateCurves type is read from Blender Main",
"GeometryNodeIsViewport type is read from Blender Main",
"GeometryNodeListGetItem type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1221-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1221-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-c30b3d2a341bc8b1.blend WBV2_BATCH_TYPES='[\"GeometryNodeInstanceTransform\",\"GeometryNodeInstancesToPoints\",\"GeometryNodeInterpolateCurves\",\"GeometryNodeIsViewport\",\"GeometryNodeListGetItem\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeInstanceTransform\",\"node:GeometryNodeInstancesToPoints\",\"node:GeometryNodeInterpolateCurves\",\"node:GeometryNodeIsViewport\",\"node:GeometryNodeListGetItem\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1221-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeInstanceTransform",
"node:GeometryNodeInstancesToPoints",
"node:GeometryNodeInterpolateCurves",
"node:GeometryNodeIsViewport",
"node:GeometryNodeListGetItem"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1222-000",
"phase": "1222",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1221-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1222",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1222-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1222-001",
"phase": "1222",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1222-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1222-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1222-001:AUTO_GEOMETRY_NATIVE_NODE_READER:838d8958e4b989d1",
"selectedRecordIds": [
"node:GeometryNodeListLength",
"node:GeometryNodeMaterialSelection",
"node:GeometryNodeMenuSwitch",
"node:GeometryNodeMergeByDistance",
"node:GeometryNodeMergeLayers"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1222-001:AUTO_GEOMETRY_NATIVE_NODE_READER:838d8958e4b989d1",
"selectedRecordIds": [
"node:GeometryNodeListLength",
"node:GeometryNodeMaterialSelection",
"node:GeometryNodeMenuSwitch",
"node:GeometryNodeMergeByDistance",
"node:GeometryNodeMergeLayers"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_list_length.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_material_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_menu_switch.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_merge_by_distance.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_merge_layers.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-838d8958e4b989d1.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeListLength type is read from Blender Main",
"GeometryNodeMaterialSelection type is read from Blender Main",
"GeometryNodeMenuSwitch type is read from Blender Main",
"GeometryNodeMergeByDistance type is read from Blender Main",
"GeometryNodeMergeLayers type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1222-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1222-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-838d8958e4b989d1.blend WBV2_BATCH_TYPES='[\"GeometryNodeListLength\",\"GeometryNodeMaterialSelection\",\"GeometryNodeMenuSwitch\",\"GeometryNodeMergeByDistance\",\"GeometryNodeMergeLayers\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeListLength\",\"node:GeometryNodeMaterialSelection\",\"node:GeometryNodeMenuSwitch\",\"node:GeometryNodeMergeByDistance\",\"node:GeometryNodeMergeLayers\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1222-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeListLength",
"node:GeometryNodeMaterialSelection",
"node:GeometryNodeMenuSwitch",
"node:GeometryNodeMergeByDistance",
"node:GeometryNodeMergeLayers"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1223-000",
"phase": "1223",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1222-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1223",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1223-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1223-001",
"phase": "1223",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1223-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1223-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1223-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c3b7b0656afe6a91",
"selectedRecordIds": [
"node:GeometryNodeMergePoints",
"node:GeometryNodeMeshBevel",
"node:GeometryNodeMeshBoolean",
"node:GeometryNodeMeshCircle",
"node:GeometryNodeMeshCone"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1223-001:AUTO_GEOMETRY_NATIVE_NODE_READER:c3b7b0656afe6a91",
"selectedRecordIds": [
"node:GeometryNodeMergePoints",
"node:GeometryNodeMeshBevel",
"node:GeometryNodeMeshBoolean",
"node:GeometryNodeMeshCircle",
"node:GeometryNodeMeshCone"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_merge_points.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_bevel.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_boolean.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-c3b7b0656afe6a91.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeMergePoints type is read from Blender Main",
"GeometryNodeMeshBevel type is read from Blender Main",
"GeometryNodeMeshBoolean type is read from Blender Main",
"GeometryNodeMeshCircle type is read from Blender Main",
"GeometryNodeMeshCone type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1223-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1223-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-c3b7b0656afe6a91.blend WBV2_BATCH_TYPES='[\"GeometryNodeMergePoints\",\"GeometryNodeMeshBevel\",\"GeometryNodeMeshBoolean\",\"GeometryNodeMeshCircle\",\"GeometryNodeMeshCone\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeMergePoints\",\"node:GeometryNodeMeshBevel\",\"node:GeometryNodeMeshBoolean\",\"node:GeometryNodeMeshCircle\",\"node:GeometryNodeMeshCone\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1223-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeMergePoints",
"node:GeometryNodeMeshBevel",
"node:GeometryNodeMeshBoolean",
"node:GeometryNodeMeshCircle",
"node:GeometryNodeMeshCone"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1224-000",
"phase": "1224",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1223-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1224",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1224-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1224-001",
"phase": "1224",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1224-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1224-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1224-001:AUTO_GEOMETRY_NATIVE_NODE_READER:0dca701c57915fc7",
"selectedRecordIds": [
"node:GeometryNodeMeshCube",
"node:GeometryNodeMeshCylinder",
"node:GeometryNodeMeshFaceSetBoundaries",
"node:GeometryNodeMeshGrid",
"node:GeometryNodeMeshIcoSphere"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1224-001:AUTO_GEOMETRY_NATIVE_NODE_READER:0dca701c57915fc7",
"selectedRecordIds": [
"node:GeometryNodeMeshCube",
"node:GeometryNodeMeshCylinder",
"node:GeometryNodeMeshFaceSetBoundaries",
"node:GeometryNodeMeshGrid",
"node:GeometryNodeMeshIcoSphere"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cube.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_face_group_boundaries.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_ico_sphere.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-0dca701c57915fc7.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeMeshCube type is read from Blender Main",
"GeometryNodeMeshCylinder type is read from Blender Main",
"GeometryNodeMeshFaceSetBoundaries type is read from Blender Main",
"GeometryNodeMeshGrid type is read from Blender Main",
"GeometryNodeMeshIcoSphere type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1224-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1224-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-0dca701c57915fc7.blend WBV2_BATCH_TYPES='[\"GeometryNodeMeshCube\",\"GeometryNodeMeshCylinder\",\"GeometryNodeMeshFaceSetBoundaries\",\"GeometryNodeMeshGrid\",\"GeometryNodeMeshIcoSphere\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeMeshCube\",\"node:GeometryNodeMeshCylinder\",\"node:GeometryNodeMeshFaceSetBoundaries\",\"node:GeometryNodeMeshGrid\",\"node:GeometryNodeMeshIcoSphere\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1224-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeMeshCube",
"node:GeometryNodeMeshCylinder",
"node:GeometryNodeMeshFaceSetBoundaries",
"node:GeometryNodeMeshGrid",
"node:GeometryNodeMeshIcoSphere"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1225-000",
"phase": "1225",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1224-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1225",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1225-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1225-001",
"phase": "1225",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1225-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1225-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1225-001:AUTO_GEOMETRY_NATIVE_NODE_READER:142ee68a2ed9492b",
"selectedRecordIds": [
"node:GeometryNodeMeshLine",
"node:GeometryNodeMeshToCurve",
"node:GeometryNodeMeshToDensityGrid",
"node:GeometryNodeMeshToPoints",
"node:GeometryNodeMeshToSDFGrid"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1225-001:AUTO_GEOMETRY_NATIVE_NODE_READER:142ee68a2ed9492b",
"selectedRecordIds": [
"node:GeometryNodeMeshLine",
"node:GeometryNodeMeshToCurve",
"node:GeometryNodeMeshToDensityGrid",
"node:GeometryNodeMeshToPoints",
"node:GeometryNodeMeshToSDFGrid"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_line.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_to_curve.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_to_density_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_to_sdf_grid.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-142ee68a2ed9492b.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeMeshLine type is read from Blender Main",
"GeometryNodeMeshToCurve type is read from Blender Main",
"GeometryNodeMeshToDensityGrid type is read from Blender Main",
"GeometryNodeMeshToPoints type is read from Blender Main",
"GeometryNodeMeshToSDFGrid type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1225-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1225-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-142ee68a2ed9492b.blend WBV2_BATCH_TYPES='[\"GeometryNodeMeshLine\",\"GeometryNodeMeshToCurve\",\"GeometryNodeMeshToDensityGrid\",\"GeometryNodeMeshToPoints\",\"GeometryNodeMeshToSDFGrid\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeMeshLine\",\"node:GeometryNodeMeshToCurve\",\"node:GeometryNodeMeshToDensityGrid\",\"node:GeometryNodeMeshToPoints\",\"node:GeometryNodeMeshToSDFGrid\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1225-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeMeshLine",
"node:GeometryNodeMeshToCurve",
"node:GeometryNodeMeshToDensityGrid",
"node:GeometryNodeMeshToPoints",
"node:GeometryNodeMeshToSDFGrid"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1226-000",
"phase": "1226",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1225-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1226",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1226-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1226-001",
"phase": "1226",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1226-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1226-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1226-001:AUTO_GEOMETRY_NATIVE_NODE_READER:abb1c596d4ee21b2",
"selectedRecordIds": [
"node:GeometryNodeMeshToVolume",
"node:GeometryNodeMeshUVSphere",
"node:GeometryNodeOffsetCornerInFace",
"node:GeometryNodeOffsetPointInCurve",
"node:GeometryNodePoints"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1226-001:AUTO_GEOMETRY_NATIVE_NODE_READER:abb1c596d4ee21b2",
"selectedRecordIds": [
"node:GeometryNodeMeshToVolume",
"node:GeometryNodeMeshUVSphere",
"node:GeometryNodeOffsetCornerInFace",
"node:GeometryNodeOffsetPointInCurve",
"node:GeometryNodePoints"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_to_volume.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_offset_corner_in_face.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_offset_point_in_curve.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_points.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-abb1c596d4ee21b2.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeMeshToVolume type is read from Blender Main",
"GeometryNodeMeshUVSphere type is read from Blender Main",
"GeometryNodeOffsetCornerInFace type is read from Blender Main",
"GeometryNodeOffsetPointInCurve type is read from Blender Main",
"GeometryNodePoints type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1226-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1226-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-abb1c596d4ee21b2.blend WBV2_BATCH_TYPES='[\"GeometryNodeMeshToVolume\",\"GeometryNodeMeshUVSphere\",\"GeometryNodeOffsetCornerInFace\",\"GeometryNodeOffsetPointInCurve\",\"GeometryNodePoints\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeMeshToVolume\",\"node:GeometryNodeMeshUVSphere\",\"node:GeometryNodeOffsetCornerInFace\",\"node:GeometryNodeOffsetPointInCurve\",\"node:GeometryNodePoints\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1226-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeMeshToVolume",
"node:GeometryNodeMeshUVSphere",
"node:GeometryNodeOffsetCornerInFace",
"node:GeometryNodeOffsetPointInCurve",
"node:GeometryNodePoints"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1227-000",
"phase": "1227",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1226-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1227",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1227-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1227-001",
"phase": "1227",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1227-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1227-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1227-001:AUTO_GEOMETRY_NATIVE_NODE_READER:81deda73b9188c10",
"selectedRecordIds": [
"node:GeometryNodePointsOfCurve",
"node:GeometryNodePointsToCurves",
"node:GeometryNodePointsToSDFGrid",
"node:GeometryNodePointsToVertices",
"node:GeometryNodePointsToVolume"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1227-001:AUTO_GEOMETRY_NATIVE_NODE_READER:81deda73b9188c10",
"selectedRecordIds": [
"node:GeometryNodePointsOfCurve",
"node:GeometryNodePointsToCurves",
"node:GeometryNodePointsToSDFGrid",
"node:GeometryNodePointsToVertices",
"node:GeometryNodePointsToVolume"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_topology_points_of_curve.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_points_to_curves.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_points_to_sdf_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_points_to_vertices.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-81deda73b9188c10.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodePointsOfCurve type is read from Blender Main",
"GeometryNodePointsToCurves type is read from Blender Main",
"GeometryNodePointsToSDFGrid type is read from Blender Main",
"GeometryNodePointsToVertices type is read from Blender Main",
"GeometryNodePointsToVolume type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1227-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1227-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-81deda73b9188c10.blend WBV2_BATCH_TYPES='[\"GeometryNodePointsOfCurve\",\"GeometryNodePointsToCurves\",\"GeometryNodePointsToSDFGrid\",\"GeometryNodePointsToVertices\",\"GeometryNodePointsToVolume\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodePointsOfCurve\",\"node:GeometryNodePointsToCurves\",\"node:GeometryNodePointsToSDFGrid\",\"node:GeometryNodePointsToVertices\",\"node:GeometryNodePointsToVolume\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1227-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodePointsOfCurve",
"node:GeometryNodePointsToCurves",
"node:GeometryNodePointsToSDFGrid",
"node:GeometryNodePointsToVertices",
"node:GeometryNodePointsToVolume"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1228-000",
"phase": "1228",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1227-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1228",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1228-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1228-001",
"phase": "1228",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1228-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1228-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1228-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6b022a1a8e99f7fd",
"selectedRecordIds": [
"node:GeometryNodeProximity",
"node:GeometryNodeRaycast",
"node:GeometryNodeRemoveAttribute",
"node:GeometryNodeRenameAttribute",
"node:GeometryNodeRepeatInput"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1228-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6b022a1a8e99f7fd",
"selectedRecordIds": [
"node:GeometryNodeProximity",
"node:GeometryNodeRaycast",
"node:GeometryNodeRemoveAttribute",
"node:GeometryNodeRenameAttribute",
"node:GeometryNodeRepeatInput"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_proximity.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_raycast.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_remove_attribute.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_rename_attribute.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_repeat.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-6b022a1a8e99f7fd.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeProximity type is read from Blender Main",
"GeometryNodeRaycast type is read from Blender Main",
"GeometryNodeRemoveAttribute type is read from Blender Main",
"GeometryNodeRenameAttribute type is read from Blender Main",
"GeometryNodeRepeatInput type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1228-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1228-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-6b022a1a8e99f7fd.blend WBV2_BATCH_TYPES='[\"GeometryNodeProximity\",\"GeometryNodeRaycast\",\"GeometryNodeRemoveAttribute\",\"GeometryNodeRenameAttribute\",\"GeometryNodeRepeatInput\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeProximity\",\"node:GeometryNodeRaycast\",\"node:GeometryNodeRemoveAttribute\",\"node:GeometryNodeRenameAttribute\",\"node:GeometryNodeRepeatInput\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1228-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeProximity",
"node:GeometryNodeRaycast",
"node:GeometryNodeRemoveAttribute",
"node:GeometryNodeRenameAttribute",
"node:GeometryNodeRepeatInput"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1229-000",
"phase": "1229",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1228-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1229",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1229-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1229-001",
"phase": "1229",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1229-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1229-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1229-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1323c437a10e245b",
"selectedRecordIds": [
"node:GeometryNodeRepeatOutput"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1229-001:AUTO_GEOMETRY_NATIVE_NODE_READER:1323c437a10e245b",
"selectedRecordIds": [
"node:GeometryNodeRepeatOutput"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_repeat.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-1323c437a10e245b.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeRepeatOutput type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1229-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1229-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-1323c437a10e245b.blend WBV2_BATCH_TYPES='[\"GeometryNodeRepeatOutput\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeRepeatOutput\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1229-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeRepeatOutput"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1230-000",
"phase": "1230",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1229-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1230",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1230-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1230-001",
"phase": "1230",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1230-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1230-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1230-001:AUTO_GEOMETRY_NATIVE_NODE_READER:bb5c9b89367c9d6d",
"selectedRecordIds": [
"node:GeometryNodeReplaceMaterial",
"node:GeometryNodeResampleCurve",
"node:GeometryNodeReverseCurve",
"node:GeometryNodeRotateInstances",
"node:GeometryNodeSDFGridBoolean"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1230-001:AUTO_GEOMETRY_NATIVE_NODE_READER:bb5c9b89367c9d6d",
"selectedRecordIds": [
"node:GeometryNodeReplaceMaterial",
"node:GeometryNodeResampleCurve",
"node:GeometryNodeReverseCurve",
"node:GeometryNodeRotateInstances",
"node:GeometryNodeSDFGridBoolean"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_material_replace.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_resample.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_reverse.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_rotate_instances.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_boolean.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-bb5c9b89367c9d6d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeReplaceMaterial type is read from Blender Main",
"GeometryNodeResampleCurve type is read from Blender Main",
"GeometryNodeReverseCurve type is read from Blender Main",
"GeometryNodeRotateInstances type is read from Blender Main",
"GeometryNodeSDFGridBoolean type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1230-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1230-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-bb5c9b89367c9d6d.blend WBV2_BATCH_TYPES='[\"GeometryNodeReplaceMaterial\",\"GeometryNodeResampleCurve\",\"GeometryNodeReverseCurve\",\"GeometryNodeRotateInstances\",\"GeometryNodeSDFGridBoolean\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeReplaceMaterial\",\"node:GeometryNodeResampleCurve\",\"node:GeometryNodeReverseCurve\",\"node:GeometryNodeRotateInstances\",\"node:GeometryNodeSDFGridBoolean\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1230-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeReplaceMaterial",
"node:GeometryNodeResampleCurve",
"node:GeometryNodeReverseCurve",
"node:GeometryNodeRotateInstances",
"node:GeometryNodeSDFGridBoolean"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1231-000",
"phase": "1231",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1230-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1231",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1231-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1231-001",
"phase": "1231",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1231-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1231-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1231-001:AUTO_GEOMETRY_NATIVE_NODE_READER:4e423b626a07145e",
"selectedRecordIds": [
"node:GeometryNodeSDFGridFillet",
"node:GeometryNodeSDFGridLaplacian",
"node:GeometryNodeSDFGridMean",
"node:GeometryNodeSDFGridMeanCurvature",
"node:GeometryNodeSDFGridMedian"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1231-001:AUTO_GEOMETRY_NATIVE_NODE_READER:4e423b626a07145e",
"selectedRecordIds": [
"node:GeometryNodeSDFGridFillet",
"node:GeometryNodeSDFGridLaplacian",
"node:GeometryNodeSDFGridMean",
"node:GeometryNodeSDFGridMeanCurvature",
"node:GeometryNodeSDFGridMedian"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_fillet.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_laplacian.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_mean.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_mean_curvature.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_median.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-4e423b626a07145e.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeSDFGridFillet type is read from Blender Main",
"GeometryNodeSDFGridLaplacian type is read from Blender Main",
"GeometryNodeSDFGridMean type is read from Blender Main",
"GeometryNodeSDFGridMeanCurvature type is read from Blender Main",
"GeometryNodeSDFGridMedian type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1231-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1231-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-4e423b626a07145e.blend WBV2_BATCH_TYPES='[\"GeometryNodeSDFGridFillet\",\"GeometryNodeSDFGridLaplacian\",\"GeometryNodeSDFGridMean\",\"GeometryNodeSDFGridMeanCurvature\",\"GeometryNodeSDFGridMedian\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeSDFGridFillet\",\"node:GeometryNodeSDFGridLaplacian\",\"node:GeometryNodeSDFGridMean\",\"node:GeometryNodeSDFGridMeanCurvature\",\"node:GeometryNodeSDFGridMedian\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1231-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeSDFGridFillet",
"node:GeometryNodeSDFGridLaplacian",
"node:GeometryNodeSDFGridMean",
"node:GeometryNodeSDFGridMeanCurvature",
"node:GeometryNodeSDFGridMedian"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1232-000",
"phase": "1232",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1231-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1232",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1232-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1232-001",
"phase": "1232",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1232-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1232-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1232-001:AUTO_GEOMETRY_NATIVE_NODE_READER:404eb303152ba922",
"selectedRecordIds": [
"node:GeometryNodeSDFGridOffset",
"node:GeometryNodeSampleCurve",
"node:GeometryNodeSampleGrid",
"node:GeometryNodeSampleGridIndex",
"node:GeometryNodeSampleIndex"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1232-001:AUTO_GEOMETRY_NATIVE_NODE_READER:404eb303152ba922",
"selectedRecordIds": [
"node:GeometryNodeSDFGridOffset",
"node:GeometryNodeSampleCurve",
"node:GeometryNodeSampleGrid",
"node:GeometryNodeSampleGridIndex",
"node:GeometryNodeSampleIndex"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sdf_grid_offset.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_sample.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_grid_index.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_index.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-404eb303152ba922.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeSDFGridOffset type is read from Blender Main",
"GeometryNodeSampleCurve type is read from Blender Main",
"GeometryNodeSampleGrid type is read from Blender Main",
"GeometryNodeSampleGridIndex type is read from Blender Main",
"GeometryNodeSampleIndex type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1232-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1232-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-404eb303152ba922.blend WBV2_BATCH_TYPES='[\"GeometryNodeSDFGridOffset\",\"GeometryNodeSampleCurve\",\"GeometryNodeSampleGrid\",\"GeometryNodeSampleGridIndex\",\"GeometryNodeSampleIndex\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeSDFGridOffset\",\"node:GeometryNodeSampleCurve\",\"node:GeometryNodeSampleGrid\",\"node:GeometryNodeSampleGridIndex\",\"node:GeometryNodeSampleIndex\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1232-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeSDFGridOffset",
"node:GeometryNodeSampleCurve",
"node:GeometryNodeSampleGrid",
"node:GeometryNodeSampleGridIndex",
"node:GeometryNodeSampleIndex"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1233-000",
"phase": "1233",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1232-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1233",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1233-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1233-001",
"phase": "1233",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1233-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1233-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1233-001:AUTO_GEOMETRY_NATIVE_NODE_READER:529a042eb604c0e1",
"selectedRecordIds": [
"node:GeometryNodeSampleNearest",
"node:GeometryNodeSampleNearestSurface",
"node:GeometryNodeSampleSoundFrequencies",
"node:GeometryNodeSampleUVSurface",
"node:GeometryNodeScaleElements"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1233-001:AUTO_GEOMETRY_NATIVE_NODE_READER:529a042eb604c0e1",
"selectedRecordIds": [
"node:GeometryNodeSampleNearest",
"node:GeometryNodeSampleNearestSurface",
"node:GeometryNodeSampleSoundFrequencies",
"node:GeometryNodeSampleUVSurface",
"node:GeometryNodeScaleElements"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_nearest.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_nearest_surface.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_sound_frequencies.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sample_uv_surface.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_scale_elements.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-529a042eb604c0e1.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeSampleNearest type is read from Blender Main",
"GeometryNodeSampleNearestSurface type is read from Blender Main",
"GeometryNodeSampleSoundFrequencies type is read from Blender Main",
"GeometryNodeSampleUVSurface type is read from Blender Main",
"GeometryNodeScaleElements type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1233-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1233-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-529a042eb604c0e1.blend WBV2_BATCH_TYPES='[\"GeometryNodeSampleNearest\",\"GeometryNodeSampleNearestSurface\",\"GeometryNodeSampleSoundFrequencies\",\"GeometryNodeSampleUVSurface\",\"GeometryNodeScaleElements\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeSampleNearest\",\"node:GeometryNodeSampleNearestSurface\",\"node:GeometryNodeSampleSoundFrequencies\",\"node:GeometryNodeSampleUVSurface\",\"node:GeometryNodeScaleElements\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1233-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeSampleNearest",
"node:GeometryNodeSampleNearestSurface",
"node:GeometryNodeSampleSoundFrequencies",
"node:GeometryNodeSampleUVSurface",
"node:GeometryNodeScaleElements"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1234-000",
"phase": "1234",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1233-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1234",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1234-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1234-001",
"phase": "1234",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1234-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1234-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1234-001:AUTO_GEOMETRY_NATIVE_NODE_READER:ad9e5b4bf235659f",
"selectedRecordIds": [
"node:GeometryNodeScaleInstances",
"node:GeometryNodeSelfObject",
"node:GeometryNodeSeparateComponents",
"node:GeometryNodeSetCurveHandlePositions",
"node:GeometryNodeSetCurveNormal"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1234-001:AUTO_GEOMETRY_NATIVE_NODE_READER:ad9e5b4bf235659f",
"selectedRecordIds": [
"node:GeometryNodeScaleInstances",
"node:GeometryNodeSelfObject",
"node:GeometryNodeSeparateComponents",
"node:GeometryNodeSetCurveHandlePositions",
"node:GeometryNodeSetCurveNormal"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_scale_instances.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_self_object.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_separate_components.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_curve_handles.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_curve_normal.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-ad9e5b4bf235659f.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeScaleInstances type is read from Blender Main",
"GeometryNodeSelfObject type is read from Blender Main",
"GeometryNodeSeparateComponents type is read from Blender Main",
"GeometryNodeSetCurveHandlePositions type is read from Blender Main",
"GeometryNodeSetCurveNormal type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1234-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1234-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-ad9e5b4bf235659f.blend WBV2_BATCH_TYPES='[\"GeometryNodeScaleInstances\",\"GeometryNodeSelfObject\",\"GeometryNodeSeparateComponents\",\"GeometryNodeSetCurveHandlePositions\",\"GeometryNodeSetCurveNormal\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeScaleInstances\",\"node:GeometryNodeSelfObject\",\"node:GeometryNodeSeparateComponents\",\"node:GeometryNodeSetCurveHandlePositions\",\"node:GeometryNodeSetCurveNormal\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1234-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeScaleInstances",
"node:GeometryNodeSelfObject",
"node:GeometryNodeSeparateComponents",
"node:GeometryNodeSetCurveHandlePositions",
"node:GeometryNodeSetCurveNormal"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1235-000",
"phase": "1235",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1234-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1235",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1235-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1235-001",
"phase": "1235",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1235-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1235-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1235-001:AUTO_GEOMETRY_NATIVE_NODE_READER:91beafd1d1c04670",
"selectedRecordIds": [
"node:GeometryNodeSetCurveRadius",
"node:GeometryNodeSetCurveTilt",
"node:GeometryNodeSetGeometryBundle",
"node:GeometryNodeSetGeometryName",
"node:GeometryNodeSetGreasePencilColor"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1235-001:AUTO_GEOMETRY_NATIVE_NODE_READER:91beafd1d1c04670",
"selectedRecordIds": [
"node:GeometryNodeSetCurveRadius",
"node:GeometryNodeSetCurveTilt",
"node:GeometryNodeSetGeometryBundle",
"node:GeometryNodeSetGeometryName",
"node:GeometryNodeSetGreasePencilColor"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_curve_radius.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_curve_tilt.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_geometry_bundle.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_geometry_name.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_grease_pencil_color.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-91beafd1d1c04670.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeSetCurveRadius type is read from Blender Main",
"GeometryNodeSetCurveTilt type is read from Blender Main",
"GeometryNodeSetGeometryBundle type is read from Blender Main",
"GeometryNodeSetGeometryName type is read from Blender Main",
"GeometryNodeSetGreasePencilColor type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1235-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1235-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-91beafd1d1c04670.blend WBV2_BATCH_TYPES='[\"GeometryNodeSetCurveRadius\",\"GeometryNodeSetCurveTilt\",\"GeometryNodeSetGeometryBundle\",\"GeometryNodeSetGeometryName\",\"GeometryNodeSetGreasePencilColor\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeSetCurveRadius\",\"node:GeometryNodeSetCurveTilt\",\"node:GeometryNodeSetGeometryBundle\",\"node:GeometryNodeSetGeometryName\",\"node:GeometryNodeSetGreasePencilColor\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1235-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeSetCurveRadius",
"node:GeometryNodeSetCurveTilt",
"node:GeometryNodeSetGeometryBundle",
"node:GeometryNodeSetGeometryName",
"node:GeometryNodeSetGreasePencilColor"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1236-000",
"phase": "1236",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1235-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1236",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1236-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1236-001",
"phase": "1236",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1236-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1236-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1236-001:AUTO_GEOMETRY_NATIVE_NODE_READER:b7b77a5dec80a14d",
"selectedRecordIds": [
"node:GeometryNodeSetGreasePencilDepth",
"node:GeometryNodeSetGreasePencilSoftness",
"node:GeometryNodeSetGridBackground",
"node:GeometryNodeSetGridTransform",
"node:GeometryNodeSetID"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1236-001:AUTO_GEOMETRY_NATIVE_NODE_READER:b7b77a5dec80a14d",
"selectedRecordIds": [
"node:GeometryNodeSetGreasePencilDepth",
"node:GeometryNodeSetGreasePencilSoftness",
"node:GeometryNodeSetGridBackground",
"node:GeometryNodeSetGridTransform",
"node:GeometryNodeSetID"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_grease_pencil_depth_mode.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_grease_pencil_softness.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_grid_background.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_grid_transform.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_id.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-b7b77a5dec80a14d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeSetGreasePencilDepth type is read from Blender Main",
"GeometryNodeSetGreasePencilSoftness type is read from Blender Main",
"GeometryNodeSetGridBackground type is read from Blender Main",
"GeometryNodeSetGridTransform type is read from Blender Main",
"GeometryNodeSetID type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1236-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1236-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-b7b77a5dec80a14d.blend WBV2_BATCH_TYPES='[\"GeometryNodeSetGreasePencilDepth\",\"GeometryNodeSetGreasePencilSoftness\",\"GeometryNodeSetGridBackground\",\"GeometryNodeSetGridTransform\",\"GeometryNodeSetID\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeSetGreasePencilDepth\",\"node:GeometryNodeSetGreasePencilSoftness\",\"node:GeometryNodeSetGridBackground\",\"node:GeometryNodeSetGridTransform\",\"node:GeometryNodeSetID\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1236-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeSetGreasePencilDepth",
"node:GeometryNodeSetGreasePencilSoftness",
"node:GeometryNodeSetGridBackground",
"node:GeometryNodeSetGridTransform",
"node:GeometryNodeSetID"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1237-000",
"phase": "1237",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1236-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1237",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1237-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1237-001",
"phase": "1237",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1237-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1237-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1237-001:AUTO_GEOMETRY_NATIVE_NODE_READER:95ccfa5892bb7a33",
"selectedRecordIds": [
"node:GeometryNodeSetInstanceTransform",
"node:GeometryNodeSetMaterial",
"node:GeometryNodeSetMaterialIndex",
"node:GeometryNodeSetMeshNormal",
"node:GeometryNodeSetNURBSOrder"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1237-001:AUTO_GEOMETRY_NATIVE_NODE_READER:95ccfa5892bb7a33",
"selectedRecordIds": [
"node:GeometryNodeSetInstanceTransform",
"node:GeometryNodeSetMaterial",
"node:GeometryNodeSetMaterialIndex",
"node:GeometryNodeSetMeshNormal",
"node:GeometryNodeSetNURBSOrder"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_instance_transform.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_material.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_material_index.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_mesh_normal.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_nurbs_order.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-95ccfa5892bb7a33.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeSetInstanceTransform type is read from Blender Main",
"GeometryNodeSetMaterial type is read from Blender Main",
"GeometryNodeSetMaterialIndex type is read from Blender Main",
"GeometryNodeSetMeshNormal type is read from Blender Main",
"GeometryNodeSetNURBSOrder type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1237-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1237-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-95ccfa5892bb7a33.blend WBV2_BATCH_TYPES='[\"GeometryNodeSetInstanceTransform\",\"GeometryNodeSetMaterial\",\"GeometryNodeSetMaterialIndex\",\"GeometryNodeSetMeshNormal\",\"GeometryNodeSetNURBSOrder\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeSetInstanceTransform\",\"node:GeometryNodeSetMaterial\",\"node:GeometryNodeSetMaterialIndex\",\"node:GeometryNodeSetMeshNormal\",\"node:GeometryNodeSetNURBSOrder\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1237-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeSetInstanceTransform",
"node:GeometryNodeSetMaterial",
"node:GeometryNodeSetMaterialIndex",
"node:GeometryNodeSetMeshNormal",
"node:GeometryNodeSetNURBSOrder"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1238-000",
"phase": "1238",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1237-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1238",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1238-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1238-001",
"phase": "1238",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1238-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1238-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1238-001:AUTO_GEOMETRY_NATIVE_NODE_READER:8d3751cce437cb33",
"selectedRecordIds": [
"node:GeometryNodeSetNURBSWeight",
"node:GeometryNodeSetPointRadius",
"node:GeometryNodeSetShadeSmooth",
"node:GeometryNodeSetSplineCyclic",
"node:GeometryNodeSetSplineResolution"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1238-001:AUTO_GEOMETRY_NATIVE_NODE_READER:8d3751cce437cb33",
"selectedRecordIds": [
"node:GeometryNodeSetNURBSWeight",
"node:GeometryNodeSetPointRadius",
"node:GeometryNodeSetShadeSmooth",
"node:GeometryNodeSetSplineCyclic",
"node:GeometryNodeSetSplineResolution"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_nurbs_weight.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_point_radius.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_shade_smooth.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_spline_cyclic.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_set_spline_resolution.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-8d3751cce437cb33.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeSetNURBSWeight type is read from Blender Main",
"GeometryNodeSetPointRadius type is read from Blender Main",
"GeometryNodeSetShadeSmooth type is read from Blender Main",
"GeometryNodeSetSplineCyclic type is read from Blender Main",
"GeometryNodeSetSplineResolution type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1238-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1238-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-8d3751cce437cb33.blend WBV2_BATCH_TYPES='[\"GeometryNodeSetNURBSWeight\",\"GeometryNodeSetPointRadius\",\"GeometryNodeSetShadeSmooth\",\"GeometryNodeSetSplineCyclic\",\"GeometryNodeSetSplineResolution\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeSetNURBSWeight\",\"node:GeometryNodeSetPointRadius\",\"node:GeometryNodeSetShadeSmooth\",\"node:GeometryNodeSetSplineCyclic\",\"node:GeometryNodeSetSplineResolution\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1238-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeSetNURBSWeight",
"node:GeometryNodeSetPointRadius",
"node:GeometryNodeSetShadeSmooth",
"node:GeometryNodeSetSplineCyclic",
"node:GeometryNodeSetSplineResolution"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1239-000",
"phase": "1239",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1238-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1239",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1239-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1239-001",
"phase": "1239",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1239-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1239-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1239-001:AUTO_GEOMETRY_NATIVE_NODE_READER:2de2c5e6ce0c4914",
"selectedRecordIds": [
"node:GeometryNodeSortElements",
"node:GeometryNodeSortList",
"node:GeometryNodeSplineLength",
"node:GeometryNodeSplineParameter",
"node:GeometryNodeSplitEdges"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1239-001:AUTO_GEOMETRY_NATIVE_NODE_READER:2de2c5e6ce0c4914",
"selectedRecordIds": [
"node:GeometryNodeSortElements",
"node:GeometryNodeSortList",
"node:GeometryNodeSplineLength",
"node:GeometryNodeSplineParameter",
"node:GeometryNodeSplitEdges"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sort_elements.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_sort_list.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_input_spline_length.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_spline_parameter.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_edge_split.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-2de2c5e6ce0c4914.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeSortElements type is read from Blender Main",
"GeometryNodeSortList type is read from Blender Main",
"GeometryNodeSplineLength type is read from Blender Main",
"GeometryNodeSplineParameter type is read from Blender Main",
"GeometryNodeSplitEdges type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1239-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1239-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-2de2c5e6ce0c4914.blend WBV2_BATCH_TYPES='[\"GeometryNodeSortElements\",\"GeometryNodeSortList\",\"GeometryNodeSplineLength\",\"GeometryNodeSplineParameter\",\"GeometryNodeSplitEdges\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeSortElements\",\"node:GeometryNodeSortList\",\"node:GeometryNodeSplineLength\",\"node:GeometryNodeSplineParameter\",\"node:GeometryNodeSplitEdges\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1239-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeSortElements",
"node:GeometryNodeSortList",
"node:GeometryNodeSplineLength",
"node:GeometryNodeSplineParameter",
"node:GeometryNodeSplitEdges"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1240-000",
"phase": "1240",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1239-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1240",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1240-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1240-001",
"phase": "1240",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1240-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1240-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1240-001:AUTO_GEOMETRY_NATIVE_NODE_READER:70077c253f8e9738",
"selectedRecordIds": [
"node:GeometryNodeSplitToInstances",
"node:GeometryNodeStoreNamedGrid",
"node:GeometryNodeStringJoin",
"node:GeometryNodeStringToCurves",
"node:GeometryNodeSubdivideCurve"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1240-001:AUTO_GEOMETRY_NATIVE_NODE_READER:70077c253f8e9738",
"selectedRecordIds": [
"node:GeometryNodeSplitToInstances",
"node:GeometryNodeStoreNamedGrid",
"node:GeometryNodeStringJoin",
"node:GeometryNodeStringToCurves",
"node:GeometryNodeSubdivideCurve"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_split_to_instances.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_store_named_grid.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_string_join.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_string_to_curves.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_subdivide.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-70077c253f8e9738.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeSplitToInstances type is read from Blender Main",
"GeometryNodeStoreNamedGrid type is read from Blender Main",
"GeometryNodeStringJoin type is read from Blender Main",
"GeometryNodeStringToCurves type is read from Blender Main",
"GeometryNodeSubdivideCurve type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1240-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1240-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-70077c253f8e9738.blend WBV2_BATCH_TYPES='[\"GeometryNodeSplitToInstances\",\"GeometryNodeStoreNamedGrid\",\"GeometryNodeStringJoin\",\"GeometryNodeStringToCurves\",\"GeometryNodeSubdivideCurve\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeSplitToInstances\",\"node:GeometryNodeStoreNamedGrid\",\"node:GeometryNodeStringJoin\",\"node:GeometryNodeStringToCurves\",\"node:GeometryNodeSubdivideCurve\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1240-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeSplitToInstances",
"node:GeometryNodeStoreNamedGrid",
"node:GeometryNodeStringJoin",
"node:GeometryNodeStringToCurves",
"node:GeometryNodeSubdivideCurve"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1241-000",
"phase": "1241",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1240-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1241",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1241-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1241-001",
"phase": "1241",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1241-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1241-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1241-001:AUTO_GEOMETRY_NATIVE_NODE_READER:518360e680870ecc",
"selectedRecordIds": [
"node:GeometryNodeSubdivideMesh",
"node:GeometryNodeSubdivisionSurface",
"node:GeometryNodeSwitch",
"node:GeometryNodeTagFilter",
"node:GeometryNodeTool3DCursor"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1241-001:AUTO_GEOMETRY_NATIVE_NODE_READER:518360e680870ecc",
"selectedRecordIds": [
"node:GeometryNodeSubdivideMesh",
"node:GeometryNodeSubdivisionSurface",
"node:GeometryNodeSwitch",
"node:GeometryNodeTagFilter",
"node:GeometryNodeTool3DCursor"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_subdivide.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_subdivision_surface.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_switch.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tag_filter.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_3d_cursor.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-518360e680870ecc.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeSubdivideMesh type is read from Blender Main",
"GeometryNodeSubdivisionSurface type is read from Blender Main",
"GeometryNodeSwitch type is read from Blender Main",
"GeometryNodeTagFilter type is read from Blender Main",
"GeometryNodeTool3DCursor type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1241-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1241-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-518360e680870ecc.blend WBV2_BATCH_TYPES='[\"GeometryNodeSubdivideMesh\",\"GeometryNodeSubdivisionSurface\",\"GeometryNodeSwitch\",\"GeometryNodeTagFilter\",\"GeometryNodeTool3DCursor\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeSubdivideMesh\",\"node:GeometryNodeSubdivisionSurface\",\"node:GeometryNodeSwitch\",\"node:GeometryNodeTagFilter\",\"node:GeometryNodeTool3DCursor\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1241-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeSubdivideMesh",
"node:GeometryNodeSubdivisionSurface",
"node:GeometryNodeSwitch",
"node:GeometryNodeTagFilter",
"node:GeometryNodeTool3DCursor"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1242-000",
"phase": "1242",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1241-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1242",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1242-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1242-001",
"phase": "1242",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1242-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1242-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1242-001:AUTO_GEOMETRY_NATIVE_NODE_READER:f355dda8099b8a6f",
"selectedRecordIds": [
"node:GeometryNodeToolActiveElement",
"node:GeometryNodeToolFaceSet",
"node:GeometryNodeToolMousePosition",
"node:GeometryNodeToolSelection",
"node:GeometryNodeToolSetFaceSet"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1242-001:AUTO_GEOMETRY_NATIVE_NODE_READER:f355dda8099b8a6f",
"selectedRecordIds": [
"node:GeometryNodeToolActiveElement",
"node:GeometryNodeToolFaceSet",
"node:GeometryNodeToolMousePosition",
"node:GeometryNodeToolSelection",
"node:GeometryNodeToolSetFaceSet"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_active_element.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_face_set.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mouse_position.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_set_face_set.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-f355dda8099b8a6f.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeToolActiveElement type is read from Blender Main",
"GeometryNodeToolFaceSet type is read from Blender Main",
"GeometryNodeToolMousePosition type is read from Blender Main",
"GeometryNodeToolSelection type is read from Blender Main",
"GeometryNodeToolSetFaceSet type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1242-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1242-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-f355dda8099b8a6f.blend WBV2_BATCH_TYPES='[\"GeometryNodeToolActiveElement\",\"GeometryNodeToolFaceSet\",\"GeometryNodeToolMousePosition\",\"GeometryNodeToolSelection\",\"GeometryNodeToolSetFaceSet\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeToolActiveElement\",\"node:GeometryNodeToolFaceSet\",\"node:GeometryNodeToolMousePosition\",\"node:GeometryNodeToolSelection\",\"node:GeometryNodeToolSetFaceSet\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1242-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeToolActiveElement",
"node:GeometryNodeToolFaceSet",
"node:GeometryNodeToolMousePosition",
"node:GeometryNodeToolSelection",
"node:GeometryNodeToolSetFaceSet"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1243-000",
"phase": "1243",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1242-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1243",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1243-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1243-001",
"phase": "1243",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1243-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1243-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1243-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6399364bfcbc157c",
"selectedRecordIds": [
"node:GeometryNodeToolSetSelection",
"node:GeometryNodeTransferAttributes",
"node:GeometryNodeTranslateInstances",
"node:GeometryNodeTriangulate",
"node:GeometryNodeTrimCurve"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1243-001:AUTO_GEOMETRY_NATIVE_NODE_READER:6399364bfcbc157c",
"selectedRecordIds": [
"node:GeometryNodeToolSetSelection",
"node:GeometryNodeTransferAttributes",
"node:GeometryNodeTranslateInstances",
"node:GeometryNodeTriangulate",
"node:GeometryNodeTrimCurve"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_tool_set_selection.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_transfer_attributes.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_translate_instances.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_triangulate.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_curve_trim.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-6399364bfcbc157c.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeToolSetSelection type is read from Blender Main",
"GeometryNodeTransferAttributes type is read from Blender Main",
"GeometryNodeTranslateInstances type is read from Blender Main",
"GeometryNodeTriangulate type is read from Blender Main",
"GeometryNodeTrimCurve type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1243-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1243-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-6399364bfcbc157c.blend WBV2_BATCH_TYPES='[\"GeometryNodeToolSetSelection\",\"GeometryNodeTransferAttributes\",\"GeometryNodeTranslateInstances\",\"GeometryNodeTriangulate\",\"GeometryNodeTrimCurve\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeToolSetSelection\",\"node:GeometryNodeTransferAttributes\",\"node:GeometryNodeTranslateInstances\",\"node:GeometryNodeTriangulate\",\"node:GeometryNodeTrimCurve\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1243-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeToolSetSelection",
"node:GeometryNodeTransferAttributes",
"node:GeometryNodeTranslateInstances",
"node:GeometryNodeTriangulate",
"node:GeometryNodeTrimCurve"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1244-000",
"phase": "1244",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1243-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1244",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1244-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1244-001",
"phase": "1244",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1244-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1244-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1244-001:AUTO_GEOMETRY_NATIVE_NODE_READER:b2e40edae0bea18d",
"selectedRecordIds": [
"node:GeometryNodeUVPackIslands",
"node:GeometryNodeUVTangent",
"node:GeometryNodeUVUnwrap",
"node:GeometryNodeVertexOfCorner",
"node:GeometryNodeViewer"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1244-001:AUTO_GEOMETRY_NATIVE_NODE_READER:b2e40edae0bea18d",
"selectedRecordIds": [
"node:GeometryNodeUVPackIslands",
"node:GeometryNodeUVTangent",
"node:GeometryNodeUVUnwrap",
"node:GeometryNodeVertexOfCorner",
"node:GeometryNodeViewer"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_uv_pack_islands.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_uv_tangent.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_uv_unwrap.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_vertex_of_corner.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_viewer.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-b2e40edae0bea18d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeUVPackIslands type is read from Blender Main",
"GeometryNodeUVTangent type is read from Blender Main",
"GeometryNodeUVUnwrap type is read from Blender Main",
"GeometryNodeVertexOfCorner type is read from Blender Main",
"GeometryNodeViewer type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1244-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1244-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-b2e40edae0bea18d.blend WBV2_BATCH_TYPES='[\"GeometryNodeUVPackIslands\",\"GeometryNodeUVTangent\",\"GeometryNodeUVUnwrap\",\"GeometryNodeVertexOfCorner\",\"GeometryNodeViewer\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeUVPackIslands\",\"node:GeometryNodeUVTangent\",\"node:GeometryNodeUVUnwrap\",\"node:GeometryNodeVertexOfCorner\",\"node:GeometryNodeViewer\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1244-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeUVPackIslands",
"node:GeometryNodeUVTangent",
"node:GeometryNodeUVUnwrap",
"node:GeometryNodeVertexOfCorner",
"node:GeometryNodeViewer"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1245-000",
"phase": "1245",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1244-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1245",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1245-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1245-001",
"phase": "1245",
"title": "verify auto-generated native geometry node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1245-000"
],
"parityId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_geometry_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1245-001.md",
"behavior": "Verify the AUTO_GEOMETRY_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1245-001:AUTO_GEOMETRY_NATIVE_NODE_READER:06a9b0a82fc0bc5b",
"selectedRecordIds": [
"node:GeometryNodeViewportTransform",
"node:GeometryNodeVolumeCube",
"node:GeometryNodeVolumeToMesh",
"node:GeometryNodeWarning",
"node:GeometryNodeXPBDSolver"
],
"module": {
"moduleId": "AUTO_GEOMETRY_NATIVE_NODE_READER",
"batchId": "WBV2-P1245-001:AUTO_GEOMETRY_NATIVE_NODE_READER:06a9b0a82fc0bc5b",
"selectedRecordIds": [
"node:GeometryNodeViewportTransform",
"node:GeometryNodeVolumeCube",
"node:GeometryNodeVolumeToMesh",
"node:GeometryNodeWarning",
"node:GeometryNodeXPBDSolver"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-READER",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_GEOMETRY_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_viewport_transform.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_volume_cube.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_warning.cc",
"blender-5.2.0/source/blender/nodes/geometry/nodes/node_geo_xpbd_solver.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/geometry-node-main-reader.spec.ts",
"tests/files/web/generated/wbv2-geometry-06a9b0a82fc0bc5b.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"GeometryNodeViewportTransform type is read from Blender Main",
"GeometryNodeVolumeCube type is read from Blender Main",
"GeometryNodeVolumeToMesh type is read from Blender Main",
"GeometryNodeWarning type is read from Blender Main",
"GeometryNodeXPBDSolver type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1245-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1245-001/geometry-node-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-geometry-06a9b0a82fc0bc5b.blend WBV2_BATCH_TYPES='[\"GeometryNodeViewportTransform\",\"GeometryNodeVolumeCube\",\"GeometryNodeVolumeToMesh\",\"GeometryNodeWarning\",\"GeometryNodeXPBDSolver\"]' WBV2_BATCH_UNITS='[\"node:GeometryNodeViewportTransform\",\"node:GeometryNodeVolumeCube\",\"node:GeometryNodeVolumeToMesh\",\"node:GeometryNodeWarning\",\"node:GeometryNodeXPBDSolver\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/geometry-node-main-reader.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1245-001/geometry-node-reader-production.json"
],
"coverageBindings": [
"node:GeometryNodeViewportTransform",
"node:GeometryNodeVolumeCube",
"node:GeometryNodeVolumeToMesh",
"node:GeometryNodeWarning",
"node:GeometryNodeXPBDSolver"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1246-000",
"phase": "1246",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1245-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1246",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1246-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1246-001",
"phase": "1246",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1246-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1246-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1246-001:AUTO_SHADER_NATIVE_NODE_READER:6084b65cc9b4dd13",
"selectedRecordIds": [
"node:ShaderNodeAddShader",
"node:ShaderNodeAmbientOcclusion",
"node:ShaderNodeAttribute",
"node:ShaderNodeBackground",
"node:ShaderNodeBevel"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1246-001:AUTO_SHADER_NATIVE_NODE_READER:6084b65cc9b4dd13",
"selectedRecordIds": [
"node:ShaderNodeAddShader",
"node:ShaderNodeAmbientOcclusion",
"node:ShaderNodeAttribute",
"node:ShaderNodeBackground",
"node:ShaderNodeBevel"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_add_shader.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_ambient_occlusion.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_attribute.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_background.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bevel.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-6084b65cc9b4dd13.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodeAddShader type is read from Blender Main",
"ShaderNodeAmbientOcclusion type is read from Blender Main",
"ShaderNodeAttribute type is read from Blender Main",
"ShaderNodeBackground type is read from Blender Main",
"ShaderNodeBevel type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1246-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1246-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-6084b65cc9b4dd13.blend WBV2_BATCH_TYPES='[\"ShaderNodeAddShader\",\"ShaderNodeAmbientOcclusion\",\"ShaderNodeAttribute\",\"ShaderNodeBackground\",\"ShaderNodeBevel\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodeAddShader\",\"node:ShaderNodeAmbientOcclusion\",\"node:ShaderNodeAttribute\",\"node:ShaderNodeBackground\",\"node:ShaderNodeBevel\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 web/tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1246-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodeAddShader",
"node:ShaderNodeAmbientOcclusion",
"node:ShaderNodeAttribute",
"node:ShaderNodeBackground",
"node:ShaderNodeBevel"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1247-000",
"phase": "1247",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1246-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1247",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1247-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1247-001",
"phase": "1247",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1247-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1247-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1247-001:AUTO_SHADER_NATIVE_NODE_READER:492bd603ac3e7b39",
"selectedRecordIds": [
"node:ShaderNodeBlackbody",
"node:ShaderNodeBrightContrast",
"node:ShaderNodeBsdfAnisotropic",
"node:ShaderNodeBsdfDiffuse",
"node:ShaderNodeBsdfGlass"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1247-001:AUTO_SHADER_NATIVE_NODE_READER:492bd603ac3e7b39",
"selectedRecordIds": [
"node:ShaderNodeBlackbody",
"node:ShaderNodeBrightContrast",
"node:ShaderNodeBsdfAnisotropic",
"node:ShaderNodeBsdfDiffuse",
"node:ShaderNodeBsdfGlass"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_blackbody.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_brightness.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-492bd603ac3e7b39.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodeBlackbody type is read from Blender Main",
"ShaderNodeBrightContrast type is read from Blender Main",
"ShaderNodeBsdfAnisotropic type is read from Blender Main",
"ShaderNodeBsdfDiffuse type is read from Blender Main",
"ShaderNodeBsdfGlass type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1247-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1247-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-492bd603ac3e7b39.blend WBV2_BATCH_TYPES='[\"ShaderNodeBlackbody\",\"ShaderNodeBrightContrast\",\"ShaderNodeBsdfAnisotropic\",\"ShaderNodeBsdfDiffuse\",\"ShaderNodeBsdfGlass\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodeBlackbody\",\"node:ShaderNodeBrightContrast\",\"node:ShaderNodeBsdfAnisotropic\",\"node:ShaderNodeBsdfDiffuse\",\"node:ShaderNodeBsdfGlass\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1247-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodeBlackbody",
"node:ShaderNodeBrightContrast",
"node:ShaderNodeBsdfAnisotropic",
"node:ShaderNodeBsdfDiffuse",
"node:ShaderNodeBsdfGlass"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1248-000",
"phase": "1248",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1247-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1248",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1248-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1248-001",
"phase": "1248",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1248-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1248-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1248-001:AUTO_SHADER_NATIVE_NODE_READER:5d3fdcd95f8dcb4a",
"selectedRecordIds": [
"node:ShaderNodeBsdfHair",
"node:ShaderNodeBsdfHairPrincipled",
"node:ShaderNodeBsdfMetallic",
"node:ShaderNodeBsdfRayPortal",
"node:ShaderNodeBsdfRefraction"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1248-001:AUTO_SHADER_NATIVE_NODE_READER:5d3fdcd95f8dcb4a",
"selectedRecordIds": [
"node:ShaderNodeBsdfHair",
"node:ShaderNodeBsdfHairPrincipled",
"node:ShaderNodeBsdfMetallic",
"node:ShaderNodeBsdfRayPortal",
"node:ShaderNodeBsdfRefraction"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_hair.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_hair_principled.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_metallic.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_ray_portal.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_refraction.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-5d3fdcd95f8dcb4a.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodeBsdfHair type is read from Blender Main",
"ShaderNodeBsdfHairPrincipled type is read from Blender Main",
"ShaderNodeBsdfMetallic type is read from Blender Main",
"ShaderNodeBsdfRayPortal type is read from Blender Main",
"ShaderNodeBsdfRefraction type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1248-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1248-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-5d3fdcd95f8dcb4a.blend WBV2_BATCH_TYPES='[\"ShaderNodeBsdfHair\",\"ShaderNodeBsdfHairPrincipled\",\"ShaderNodeBsdfMetallic\",\"ShaderNodeBsdfRayPortal\",\"ShaderNodeBsdfRefraction\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodeBsdfHair\",\"node:ShaderNodeBsdfHairPrincipled\",\"node:ShaderNodeBsdfMetallic\",\"node:ShaderNodeBsdfRayPortal\",\"node:ShaderNodeBsdfRefraction\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1248-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodeBsdfHair",
"node:ShaderNodeBsdfHairPrincipled",
"node:ShaderNodeBsdfMetallic",
"node:ShaderNodeBsdfRayPortal",
"node:ShaderNodeBsdfRefraction"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1249-000",
"phase": "1249",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1248-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1249",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1249-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1249-001",
"phase": "1249",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1249-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1249-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1249-001:AUTO_SHADER_NATIVE_NODE_READER:3dd8ce20c676372b",
"selectedRecordIds": [
"node:ShaderNodeBsdfSheen",
"node:ShaderNodeBsdfToon",
"node:ShaderNodeBsdfTranslucent",
"node:ShaderNodeBsdfTransparent",
"node:ShaderNodeBump"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1249-001:AUTO_SHADER_NATIVE_NODE_READER:3dd8ce20c676372b",
"selectedRecordIds": [
"node:ShaderNodeBsdfSheen",
"node:ShaderNodeBsdfToon",
"node:ShaderNodeBsdfTranslucent",
"node:ShaderNodeBsdfTransparent",
"node:ShaderNodeBump"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_sheen.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_toon.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_bump.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-3dd8ce20c676372b.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodeBsdfSheen type is read from Blender Main",
"ShaderNodeBsdfToon type is read from Blender Main",
"ShaderNodeBsdfTranslucent type is read from Blender Main",
"ShaderNodeBsdfTransparent type is read from Blender Main",
"ShaderNodeBump type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1249-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1249-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-3dd8ce20c676372b.blend WBV2_BATCH_TYPES='[\"ShaderNodeBsdfSheen\",\"ShaderNodeBsdfToon\",\"ShaderNodeBsdfTranslucent\",\"ShaderNodeBsdfTransparent\",\"ShaderNodeBump\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodeBsdfSheen\",\"node:ShaderNodeBsdfToon\",\"node:ShaderNodeBsdfTranslucent\",\"node:ShaderNodeBsdfTransparent\",\"node:ShaderNodeBump\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1249-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodeBsdfSheen",
"node:ShaderNodeBsdfToon",
"node:ShaderNodeBsdfTranslucent",
"node:ShaderNodeBsdfTransparent",
"node:ShaderNodeBump"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1250-000",
"phase": "1250",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1249-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1250",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1250-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1250-001",
"phase": "1250",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1250-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1250-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1250-001:AUTO_SHADER_NATIVE_NODE_READER:4962cd49b587a2f9",
"selectedRecordIds": [
"node:ShaderNodeCameraData",
"node:ShaderNodeClamp",
"node:ShaderNodeCombineColor",
"node:ShaderNodeCombineXYZ",
"node:ShaderNodeDisplacement"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1250-001:AUTO_SHADER_NATIVE_NODE_READER:4962cd49b587a2f9",
"selectedRecordIds": [
"node:ShaderNodeCameraData",
"node:ShaderNodeClamp",
"node:ShaderNodeCombineColor",
"node:ShaderNodeCombineXYZ",
"node:ShaderNodeDisplacement"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_camera.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_clamp.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_sepcomb_color.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_sepcomb_xyz.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_displacement.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-4962cd49b587a2f9.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodeCameraData type is read from Blender Main",
"ShaderNodeClamp type is read from Blender Main",
"ShaderNodeCombineColor type is read from Blender Main",
"ShaderNodeCombineXYZ type is read from Blender Main",
"ShaderNodeDisplacement type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1250-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1250-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-4962cd49b587a2f9.blend WBV2_BATCH_TYPES='[\"ShaderNodeCameraData\",\"ShaderNodeClamp\",\"ShaderNodeCombineColor\",\"ShaderNodeCombineXYZ\",\"ShaderNodeDisplacement\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodeCameraData\",\"node:ShaderNodeClamp\",\"node:ShaderNodeCombineColor\",\"node:ShaderNodeCombineXYZ\",\"node:ShaderNodeDisplacement\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1250-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodeCameraData",
"node:ShaderNodeClamp",
"node:ShaderNodeCombineColor",
"node:ShaderNodeCombineXYZ",
"node:ShaderNodeDisplacement"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1251-000",
"phase": "1251",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1250-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1251",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1251-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1251-001",
"phase": "1251",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1251-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1251-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1251-001:AUTO_SHADER_NATIVE_NODE_READER:2367477c6dfff68d",
"selectedRecordIds": [
"node:ShaderNodeEeveeSpecular",
"node:ShaderNodeEmission",
"node:ShaderNodeFloatCurve",
"node:ShaderNodeFresnel",
"node:ShaderNodeGamma"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1251-001:AUTO_SHADER_NATIVE_NODE_READER:2367477c6dfff68d",
"selectedRecordIds": [
"node:ShaderNodeEeveeSpecular",
"node:ShaderNodeEmission",
"node:ShaderNodeFloatCurve",
"node:ShaderNodeFresnel",
"node:ShaderNodeGamma"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_eevee_specular.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_emission.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_curves.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_fresnel.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_gamma.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-2367477c6dfff68d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodeEeveeSpecular type is read from Blender Main",
"ShaderNodeEmission type is read from Blender Main",
"ShaderNodeFloatCurve type is read from Blender Main",
"ShaderNodeFresnel type is read from Blender Main",
"ShaderNodeGamma type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1251-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1251-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-2367477c6dfff68d.blend WBV2_BATCH_TYPES='[\"ShaderNodeEeveeSpecular\",\"ShaderNodeEmission\",\"ShaderNodeFloatCurve\",\"ShaderNodeFresnel\",\"ShaderNodeGamma\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodeEeveeSpecular\",\"node:ShaderNodeEmission\",\"node:ShaderNodeFloatCurve\",\"node:ShaderNodeFresnel\",\"node:ShaderNodeGamma\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1251-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodeEeveeSpecular",
"node:ShaderNodeEmission",
"node:ShaderNodeFloatCurve",
"node:ShaderNodeFresnel",
"node:ShaderNodeGamma"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1252-000",
"phase": "1252",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1251-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1252",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1252-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1252-001",
"phase": "1252",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1252-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1252-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1252-001:AUTO_SHADER_NATIVE_NODE_READER:f8e029f92dbfd33d",
"selectedRecordIds": [
"node:ShaderNodeHairInfo",
"node:ShaderNodeHoldout",
"node:ShaderNodeHueSaturation",
"node:ShaderNodeInvert",
"node:ShaderNodeLayerWeight"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1252-001:AUTO_SHADER_NATIVE_NODE_READER:f8e029f92dbfd33d",
"selectedRecordIds": [
"node:ShaderNodeHairInfo",
"node:ShaderNodeHoldout",
"node:ShaderNodeHueSaturation",
"node:ShaderNodeInvert",
"node:ShaderNodeLayerWeight"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_hair_info.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_holdout.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_hueSatVal.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_invert.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_layer_weight.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-f8e029f92dbfd33d.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodeHairInfo type is read from Blender Main",
"ShaderNodeHoldout type is read from Blender Main",
"ShaderNodeHueSaturation type is read from Blender Main",
"ShaderNodeInvert type is read from Blender Main",
"ShaderNodeLayerWeight type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1252-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1252-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-f8e029f92dbfd33d.blend WBV2_BATCH_TYPES='[\"ShaderNodeHairInfo\",\"ShaderNodeHoldout\",\"ShaderNodeHueSaturation\",\"ShaderNodeInvert\",\"ShaderNodeLayerWeight\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodeHairInfo\",\"node:ShaderNodeHoldout\",\"node:ShaderNodeHueSaturation\",\"node:ShaderNodeInvert\",\"node:ShaderNodeLayerWeight\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1252-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodeHairInfo",
"node:ShaderNodeHoldout",
"node:ShaderNodeHueSaturation",
"node:ShaderNodeInvert",
"node:ShaderNodeLayerWeight"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1253-000",
"phase": "1253",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1252-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1253",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1253-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1253-001",
"phase": "1253",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1253-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1253-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1253-001:AUTO_SHADER_NATIVE_NODE_READER:c56bc2ebdfa34be7",
"selectedRecordIds": [
"node:ShaderNodeLightFalloff",
"node:ShaderNodeLightPath",
"node:ShaderNodeMapRange",
"node:ShaderNodeMapping",
"node:ShaderNodeMix"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1253-001:AUTO_SHADER_NATIVE_NODE_READER:c56bc2ebdfa34be7",
"selectedRecordIds": [
"node:ShaderNodeLightFalloff",
"node:ShaderNodeLightPath",
"node:ShaderNodeMapRange",
"node:ShaderNodeMapping",
"node:ShaderNodeMix"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_light_falloff.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_light_path.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_map_range.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_mapping.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_mix.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-c56bc2ebdfa34be7.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodeLightFalloff type is read from Blender Main",
"ShaderNodeLightPath type is read from Blender Main",
"ShaderNodeMapRange type is read from Blender Main",
"ShaderNodeMapping type is read from Blender Main",
"ShaderNodeMix type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1253-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1253-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-c56bc2ebdfa34be7.blend WBV2_BATCH_TYPES='[\"ShaderNodeLightFalloff\",\"ShaderNodeLightPath\",\"ShaderNodeMapRange\",\"ShaderNodeMapping\",\"ShaderNodeMix\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodeLightFalloff\",\"node:ShaderNodeLightPath\",\"node:ShaderNodeMapRange\",\"node:ShaderNodeMapping\",\"node:ShaderNodeMix\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1253-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodeLightFalloff",
"node:ShaderNodeLightPath",
"node:ShaderNodeMapRange",
"node:ShaderNodeMapping",
"node:ShaderNodeMix"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1254-000",
"phase": "1254",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1253-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1254",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1254-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1254-001",
"phase": "1254",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1254-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1254-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1254-001:AUTO_SHADER_NATIVE_NODE_READER:dbc531eb397b06df",
"selectedRecordIds": [
"node:ShaderNodeMixRGB",
"node:ShaderNodeMixShader",
"node:ShaderNodeNewGeometry",
"node:ShaderNodeNormal",
"node:ShaderNodeObjectInfo"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1254-001:AUTO_SHADER_NATIVE_NODE_READER:dbc531eb397b06df",
"selectedRecordIds": [
"node:ShaderNodeMixRGB",
"node:ShaderNodeMixShader",
"node:ShaderNodeNewGeometry",
"node:ShaderNodeNormal",
"node:ShaderNodeObjectInfo"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_mix_shader.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_geometry.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_normal.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_object_info.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-dbc531eb397b06df.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodeMixRGB type is read from Blender Main",
"ShaderNodeMixShader type is read from Blender Main",
"ShaderNodeNewGeometry type is read from Blender Main",
"ShaderNodeNormal type is read from Blender Main",
"ShaderNodeObjectInfo type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1254-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1254-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-dbc531eb397b06df.blend WBV2_BATCH_TYPES='[\"ShaderNodeMixRGB\",\"ShaderNodeMixShader\",\"ShaderNodeNewGeometry\",\"ShaderNodeNormal\",\"ShaderNodeObjectInfo\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodeMixRGB\",\"node:ShaderNodeMixShader\",\"node:ShaderNodeNewGeometry\",\"node:ShaderNodeNormal\",\"node:ShaderNodeObjectInfo\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1254-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodeMixRGB",
"node:ShaderNodeMixShader",
"node:ShaderNodeNewGeometry",
"node:ShaderNodeNormal",
"node:ShaderNodeObjectInfo"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1255-000",
"phase": "1255",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1254-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1255",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1255-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1255-001",
"phase": "1255",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1255-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1255-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1255-001:AUTO_SHADER_NATIVE_NODE_READER:dd18d1b1e2d07fd3",
"selectedRecordIds": [
"node:ShaderNodeOutputAOV",
"node:ShaderNodeOutputLight",
"node:ShaderNodeOutputLineStyle",
"node:ShaderNodeOutputWorld",
"node:ShaderNodeParticleInfo"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1255-001:AUTO_SHADER_NATIVE_NODE_READER:dd18d1b1e2d07fd3",
"selectedRecordIds": [
"node:ShaderNodeOutputAOV",
"node:ShaderNodeOutputLight",
"node:ShaderNodeOutputLineStyle",
"node:ShaderNodeOutputWorld",
"node:ShaderNodeParticleInfo"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_output_aov.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_output_light.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_output_linestyle.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_output_world.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_particle_info.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-dd18d1b1e2d07fd3.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodeOutputAOV type is read from Blender Main",
"ShaderNodeOutputLight type is read from Blender Main",
"ShaderNodeOutputLineStyle type is read from Blender Main",
"ShaderNodeOutputWorld type is read from Blender Main",
"ShaderNodeParticleInfo type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1255-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1255-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-dd18d1b1e2d07fd3.blend WBV2_BATCH_TYPES='[\"ShaderNodeOutputAOV\",\"ShaderNodeOutputLight\",\"ShaderNodeOutputLineStyle\",\"ShaderNodeOutputWorld\",\"ShaderNodeParticleInfo\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodeOutputAOV\",\"node:ShaderNodeOutputLight\",\"node:ShaderNodeOutputLineStyle\",\"node:ShaderNodeOutputWorld\",\"node:ShaderNodeParticleInfo\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1255-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodeOutputAOV",
"node:ShaderNodeOutputLight",
"node:ShaderNodeOutputLineStyle",
"node:ShaderNodeOutputWorld",
"node:ShaderNodeParticleInfo"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
},
{
"id": "WBV2-P1256-000",
"phase": "1256",
"title": "authorize_modifier_reader_batch",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P1255-001"
],
"parityId": null,
"implementationClass": "QUEUE_ONLY",
"parallelGroup": "module-root-1256",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1256-000.md",
"behavior": "Authorize one shared source-backed modifier reader batch.",
"outputs": [
"successor authorization",
"module plan",
"manifest",
"status"
],
"acceptance": [
"prior evidence remains hash-bound",
"batch source mapping is explicit",
"inventory remains source-derived"
],
"commands": [
"node tools/web/check-execution-control-plane.mjs"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P1256-001",
"phase": "1256",
"title": "verify auto-generated native shader node reader batch",
"kind": "module",
"owner": "NODES",
"dependsOn": [
"WBV2-P1256-000"
],
"parityId": "AUTO_SHADER_NATIVE_NODE_READER",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "module-auto_shader_native_node_reader",
"gate": "MODULE",
"card": "docs/tasks/WBV2-P1256-001.md",
"behavior": "Verify the AUTO_SHADER_NATIVE_NODE_READER batch through Blender Main, WASM and Chromium recovery.",
"outputs": [
"aggregate module receipt",
"coverage bindings",
"manifest",
"status"
],
"acceptance": [
"source and protocol hashes are bound",
"every selected Main reader type is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"batchId": "WBV2-P1256-001:AUTO_SHADER_NATIVE_NODE_READER:d37c82dd11ef35c6",
"selectedRecordIds": [
"node:ShaderNodePointInfo",
"node:ShaderNodeRGBCurve",
"node:ShaderNodeRGBToBW",
"node:ShaderNodeRadialTiling",
"node:ShaderNodeRaycast"
],
"module": {
"moduleId": "AUTO_SHADER_NATIVE_NODE_READER",
"batchId": "WBV2-P1256-001:AUTO_SHADER_NATIVE_NODE_READER:d37c82dd11ef35c6",
"selectedRecordIds": [
"node:ShaderNodePointInfo",
"node:ShaderNodeRGBCurve",
"node:ShaderNodeRGBToBW",
"node:ShaderNodeRadialTiling",
"node:ShaderNodeRaycast"
],
"sourceBacked": true,
"capabilities": [
"CAP-AUTO_SHADER_NATIVE_NODE_READER-READER",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-RECOVERY",
"CAP-AUTO_SHADER_NATIVE_NODE_READER-FAIL-CLOSED"
],
"sourcePaths": [
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_point_info.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_curves.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_rgb_to_bw.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_radial_tiling.cc",
"blender-5.2.0/source/blender/nodes/shader/nodes/node_shader_raycast.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/shader-main-reader-production.spec.ts",
"tests/files/web/generated/wbv2-shader-d37c82dd11ef35c6.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"reuseReceipts": [
{
"manifest": "tests/golden/WBV2-P1107-000/manifest.json",
"report": "tests/golden/WBV2-P1107-000/module-receipt.json"
}
],
"dependencyReuse": [],
"positive": [
"ShaderNodePointInfo type is read from Blender Main",
"ShaderNodeRGBCurve type is read from Blender Main",
"ShaderNodeRGBToBW type is read from Blender Main",
"ShaderNodeRadialTiling type is read from Blender Main",
"ShaderNodeRaycast type is read from Blender Main",
"shared RNA metadata is preserved",
"save/reopen preserves the batch metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported batch data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
],
"commands": [
"source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8 && cp build_web_blender6/bin/web_engine.wasm web/app/src/vendor/blender/web_engine.wasm && cp build_web_blender6/bin/web_engine.wasm web/app/public/vendor/blender/web_engine.wasm",
"npm --prefix web run typecheck",
"npm --prefix web run build",
"WBV2_BATCH_TASK=WBV2-P1256-001 WBV2_BATCH_PRODUCTION=tests/golden/WBV2-P1256-001/shader-main-reader-production.json WBV2_BATCH_FIXTURE=tests/files/web/generated/wbv2-shader-d37c82dd11ef35c6.blend WBV2_BATCH_TYPES='[\"ShaderNodePointInfo\",\"ShaderNodeRGBCurve\",\"ShaderNodeRGBToBW\",\"ShaderNodeRadialTiling\",\"ShaderNodeRaycast\"]' WBV2_BATCH_UNITS='[\"node:ShaderNodePointInfo\",\"node:ShaderNodeRGBCurve\",\"node:ShaderNodeRGBToBW\",\"node:ShaderNodeRadialTiling\",\"node:ShaderNodeRaycast\"]' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/shader-main-reader-production.spec.ts"
],
"fullFamilyParity": false,
"evidencePaths": [
"tests/golden/WBV2-P1256-001/shader-main-reader-production.json"
],
"coverageBindings": [
"node:ShaderNodePointInfo",
"node:ShaderNodeRGBCurve",
"node:ShaderNodeRGBToBW",
"node:ShaderNodeRadialTiling",
"node:ShaderNodeRaycast"
],
"commandBudget": {
"maxCommands": 48,
"maxReadCommands": 16
}
}
}
]
}