feat(web): add incremental modifier reader batch
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-09-03 13:30:30 +08:00
parent 646e580b94
commit c3cce050f8
24 changed files with 9295 additions and 57 deletions

View File

@@ -15,9 +15,9 @@
| 字段 | 值 |
| --- | --- |
| 里程碑 | WBV2 capability workflow |
| 当前任务 | `WBV2-P1151-001` |
| parent manifest | `tests/golden/WBV2-P1151-000/manifest.json` |
| 任务卡 | [`tasks/WBV2-P1151-001.md`](tasks/WBV2-P1151-001.md) |
| 当前任务 | `WBV2-P1152-001` |
| parent manifest | `tests/golden/WBV2-P1152-000/manifest.json` |
| 任务卡 | [`tasks/WBV2-P1152-001.md`](tasks/WBV2-P1152-001.md) |
| 专项验收 | `node tools/web/check-execution-control-plane.mjs` |
| legacy coverage checkpoint | `M16-GAP-00282` |
| legacy coverage parent | `tests/golden/M16-GAP-00281/manifest.json` |

View File

@@ -0,0 +1,7 @@
# WBV2-P1152-000 status
- task: `WBV2-P1152-000`; parent: `WBV2-P1151-001`; status: `done`
- taskClass: `QUEUE_ENABLEMENT`; no modifier-family parity completion claimed
- source-backed batch authorized: `MODIFIER_READER_BATCH_SIX` (12 units)
- dynamic inventory: `3745` units; verified `442`; unverified `3303`; bound delta `0`
- nextTask: `WBV2-P1152-001`

View File

@@ -0,0 +1,9 @@
# WBV2-P1152-001 status
- task: `WBV2-P1152-001`; module: `MODIFIER_READER_BATCH_SIX`; status: `done`
- source hashes stable: `true`; commands passed: `4`
- existing production evidence reused: `false`; skipped commands: `0`
- positive Main mutation, negative no-mutation, recovery and Chromium gates are recorded in the module receipt
- dynamic source inventory: `3745` units; verified `454`; unverified `3291`; planning estimate `5200` (non-binding); this-segment binding delta: `12`
- historical 6900-entry inventory remains read-only; full-family parity: `false`
- nextTask: `NONE`

View File

@@ -0,0 +1,31 @@
# WBV2-P1152-000: authorize module batch
- task: WBV2-P1152-000
- parent: WBV2-P1151-001
- status: done
- gap: capability:MODIFIER_READER_BATCH_SIX
- ownerFamily: MODIFIER
- targetImplementationClass: QUEUE_ONLY
- Implementation entrypoint: `python3 my-tools/authorize_next_wbv2_task.py --write`
## 目标
授权一个共享 Blender Main/WASM/Chromium 功能批次:MODIFIER_READER_BATCH_SIX,共 12 个源码/RNA 单元。
## 输入与范围
- Blender source: `blender-5.2.0/source/blender`
- Fixtures/test: `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/tests/e2e/wbv2-modifier-reader-multi-fixture-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-P1152-000 --write`
## 交付与回滚
- Manifest: `tests/golden/WBV2-P1152-000/manifest.json`
- Status: `docs/status/WBV2-P1152-000.md`
- Rollback: restore WBV2-P1151-001 as queue parent.

View File

@@ -0,0 +1,45 @@
# WBV2-P1152-001: verify modifier reader batch six
- task: WBV2-P1152-001
- parent: WBV2-P1152-000
- status: in_progress
- gap: capability:MODIFIER_READER_BATCH_SIX
- ownerFamily: MODIFIER
- targetImplementationClass: LOCAL_EXACT
- Implementation entrypoint: `node tools/web/run-wbv2-module-task.mjs --task WBV2-P1152-001 --write`
## 目标
以一个共享 Blender Main reader、WASM build、Worker 路由和 Chromium receipt 批量验证 MOD_mesh_to_volume, MOD_particleinstance, MOD_surface, MOD_weightvgedit, MOD_weightvgmix, MOD_weightvgproximity 的真实 modifier/RNA 元数据。
## 输入与范围
- Blender modifier sources: `blender-5.2.0/source/blender/modifiers/intern/`
- RNA source: `blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc`
- Native reader: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- 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`
- Chromium test: `web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts`
- Selected modifier 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`
- Selected RNA units: `rna-struct:MeshToVolumeModifier`, `rna-struct:ParticleInstanceModifier`, `rna-struct:SurfaceModifier`, `rna-struct:VertexWeightEditModifier`, `rna-struct:VertexWeightMixModifier`, `rna-struct:VertexWeightProximityModifier`
## 验收
- one shared Main/WASM/Worker/Chromium chain observes every selected type
- malformed input is rejected without Main mutation
- save/reopen and deterministic second read are exact
- only Chromium is used; JS simulation and per-API duplicate workers are forbidden
- each selected source unit receives an explicit hash-bound coverage binding
- `node tools/web/check-task-context.mjs --task WBV2-P1152-001 --write`
## 失败边界
- any missing source, unsupported type, hash drift, malformed data or non-exact recovery keeps the batch `in_progress`/`blocked`
- partial batch success never claims the omitted family; historical inventory remains read-only
## 交付与回滚
- Receipt: `tests/golden/WBV2-P1152-001/module-receipt.json`
- Aggregate production evidence: `tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json`
- Manifest: `tests/golden/WBV2-P1152-001/manifest.json`
- Status: `docs/status/WBV2-P1152-001.md`
- Rollback: restore WBV2-P1152-000 as queue parent without rewriting prior evidence.

View File

