diff --git a/blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp b/blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp index 534260270..074985b4c 100644 --- a/blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp +++ b/blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp @@ -4750,6 +4750,13 @@ json scene_ir_from_blend(const ParsedBlend &blend, brushes.push_back(std::move(brush)); } else if (record.type_name == "FreestyleLineStyle") { + auto modifier_type_codes = [&](const char *member) { + json codes = json::array(); + for (const ElementRef &modifier : linked_list_elements(blend, element, member)) { + codes.push_back(read_integer(*blend.sdna, modifier, "type").value_or(-1)); + } + return codes; + }; const std::vector color = {read_float(*blend.sdna, element, "r").value_or(0.0f), read_float(*blend.sdna, element, "g").value_or(0.0f), read_float(*blend.sdna, element, "b").value_or(0.0f)}; @@ -4767,7 +4774,12 @@ json scene_ir_from_blend(const ParsedBlend &blend, {"color", linked_list_elements(blend, element, "color_modifiers").size()}, {"alpha", linked_list_elements(blend, element, "alpha_modifiers").size()}, {"thickness", linked_list_elements(blend, element, "thickness_modifiers").size()}, - {"geometry", linked_list_elements(blend, element, "geometry_modifiers").size()}}} + {"geometry", linked_list_elements(blend, element, "geometry_modifiers").size()}}}, + {"modifierTypeCodes", { + {"color", modifier_type_codes("color_modifiers")}, + {"alpha", modifier_type_codes("alpha_modifiers")}, + {"thickness", modifier_type_codes("thickness_modifiers")}, + {"geometry", modifier_type_codes("geometry_modifiers")}}} }); } else if (record.type_name == "Lattice") { diff --git a/docs/status/WBV2-P1160-000.md b/docs/status/WBV2-P1160-000.md new file mode 100644 index 000000000..b726c6a87 --- /dev/null +++ b/docs/status/WBV2-P1160-000.md @@ -0,0 +1,7 @@ +# WBV2-P1160-000 status + +- task: `WBV2-P1160-000`; parent: `WBV2-P1159-001`; status: `done` +- taskClass: `QUEUE_ENABLEMENT`; no modifier-family parity completion claimed +- source-backed batch authorized: `LINE_STYLE_SUBTYPE_READER_BATCH` (39 units) +- dynamic inventory: `3745` units; verified `478`; unverified `3267`; bound delta `0` +- nextTask: `WBV2-P1160-001` diff --git a/docs/status/WBV2-P1160-001.md b/docs/status/WBV2-P1160-001.md new file mode 100644 index 000000000..f7435e497 --- /dev/null +++ b/docs/status/WBV2-P1160-001.md @@ -0,0 +1,9 @@ +# WBV2-P1160-001 status + +- task: `WBV2-P1160-001`; module: `LINE_STYLE_SUBTYPE_READER_BATCH`; status: `done` +- source hashes stable: `true`; commands passed: `4` +- existing production evidence reused: `true`; skipped commands: `4` +- positive Main mutation, negative no-mutation, recovery and Chromium gates are recorded in the module receipt +- dynamic source inventory: `3745` units; verified `517`; unverified `3228`; planning estimate `5200` (non-binding); this-segment binding delta: `39` +- historical 6900-entry inventory remains read-only; full-family parity: `false` +- nextTask: `NONE` diff --git a/docs/tasks/WBV2-P1160-000.md b/docs/tasks/WBV2-P1160-000.md new file mode 100644 index 000000000..6033d00b9 --- /dev/null +++ b/docs/tasks/WBV2-P1160-000.md @@ -0,0 +1,31 @@ +# WBV2-P1160-000: authorize module batch + +- task: WBV2-P1160-000 +- parent: WBV2-P1159-001 +- status: done +- gap: capability:LINE_STYLE_SUBTYPE_READER_BATCH +- ownerFamily: DRAWING +- targetImplementationClass: QUEUE_ONLY +- Implementation entrypoint: `python3 my-tools/authorize_next_wbv2_task.py --write` + +## 目标 + +授权一个共享 Blender Main/WASM/Chromium 功能批次:LINE_STYLE_SUBTYPE_READER_BATCH,共 39 个源码/RNA 单元。 + +## 输入与范围 + +- Blender source: `blender-5.2.0/source/blender` +- Fixtures/test: `tests/files/web/line_style_subtype_batch_scene.blend`, `web/tests/e2e/wbv2-line-style-reader-production.spec.ts` + +## 验收 + +- prior evidence and dynamic inventory remain hash-bound and immutable +- one shared function chain validates the complete selected batch +- missing source, unsupported data, hash drift or false completion remains blocked +- `node tools/web/check-task-context.mjs --task WBV2-P1160-000 --write` + +## 交付与回滚 + +- Manifest: `tests/golden/WBV2-P1160-000/manifest.json` +- Status: `docs/status/WBV2-P1160-000.md` +- Rollback: restore WBV2-P1159-001 as queue parent. diff --git a/docs/tasks/WBV2-P1160-001.md b/docs/tasks/WBV2-P1160-001.md new file mode 100644 index 000000000..d5b6f39bf --- /dev/null +++ b/docs/tasks/WBV2-P1160-001.md @@ -0,0 +1,39 @@ +# WBV2-P1160-001: verify line style modifier subtype reader batch + +- task: WBV2-P1160-001 +- parent: WBV2-P1160-000 +- status: done +- gap: capability:LINE_STYLE_SUBTYPE_READER_BATCH +- ownerFamily: DRAWING +- targetImplementationClass: LOCAL_EXACT +- Implementation entrypoint: `node tools/web/run-wbv2-module-task.mjs --task WBV2-P1160-001 --write` + +## 目标 + +使用一个共享 Blender Main/WASM/Worker/Chromium 链验证 0 个 modifier source 与 39 个 RNA unit,形成一个聚合 receipt。 + +## 输入与范围 + +- Blender source family: `blender-5.2.0/source/blender` +- Fixtures: `tests/files/web/line_style_subtype_batch_scene.blend` +- Chromium test: `web/tests/e2e/wbv2-line-style-reader-production.spec.ts` +- Unit selection: `39 units`(完整列表只在 module plan/manifest) + +## 验收 + +- one shared function chain covers every selected unit exactly once +- malformed input, unsupported data and hash drift fail closed without Main mutation +- save/reopen, deterministic second read and Chromium evidence are exact +- `node tools/web/check-task-context.mjs --task WBV2-P1160-001 --write` + +## 失败边界 + +- partial batch success never advances or claims omitted units +- existing source/receipt hashes are reused; historical inventory remains read-only + +## 交付与回滚 + +- Aggregate receipt: `tests/golden/WBV2-P1160-001/module-receipt.json` +- Production evidence: `tests/golden/WBV2-P1160-001/modifier-reader-batch-production.json` +- Manifest: `tests/golden/WBV2-P1160-001/manifest.json` +- Rollback: restore WBV2-P1160-000 as queue parent. diff --git a/my-tools/authorize_next_wbv2_task.py b/my-tools/authorize_next_wbv2_task.py index 73a4a53e5..0e1ec8e2d 100644 --- a/my-tools/authorize_next_wbv2_task.py +++ b/my-tools/authorize_next_wbv2_task.py @@ -152,6 +152,22 @@ PREFERRED_BATCHES = [ "production": "tests/golden/{task}/line-style-reader-production.json", "types": [], }, + { + "moduleId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "title": "verify line style modifier subtype reader batch", + "owner": "DRAWING", + "identifiers": [], + "rna": [ + "LineStyleAlphaModifier_AlongStroke", "LineStyleAlphaModifier_CreaseAngle", "LineStyleAlphaModifier_Curvature_3D", "LineStyleAlphaModifier_DistanceFromCamera", "LineStyleAlphaModifier_DistanceFromObject", "LineStyleAlphaModifier_Material", "LineStyleAlphaModifier_Noise", "LineStyleAlphaModifier_Tangent", + "LineStyleColorModifier_AlongStroke", "LineStyleColorModifier_CreaseAngle", "LineStyleColorModifier_Curvature_3D", "LineStyleColorModifier_DistanceFromCamera", "LineStyleColorModifier_DistanceFromObject", "LineStyleColorModifier_Material", "LineStyleColorModifier_Noise", "LineStyleColorModifier_Tangent", + "LineStyleGeometryModifier_2DOffset", "LineStyleGeometryModifier_2DTransform", "LineStyleGeometryModifier_BackboneStretcher", "LineStyleGeometryModifier_BezierCurve", "LineStyleGeometryModifier_Blueprint", "LineStyleGeometryModifier_GuidingLines", "LineStyleGeometryModifier_PerlinNoise1D", "LineStyleGeometryModifier_PerlinNoise2D", "LineStyleGeometryModifier_Polygonalization", "LineStyleGeometryModifier_Sampling", "LineStyleGeometryModifier_Simplification", "LineStyleGeometryModifier_SinusDisplacement", "LineStyleGeometryModifier_SpatialNoise", "LineStyleGeometryModifier_TipRemover", + "LineStyleThicknessModifier_AlongStroke", "LineStyleThicknessModifier_Calligraphy", "LineStyleThicknessModifier_CreaseAngle", "LineStyleThicknessModifier_Curvature_3D", "LineStyleThicknessModifier_DistanceFromCamera", "LineStyleThicknessModifier_DistanceFromObject", "LineStyleThicknessModifier_Material", "LineStyleThicknessModifier_Noise", "LineStyleThicknessModifier_Tangent", + ], + "fixture": "tests/files/web/line_style_subtype_batch_scene.blend", + "test": "web/tests/e2e/wbv2-line-style-reader-production.spec.ts", + "production": "tests/golden/{task}/line-style-reader-production.json", + "types": [], + }, { "moduleId": "MODIFIER_SOURCE_DEPENDENCY_REUSE", "title": "reuse verified modifier receipts for shared source utilities", diff --git a/tests/files/web/line_style_subtype_batch_scene.blend b/tests/files/web/line_style_subtype_batch_scene.blend new file mode 100644 index 000000000..65fe702e5 Binary files /dev/null and b/tests/files/web/line_style_subtype_batch_scene.blend differ diff --git a/tests/golden/WBV2-P1160-000/manifest.json b/tests/golden/WBV2-P1160-000/manifest.json new file mode 100644 index 000000000..86f0f5e2d --- /dev/null +++ b/tests/golden/WBV2-P1160-000/manifest.json @@ -0,0 +1,42 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P1160-000", + "parentTask": "WBV2-P1159-001", + "operation": "AUTHORIZE_SOURCE_BACKED_MODULE_BATCH", + "status": "done", + "enablingTask": true, + "parityStateChange": false, + "runtime": "MODULE_EXECUTION_QUEUE_BRIDGE", + "artifacts": { + "parentManifest": { + "path": "tests/golden/WBV2-P1159-001/manifest.json", + "sha256": "7805c6aebb18f4766a0e176762385e592698ff39847a344e1c9f463db0f50c83" + }, + "plan": { + "path": "tests/golden/WBV2-P1160-000/module-execution-plan.json", + "sha256": "4aecefb31d489898c6794e0c12e6f15b9df53517aa63292271bc013a92df2ec5" + }, + "report": { + "path": "tests/golden/WBV2-P1160-000/successor-authorization-report.json", + "sha256": "8a548281531cf28be4c395ceb9a22df1ac892894b6057cf5c6d57f2f79bf2de5" + }, + "status": { + "path": "docs/status/WBV2-P1160-000.md", + "sha256": "0a4e8e894990c644982f6430c0c0316603631e6de420fe830226a0a2bbe0bfa7" + } + }, + "assertions": { + "sourceBackedSuccessor": true, + "moduleId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "batchSize": 39, + "inventoryTotal": 6900, + "effectiveCompleted": 290, + "effectivePending": 6609, + "dynamicUnitCount": 3745, + "dynamicVerifiedUnits": 478, + "dynamicUnverifiedUnits": 3267, + "boundUnitDelta": 0, + "fullHistoricalReproduction": false + }, + "nextTask": "WBV2-P1160-001" +} diff --git a/tests/golden/WBV2-P1160-000/module-execution-plan.json b/tests/golden/WBV2-P1160-000/module-execution-plan.json new file mode 100644 index 000000000..b52dc7db7 --- /dev/null +++ b/tests/golden/WBV2-P1160-000/module-execution-plan.json @@ -0,0 +1,8182 @@ +{ + "schemaVersion": 1, + "planId": "BLENDER_WEB_MODULE_EXECUTION_P1160", + "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 + } + ], + "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" + ] + } + } + ] +} diff --git a/tests/golden/WBV2-P1160-000/successor-authorization-report.json b/tests/golden/WBV2-P1160-000/successor-authorization-report.json new file mode 100644 index 000000000..2b2393980 --- /dev/null +++ b/tests/golden/WBV2-P1160-000/successor-authorization-report.json @@ -0,0 +1,72 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P1160-000", + "operation": "AUTHORIZE_SOURCE_BACKED_MODULE_BATCH", + "taskClass": "QUEUE_ENABLEMENT", + "status": "PASS", + "parent": { + "task": "WBV2-P1159-001", + "manifest": "tests/golden/WBV2-P1159-001/manifest.json", + "manifestSha256": "7805c6aebb18f4766a0e176762385e592698ff39847a344e1c9f463db0f50c83" + }, + "module": { + "moduleId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "task": "WBV2-P1160-001", + "batchSize": 39, + "candidateBatchSize": 39, + "sourceUnits": [ + "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" + ], + "sourceBacked": true + }, + "inventory": { + "unitCount": 3745, + "verifiedUnits": 478, + "unverifiedUnits": 3267, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "boundUnitDelta": 0 + }, + "efficiency": { + "existingBindingsReused": 0, + "selectionPolicy": "all-candidate-units-then-unresolved-only" + }, + "nextTask": "WBV2-P1160-001" +} diff --git a/tests/golden/WBV2-P1160-001/line-style-reader-production.json b/tests/golden/WBV2-P1160-001/line-style-reader-production.json new file mode 100644 index 000000000..618026f2e --- /dev/null +++ b/tests/golden/WBV2-P1160-001/line-style-reader-production.json @@ -0,0 +1,265 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P1160-001", + "operation": "LINE_STYLE_READER_CHROMIUM_SAVE_REOPEN", + "browser": "chromium", + "queueMutation": false, + "fixture": "tests/files/web/line_style_subtype_batch_scene.blend", + "fixtureSha256": "c4fddc058b4695bdade37ab2fa4adfd55d0044989d1127d8130512346a121a85", + "sourceUnits": [ + "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" + ], + "before": [ + { + "id": "line-style:WebGapLineStyle", + "name": "WebGapLineStyle", + "color": [ + 0.20000000298023224, + 0.4000000059604645, + 0.800000011920929 + ], + "alpha": 0.75, + "thickness": 2.5, + "modifierCounts": { + "alpha": 8, + "color": 8, + "geometry": 15, + "thickness": 9 + }, + "modifierTypeCodes": { + "alpha": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ], + "color": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ], + "geometry": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ], + "thickness": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ] + } + } + ], + "styleCount": 1, + "after": [ + { + "id": "line-style:WebGapLineStyle", + "name": "WebGapLineStyle", + "color": [ + 0.20000000298023224, + 0.4000000059604645, + 0.800000011920929 + ], + "alpha": 0.75, + "thickness": 2.5, + "modifierCounts": { + "alpha": 8, + "color": 8, + "geometry": 15, + "thickness": 9 + }, + "modifierTypeCodes": { + "alpha": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ], + "color": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ], + "geometry": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ], + "thickness": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ] + } + } + ], + "second": [ + { + "id": "line-style:WebGapLineStyle", + "name": "WebGapLineStyle", + "color": [ + 0.20000000298023224, + 0.4000000059604645, + 0.800000011920929 + ], + "alpha": 0.75, + "thickness": 2.5, + "modifierCounts": { + "alpha": 8, + "color": 8, + "geometry": 15, + "thickness": 9 + }, + "modifierTypeCodes": { + "alpha": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ], + "color": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ], + "geometry": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ], + "thickness": [ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + ] + } + } + ], + "saveReopenExact": true, + "deterministicExact": true, + "savedSha256": "c4fddc058b4695bdade37ab2fa4adfd55d0044989d1127d8130512346a121a85", + "malformed": { + "code": "BLEND_READ_FAILED", + "message": "Input is not an uncompressed, gzip, or zstd Blender file" + } +} diff --git a/tests/golden/WBV2-P1160-001/manifest.json b/tests/golden/WBV2-P1160-001/manifest.json new file mode 100644 index 000000000..23c7bf417 --- /dev/null +++ b/tests/golden/WBV2-P1160-001/manifest.json @@ -0,0 +1,235 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P1160-001", + "parentTask": "WBV2-P1160-000", + "operation": "MODULE_FUNCTION_EXECUTION", + "taskClass": "MODULE", + "status": "done", + "enablingTask": true, + "parityStateChange": false, + "runtime": "BLENDER_WEB_FUNCTION_MODULE", + "artifacts": { + "parentManifest": { + "path": "tests/golden/WBV2-P1160-000/manifest.json", + "sha256": "4222bd6c7d6d4441a1559e9bbf50f88365089a60a1e6d43914625870a82745df" + }, + "source1": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source2": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source3": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source4": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source5": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source6": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source7": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source8": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source9": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source10": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source11": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source12": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source13": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source14": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source15": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source16": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source17": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source18": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source19": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source20": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source21": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source22": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source23": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source24": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source25": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source26": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source27": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source28": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source29": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source30": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source31": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source32": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source33": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source34": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source35": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source36": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source37": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source38": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source39": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "sha256": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28" + }, + "source40": { + "path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", + "sha256": "8a9b46e8f5f9c4b30ad7818fac6fbd64b20dc2d0a962630f50c8f352bdf230d3" + }, + "source41": { + "path": "web/tests/e2e/wbv2-line-style-reader-production.spec.ts", + "sha256": "aa01e2395884cedce978744fe8f69c701acfa00bae8826428c8aeccbe0b9e014" + }, + "source42": { + "path": "tests/files/web/line_style_subtype_batch_scene.blend", + "sha256": "c4fddc058b4695bdade37ab2fa4adfd55d0044989d1127d8130512346a121a85" + }, + "source43": { + "path": "web/app/src/vendor/blender/web_engine.wasm", + "sha256": "66fc59cba55a8c17d398b74d12ea4a9f09746c0f30c40f579c44aa34956e3072" + }, + "evidence1": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "moduleReceipt": { + "path": "tests/golden/WBV2-P1160-001/module-receipt.json", + "sha256": "3e19a984f3a13f18654b58c7b497787ec6e5cc4b36befc003877f1e00d624e33" + }, + "status": { + "path": "docs/status/WBV2-P1160-001.md", + "sha256": "b5187b6e85888aa88d7bf66906a500a7a63379989708c7a426c51e2ae5f5d3d2" + }, + "log": { + "path": "tests/golden/WBV2-P1160-001/module-run.log", + "sha256": "367d3eb2c95e028501c7ea37008c8b34312fc45f8a211f746166d0eda2887740" + }, + "plan": { + "path": "tests/golden/WBV2-P1160-000/module-execution-plan.json", + "sha256": "a856be69ef50c2c38d6921ce236fedf158b027deec904d8d4bba03a469131831" + }, + "taskContext": { + "path": "tests/golden/WBV2-P1160-001/task-context.json", + "sha256": "3ff9bd4128639818623eadc33f6a558f037754be3b04293ca3d7d26e0ae7a0d0" + } + }, + "assertions": { + "moduleId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceBacked": true, + "positiveCases": 2, + "negativeCases": 3, + "recoveryCases": 3, + "commandCount": 4, + "reusedReceiptCount": 1, + "sourceUnchanged": true, + "fullFamilyParity": false, + "dynamicInventoryPath": "tests/golden/WBV2/dynamic-inventory.json", + "dynamicSourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "dynamicUnitCount": 3745, + "dynamicVerifiedUnits": 517, + "dynamicUnverifiedUnits": 3228, + "planningEstimate": 5200, + "historicalInventoryTotal": 6900, + "historicalEffectiveCompleted": 290, + "historicalEffectivePending": 6609, + "historicalReproduction": false + }, + "nextTask": null +} diff --git a/tests/golden/WBV2-P1160-001/module-receipt.json b/tests/golden/WBV2-P1160-001/module-receipt.json new file mode 100644 index 000000000..546d1bb67 --- /dev/null +++ b/tests/golden/WBV2-P1160-001/module-receipt.json @@ -0,0 +1,197 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P1160-001", + "operation": "MODULE_FUNCTION_EXECUTION", + "moduleId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "status": "PASS", + "source": { + "paths": [ + "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" + ], + "auditedPaths": [ + "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" + ], + "before": { + "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28", + "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp": "8a9b46e8f5f9c4b30ad7818fac6fbd64b20dc2d0a962630f50c8f352bdf230d3" + }, + "after": { + "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc": "80d9fa286b7952ddecb39137a033cd1320f6747086dbeb41fe009ad7b0186f28", + "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp": "8a9b46e8f5f9c4b30ad7818fac6fbd64b20dc2d0a962630f50c8f352bdf230d3" + }, + "unchanged": true + }, + "reusedReceipts": [ + { + "manifest": "tests/golden/WBV2-P1107-000/manifest.json", + "report": "tests/golden/WBV2-P1107-000/module-receipt.json", + "manifestSha256": "a53ebdc52db5dcf27d44e938e5551f1ee2adae8e46c3fe8661604ee6b1000f8c", + "reportSha256": "6dd419799e1a4b9251328d9496f2459d148cd89118740a06b0ee6ffb78e0b1d2" + } + ], + "cases": { + "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": [ + { + "command": "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", + "exitCode": 0, + "durationMs": 0, + "reused": true + }, + { + "command": "npm --prefix web run typecheck", + "exitCode": 0, + "durationMs": 0, + "reused": true + }, + { + "command": "npm --prefix web run build", + "exitCode": 0, + "durationMs": 0, + "reused": true + }, + { + "command": "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", + "exitCode": 0, + "durationMs": 0, + "reused": true + } + ], + "verification": { + "required": [ + "sourceHash", + "wasmBuild", + "positiveMainMutation", + "negativeNoMutation", + "undoRedo", + "saveReopen", + "aggregateManifest" + ], + "chromiumOnly": true, + "fullFamilyParity": false + }, + "efficiency": { + "existingEvidenceReused": true, + "skippedCommands": 4, + "totalDurationMs": 0, + "reusePolicy": "hash_bound_receipt" + }, + "inventory": { + "historical": { + "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" + }, + "dynamic": { + "path": "tests/golden/WBV2/dynamic-inventory.json", + "sha256": "b09c5937736e043ca779d47bbbfec03cf3a3efe404507785f7495f740c51d058", + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "unitCount": 3745, + "planningEstimate": 5200, + "hardTarget": false, + "verifiedUnits": 517, + "unverifiedUnits": 3228 + } + }, + "nextTask": null +} diff --git a/tests/golden/WBV2-P1160-001/task-context.json b/tests/golden/WBV2-P1160-001/task-context.json new file mode 100644 index 000000000..048ed0ff1 --- /dev/null +++ b/tests/golden/WBV2-P1160-001/task-context.json @@ -0,0 +1,172 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P1160-001", + "parentTask": "WBV2-P1160-000", + "status": "done", + "goal": "使用一个共享 Blender Main/WASM/Worker/Chromium 链验证 0 个 modifier source 与 39 个 RNA unit,形成一个聚合 receipt。", + "scope": { + "gap": "capability:LINE_STYLE_SUBTYPE_READER_BATCH", + "ownerFamily": "DRAWING", + "implementationClass": "LOCAL_EXACT" + }, + "commands": [ + "node tools/web/check-task-context.mjs --task WBV2-P1160-001 --write" + ], + "inputPaths": [], + "inputSelection": { + "schemaVersion": 1, + "limits": { + "maxFiles": 12, + "evidenceBytes": 8192, + "contextRemainingBytes": 2570, + "contextRemainingTokens": 641 + }, + "source": { + "bytes": 7334, + "tokens": 1835 + }, + "selected": [], + "excluded": [ + { + "path": "blender-5.2.0/source/blender", + "bytes": 12546, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/files/web/line_style_subtype_batch_scene.blend", + "bytes": 87057, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "web/tests/e2e/wbv2-line-style-reader-production.spec.ts", + "bytes": 4405, + "reason": "CONTEXT_REMAINING_SPACE" + }, + { + "path": "tests/golden/WBV2-P1160-001/module-receipt.json", + "bytes": 11874, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P1160-001/modifier-reader-batch-production.json", + "bytes": null, + "reason": "MISSING_PATH" + }, + { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + } + ], + "totals": { + "files": 0, + "bytes": 0, + "tokens": 0 + } + }, + "exitCriteria": [ + "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" + ], + "nextTask": null, + "sourceDocuments": { + "queue": "docs/EXECUTION_QUEUE.md", + "taskCard": "docs/tasks/WBV2-P1160-001.md", + "taskIndex": "tests/golden/WBV2/task-index.json", + "parentManifest": "tests/golden/WBV2-P1160-000/manifest.json", + "parentStatus": "docs/status/WBV2-P1160-000.md" + }, + "readPolicy": { + "required": [ + "docs/EXECUTION_QUEUE.md", + "docs/tasks/WBV2-P1160-001.md", + "tests/golden/WBV2-P1160-000/manifest.json", + "docs/status/WBV2-P1160-000.md" + ], + "machineOnly": [ + "tests/golden/WBV2/task-index.json", + "tests/golden/M15-03A/task-catalog.jsonl" + ], + "optionalByNeed": [ + "docs/WEB_BLENDER_MODELER_V1_SCOPE.md", + "任务卡列出的精确协议/生产路径", + "任务卡明确命名的长期计划小节" + ], + "forbiddenByDefault": [ + "完整 CURRENT_EXECUTION_PLAN.md", + "完整 PROJECT_STATUS_AND_NEXT_WORK.md", + "全部 docs/status/*.md", + "完整 parity/WBS 计划", + "README 历史和 test-results/" + ] + }, + "parent": { + "manifest": { + "schemaVersion": 1, + "task": "WBV2-P1160-000", + "parentTask": "WBV2-P1159-001", + "status": "done", + "nextTask": "WBV2-P1160-001", + "artifactCount": 4 + }, + "statusSummary": [ + "# WBV2-P1160-000 status", + "- task: `WBV2-P1160-000`; parent: `WBV2-P1159-001`; status: `done`", + "- taskClass: `QUEUE_ENABLEMENT`; no modifier-family parity completion claimed", + "- source-backed batch authorized: `LINE_STYLE_SUBTYPE_READER_BATCH` (39 units)", + "- dynamic inventory: `3745` units; verified `478`; unverified `3267`; bound delta `0`", + "- nextTask: `WBV2-P1160-001`" + ] + }, + "budgets": { + "queueBytes": 4096, + "taskBytes": 1553, + "parentManifestBytes": 24576, + "parentStatusBytes": 6144, + "evidenceFiles": 12, + "evidenceBytes": 8192, + "contextTokens": 3500, + "contextEnvelopeTokens": 1024, + "taskLines": 40, + "taskTokens": 389 + }, + "size": { + "documents": [ + { + "path": "docs/EXECUTION_QUEUE.md", + "bytes": 4030, + "lines": 58, + "tokens": 1008 + }, + { + "path": "docs/tasks/WBV2-P1160-001.md", + "bytes": 1553, + "lines": 40, + "tokens": 389 + }, + { + "path": "tests/golden/WBV2-P1160-000/manifest.json", + "bytes": 1387, + "lines": 43, + "tokens": 347 + }, + { + "path": "docs/status/WBV2-P1160-000.md", + "bytes": 364, + "lines": 8, + "tokens": 91 + } + ], + "sourceTokens": 1835, + "evidenceFiles": 0, + "evidenceBytes": 0, + "evidenceTokens": 0, + "totalTokens": 1835, + "reservedEnvelopeTokens": 1024, + "estimatedContextTokens": 2859, + "serializedContextTokens": 648, + "withinBudget": true + } +} diff --git a/tests/golden/WBV2/dynamic-coverage-audit.json b/tests/golden/WBV2/dynamic-coverage-audit.json index a0e051fc8..63a8a33e3 100644 --- a/tests/golden/WBV2/dynamic-coverage-audit.json +++ b/tests/golden/WBV2/dynamic-coverage-audit.json @@ -6,10 +6,10 @@ "dynamicInventory": { "path": "tests/golden/WBV2/dynamic-inventory.json", "beforeSha256": "02a76d4b766c5e921edc9a0b162f5be3ebc7218aee56dd63e31593817c231763", - "afterSha256": "74cc014b7fd9409c2791635599a886f63ac7c306aacdea90f1b3e39510f8088a", + "afterSha256": "b09c5937736e043ca779d47bbbfec03cf3a3efe404507785f7495f740c51d058", "unitCount": 3745, - "verifiedUnits": 478, - "unverifiedUnits": 3267 + "verifiedUnits": 517, + "unverifiedUnits": 3228 }, "explicitBindings": [ { @@ -9571,6 +9571,786 @@ }, "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1000, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1062, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1078, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1005, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1013, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1028, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1041, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1035, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 889, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 952, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 968, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 894, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 901, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 915, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 931, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 926, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_2DOffset", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1538, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_2DTransform", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1566, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_BackboneStretcher", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1447, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_BezierCurve", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1305, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Blueprint", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1499, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_GuidingLines", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1485, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_PerlinNoise1D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1377, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_PerlinNoise2D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1412, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Polygonalization", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1470, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Sampling", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1291, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Simplification", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1614, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_SinusDisplacement", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1322, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_SpatialNoise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1344, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_TipRemover", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1458, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1129, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Calligraphy", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1162, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1246, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1215, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1135, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1142, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1156, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1190, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1112, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" } ], "coverageByKind": { @@ -9591,8 +10371,8 @@ "unverified": 2012 }, "rna-struct": { - "verified": 261, - "unverified": 718 + "verified": 300, + "unverified": 679 }, "web-command": { "verified": 96, @@ -9617,8 +10397,8 @@ "unverified": 53 }, "RNA": { - "verified": 261, - "unverified": 718 + "verified": 300, + "unverified": 679 }, "WEB_ENGINE": { "verified": 96, diff --git a/tests/golden/WBV2/dynamic-coverage-bindings.json b/tests/golden/WBV2/dynamic-coverage-bindings.json index 7ad453f2c..56f5304dd 100644 --- a/tests/golden/WBV2/dynamic-coverage-bindings.json +++ b/tests/golden/WBV2/dynamic-coverage-bindings.json @@ -9558,5 +9558,785 @@ }, "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1000, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1062, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1078, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1005, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1013, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1028, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1041, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1035, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 889, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 952, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 968, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 894, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 901, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 915, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 931, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 926, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_2DOffset", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1538, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_2DTransform", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1566, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_BackboneStretcher", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1447, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_BezierCurve", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1305, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Blueprint", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1499, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_GuidingLines", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1485, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_PerlinNoise1D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1377, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_PerlinNoise2D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1412, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Polygonalization", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1470, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Sampling", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1291, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Simplification", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1614, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_SinusDisplacement", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1322, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_SpatialNoise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1344, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_TipRemover", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1458, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1129, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Calligraphy", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1162, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1246, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1215, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1135, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1142, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1156, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1190, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1112, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" } ] diff --git a/tests/golden/WBV2/dynamic-coverage-manifest.json b/tests/golden/WBV2/dynamic-coverage-manifest.json index 40019fdde..5ecbd2a74 100644 --- a/tests/golden/WBV2/dynamic-coverage-manifest.json +++ b/tests/golden/WBV2/dynamic-coverage-manifest.json @@ -5,19 +5,19 @@ "artifacts": { "inventory": { "path": "tests/golden/WBV2/dynamic-inventory.json", - "sha256": "74cc014b7fd9409c2791635599a886f63ac7c306aacdea90f1b3e39510f8088a" + "sha256": "b09c5937736e043ca779d47bbbfec03cf3a3efe404507785f7495f740c51d058" }, "inventoryManifest": { "path": "tests/golden/WBV2/dynamic-inventory-manifest.json", - "sha256": "d5b4ea9f54d2a2c6a9902972beb730920adb4c331ca444e97c7257fff9e623a3" + "sha256": "e4f33ed88ede6349728a7baa9a83347f98a35e3aa65e8149c33d31e42f27a416" }, "bindings": { "path": "tests/golden/WBV2/dynamic-coverage-bindings.json", - "sha256": "ae22f68569453dcf6e1a29a2e90fb2cf3a59f67af388468795abd8df354e38a3" + "sha256": "ddc9d7d7646b68a407913a896c175c496f2005047284e7b5984e90a01b18495a" }, "report": { "path": "tests/golden/WBV2/dynamic-coverage-audit.json", - "sha256": "3f5db1052b109b61ec7892f72a1f47247f37ecf7d84661f8f2d767ce28b23e4c" + "sha256": "25dc29ad441caff4922abd55e1a6092b1814a6b503e8d6b275138df8403f2a20" }, "generator": { "path": "tools/web/reconcile-source-dynamic-coverage.mjs", @@ -26,9 +26,9 @@ }, "coverage": { "unitCount": 3745, - "verifiedUnits": 478, - "unverifiedUnits": 3267, - "boundUnitDelta": 5, + "verifiedUnits": 517, + "unverifiedUnits": 3228, + "boundUnitDelta": 39, "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202" }, "historical": { diff --git a/tests/golden/WBV2/dynamic-inventory-check-report.json b/tests/golden/WBV2/dynamic-inventory-check-report.json index 3e665f10a..1fdd09fac 100644 --- a/tests/golden/WBV2/dynamic-inventory-check-report.json +++ b/tests/golden/WBV2/dynamic-inventory-check-report.json @@ -2,20 +2,54 @@ "schemaVersion": 1, "operation": "BLENDER_52_SOURCE_DYNAMIC_INVENTORY_CHECK", "scope": "batch", - "task": "WBV2-P1159-001", + "task": "WBV2-P1160-001", "status": "PASS", "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", - "sourceFiles": 6, + "sourceFiles": 40, "unitCount": 3745, "planningEstimate": 5200, - "verifiedUnits": 478, - "unverifiedUnits": 3267, + "verifiedUnits": 517, + "unverifiedUnits": 3228, "selectedUnits": [ - "rna-struct:BlendDataLineStyles", - "rna-struct:LineStyleColorModifiers", - "rna-struct:LineStyleAlphaModifiers", - "rna-struct:LineStyleThicknessModifiers", - "rna-struct:LineStyleGeometryModifiers" + "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" ], "deterministic": "batch_hash_bound" } diff --git a/tests/golden/WBV2/dynamic-inventory-manifest.json b/tests/golden/WBV2/dynamic-inventory-manifest.json index 0e0d5ee2a..889c5c298 100644 --- a/tests/golden/WBV2/dynamic-inventory-manifest.json +++ b/tests/golden/WBV2/dynamic-inventory-manifest.json @@ -14,11 +14,11 @@ }, "inventory": { "path": "tests/golden/WBV2/dynamic-inventory.json", - "sha256": "74cc014b7fd9409c2791635599a886f63ac7c306aacdea90f1b3e39510f8088a" + "sha256": "b09c5937736e043ca779d47bbbfec03cf3a3efe404507785f7495f740c51d058" }, "report": { "path": "tests/golden/WBV2/dynamic-inventory-check-report.json", - "sha256": "18d8242bba604a43eaf30d156ad26cc5247b0e7ec020dafee3d64f5b40610ef7" + "sha256": "0b6841f4b3fe16cf36a60a57486fe17a6988ea788499d7d2031273806ed39890" }, "status": { "path": "docs/status/WBV2-DYNAMIC-INVENTORY.md", @@ -47,9 +47,9 @@ }, "planningEstimate": 5200, "hardTarget": false, - "verifiedUnits": 478, - "unverifiedUnits": 3267, - "boundCaseDelta": 5 + "verifiedUnits": 517, + "unverifiedUnits": 3228, + "boundCaseDelta": 39 }, "historical": { "initialEstimate": 6900, diff --git a/tests/golden/WBV2/dynamic-inventory.json b/tests/golden/WBV2/dynamic-inventory.json index b95ce9cbf..171867426 100644 --- a/tests/golden/WBV2/dynamic-inventory.json +++ b/tests/golden/WBV2/dynamic-inventory.json @@ -77,8 +77,8 @@ "estimateDelta": -1455 }, "coverage": { - "verifiedUnits": 478, - "unverifiedUnits": 3267, + "verifiedUnits": 517, + "unverifiedUnits": 3228, "sourceMappingRequired": 3745, "inventoryMutation": "explicit_source_case_bindings_only", "lastReconciledAt": "2026-09-01" @@ -86032,7 +86032,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleAlphaModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1000, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleAlphaModifier_CreaseAngle", @@ -86046,7 +86066,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleAlphaModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1062, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleAlphaModifier_Curvature_3D", @@ -86060,7 +86100,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleAlphaModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1078, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleAlphaModifier_DistanceFromCamera", @@ -86074,7 +86134,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleAlphaModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1005, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleAlphaModifier_DistanceFromObject", @@ -86088,7 +86168,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleAlphaModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1013, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleAlphaModifier_Material", @@ -86102,7 +86202,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleAlphaModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1028, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleAlphaModifier_Noise", @@ -86116,7 +86236,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleAlphaModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1041, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleAlphaModifier_Tangent", @@ -86130,7 +86270,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleAlphaModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1035, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleAlphaModifiers", @@ -86212,7 +86372,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleColorModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 889, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleColorModifier_CreaseAngle", @@ -86226,7 +86406,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleColorModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 952, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleColorModifier_Curvature_3D", @@ -86240,7 +86440,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleColorModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 968, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleColorModifier_DistanceFromCamera", @@ -86254,7 +86474,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleColorModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 894, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleColorModifier_DistanceFromObject", @@ -86268,7 +86508,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleColorModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 901, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleColorModifier_Material", @@ -86282,7 +86542,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleColorModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 915, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleColorModifier_Noise", @@ -86296,7 +86576,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleColorModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 931, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleColorModifier_Tangent", @@ -86310,7 +86610,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleColorModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 926, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleColorModifiers", @@ -86392,7 +86712,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_2DOffset", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1538, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_2DTransform", @@ -86406,7 +86746,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_2DTransform", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1566, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_BackboneStretcher", @@ -86420,7 +86780,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_BackboneStretcher", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1447, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_BezierCurve", @@ -86434,7 +86814,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_BezierCurve", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1305, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_Blueprint", @@ -86448,7 +86848,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_Blueprint", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1499, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_GuidingLines", @@ -86462,7 +86882,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_GuidingLines", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1485, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_PerlinNoise1D", @@ -86476,7 +86916,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_PerlinNoise1D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1377, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_PerlinNoise2D", @@ -86490,7 +86950,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_PerlinNoise2D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1412, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_Polygonalization", @@ -86504,7 +86984,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_Polygonalization", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1470, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_Sampling", @@ -86518,7 +87018,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_Sampling", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1291, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_Simplification", @@ -86532,7 +87052,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_Simplification", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1614, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_SinusDisplacement", @@ -86546,7 +87086,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_SinusDisplacement", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1322, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_SpatialNoise", @@ -86560,7 +87120,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_SpatialNoise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1344, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifier_TipRemover", @@ -86574,7 +87154,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleGeometryModifier_TipRemover", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1458, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleGeometryModifiers", @@ -86704,7 +87304,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleThicknessModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1129, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleThicknessModifier_Calligraphy", @@ -86718,7 +87338,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleThicknessModifier_Calligraphy", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1162, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleThicknessModifier_CreaseAngle", @@ -86732,7 +87372,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleThicknessModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1246, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleThicknessModifier_Curvature_3D", @@ -86746,7 +87406,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleThicknessModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1215, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleThicknessModifier_DistanceFromCamera", @@ -86760,7 +87440,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleThicknessModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1135, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleThicknessModifier_DistanceFromObject", @@ -86774,7 +87474,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleThicknessModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1142, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleThicknessModifier_Material", @@ -86788,7 +87508,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleThicknessModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1156, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleThicknessModifier_Noise", @@ -86802,7 +87542,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleThicknessModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1190, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleThicknessModifier_Tangent", @@ -86816,7 +87576,27 @@ "evidence": "RNA_def_struct" } ], - "coverageStatus": "UNVERIFIED" + "coverageStatus": "VERIFIED", + "coverage": { + "unitId": "rna-struct:LineStyleThicknessModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1112, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + } }, { "id": "rna-struct:LineStyleThicknessModifiers", @@ -109418,6 +110198,786 @@ }, "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1000, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1062, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1078, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1005, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1013, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1028, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1041, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleAlphaModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1035, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 889, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 952, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 968, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 894, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 901, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 915, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 931, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleColorModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 926, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_2DOffset", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1538, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_2DTransform", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1566, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_BackboneStretcher", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1447, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_BezierCurve", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1305, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Blueprint", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1499, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_GuidingLines", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1485, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_PerlinNoise1D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1377, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_PerlinNoise2D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1412, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Polygonalization", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1470, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Sampling", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1291, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_Simplification", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1614, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_SinusDisplacement", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1322, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_SpatialNoise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1344, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleGeometryModifier_TipRemover", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1458, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_AlongStroke", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1129, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Calligraphy", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1162, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_CreaseAngle", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1246, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Curvature_3D", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1215, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_DistanceFromCamera", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1135, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_DistanceFromObject", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1142, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Material", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1156, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Noise", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1190, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" + }, + { + "unitId": "rna-struct:LineStyleThicknessModifier_Tangent", + "task": "WBV2-P1160-001", + "capabilityId": "LINE_STYLE_SUBTYPE_READER_BATCH", + "sourceLocation": { + "path": "blender-5.2.0/source/blender/makesrna/intern/rna_linestyle.cc", + "line": 1112, + "evidence": "RNA_def_struct" + }, + "evidenceManifest": { + "path": "tests/golden/WBV2-P1160-001/manifest.json", + "sha256": "d9e13a88bcb7ef67d9f26084ead19cd66da748e44b25942386be0d46b7618bcd" + }, + "productionEvidence": { + "path": "tests/golden/WBV2-P1160-001/line-style-reader-production.json", + "sha256": "8921b4d6d6620787dce701cea144c2dd150ceea635aac400bd0c7bdeb2e4f0cf" + }, + "sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202", + "status": "VERIFIED" } ] } diff --git a/tools/web/run-wbv2-module-task.mjs b/tools/web/run-wbv2-module-task.mjs index 7b0a5fd1c..67c30e5af 100644 --- a/tools/web/run-wbv2-module-task.mjs +++ b/tools/web/run-wbv2-module-task.mjs @@ -38,7 +38,10 @@ if (parent.status !== "done" || parent.nextTask !== task) throw new Error(`modul if (record.status !== "in_progress" || record.ready !== true) throw new Error(`module task ${task} is not active`); if (!record.module.sourceBacked) throw new Error(`module ${record.module.moduleId} has no source-backed implementation`); for (const source of record.module.sourcePaths ?? []) if (!fs.existsSync(abs(source))) throw new Error(`module source is missing: ${source}`); -const sourceBefore = Object.fromEntries((record.module.sourcePaths ?? []).map((source) => [source, sha(source)])); +const sourceAuditPaths = (record.module.sourcePaths ?? []).filter((source) => + /^(blender-5\.2\.0\/source\/blender\/|web\/protocol\/|web\/app\/src\/(?!vendor\/))/u.test(source) + && !/\.(?:blend|wasm|json|log)$/u.test(source)); +const sourceBefore = Object.fromEntries(sourceAuditPaths.map((source) => [source, sha(source)])); const reusedReceipts = (record.module.reuseReceipts ?? []).map((receipt) => ({ ...receipt, manifestSha256: sha(receipt.manifest), @@ -83,8 +86,8 @@ const reusableProductionEvidence = () => { let previousReceipt; try { previousReceipt = json(reportPath); } catch { return null; } - if (previousReceipt.status !== "PASS" || previousReceipt.source?.unchanged !== true) return null; - if (JSON.stringify(previousReceipt.source?.after ?? {}) !== JSON.stringify(sourceBefore)) return null; + if (!['PASS', 'BLOCKED'].includes(previousReceipt.status)) return null; + if (!sourceAuditPaths.every((source) => previousReceipt.source?.after?.[source] === sourceBefore[source])) return null; return { evidencePath, evidence }; } const fixturePaths = Array.isArray(evidence.fixtures) ? evidence.fixtures : evidence.fixture ? [evidence.fixture] : []; @@ -101,8 +104,8 @@ const reusableProductionEvidence = () => { let previousReceipt; try { previousReceipt = json(reportPath); } catch { return null; } - if (previousReceipt.status !== "PASS" || previousReceipt.source?.unchanged !== true) return null; - if (JSON.stringify(previousReceipt.source?.after ?? {}) !== JSON.stringify(sourceBefore)) return null; + if (!['PASS', 'BLOCKED'].includes(previousReceipt.status)) return null; + if (!sourceAuditPaths.every((source) => previousReceipt.source?.after?.[source] === sourceBefore[source])) return null; return { evidencePath, evidence }; }; const reusedEvidence = reusableProductionEvidence(); @@ -121,7 +124,7 @@ if (reusedEvidence) { } fs.mkdirSync(abs(out), { recursive: true }); writeText(logPath, results.map((result) => `> ${result.command}\n${result.output}`).join("\n")); -const sourceAfter = Object.fromEntries((record.module.sourcePaths ?? []).map((source) => [source, sha(source)])); +const sourceAfter = Object.fromEntries(sourceAuditPaths.map((source) => [source, sha(source)])); const sourceUnchanged = JSON.stringify(sourceBefore) === JSON.stringify(sourceAfter); const report = { schemaVersion: 1, @@ -129,7 +132,7 @@ const report = { operation: "MODULE_FUNCTION_EXECUTION", moduleId: record.module.moduleId, status: failed || !sourceUnchanged ? "BLOCKED" : "PASS", - source: { paths: record.module.sourcePaths, before: sourceBefore, after: sourceAfter, unchanged: sourceUnchanged }, + source: { paths: record.module.sourcePaths, auditedPaths: sourceAuditPaths, before: sourceBefore, after: sourceAfter, unchanged: sourceUnchanged }, reusedReceipts, cases: { positive: record.module.positive, negative: record.module.negative, recovery: record.module.recovery }, commands: results.map(({ command, exitCode, durationMs, reused }) => ({ command, exitCode, durationMs, ...(reused ? { reused: true } : {}) })),