@@ -75,6 +75,24 @@ PREFERRED_BATCHES = [
"production": "tests/golden/{task}/modifier-reader-batch-production.json",
"types": ["MESH_CACHE", "MESH_SEQUENCE_CACHE", "MULTIRES", "OCEAN"],
},
{
"moduleId": "MODIFIER_READER_BATCH_SIX",
"title": "verify modifier reader batch six",
"owner": "MODIFIER",
"identifiers": ["MOD_mesh_to_volume", "MOD_particleinstance", "MOD_surface", "MOD_weightvgedit", "MOD_weightvgmix", "MOD_weightvgproximity"],
"rna": ["MeshToVolumeModifier", "ParticleInstanceModifier", "SurfaceModifier", "VertexWeightEditModifier", "VertexWeightMixModifier", "VertexWeightProximityModifier"],
"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",
],
"test": "web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts",
"production": "tests/golden/{task}/modifier-reader-batch-production.json",
"types": ["MESH_TO_VOLUME", "PARTICLE_INSTANCE", "SURFACE", "VERTEX_WEIGHT_EDIT", "VERTEX_WEIGHT_MIX", "VERTEX_WEIGHT_PROXIMITY"],
},
{
"moduleId": "GREASE_PENCIL_MODIFIER_READER_BATCH",
"title": "verify Grease Pencil modifier reader batch",
@@ -173,6 +191,8 @@ def snapshot(text: str, task: str, parent: str, next_task: str) -> str:
def make_card(task: str, parent: str, status: str, batch: dict, entrypoint: str) -> str:
fixture_paths = batch.get("fixtures") or [batch["fixture"]]
fixture_text = ", ".join(f"`{fixture}`" for fixture in fixture_paths)
if task.endswith("-000"):
return f"""# {task}: authorize module batch
@@ -191,7 +211,7 @@ def make_card(task: str, parent: str, status: str, batch: dict, entrypoint: str)
## 输入与范围
- Blender source: `blender-5.2.0/source/blender`
- Fixture/test: `{batch['fixture']}`, `{batch['test']}`
- Fixtures/test: {fixture_text}, `{batch['test']}`
## 验收
@@ -224,7 +244,7 @@ def make_card(task: str, parent: str, status: str, batch: dict, entrypoint: str)
## 输入与范围
- Blender source family: `blender-5.2.0/source/blender`
- Fixture: `{batch['fixture']}`
- Fixtures: {fixture_text}
- Chromium test: `{batch['test']}`
- Unit selection: `{len(batch['identifiers']) + len(batch['rna'])} units`(完整列表只在 module plan/manifest)
@@ -269,7 +289,7 @@ def make_card(task: str, parent: str, status: str, batch: dict, entrypoint: str)
- Blender modifier sources: `blender-5.2.0/source/blender/modifiers/intern/`
- RNA source: `blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc`
- Native reader: `blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp`
- Fixture: `{batch['fixture']}`
- Fixtures: {fixture_text}
- Chromium test: `{batch['test']}`
- Selected modifier units: {units}
- Selected RNA units: {rna_units}
@@ -341,12 +361,16 @@ def main() -> int:
write_json(current_manifest_path, current_manifest)
source_paths = [unit["locations"][0]["path"] for unit in batch["units"]]
source_paths += ["blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", batch["test"], batch["fixture"], "web/app/src/vendor/blender/web_engine.wasm"]
fixture_paths = batch.get("fixtures") or [batch["fixture"]]
source_paths += ["blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", batch["test"], *fixture_paths, "web/app/src/vendor/blender/web_engine.wasm"]
batch_types = json.dumps(batch["types"], separators=(',', ':'))
batch_units = json.dumps([unit["id"] for unit in batch["units"]], separators=(',', ':'))
fixture_env = f"WBV2_BATCH_FIXTURES='{json.dumps(fixture_paths, separators=(',', ':'))}'" if batch.get("fixtures") else f"WBV2_BATCH_FIXTURE={batch['fixture']}"
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",
f"WBV2_BATCH_TASK={module_task} WBV2_BATCH_FIXTURE={batch['fixture']} WBV2_BATCH_TYPES='{json.dumps(batch['types'], separators=(',', ':'))}' WBV2_BATCH_UNITS='{json.dumps([unit['id'] for unit in batch['units']], separators=(',', ':'))}' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/{Path(batch['test']).name}",
f"WBV2_BATCH_TASK={module_task} {fixture_env} WBV2_BATCH_TYPES='{batch_types}' WBV2_BATCH_UNITS='{batch_units}' WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/{Path(batch['test']).name}",
]
root_record = {"id": root_task, "phase": str(phase), "title": "authorize_modifier_reader_batch", "kind": "enabling", "owner": "PROGRAM", "dependsOn": [current], "parityId": None, "implementationClass": "QUEUE_ONLY", "parallelGroup": f"module-root-{phase}", "gate": "MODULE", "card": f"docs/tasks/{root_task}.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}
module_record = {"id": module_task, "phase": str(phase), "title": batch["title"], "kind": "module", "owner": batch["owner"], "dependsOn": [root_task], "parityId": batch["moduleId"], "implementationClass": "LOCAL_EXACT", "parallelGroup": f"module-{batch['moduleId'].lower()}", "gate": "MODULE", "card": f"docs/tasks/{module_task}.md", "behavior": f"Verify the {batch['moduleId']} 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": "in_progress", "ready": True, "queueMutationAllowed": True, "module": {"moduleId": batch["moduleId"], "sourceBacked": True, "capabilities": [f"CAP-{batch['moduleId']}-READER", f"CAP-{batch['moduleId']}-RECOVERY", f"CAP-{batch['moduleId']}-FAIL-CLOSED"], "sourcePaths": source_paths, "reuseReceipts": [{"manifest": "tests/golden/WBV2-P1107-000/manifest.json", "report": "tests/golden/WBV2-P1107-000/module-receipt.json"}], "positive": [f"{name} type is read from Blender Main" for name in batch["identifiers"]] + ["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": commands, "fullFamilyParity": False, "evidencePaths": [batch["production"].format(task=module_task)], "coverageBindings": [unit["id"] for unit in batch["units"]]}}

View File

@@ -467,10 +467,10 @@ Recorded: 2026-08-29 Asia/Shanghai
| Field | Value |
| --- | --- |
| Current task when this file was written | `WBV2-P1151-001` |
| Current task when this file was written | `WBV2-P1152-001` |
| Current task state | `done` |
| Parent manifest | `tests/golden/WBV2-P1151-001/manifest.json` |
| Current task card | `docs/tasks/WBV2-P1151-001.md` |
| Parent manifest | `tests/golden/WBV2-P1152-001/manifest.json` |
| Current task card | `docs/tasks/WBV2-P1152-001.md` |
| Current task-context nextTask | `NONE` |
| Focused command | `node tools/web/check-wbv2-module-execution.mjs` |

View File

@@ -0,0 +1,42 @@
{
"schemaVersion": 1,
"task": "WBV2-P1152-000",
"parentTask": "WBV2-P1151-001",
"operation": "AUTHORIZE_SOURCE_BACKED_MODULE_BATCH",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "MODULE_EXECUTION_QUEUE_BRIDGE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P1151-001/manifest.json",
"sha256": "c6d4c9cbd777843c37dcdd2218494d895d8e3354e7ee867bace297fbe85895b2"
},
"plan": {
"path": "tests/golden/WBV2-P1152-000/module-execution-plan.json",
"sha256": "8aeabfc4d8e7830db154e006a5768ecfa506c447905fa763c627297ba24a45a8"
},
"report": {
"path": "tests/golden/WBV2-P1152-000/successor-authorization-report.json",
"sha256": "55ce869a7f1ad2817ff5acb6a35c704b8652d4b8aa82c2f1868995cfaa295d61"
},
"status": {
"path": "docs/status/WBV2-P1152-000.md",
"sha256": "a7046f999f4d2519465e34b0af0b635b00a4f050c0ae34a0f84a61f9e4947eec"
}
},
"assertions": {
"sourceBackedSuccessor": true,
"moduleId": "MODIFIER_READER_BATCH_SIX",
"batchSize": 12,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"dynamicUnitCount": 3745,
"dynamicVerifiedUnits": 442,
"dynamicUnverifiedUnits": 3303,
"boundUnitDelta": 0,
"fullHistoricalReproduction": false
},
"nextTask": "WBV2-P1152-001"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,45 @@
{
"schemaVersion": 1,
"task": "WBV2-P1152-000",
"operation": "AUTHORIZE_SOURCE_BACKED_MODULE_BATCH",
"taskClass": "QUEUE_ENABLEMENT",
"status": "PASS",
"parent": {
"task": "WBV2-P1151-001",
"manifest": "tests/golden/WBV2-P1151-001/manifest.json",
"manifestSha256": "c6d4c9cbd777843c37dcdd2218494d895d8e3354e7ee867bace297fbe85895b2"
},
"module": {
"moduleId": "MODIFIER_READER_BATCH_SIX",
"task": "WBV2-P1152-001",
"batchSize": 12,
"candidateBatchSize": 12,
"sourceUnits": [
"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"
],
"sourceBacked": true
},
"inventory": {
"unitCount": 3745,
"verifiedUnits": 442,
"unverifiedUnits": 3303,
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"boundUnitDelta": 0
},
"efficiency": {
"existingBindingsReused": 0,
"selectionPolicy": "all-candidate-units-then-unresolved-only"
},
"nextTask": "WBV2-P1152-001"
}

View File

@@ -0,0 +1,147 @@
{
"schemaVersion": 1,
"task": "WBV2-P1152-001",
"parentTask": "WBV2-P1152-000",
"operation": "MODULE_FUNCTION_EXECUTION",
"taskClass": "MODULE",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "BLENDER_WEB_FUNCTION_MODULE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P1152-000/manifest.json",
"sha256": "42db0e38427d7a61098d177a0b693fd33ab83e879be34e60e5ae2f1da1ac8b49"
},
"source1": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_mesh_to_volume.cc",
"sha256": "908eba5de75261b67bd6eb5154259ac44fa015014e5003bd69079aa55f046a2e"
},
"source2": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_particleinstance.cc",
"sha256": "edf4f43bfe8dd65a1e4d7096ee6af4503dd6bc722f721a668ed7c2a7c74e6de2"
},
"source3": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_surface.cc",
"sha256": "bf792974882469a510176218aabd0745d3c6e0fed0f6840b364f3d31b3cc406c"
},
"source4": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc",
"sha256": "ec20b812740b65fe2a840a3e4144e84e5bb28bb35d7916ab63c4ae82a4b7cbea"
},
"source5": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgmix.cc",
"sha256": "2b14c2d3b9db493b78549171cb7f2a73d558f78237ef27d0762b9b1a49b97305"
},
"source6": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgproximity.cc",
"sha256": "c136f682f33d81a120173cfd30865419c122ff1dacf9f7146c80a6bb04753a4c"
},
"source7": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"sha256": "1292112c20eaa113084a2a7093c349e7787db818950d80a6e11b75b287e4287b"
},
"source8": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"sha256": "1292112c20eaa113084a2a7093c349e7787db818950d80a6e11b75b287e4287b"
},
"source9": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"sha256": "1292112c20eaa113084a2a7093c349e7787db818950d80a6e11b75b287e4287b"
},
"source10": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"sha256": "1292112c20eaa113084a2a7093c349e7787db818950d80a6e11b75b287e4287b"
},
"source11": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"sha256": "1292112c20eaa113084a2a7093c349e7787db818950d80a6e11b75b287e4287b"
},
"source12": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"sha256": "1292112c20eaa113084a2a7093c349e7787db818950d80a6e11b75b287e4287b"
},
"source13": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"sha256": "f6fbd04315c48ad4dfbf109b91e5b350550d23c227e5c11a71a58f09e923c990"
},
"source14": {
"path": "web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts",
"sha256": "e814e9eaeca1efe9586698cde0fec3549d9319a64de66b7c036009d33836d9f2"
},
"source15": {
"path": "tests/files/web/generated/M16-GAP-00081-modifier-MESH_TO_VOLUME.blend",
"sha256": "52ab00ddd22c609f59f06c3747700b17f5b970ee4980dd287076446d289439db"
},
"source16": {
"path": "tests/files/web/generated/M16-GAP-00087-modifier-PARTICLE_INSTANCE.blend",
"sha256": "d4f4667cac6061406c5a7bf8231fdaf9e6ee589ee57d168b21fa9347f90395da"
},
"source17": {
"path": "tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend",
"sha256": "41aa335359773ce72a3f372784d1fbf74a1ec65c077652f0cb98d34793edc937"
},
"source18": {
"path": "tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend",
"sha256": "2ecafafb8d81c27842512406dd93978754f624f0e9012e4a2036d32eac1178b2"
},
"source19": {
"path": "tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend",
"sha256": "19a164b591a6fbe02df07797c422aea350e26f1e9125589037067f609095105a"
},
"source20": {
"path": "tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend",
"sha256": "53234cfd0e10e91b78465d8f18a4b8d863885d1d93c0757c07f0d31da486fbf2"
},
"source21": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "32bc36aba563fe1ed0fb5d0292ca8a3ada1eecd6d45e38d9dcde565f02a312fe"
},
"evidence1": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"moduleReceipt": {
"path": "tests/golden/WBV2-P1152-001/module-receipt.json",
"sha256": "abbaff0f8b1fc3fe06eee7d970eeaddea87b1e9caceb438dede8e84908580dc2"
},
"status": {
"path": "docs/status/WBV2-P1152-001.md",
"sha256": "0f9c472e8cf34e5d26be0a0b4308d4eb408449a5d217327b119f8b9e10396fd6"
},
"log": {
"path": "tests/golden/WBV2-P1152-001/module-run.log",
"sha256": "7f584327d6079527613114cf5c2e94bab7366437a912ecb2fcc7256ce37da044"
},
"plan": {
"path": "tests/golden/WBV2-P1152-000/module-execution-plan.json",
"sha256": "1d955bf65df2f185650adbcd58fb3ec335e14e183d9701a5d93c9f88d944db46"
},
"taskContext": {
"path": "tests/golden/WBV2-P1152-001/task-context.json",
"sha256": "adc71f752605b871a925a9b5107520f0ada0d852626f68a8936bcdcac8168b55"
}
},
"assertions": {
"moduleId": "MODIFIER_READER_BATCH_SIX",
"sourceBacked": true,
"positiveCases": 8,
"negativeCases": 3,
"recoveryCases": 3,
"commandCount": 4,
"reusedReceiptCount": 1,
"sourceUnchanged": true,
"fullFamilyParity": false,
"dynamicInventoryPath": "tests/golden/WBV2/dynamic-inventory.json",
"dynamicSourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"dynamicUnitCount": 3745,
"dynamicVerifiedUnits": 454,
"dynamicUnverifiedUnits": 3291,
"planningEstimate": 5200,
"historicalInventoryTotal": 6900,
"historicalEffectiveCompleted": 290,
"historicalEffectivePending": 6609,
"historicalReproduction": false
},
"nextTask": null
}

View File

@@ -0,0 +1,620 @@
{
"schemaVersion": 1,
"task": "WBV2-P1152-001",
"operation": "MODIFIER_READER_MULTI_FIXTURE_CHROMIUM_SAVE_REOPEN",
"browser": "chromium",
"queueMutation": false,
"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"
],
"fixtureSha256": {
"tests/files/web/generated/M16-GAP-00081-modifier-MESH_TO_VOLUME.blend": "52ab00ddd22c609f59f06c3747700b17f5b970ee4980dd287076446d289439db",
"tests/files/web/generated/M16-GAP-00087-modifier-PARTICLE_INSTANCE.blend": "d4f4667cac6061406c5a7bf8231fdaf9e6ee589ee57d168b21fa9347f90395da",
"tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend": "41aa335359773ce72a3f372784d1fbf74a1ec65c077652f0cb98d34793edc937",
"tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend": "2ecafafb8d81c27842512406dd93978754f624f0e9012e4a2036d32eac1178b2",
"tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend": "19a164b591a6fbe02df07797c422aea350e26f1e9125589037067f609095105a",
"tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend": "53234cfd0e10e91b78465d8f18a4b8d863885d1d93c0757c07f0d31da486fbf2"
},
"expectedTypes": [
"MESH_TO_VOLUME",
"PARTICLE_INSTANCE",
"SURFACE",
"VERTEX_WEIGHT_EDIT",
"VERTEX_WEIGHT_MIX",
"VERTEX_WEIGHT_PROXIMITY"
],
"sourceUnits": [
"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"
],
"tests/files/web/generated/M16-GAP-00081-modifier-MESH_TO_VOLUME.blend": {
"before": [
{
"meshId": "object:WebGapMeshToVolumeObject",
"uuid": "modifier:object:WebGapMeshToVolumeObject:569533986",
"name": "WebGapMeshToVolume",
"type": "MESH_TO_VOLUME",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 569533986,
"typeCode": 58
}
}
],
"types": [
"MESH_TO_VOLUME"
],
"after": [
{
"meshId": "object:WebGapMeshToVolumeObject",
"uuid": "modifier:object:WebGapMeshToVolumeObject:569533986",
"name": "WebGapMeshToVolume",
"type": "MESH_TO_VOLUME",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 569533986,
"typeCode": 58
}
}
],
"second": [
{
"meshId": "object:WebGapMeshToVolumeObject",
"uuid": "modifier:object:WebGapMeshToVolumeObject:569533986",
"name": "WebGapMeshToVolume",
"type": "MESH_TO_VOLUME",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 569533986,
"typeCode": 58
}
}
],
"saveReopenExact": true,
"deterministicExact": true,
"savedSha256": "52ab00ddd22c609f59f06c3747700b17f5b970ee4980dd287076446d289439db",
"malformed": {
"code": "BLEND_READ_FAILED",
"message": "Input is not an uncompressed, gzip, or zstd Blender file"
}
},
"tests/files/web/generated/M16-GAP-00087-modifier-PARTICLE_INSTANCE.blend": {
"before": [
{
"meshId": "mesh:WebGapParticleInstanceMesh",
"uuid": "modifier:object:WebGapParticleInstanceObject:618743081",
"name": "WebGapParticleInstance",
"type": "PARTICLE_INSTANCE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 5,
"persistentUid": 618743081,
"typeCode": 20
}
},
{
"meshId": "object:WebGapParticleInstanceObject",
"uuid": "modifier:object:WebGapParticleInstanceObject:618743081",
"name": "WebGapParticleInstance",
"type": "PARTICLE_INSTANCE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 5,
"persistentUid": 618743081,
"typeCode": 20
}
}
],
"types": [
"PARTICLE_INSTANCE",
"PARTICLE_INSTANCE"
],
"after": [
{
"meshId": "mesh:WebGapParticleInstanceMesh",
"uuid": "modifier:object:WebGapParticleInstanceObject:618743081",
"name": "WebGapParticleInstance",
"type": "PARTICLE_INSTANCE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 5,
"persistentUid": 618743081,
"typeCode": 20
}
},
{
"meshId": "object:WebGapParticleInstanceObject",
"uuid": "modifier:object:WebGapParticleInstanceObject:618743081",
"name": "WebGapParticleInstance",
"type": "PARTICLE_INSTANCE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 5,
"persistentUid": 618743081,
"typeCode": 20
}
}
],
"second": [
{
"meshId": "mesh:WebGapParticleInstanceMesh",
"uuid": "modifier:object:WebGapParticleInstanceObject:618743081",
"name": "WebGapParticleInstance",
"type": "PARTICLE_INSTANCE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 5,
"persistentUid": 618743081,
"typeCode": 20
}
},
{
"meshId": "object:WebGapParticleInstanceObject",
"uuid": "modifier:object:WebGapParticleInstanceObject:618743081",
"name": "WebGapParticleInstance",
"type": "PARTICLE_INSTANCE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 5,
"persistentUid": 618743081,
"typeCode": 20
}
}
],
"saveReopenExact": true,
"deterministicExact": true,
"savedSha256": "d4f4667cac6061406c5a7bf8231fdaf9e6ee589ee57d168b21fa9347f90395da",
"malformed": {
"code": "BLEND_READ_FAILED",
"message": "Input is not an uncompressed, gzip, or zstd Blender file"
}
},
"tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend": {
"before": [
{
"meshId": "mesh:WebGapSurfaceMesh",
"uuid": "modifier:object:WebGapSurfaceObject:298436185",
"name": "WebGapSurface",
"type": "SURFACE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 298436185,
"typeCode": 30
}
},
{
"meshId": "object:WebGapSurfaceObject",
"uuid": "modifier:object:WebGapSurfaceObject:298436185",
"name": "WebGapSurface",
"type": "SURFACE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 298436185,
"typeCode": 30
}
}
],
"types": [
"SURFACE",
"SURFACE"
],
"after": [
{
"meshId": "mesh:WebGapSurfaceMesh",
"uuid": "modifier:object:WebGapSurfaceObject:298436185",
"name": "WebGapSurface",
"type": "SURFACE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 298436185,
"typeCode": 30
}
},
{
"meshId": "object:WebGapSurfaceObject",
"uuid": "modifier:object:WebGapSurfaceObject:298436185",
"name": "WebGapSurface",
"type": "SURFACE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 298436185,
"typeCode": 30
}
}
],
"second": [
{
"meshId": "mesh:WebGapSurfaceMesh",
"uuid": "modifier:object:WebGapSurfaceObject:298436185",
"name": "WebGapSurface",
"type": "SURFACE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 298436185,
"typeCode": 30
}
},
{
"meshId": "object:WebGapSurfaceObject",
"uuid": "modifier:object:WebGapSurfaceObject:298436185",
"name": "WebGapSurface",
"type": "SURFACE",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 298436185,
"typeCode": 30
}
}
],
"saveReopenExact": true,
"deterministicExact": true,
"savedSha256": "41aa335359773ce72a3f372784d1fbf74a1ec65c077652f0cb98d34793edc937",
"malformed": {
"code": "BLEND_READ_FAILED",
"message": "Input is not an uncompressed, gzip, or zstd Blender file"
}
},
"tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend": {
"before": [
{
"meshId": "mesh:WebGapVertexWeightEditMesh",
"uuid": "modifier:object:WebGapVertexWeightEditObject:1300223564",
"name": "WebGapVertexWeightEdit",
"type": "VERTEX_WEIGHT_EDIT",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1300223564,
"typeCode": 36
}
},
{
"meshId": "object:WebGapVertexWeightEditObject",
"uuid": "modifier:object:WebGapVertexWeightEditObject:1300223564",
"name": "WebGapVertexWeightEdit",
"type": "VERTEX_WEIGHT_EDIT",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1300223564,
"typeCode": 36
}
}
],
"types": [
"VERTEX_WEIGHT_EDIT",
"VERTEX_WEIGHT_EDIT"
],
"after": [
{
"meshId": "mesh:WebGapVertexWeightEditMesh",
"uuid": "modifier:object:WebGapVertexWeightEditObject:1300223564",
"name": "WebGapVertexWeightEdit",
"type": "VERTEX_WEIGHT_EDIT",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1300223564,
"typeCode": 36
}
},
{
"meshId": "object:WebGapVertexWeightEditObject",
"uuid": "modifier:object:WebGapVertexWeightEditObject:1300223564",
"name": "WebGapVertexWeightEdit",
"type": "VERTEX_WEIGHT_EDIT",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1300223564,
"typeCode": 36
}
}
],
"second": [
{
"meshId": "mesh:WebGapVertexWeightEditMesh",
"uuid": "modifier:object:WebGapVertexWeightEditObject:1300223564",
"name": "WebGapVertexWeightEdit",
"type": "VERTEX_WEIGHT_EDIT",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1300223564,
"typeCode": 36
}
},
{
"meshId": "object:WebGapVertexWeightEditObject",
"uuid": "modifier:object:WebGapVertexWeightEditObject:1300223564",
"name": "WebGapVertexWeightEdit",
"type": "VERTEX_WEIGHT_EDIT",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1300223564,
"typeCode": 36
}
}
],
"saveReopenExact": true,
"deterministicExact": true,
"savedSha256": "2ecafafb8d81c27842512406dd93978754f624f0e9012e4a2036d32eac1178b2",
"malformed": {
"code": "BLEND_READ_FAILED",
"message": "Input is not an uncompressed, gzip, or zstd Blender file"
}
},
"tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend": {
"before": [
{
"meshId": "mesh:WebGapVertexWeightMixMesh",
"uuid": "modifier:object:WebGapVertexWeightMixObject:1288824592",
"name": "WebGapVertexWeightMix",
"type": "VERTEX_WEIGHT_MIX",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1288824592,
"typeCode": 37
}
},
{
"meshId": "object:WebGapVertexWeightMixObject",
"uuid": "modifier:object:WebGapVertexWeightMixObject:1288824592",
"name": "WebGapVertexWeightMix",
"type": "VERTEX_WEIGHT_MIX",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1288824592,
"typeCode": 37
}
}
],
"types": [
"VERTEX_WEIGHT_MIX",
"VERTEX_WEIGHT_MIX"
],
"after": [
{
"meshId": "mesh:WebGapVertexWeightMixMesh",
"uuid": "modifier:object:WebGapVertexWeightMixObject:1288824592",
"name": "WebGapVertexWeightMix",
"type": "VERTEX_WEIGHT_MIX",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1288824592,
"typeCode": 37
}
},
{
"meshId": "object:WebGapVertexWeightMixObject",
"uuid": "modifier:object:WebGapVertexWeightMixObject:1288824592",
"name": "WebGapVertexWeightMix",
"type": "VERTEX_WEIGHT_MIX",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1288824592,
"typeCode": 37
}
}
],
"second": [
{
"meshId": "mesh:WebGapVertexWeightMixMesh",
"uuid": "modifier:object:WebGapVertexWeightMixObject:1288824592",
"name": "WebGapVertexWeightMix",
"type": "VERTEX_WEIGHT_MIX",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1288824592,
"typeCode": 37
}
},
{
"meshId": "object:WebGapVertexWeightMixObject",
"uuid": "modifier:object:WebGapVertexWeightMixObject:1288824592",
"name": "WebGapVertexWeightMix",
"type": "VERTEX_WEIGHT_MIX",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1288824592,
"typeCode": 37
}
}
],
"saveReopenExact": true,
"deterministicExact": true,
"savedSha256": "19a164b591a6fbe02df07797c422aea350e26f1e9125589037067f609095105a",
"malformed": {
"code": "BLEND_READ_FAILED",
"message": "Input is not an uncompressed, gzip, or zstd Blender file"
}
},
"tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend": {
"before": [
{
"meshId": "mesh:WebGapVertexWeightProximityMesh",
"uuid": "modifier:object:WebGapVertexWeightProximityObject:1266791070",
"name": "WebGapVertexWeightProximity",
"type": "VERTEX_WEIGHT_PROXIMITY",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1266791070,
"typeCode": 38
}
},
{
"meshId": "object:WebGapVertexWeightProximityObject",
"uuid": "modifier:object:WebGapVertexWeightProximityObject:1266791070",
"name": "WebGapVertexWeightProximity",
"type": "VERTEX_WEIGHT_PROXIMITY",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1266791070,
"typeCode": 38
}
}
],
"types": [
"VERTEX_WEIGHT_PROXIMITY",
"VERTEX_WEIGHT_PROXIMITY"
],
"after": [
{
"meshId": "mesh:WebGapVertexWeightProximityMesh",
"uuid": "modifier:object:WebGapVertexWeightProximityObject:1266791070",
"name": "WebGapVertexWeightProximity",
"type": "VERTEX_WEIGHT_PROXIMITY",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1266791070,
"typeCode": 38
}
},
{
"meshId": "object:WebGapVertexWeightProximityObject",
"uuid": "modifier:object:WebGapVertexWeightProximityObject:1266791070",
"name": "WebGapVertexWeightProximity",
"type": "VERTEX_WEIGHT_PROXIMITY",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1266791070,
"typeCode": 38
}
}
],
"second": [
{
"meshId": "mesh:WebGapVertexWeightProximityMesh",
"uuid": "modifier:object:WebGapVertexWeightProximityObject:1266791070",
"name": "WebGapVertexWeightProximity",
"type": "VERTEX_WEIGHT_PROXIMITY",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1266791070,
"typeCode": 38
}
},
{
"meshId": "object:WebGapVertexWeightProximityObject",
"uuid": "modifier:object:WebGapVertexWeightProximityObject:1266791070",
"name": "WebGapVertexWeightProximity",
"type": "VERTEX_WEIGHT_PROXIMITY",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 1,
"persistentUid": 1266791070,
"typeCode": 38
}
}
],
"saveReopenExact": true,
"deterministicExact": true,
"savedSha256": "53234cfd0e10e91b78465d8f18a4b8d863885d1d93c0757c07f0d31da486fbf2",
"malformed": {
"code": "BLEND_READ_FAILED",
"message": "Input is not an uncompressed, gzip, or zstd Blender file"
}
}
}

View File

@@ -0,0 +1,158 @@
{
"schemaVersion": 1,
"task": "WBV2-P1152-001",
"operation": "MODULE_FUNCTION_EXECUTION",
"moduleId": "MODIFIER_READER_BATCH_SIX",
"status": "PASS",
"source": {
"paths": [
"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"
],
"before": {
"blender-5.2.0/source/blender/modifiers/intern/MOD_mesh_to_volume.cc": "908eba5de75261b67bd6eb5154259ac44fa015014e5003bd69079aa55f046a2e",
"blender-5.2.0/source/blender/modifiers/intern/MOD_particleinstance.cc": "edf4f43bfe8dd65a1e4d7096ee6af4503dd6bc722f721a668ed7c2a7c74e6de2",
"blender-5.2.0/source/blender/modifiers/intern/MOD_surface.cc": "bf792974882469a510176218aabd0745d3c6e0fed0f6840b364f3d31b3cc406c",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc": "ec20b812740b65fe2a840a3e4144e84e5bb28bb35d7916ab63c4ae82a4b7cbea",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgmix.cc": "2b14c2d3b9db493b78549171cb7f2a73d558f78237ef27d0762b9b1a49b97305",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgproximity.cc": "c136f682f33d81a120173cfd30865419c122ff1dacf9f7146c80a6bb04753a4c",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc": "1292112c20eaa113084a2a7093c349e7787db818950d80a6e11b75b287e4287b",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp": "f6fbd04315c48ad4dfbf109b91e5b350550d23c227e5c11a71a58f09e923c990",
"web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts": "e814e9eaeca1efe9586698cde0fec3549d9319a64de66b7c036009d33836d9f2",
"tests/files/web/generated/M16-GAP-00081-modifier-MESH_TO_VOLUME.blend": "52ab00ddd22c609f59f06c3747700b17f5b970ee4980dd287076446d289439db",
"tests/files/web/generated/M16-GAP-00087-modifier-PARTICLE_INSTANCE.blend": "d4f4667cac6061406c5a7bf8231fdaf9e6ee589ee57d168b21fa9347f90395da",
"tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend": "41aa335359773ce72a3f372784d1fbf74a1ec65c077652f0cb98d34793edc937",
"tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend": "2ecafafb8d81c27842512406dd93978754f624f0e9012e4a2036d32eac1178b2",
"tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend": "19a164b591a6fbe02df07797c422aea350e26f1e9125589037067f609095105a",
"tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend": "53234cfd0e10e91b78465d8f18a4b8d863885d1d93c0757c07f0d31da486fbf2",
"web/app/src/vendor/blender/web_engine.wasm": "32bc36aba563fe1ed0fb5d0292ca8a3ada1eecd6d45e38d9dcde565f02a312fe"
},
"after": {
"blender-5.2.0/source/blender/modifiers/intern/MOD_mesh_to_volume.cc": "908eba5de75261b67bd6eb5154259ac44fa015014e5003bd69079aa55f046a2e",
"blender-5.2.0/source/blender/modifiers/intern/MOD_particleinstance.cc": "edf4f43bfe8dd65a1e4d7096ee6af4503dd6bc722f721a668ed7c2a7c74e6de2",
"blender-5.2.0/source/blender/modifiers/intern/MOD_surface.cc": "bf792974882469a510176218aabd0745d3c6e0fed0f6840b364f3d31b3cc406c",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc": "ec20b812740b65fe2a840a3e4144e84e5bb28bb35d7916ab63c4ae82a4b7cbea",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgmix.cc": "2b14c2d3b9db493b78549171cb7f2a73d558f78237ef27d0762b9b1a49b97305",
"blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgproximity.cc": "c136f682f33d81a120173cfd30865419c122ff1dacf9f7146c80a6bb04753a4c",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc": "1292112c20eaa113084a2a7093c349e7787db818950d80a6e11b75b287e4287b",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp": "f6fbd04315c48ad4dfbf109b91e5b350550d23c227e5c11a71a58f09e923c990",
"web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts": "e814e9eaeca1efe9586698cde0fec3549d9319a64de66b7c036009d33836d9f2",
"tests/files/web/generated/M16-GAP-00081-modifier-MESH_TO_VOLUME.blend": "52ab00ddd22c609f59f06c3747700b17f5b970ee4980dd287076446d289439db",
"tests/files/web/generated/M16-GAP-00087-modifier-PARTICLE_INSTANCE.blend": "d4f4667cac6061406c5a7bf8231fdaf9e6ee589ee57d168b21fa9347f90395da",
"tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend": "41aa335359773ce72a3f372784d1fbf74a1ec65c077652f0cb98d34793edc937",
"tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend": "2ecafafb8d81c27842512406dd93978754f624f0e9012e4a2036d32eac1178b2",
"tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend": "19a164b591a6fbe02df07797c422aea350e26f1e9125589037067f609095105a",
"tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend": "53234cfd0e10e91b78465d8f18a4b8d863885d1d93c0757c07f0d31da486fbf2",
"web/app/src/vendor/blender/web_engine.wasm": "32bc36aba563fe1ed0fb5d0292ca8a3ada1eecd6d45e38d9dcde565f02a312fe"
},
"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": [
"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": [
{
"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
},
{
"command": "npm --prefix web run typecheck",
"exitCode": 0
},
{
"command": "npm --prefix web run build",
"exitCode": 0
},
{
"command": "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",
"exitCode": 0
}
],
"verification": {
"required": [
"sourceHash",
"wasmBuild",
"positiveMainMutation",
"negativeNoMutation",
"undoRedo",
"saveReopen",
"aggregateManifest"
],
"chromiumOnly": true,
"fullFamilyParity": false
},
"efficiency": {
"existingEvidenceReused": false,
"skippedCommands": 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": "97bc20046f2aa7a7e03a87429a75ecac492feaf794cf9514318ac7ebd27e945a",
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"unitCount": 3745,
"planningEstimate": 5200,
"hardTarget": false,
"verifiedUnits": 454,
"unverifiedUnits": 3291
}
},
"nextTask": null
}

View File

@@ -0,0 +1,212 @@
{
"schemaVersion": 1,
"task": "WBV2-P1152-001",
"parentTask": "WBV2-P1152-000",
"status": "in_progress",
"goal": "以一个共享 Blender Main reader、WASM build、Worker 路由和 Chromium receipt 批量验证 MOD_mesh_to_volume, MOD_particleinstance, MOD_surface, MOD_weightvgedit, MOD_weightvgmix, MOD_weightvgproximity 的真实 modifier/RNA 元数据。",
"scope": {
"gap": "capability:MODIFIER_READER_BATCH_SIX",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P1152-001 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 1409,
"contextRemainingTokens": 350
},
"source": {
"bytes": 8495,
"tokens": 2126
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/modifiers/intern/",
"bytes": 10155,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"bytes": 521651,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"bytes": 313993,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/files/web/generated/M16-GAP-00081-modifier-MESH_TO_VOLUME.blend",
"bytes": 86084,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/files/web/generated/M16-GAP-00087-modifier-PARTICLE_INSTANCE.blend",
"bytes": 86412,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/files/web/generated/M16-GAP-00098-modifier-SURFACE.blend",
"bytes": 86387,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/files/web/generated/M16-GAP-00103-modifier-VERTEX_WEIGHT_EDIT.blend",
"bytes": 86454,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/files/web/generated/M16-GAP-00104-modifier-VERTEX_WEIGHT_MIX.blend",
"bytes": 86411,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/files/web/generated/M16-GAP-00105-modifier-VERTEX_WEIGHT_PROXIMITY.blend",
"bytes": 86460,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/tests/e2e/wbv2-modifier-reader-multi-fixture-production.spec.ts",
"bytes": 4477,
"reason": "CONTEXT_REMAINING_SPACE"
},
{
"path": "tests/golden/WBV2-P1152-001/module-receipt.json",
"bytes": 10588,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"bytes": 19285,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P1152-001.md",
"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-P1152-001.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P1152-000/manifest.json",
"parentStatus": "docs/status/WBV2-P1152-000.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P1152-001.md",
"tests/golden/WBV2-P1152-000/manifest.json",
"docs/status/WBV2-P1152-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-P1152-000",
"parentTask": "WBV2-P1151-001",
"status": "done",
"nextTask": "WBV2-P1152-001",
"artifactCount": 4
},
"statusSummary": [
"# WBV2-P1152-000 status",
"- task: `WBV2-P1152-000`; parent: `WBV2-P1151-001`; status: `done`",
"- taskClass: `QUEUE_ENABLEMENT`; no modifier-family parity completion claimed",
"- source-backed batch authorized: `MODIFIER_READER_BATCH_SIX` (12 units)",
"- dynamic inventory: `3745` units; verified `442`; unverified `3303`; bound delta `0`",
"- nextTask: `WBV2-P1152-001`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 2926,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 46,
"taskTokens": 732
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 3830,
"lines": 56,
"tokens": 958
},
{
"path": "docs/tasks/WBV2-P1152-001.md",
"bytes": 2926,
"lines": 46,
"tokens": 732
},
{
"path": "tests/golden/WBV2-P1152-000/manifest.json",
"bytes": 1381,
"lines": 43,
"tokens": 346
},
{
"path": "docs/status/WBV2-P1152-000.md",
"bytes": 358,
"lines": 8,
"tokens": 90
}
],
"sourceTokens": 2126,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 2126,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 3150,
"serializedContextTokens": 670,
"withinBudget": true
}
}

View File

@@ -6,10 +6,10 @@
"dynamicInventory": {
"path": "tests/golden/WBV2/dynamic-inventory.json",
"beforeSha256": "02a76d4b766c5e921edc9a0b162f5be3ebc7218aee56dd63e31593817c231763",
"afterSha256": "8515f41f97664c6cbd74e11d44c75603623e196c8091eded3b3d33fc93370b76",
"afterSha256": "dc56239de97df983300670f142148c08780c5f8f3d35a41bb3144132726cfc9e",
"unitCount": 3745,
"verifiedUnits": 442,
"unverifiedUnits": 3303
"verifiedUnits": 454,
"unverifiedUnits": 3291
},
"explicitBindings": [
{
@@ -8851,12 +8851,252 @@
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_mesh_to_volume",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_mesh_to_volume.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_particleinstance",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_particleinstance.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_surface",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_surface.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_weightvgedit",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_weightvgmix",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgmix.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_weightvgproximity",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgproximity.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:MeshToVolumeModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 8486,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:ParticleInstanceModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 4758,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:SurfaceModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 5670,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:VertexWeightEditModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6235,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:VertexWeightMixModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6370,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:VertexWeightProximityModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6494,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
],
"coverageByKind": {
"modifier-source": {
"verified": 80,
"unverified": 17
"verified": 86,
"unverified": 11
},
"node": {
"verified": 21,
@@ -8871,8 +9111,8 @@
"unverified": 2012
},
"rna-struct": {
"verified": 239,
"unverified": 740
"verified": 245,
"unverified": 734
},
"web-command": {
"verified": 96,
@@ -8881,8 +9121,8 @@
},
"coverageByFamily": {
"MODIFIER": {
"verified": 80,
"unverified": 17
"verified": 86,
"unverified": 11
},
"NODES": {
"verified": 21,
@@ -8897,8 +9137,8 @@
"unverified": 53
},
"RNA": {
"verified": 239,
"unverified": 740
"verified": 245,
"unverified": 734
},
"WEB_ENGINE": {
"verified": 96,

View File

@@ -8838,5 +8838,245 @@
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_mesh_to_volume",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_mesh_to_volume.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_particleinstance",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_particleinstance.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_surface",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_surface.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_weightvgedit",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_weightvgmix",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgmix.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_weightvgproximity",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgproximity.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:MeshToVolumeModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 8486,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:ParticleInstanceModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 4758,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:SurfaceModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 5670,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:VertexWeightEditModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6235,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:VertexWeightMixModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6370,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:VertexWeightProximityModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6494,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
]

View File

@@ -5,19 +5,19 @@
"artifacts": {
"inventory": {
"path": "tests/golden/WBV2/dynamic-inventory.json",
"sha256": "8515f41f97664c6cbd74e11d44c75603623e196c8091eded3b3d33fc93370b76"
"sha256": "dc56239de97df983300670f142148c08780c5f8f3d35a41bb3144132726cfc9e"
},
"inventoryManifest": {
"path": "tests/golden/WBV2/dynamic-inventory-manifest.json",
"sha256": "f573ccfc15c31f9ba93bfab7d16b092373946cd9bf6f8f6b0769f78911f3ef13"
"sha256": "265d0e0f09a0697b41859d698347beec3c55e350b4677e5ee71b223132d3df14"
},
"bindings": {
"path": "tests/golden/WBV2/dynamic-coverage-bindings.json",
"sha256": "ec42203e03de87a272836d56e6bc434f49fd3cba5ed4d4cf67c7ffb710d99cbe"
"sha256": "0bff89f65ae2191b734979e1f41a531ee4c0ee6378985751dd32c410b0d2193c"
},
"report": {
"path": "tests/golden/WBV2/dynamic-coverage-audit.json",
"sha256": "78235ee0f71f95362c65323d216b6d0c050198b671c04db6a3ae2282abc93333"
"sha256": "99d3eaaaf24efff35952db71a172b57ca14e0247058ed9adc2b24cd963f0b057"
},
"generator": {
"path": "tools/web/reconcile-source-dynamic-coverage.mjs",
@@ -26,9 +26,9 @@
},
"coverage": {
"unitCount": 3745,
"verifiedUnits": 442,
"unverifiedUnits": 3303,
"boundUnitDelta": 48,
"verifiedUnits": 454,
"unverifiedUnits": 3291,
"boundUnitDelta": 12,
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202"
},
"historical": {

View File

@@ -24,7 +24,7 @@
},
"planningEstimate": 5200,
"hardTarget": false,
"verifiedUnits": 442,
"unverifiedUnits": 3303,
"verifiedUnits": 454,
"unverifiedUnits": 3291,
"deterministic": true
}

View File

@@ -14,11 +14,11 @@
},
"inventory": {
"path": "tests/golden/WBV2/dynamic-inventory.json",
"sha256": "8515f41f97664c6cbd74e11d44c75603623e196c8091eded3b3d33fc93370b76"
"sha256": "dc56239de97df983300670f142148c08780c5f8f3d35a41bb3144132726cfc9e"
},
"report": {
"path": "tests/golden/WBV2/dynamic-inventory-check-report.json",
"sha256": "7724729292c472b13741f1a2691405d2aac8729da1ba1501cb9456fb89f8f305"
"sha256": "712a6e4d0832459feee34811cfc99775c7836ba3fe349e769c0344a3bc609ce3"
},
"status": {
"path": "docs/status/WBV2-DYNAMIC-INVENTORY.md",
@@ -47,9 +47,9 @@
},
"planningEstimate": 5200,
"hardTarget": false,
"verifiedUnits": 442,
"unverifiedUnits": 3303,
"boundCaseDelta": 48
"verifiedUnits": 454,
"unverifiedUnits": 3291,
"boundCaseDelta": 12
},
"historical": {
"initialEstimate": 6900,

View File

@@ -77,8 +77,8 @@
"estimateDelta": -1455
},
"coverage": {
"verifiedUnits": 442,
"unverifiedUnits": 3303,
"verifiedUnits": 454,
"unverifiedUnits": 3291,
"sourceMappingRequired": 3745,
"inventoryMutation": "explicit_source_case_bindings_only",
"lastReconciledAt": "2026-09-01"
@@ -39048,7 +39048,27 @@
"evidence": "modifier-source-file"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "modifier-source:MOD_mesh_to_volume",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_mesh_to_volume.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "modifier-source:MOD_meshcache",
@@ -39424,7 +39444,27 @@
"evidence": "modifier-source-file"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "modifier-source:MOD_particleinstance",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_particleinstance.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "modifier-source:MOD_particlesystem",
@@ -39820,7 +39860,27 @@
"evidence": "modifier-source-file"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "modifier-source:MOD_surface",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_surface.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "modifier-source:MOD_surfacedeform",
@@ -40182,7 +40242,27 @@
"evidence": "modifier-source-file"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "modifier-source:MOD_weightvgedit",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "modifier-source:MOD_weightvgmix",
@@ -40196,7 +40276,27 @@
"evidence": "modifier-source-file"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "modifier-source:MOD_weightvgmix",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgmix.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "modifier-source:MOD_weightvgproximity",
@@ -40210,7 +40310,27 @@
"evidence": "modifier-source-file"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "modifier-source:MOD_weightvgproximity",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgproximity.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "modifier-source:MOD_weld",
@@ -87286,7 +87406,27 @@
"evidence": "RNA_def_struct"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "rna-struct:MeshToVolumeModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 8486,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "rna-struct:MeshUVLoop",
@@ -89684,7 +89824,27 @@
"evidence": "RNA_def_struct"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "rna-struct:ParticleInstanceModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 4758,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "rna-struct:ParticleKey",
@@ -92914,7 +93074,27 @@
"evidence": "RNA_def_struct"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "rna-struct:SurfaceModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 5670,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "rna-struct:Test",
@@ -94290,7 +94470,27 @@
"evidence": "RNA_def_struct"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "rna-struct:VertexWeightEditModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6235,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "rna-struct:VertexWeightMixModifier",
@@ -94304,7 +94504,27 @@
"evidence": "RNA_def_struct"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "rna-struct:VertexWeightMixModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6370,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "rna-struct:VertexWeightProximityModifier",
@@ -94318,7 +94538,27 @@
"evidence": "RNA_def_struct"
}
],
"coverageStatus": "UNVERIFIED"
"coverageStatus": "VERIFIED",
"coverage": {
"unitId": "rna-struct:VertexWeightProximityModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6494,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
},
{
"id": "rna-struct:View2D",
@@ -107978,6 +108218,246 @@
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_mesh_to_volume",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_mesh_to_volume.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_particleinstance",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_particleinstance.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_surface",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_surface.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_weightvgedit",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgedit.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_weightvgmix",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgmix.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "modifier-source:MOD_weightvgproximity",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_weightvgproximity.cc",
"line": 1,
"evidence": "modifier-source-file"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:MeshToVolumeModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 8486,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:ParticleInstanceModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 4758,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:SurfaceModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 5670,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:VertexWeightEditModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6235,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:VertexWeightMixModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6370,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
},
{
"unitId": "rna-struct:VertexWeightProximityModifier",
"task": "WBV2-P1152-001",
"capabilityId": "MODIFIER_READER_BATCH_SIX",
"sourceLocation": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"line": 6494,
"evidence": "RNA_def_struct"
},
"evidenceManifest": {
"path": "tests/golden/WBV2-P1152-001/manifest.json",
"sha256": "cdaf821477bdb244a99d28cd8173394aaed20a7bc1e4f90a9a46ac67e600ac2f"
},
"productionEvidence": {
"path": "tests/golden/WBV2-P1152-001/modifier-reader-batch-production.json",
"sha256": "6fc2e91cf28b8d8e3a54182df4552c67b963a824d8d99967ddfc622186d4fdbf"
},
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"status": "VERIFIED"
}
]
}

File diff suppressed because one or more lines are too long

View File

@@ -32,12 +32,25 @@ if (!coverageBindings.length) throw new Error(`task ${task} has no coverageBindi
const production = json(productionPath);
assert.equal(production.browser, "chromium");
assert.equal(production.queueMutation, false);
assert.equal(production.error, undefined);
assert.equal(production.saveReopenExact, true);
assert.equal(production.deterministicExact, true);
const inventoryPath = "tests/golden/WBV2/dynamic-inventory.json";
const inventory = json(inventoryPath);
assert.equal(production.fixtureSha256, sha(production.fixture));
const fixturePaths = Array.isArray(production.fixtures) ? production.fixtures : production.fixture ? [production.fixture] : [];
assert.ok(fixturePaths.length, "production evidence has no fixture(s)");
const fixtureEvidence = Array.isArray(production.fixtures)
? fixturePaths.map((fixture) => production[fixture])
: [production];
for (const evidence of fixtureEvidence) {
assert.ok(evidence && typeof evidence === "object", "fixture result is missing");
assert.equal(evidence.error, undefined);
assert.equal(evidence.saveReopenExact, true);
assert.equal(evidence.deterministicExact, true);
}
if (Array.isArray(production.fixtures)) {
assert.equal(typeof production.fixtureSha256, "object");
for (const fixture of fixturePaths) assert.equal(production.fixtureSha256[fixture], sha(fixture), `fixture hash drift: ${fixture}`);
} else {
assert.equal(production.fixtureSha256, sha(production.fixture));
}
const bindingsPath = "tests/golden/WBV2/dynamic-coverage-bindings.json";
const existing = fs.existsSync(abs(bindingsPath)) ? json(bindingsPath) : [];
const byId = new Map(existing.map((binding) => [binding.unitId, binding]));

View File

@@ -62,8 +62,15 @@ const reusableProductionEvidence = () => {
try { evidence = json(evidencePath); }
catch { return null; }
if (evidence.task !== task || evidence.browser !== "chromium" || evidence.queueMutation !== false
|| evidence.error !== undefined || evidence.saveReopenExact !== true || evidence.deterministicExact !== true) return null;
if (!evidence.fixture || !fs.existsSync(abs(evidence.fixture)) || evidence.fixtureSha256 !== sha(evidence.fixture)) return null;
|| evidence.error !== undefined) return null;
const fixturePaths = Array.isArray(evidence.fixtures) ? evidence.fixtures : evidence.fixture ? [evidence.fixture] : [];
if (!fixturePaths.length) return null;
const fixtureEvidence = Array.isArray(evidence.fixtures) ? fixturePaths.map((fixture) => evidence[fixture]) : [evidence];
if (fixtureEvidence.some((entry) => !entry || entry.error !== undefined || entry.saveReopenExact !== true || entry.deterministicExact !== true)) return null;
if (Array.isArray(evidence.fixtures)) {
if (!evidence.fixtureSha256 || typeof evidence.fixtureSha256 !== "object") return null;
if (fixturePaths.some((fixture) => !fs.existsSync(abs(fixture)) || evidence.fixtureSha256[fixture] !== sha(fixture))) return null;
} else if (!fs.existsSync(abs(evidence.fixture)) || evidence.fixtureSha256 !== sha(evidence.fixture)) return null;
const expectedUnits = record.module.coverageBindings ?? [];
if (expectedUnits.length && !sameIds(evidence.sourceUnits, expectedUnits)) return null;
if (!fs.existsSync(abs(reportPath))) return null;

View File

@@ -0,0 +1,91 @@
import crypto from "node:crypto";
import fs from "node:fs";
import path from "node:path";
import { expect, test } from "@playwright/test";
const root = path.resolve(import.meta.dirname, "../../..");
const fixtures = JSON.parse(process.env.WBV2_BATCH_FIXTURES ?? "[]") as string[];
const task = process.env.WBV2_BATCH_TASK ?? "WBV2-P1152-001";
const expectedTypes = JSON.parse(process.env.WBV2_BATCH_TYPES ?? "[]") as string[];
const sourceUnits = JSON.parse(process.env.WBV2_BATCH_UNITS ?? "[]") as string[];
if (!fixtures.length || !expectedTypes.length || !sourceUnits.length) throw new Error("multi-fixture batch requires fixtures, expected types and source units");
const fixtureBytes = Object.fromEntries(fixtures.map((name) => [name, Array.from(fs.readFileSync(path.join(root, name)))]));
const fixtureSha256 = Object.fromEntries(fixtures.map((name) => [name, crypto.createHash("sha256").update(Buffer.from(fixtureBytes[name])).digest("hex")]));
test("multi-fixture modifier reader batch preserves Blender Main metadata", async ({ page }) => {
test.setTimeout(180_000);
await page.goto("/");
const result = await page.evaluate(async (input) => {
const { WebEngineClient } = await import("/src/engine-client/WebEngineClient.ts");
const canonical = (snapshot: any) => [...(snapshot.meshes ?? []), ...(snapshot.nodes ?? [])].flatMap((mesh: any) =>
(mesh.modifierStack ?? []).map((modifier: any) => ({
meshId: mesh.id,
uuid: modifier.uuid,
name: modifier.name,
type: modifier.type,
enabled: modifier.enabled,
evaluationStatus: modifier.evaluationStatus,
parameters: modifier.parameters ?? null,
})));
const output: Record<string, any> = {};
for (const [name, bytes] of Object.entries(input.fixtures as Record<string, number[]>)) {
const client = new WebEngineClient({ timeoutMs: 60_000 });
const reopenedClient = new WebEngineClient({ timeoutMs: 60_000 });
const secondClient = new WebEngineClient({ timeoutMs: 60_000 });
try {
const opened = await client.openBlend(Uint8Array.from(bytes).buffer);
const before = canonical(opened.snapshot);
const saved = await client.saveBlend();
const after = canonical((await reopenedClient.openBlend(saved.slice(0))).snapshot);
const second = canonical((await secondClient.openBlend(Uint8Array.from(bytes).buffer)).snapshot);
output[name] = {
before,
types: before.map((modifier: any) => modifier.type),
after,
second,
saveReopenExact: JSON.stringify(before) === JSON.stringify(after),
deterministicExact: JSON.stringify(before) === JSON.stringify(second),
savedSha256: await crypto.subtle.digest("SHA-256", saved).then((hash) =>
Array.from(new Uint8Array(hash), (byte) => byte.toString(16).padStart(2, "0")).join("")),
};
try {
await client.openBlend(Uint8Array.from([0x42, 0x4c, 0x45, 0x4e, 0x44]).buffer);
output[name].malformed = { code: "ACCEPTED_MALFORMED" };
} catch (error: any) {
output[name].malformed = { code: error?.code, message: error?.message };
}
} catch (error: any) {
output[name] = { error: { code: error?.code, message: error?.message, detail: String(error) } };
} finally {
client.terminate();
reopenedClient.terminate();
secondClient.terminate();
}
}
return output;
}, { fixtures: fixtureBytes });
const report = {
schemaVersion: 1,
task,
operation: "MODIFIER_READER_MULTI_FIXTURE_CHROMIUM_SAVE_REOPEN",
browser: "chromium",
queueMutation: false,
fixtures,
fixtureSha256,
expectedTypes,
sourceUnits,
...result,
};
fs.mkdirSync(path.join(root, `tests/golden/${task}`), { recursive: true });
fs.writeFileSync(path.join(root, `tests/golden/${task}/modifier-reader-batch-production.json`), `${JSON.stringify(report, null, 2)}\n`);
const observedTypes = new Set(Object.values(result).flatMap((entry: any) => entry?.types ?? []));
for (const type of expectedTypes) expect(observedTypes.has(type)).toBe(true);
for (const fixture of fixtures) {
expect(result[fixture]?.error).toBeUndefined();
expect(result[fixture]?.saveReopenExact).toBe(true);
expect(result[fixture]?.deterministicExact).toBe(true);
expect(result[fixture]?.malformed?.code).not.toBe("ACCEPTED_MALFORMED");
}
});