feat(web): authorize corrective smooth reader

This commit is contained in:
mes123456
2026-09-02 18:35:58 +08:00
parent 244e058999
commit 0d61c64150
51 changed files with 127040 additions and 67 deletions

Binary file not shown.

View File

@@ -0,0 +1,42 @@
{
"schemaVersion": 1,
"task": "WBV2-P1145-000",
"parentTask": "WBV2-P1144-001",
"operation": "AUTHORIZE_SOURCE_BACKED_MODULE",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "MODULE_EXECUTION_QUEUE_BRIDGE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P1144-001/manifest.json",
"sha256": "b63a84f5f3d67c3e38013c68f81c676655408f0fd6f72fc91475c943254b0c09"
},
"plan": {
"path": "tests/golden/WBV2-P1145-000/module-execution-plan.json",
"sha256": "39a71d576e4a997756e9e47cbba632fc4b286206a3106658b2b85c6b374b352b"
},
"report": {
"path": "tests/golden/WBV2-P1145-000/successor-authorization-report.json",
"sha256": "e62d29f013bc4b4ca60b5a0bcdbb455c652f9b03b5efd214885bb2b3f222342a"
},
"status": {
"path": "docs/status/WBV2-P1145-000.md",
"sha256": "d10694914401fe045eac5dcbc8de8e81d85dd024e624bf371582dedf6cedf09a"
}
},
"assertions": {
"sourceBackedSuccessor": true,
"priorEvidencePreserved": true,
"moduleId": "CORRECTIVE_SMOOTH_READER",
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"dynamicUnitCount": 3745,
"dynamicVerifiedUnits": 350,
"dynamicUnverifiedUnits": 3395,
"boundUnitDelta": 0,
"fullHistoricalReproduction": false
},
"nextTask": "WBV2-P1145-001"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,29 @@
{
"schemaVersion": 1,
"task": "WBV2-P1145-000",
"operation": "AUTHORIZE_SOURCE_BACKED_MODULE",
"taskClass": "QUEUE_ENABLEMENT",
"status": "PASS",
"parent": {
"task": "WBV2-P1144-001",
"manifest": "tests/golden/WBV2-P1144-001/manifest.json",
"manifestSha256": "b63a84f5f3d67c3e38013c68f81c676655408f0fd6f72fc91475c943254b0c09"
},
"module": {
"moduleId": "CORRECTIVE_SMOOTH_READER",
"task": "WBV2-P1145-001",
"sourceUnits": [
"modifier-source:MOD_correctivesmooth",
"rna-struct:CorrectiveSmoothModifier"
],
"sourceBacked": true
},
"inventory": {
"unitCount": 3745,
"verifiedUnits": 350,
"unverifiedUnits": 3395,
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"boundUnitDelta": 0
},
"nextTask": "WBV2-P1145-001"
}

View File

@@ -0,0 +1,184 @@
{
"schemaVersion": 1,
"task": "WBV2-P1145-000",
"parentTask": "WBV2-P1144-001",
"status": "done",
"goal": "验证 Blender Main 中 Corrective Smooth modifier 的真实类型和 RNA 元数据,并确认 save/reopen、worker termination 和 malformed 输入保持确定性。",
"scope": {
"gap": "capability:CORRECTIVE_SMOOTH_READER",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P1145-000 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 228,
"contextRemainingTokens": 55
},
"source": {
"bytes": 9676,
"tokens": 2421
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_correctivesmooth.cc",
"bytes": 29127,
"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/modifier_corrective_smooth_scene.blend",
"bytes": 97291,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts",
"bytes": 3743,
"reason": "CONTEXT_REMAINING_SPACE"
},
{
"path": "tests/golden/WBV2-P1145-000/module-receipt.json",
"bytes": null,
"reason": "MISSING_PATH"
},
{
"path": "tests/golden/WBV2-P1145-000/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P1145-000.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"prior evidence remains hash-bound",
"Corrective Smooth has explicit Blender source mapping",
"inventory remains source-derived",
"one source-backed module is active"
],
"nextTask": "WBV2-P1145-001",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P1145-000.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P1144-001/manifest.json",
"parentStatus": "docs/status/WBV2-P1144-001.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P1145-000.md",
"tests/golden/WBV2-P1144-001/manifest.json",
"docs/status/WBV2-P1144-001.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-P1144-001",
"parentTask": "WBV2-P1144-000",
"status": "done",
"nextTask": "WBV2-P1145-000",
"artifactCount": 13
},
"statusSummary": [
"# WBV2-P1144-001 status",
"- task: `WBV2-P1144-001`; module: `DRIVER_READER`; status: `done`",
"- source hashes stable: `true`; commands passed: `4`",
"- positive Main mutation, negative no-mutation, recovery and Chromium gates are recorded in the module receipt",
"- Driver/AnimData reader exposes Blender scripted expression, variables and DriverTarget RNA path/ID metadata; Chromium undo/redo, malformed-input rejection and save/reopen passed; no JS simulation",
"- dynamic source inventory: `3745` units; verified `350`; unverified `3395`; planning estimate `5200` (non-binding); sourceTreeSha256=`600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202`; this-segment binding delta: `6`",
"- historical 6900-entry inventory remains read-only; full-family parity: `false`",
"- nextTask: `WBV2-P1145-000`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1750,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 42,
"taskTokens": 438
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 3830,
"lines": 56,
"tokens": 958
},
{
"path": "docs/tasks/WBV2-P1145-000.md",
"bytes": 1750,
"lines": 42,
"tokens": 438
},
{
"path": "tests/golden/WBV2-P1144-001/manifest.json",
"bytes": 3299,
"lines": 89,
"tokens": 825
},
{
"path": "docs/status/WBV2-P1144-001.md",
"bytes": 797,
"lines": 10,
"tokens": 200
}
],
"sourceTokens": 2421,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 2421,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 3445,
"serializedContextTokens": 655,
"withinBudget": true
}
}

View File

@@ -0,0 +1,82 @@
{
"schemaVersion": 1,
"task": "WBV2-P1145-001",
"operation": "CORRECTIVE_SMOOTH_READER_CHROMIUM_SAVE_REOPEN",
"browser": "chromium",
"queueMutation": false,
"fixture": "tests/files/web/modifier_corrective_smooth_scene.blend",
"fixtureSha256": "2e89fa90ec07fa2a87241ad6ec33c569e7a4f69742554c69fe0eadeb32cdac12",
"sourceUnits": [
"modifier-source:MOD_correctivesmooth",
"rna-struct:CorrectiveSmoothModifier"
],
"before": [
{
"meshId": "mesh:Grid",
"uuid": "modifier:object:CorrectiveSmoothFixture:697597798",
"name": "Corrective Smooth",
"type": "CORRECTIVE_SMOOTH",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 7,
"persistentUid": 697597798,
"typeCode": 51
}
}
],
"target": {
"meshId": "mesh:Grid",
"uuid": "modifier:object:CorrectiveSmoothFixture:697597798",
"name": "Corrective Smooth",
"type": "CORRECTIVE_SMOOTH",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 7,
"persistentUid": 697597798,
"typeCode": 51
}
},
"after": [
{
"meshId": "mesh:Grid",
"uuid": "modifier:object:CorrectiveSmoothFixture:697597798",
"name": "Corrective Smooth",
"type": "CORRECTIVE_SMOOTH",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 7,
"persistentUid": 697597798,
"typeCode": 51
}
}
],
"deterministic": [
{
"meshId": "mesh:Grid",
"uuid": "modifier:object:CorrectiveSmoothFixture:697597798",
"name": "Corrective Smooth",
"type": "CORRECTIVE_SMOOTH",
"enabled": true,
"evaluationStatus": "BLOCKED",
"parameters": {
"flag": 5,
"mode": 7,
"persistentUid": 697597798,
"typeCode": 51
}
}
],
"saveReopenExact": true,
"deterministicExact": true,
"savedSha256": "2e89fa90ec07fa2a87241ad6ec33c569e7a4f69742554c69fe0eadeb32cdac12",
"malformed": {
"code": "BLEND_READ_FAILED",
"message": "Input is not an uncompressed, gzip, or zstd Blender file"
}
}

View File

@@ -0,0 +1,87 @@
{
"schemaVersion": 1,
"task": "WBV2-P1145-001",
"parentTask": "WBV2-P1145-000",
"operation": "MODULE_FUNCTION_EXECUTION",
"taskClass": "MODULE",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "BLENDER_WEB_FUNCTION_MODULE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P1145-000/manifest.json",
"sha256": "7e513edae4032099e17b36a4e7a73c21f68c395cd9aa4a97e48f55e2d7406e0f"
},
"source1": {
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_correctivesmooth.cc",
"sha256": "34064ee367b0b79f2804a48101943630366d5c166b842fa9f439dbf4aa1dad3b"
},
"source2": {
"path": "blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"sha256": "1292112c20eaa113084a2a7093c349e7787db818950d80a6e11b75b287e4287b"
},
"source3": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"sha256": "f6fbd04315c48ad4dfbf109b91e5b350550d23c227e5c11a71a58f09e923c990"
},
"source4": {
"path": "web/tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts",
"sha256": "868e770934e9c19cb9a807530a1837b37f065b654ad948322ee39589b1887fc7"
},
"source5": {
"path": "tests/files/web/modifier_corrective_smooth_scene.blend",
"sha256": "2e89fa90ec07fa2a87241ad6ec33c569e7a4f69742554c69fe0eadeb32cdac12"
},
"source6": {
"path": "web/app/src/vendor/blender/web_engine.wasm",
"sha256": "32bc36aba563fe1ed0fb5d0292ca8a3ada1eecd6d45e38d9dcde565f02a312fe"
},
"moduleReceipt": {
"path": "tests/golden/WBV2-P1145-001/module-receipt.json",
"sha256": "34e4789e5cd176c0543d439c21a66ff796bec9b6369a2894677be1aea02c11b3"
},
"production": {
"path": "tests/golden/WBV2-P1145-001/corrective-smooth-production.json",
"sha256": "2afd10cbf4101867ccd6857181d439b2fad4fe54471f5562c9c056a75d1456ec"
},
"status": {
"path": "docs/status/WBV2-P1145-001.md",
"sha256": "e4fccc7e41be4081f9019138d0dbf204b5d3681cdbb23546362b8140485ac4c2"
},
"log": {
"path": "tests/golden/WBV2-P1145-001/module-run.log",
"sha256": "be78d986f5000ccff2a8bf8108462c7b778961e087ef2a9c1528c9887166bca0"
},
"plan": {
"path": "tests/golden/WBV2-P1145-000/module-execution-plan.json",
"sha256": "699800aa915ee17cb6698a348573f33e4d745909ea1e647ecb508934ee286750"
},
"taskContext": {
"path": "tests/golden/WBV2-P1145-001/task-context.json",
"sha256": "41931421e57552975f14f0d8bce46fe819e0c91c4683146d2f0631daee43ecc4"
}
},
"assertions": {
"moduleId": "CORRECTIVE_SMOOTH_READER",
"sourceBacked": true,
"positiveCases": 3,
"negativeCases": 3,
"recoveryCases": 3,
"commandCount": 4,
"reusedReceiptCount": 1,
"sourceUnchanged": true,
"fullFamilyParity": false,
"dynamicInventoryPath": "tests/golden/WBV2/dynamic-inventory.json",
"dynamicSourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"dynamicUnitCount": 3745,
"dynamicVerifiedUnits": 350,
"dynamicUnverifiedUnits": 3395,
"planningEstimate": 5200,
"historicalInventoryTotal": 6900,
"historicalEffectiveCompleted": 290,
"historicalEffectivePending": 6609,
"historicalReproduction": false
},
"nextTask": null
}

View File

@@ -0,0 +1,113 @@
{
"schemaVersion": 1,
"task": "WBV2-P1145-001",
"operation": "MODULE_FUNCTION_EXECUTION",
"moduleId": "CORRECTIVE_SMOOTH_READER",
"status": "PASS",
"source": {
"paths": [
"blender-5.2.0/source/blender/modifiers/intern/MOD_correctivesmooth.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
"web/tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts",
"tests/files/web/modifier_corrective_smooth_scene.blend",
"web/app/src/vendor/blender/web_engine.wasm"
],
"before": {
"blender-5.2.0/source/blender/modifiers/intern/MOD_correctivesmooth.cc": "34064ee367b0b79f2804a48101943630366d5c166b842fa9f439dbf4aa1dad3b",
"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-corrective-smooth-reader-production.spec.ts": "868e770934e9c19cb9a807530a1837b37f065b654ad948322ee39589b1887fc7",
"tests/files/web/modifier_corrective_smooth_scene.blend": "2e89fa90ec07fa2a87241ad6ec33c569e7a4f69742554c69fe0eadeb32cdac12",
"web/app/src/vendor/blender/web_engine.wasm": "32bc36aba563fe1ed0fb5d0292ca8a3ada1eecd6d45e38d9dcde565f02a312fe"
},
"after": {
"blender-5.2.0/source/blender/modifiers/intern/MOD_correctivesmooth.cc": "34064ee367b0b79f2804a48101943630366d5c166b842fa9f439dbf4aa1dad3b",
"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-corrective-smooth-reader-production.spec.ts": "868e770934e9c19cb9a807530a1837b37f065b654ad948322ee39589b1887fc7",
"tests/files/web/modifier_corrective_smooth_scene.blend": "2e89fa90ec07fa2a87241ad6ec33c569e7a4f69742554c69fe0eadeb32cdac12",
"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": [
"Corrective Smooth type is read from Blender Main",
"RNA metadata is preserved",
"save/reopen preserves modifier metadata"
],
"negative": [
"malformed blend is rejected without Main mutation",
"unsupported modifier data fails closed",
"non-finite metadata is not synthesized"
],
"recovery": [
"save/reopen",
"worker termination",
"deterministic second read"
]
},
"commands": [
{
"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": "WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts",
"exitCode": 0
}
],
"verification": {
"required": [
"sourceHash",
"wasmBuild",
"positiveMainMutation",
"negativeNoMutation",
"undoRedo",
"saveReopen",
"aggregateManifest"
],
"chromiumOnly": true,
"fullFamilyParity": false
},
"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": "3cf5795f89066d759400fa206b559020e27c157708febdab393fa978303a79aa",
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"unitCount": 3745,
"planningEstimate": 5200,
"hardTarget": false,
"verifiedUnits": 350,
"unverifiedUnits": 3395
}
},
"nextTask": null
}

View File

@@ -0,0 +1,49 @@
> 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
ninja: no work to do.
> npm --prefix web run typecheck
> blender-web-editor@0.1.0-rc.1 typecheck
> tsc -p tsconfig.json --noEmit
> npm --prefix web run build
> blender-web-editor@0.1.0-rc.1 build
> tsc -p tsconfig.json && vite build --config app/vite.config.ts
vite v8.2.0 building client environment for production...

transforming...✓ 102 modules transformed.
rendering chunks...
computing gzip size...
dist/index.html 0.46 kB │ gzip: 0.30 kB
dist/assets/storage.worker-D9TqXsGS.js 66.59 kB
dist/assets/web-engine.worker-BfTMiTY1.js 362.11 kB
dist/assets/viewport-render.worker-BKnJyAEz.js 634.08 kB
dist/assets/web_engine-CjnzAIfx.wasm 16,238.37 kB │ gzip: 3,856.73 kB
dist/assets/index-BgTbQCE2.css 15.35 kB │ gzip: 3.91 kB
dist/assets/index-C3AJuKSc.js 1,190.30 kB │ gzip: 316.69 kB
✓ built in 468ms
[plugin rolldown:vite-resolve] Module "module" has been externalized for browser compatibility, imported by "/home/mes123456/workinf_Blender_Wasm/web/app/src/vendor/blender/web_engine.js". See https://vite.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.
[plugin builtin:vite-reporter]
(!) Some chunks are larger than 500 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rolldownOptions.output.codeSplitting to improve chunking: https://rolldown.rs/reference/OutputOptions.codeSplitting
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
> WEB_TEST_PORT=5371 npm --prefix web run test:e2e -- --workers=1 tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts
> blender-web-editor@0.1.0-rc.1 test:e2e
> playwright test --config playwright.config.ts --workers=1 tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts
Running 1 test using 1 worker
✓ 1 tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts:11:1 › Corrective Smooth modifier metadata survives Blender Main save/reopen (1.9s)
1 passed (2.7s)
[WebServer] (node:27133) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
[WebServer] (Use `node --trace-warnings ...` to show where the warning was created)
(node:27187) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.

View File

@@ -0,0 +1,183 @@
{
"schemaVersion": 1,
"task": "WBV2-P1145-001",
"parentTask": "WBV2-P1145-000",
"status": "in_progress",
"goal": "验证 Blender Main 中 Corrective Smooth modifier 的真实类型和 RNA 元数据,并确认 save/reopen、worker termination 和 malformed 输入保持确定性。",
"scope": {
"gap": "capability:CORRECTIVE_SMOOTH_READER",
"ownerFamily": "MODIFIER",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P1145-001 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2552,
"contextRemainingTokens": 636
},
"source": {
"bytes": 7352,
"tokens": 1840
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/modifiers/intern/MOD_correctivesmooth.cc",
"bytes": 29127,
"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/modifier_corrective_smooth_scene.blend",
"bytes": 97291,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/tests/e2e/wbv2-corrective-smooth-reader-production.spec.ts",
"bytes": 3743,
"reason": "CONTEXT_REMAINING_SPACE"
},
{
"path": "tests/golden/WBV2-P1145-001/module-receipt.json",
"bytes": 4906,
"reason": "CONTEXT_REMAINING_SPACE"
},
{
"path": "tests/golden/WBV2-P1145-001/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P1145-001.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"source and protocol hashes are bound",
"positive Main reader is proven",
"negative no-mutation and recovery are proven",
"Chromium and save/reopen evidence are exact",
"full-family parity remains explicit"
],
"nextTask": null,
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P1145-001.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P1145-000/manifest.json",
"parentStatus": "docs/status/WBV2-P1145-000.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P1145-001.md",
"tests/golden/WBV2-P1145-000/manifest.json",
"docs/status/WBV2-P1145-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-P1145-000",
"parentTask": "WBV2-P1144-001",
"status": "done",
"nextTask": "WBV2-P1145-001",
"artifactCount": 4
},
"statusSummary": [
"# WBV2-P1145-000 status",
"- task: `WBV2-P1145-000`; parent: `WBV2-P1144-001`; status: `done`",
"- taskClass: `QUEUE_ENABLEMENT`; no Corrective Smooth parity completion claimed",
"- source-backed successor authorized for `CORRECTIVE_SMOOTH_READER`",
"- dynamic inventory remains `3745` units; verified `350`; unverified `3395`; bound delta `0`",
"- nextTask: `WBV2-P1145-001`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1771,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 42,
"taskTokens": 443
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 3830,
"lines": 56,
"tokens": 958
},
{
"path": "docs/tasks/WBV2-P1145-001.md",
"bytes": 1771,
"lines": 42,
"tokens": 443
},
{
"path": "tests/golden/WBV2-P1145-000/manifest.json",
"bytes": 1389,
"lines": 43,
"tokens": 348
},
{
"path": "docs/status/WBV2-P1145-000.md",
"bytes": 362,
"lines": 8,
"tokens": 91
}
],
"sourceTokens": 1840,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1840,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2864,
"serializedContextTokens": 658,
"withinBudget": true
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,42 @@
{
"schemaVersion": 1,
"operation": "BLENDER_52_SOURCE_DYNAMIC_COVERAGE_AUDIT",
"status": "done",
"artifacts": {
"inventory": {
"path": "tests/golden/WBV2/dynamic-inventory.json",
"sha256": "3cf5795f89066d759400fa206b559020e27c157708febdab393fa978303a79aa"
},
"inventoryManifest": {
"path": "tests/golden/WBV2/dynamic-inventory-manifest.json",
"sha256": "0f440885c8e8ca401db412b0a5ec1195e79e9ab18eb731b9eae00bd8313c017c"
},
"bindings": {
"path": "tests/golden/WBV2/dynamic-coverage-bindings.json",
"sha256": "8527415d36130b5c0e8f828fc7d402102286c21d30ceb98498ade360961990ab"
},
"report": {
"path": "tests/golden/WBV2/dynamic-coverage-audit.json",
"sha256": "4e2e6bef38bfda7d068242a0e88325948d7c292014af279711fdec2ecba2e136"
},
"generator": {
"path": "tools/web/reconcile-source-dynamic-coverage.mjs",
"sha256": "6c582a0a71ded6f3d541ccf745197b354c2fb998307203fe66a57be9b6eff8ac"
}
},
"coverage": {
"unitCount": 3745,
"verifiedUnits": 350,
"unverifiedUnits": 3395,
"boundUnitDelta": 350,
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202"
},
"historical": {
"total": 6900,
"immutable": true
},
"planningEstimate": {
"units": 5200,
"hardTarget": false
}
}

View File

@@ -0,0 +1,30 @@
{
"schemaVersion": 1,
"operation": "BLENDER_52_SOURCE_DYNAMIC_INVENTORY_CHECK",
"status": "PASS",
"sourceTreeSha256": "600cb3dd441f09d9655b740735fbf8fa49ad6c14d308c68d59a29f9c338e4202",
"sourceFiles": 6206,
"sourceBytes": 96049182,
"unitCount": 3745,
"byKind": {
"modifier-source": 97,
"node": 497,
"operator-macro": 58,
"operator": 2018,
"rna-struct": 979,
"web-command": 96
},
"byFamily": {
"MODIFIER": 97,
"NODES": 497,
"EDITOR": 2023,
"WINDOW_MANAGER": 53,
"RNA": 979,
"WEB_ENGINE": 96
},
"planningEstimate": 5200,
"hardTarget": false,
"verifiedUnits": 350,
"unverifiedUnits": 3395,
"deterministic": true
}

View File

@@ -0,0 +1,59 @@
{
"schemaVersion": 1,
"operation": "BLENDER_52_SOURCE_DYNAMIC_INVENTORY",
"status": "done",
"runtime": "BLENDER_5_2_SOURCE_TREE",
"artifacts": {
"generator": {
"path": "tools/web/generate-source-dynamic-inventory.mjs",
"sha256": "9ef57baa78abd2ff8ac38ce8195e9e97f6323c944d9b2cedd60e70c622e4cc01"
},
"checker": {
"path": "tools/web/check-source-dynamic-inventory.mjs",
"sha256": "57f19b254a0659a2470a61b629995b170676ba8dcf42b925cbc1a69103d519b7"
},
"inventory": {
"path": "tests/golden/WBV2/dynamic-inventory.json",
"sha256": "3cf5795f89066d759400fa206b559020e27c157708febdab393fa978303a79aa"
},
"report": {
"path": "tests/golden/WBV2/dynamic-inventory-check-report.json",
"sha256": "f76d38d1257b3ef8e5f1677f725a76dc875a6493c85f95340f27d7701ca4576c"
},
"status": {
"path": "docs/status/WBV2-DYNAMIC-INVENTORY.md",
"sha256": "8230a85ca0098a05956098793bffde579b0f5a249f0d0a1271da355a531c7810"
},
"historicalInventory": {
"path": "tests/golden/WBV2-P0-002/parity-map.json",
"sha256": "a60a77cae000941a953d55adbf93d8f6e275533891713d6eae993f60faed94e8"
}
},
"source": {
"root": "blender-5.2.0/source/blender",
"treeSha256": "6d2f3336fe316c473c43f3b86c4d2ec36ab4a52cf4a7783e20fb5ac483fd20b1",
"fileCount": 6206,
"byteCount": 96043122
},
"inventory": {
"unitCount": 3745,
"byKind": {
"modifier-source": 97,
"node": 497,
"operator-macro": 58,
"operator": 2018,
"rna-struct": 979,
"web-command": 96
},
"planningEstimate": 5200,
"hardTarget": false,
"verifiedUnits": 332,
"unverifiedUnits": 3413,
"boundCaseDelta": 272
},
"historical": {
"initialEstimate": 6900,
"immutable": true,
"replacedAsCurrentMetric": true
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,71 @@
{"id":"WBV2-P607-000","gapId":"workflow:authorize_capability_family_wave","ownerFamily":"PROGRAM","sourceTask":"P607","state":"completed","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]}
{"id":"WBV2-P607-001","gapId":"workflow:index_capability_family_batches","ownerFamily":"RELEASE","sourceTask":"P607","state":"completed","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]}
{"id":"WBV2-P607-002","gapId":"workflow:implement_capability_family_slice","ownerFamily":"IMPLEMENTATION","sourceTask":"P607","state":"active","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]}
{"id":"WBV2-P607-003","gapId":"workflow:run_capability_family_smoke","ownerFamily":"RELEASE","sourceTask":"P607","state":"pending","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]}
{"id":"WBV2-P1096-000","gapId":"workflow:supersede_generic_continuation_queue","ownerFamily":"PROGRAM","sourceTask":"1096","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["no parity claim","inventory preserved","module plan hash-bound"]}
{"id":"WBV2-P1100-000","gapId":"workflow:reorganize_module_execution_plan","ownerFamily":"PROGRAM","sourceTask":"1100","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["completed receipts reused","generic continuation excluded","one module active","inventory preserved"]}
{"id":"WBV2-P1100-001","gapId":"RENDER_LIGHT_CAMERA","ownerFamily":"RENDER","sourceTask":"1100","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1100-002","gapId":"SCENE_OBJECT_MESH","ownerFamily":"SCENE_MESH","sourceTask":"1100","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1100-003","gapId":"MATERIAL_ANIMATION","ownerFamily":"MATERIAL_ANIMATION","sourceTask":"1100","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1101-000","gapId":"NONMESH_GEOMETRY","ownerFamily":"GEOMETRY","sourceTask":"1101","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1101-001","gapId":"NODES_SIMULATION","ownerFamily":"NODES_SIMULATION","sourceTask":"1101","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1101-002","gapId":"ASSET_IO","ownerFamily":"ASSET","sourceTask":"1101","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1101-003","gapId":"SCULPT_PAINT","ownerFamily":"SCULPT_PAINT","sourceTask":"1101","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1102-000","gapId":"UI_EDITOR","ownerFamily":"EDITOR","sourceTask":"1102","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1102-001","gapId":"INVENTORY_GATE","ownerFamily":"RELEASE","sourceTask":"1102","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1103-000","gapId":"OBJECT_OPERATIONS","ownerFamily":"OBJECT","sourceTask":"1103","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1104-000","gapId":"COMPOSITOR_SEQUENCER","ownerFamily":"MEDIA","sourceTask":"1104","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main or compositor mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1105-000","gapId":"AUDIO_PARTICLE","ownerFamily":"AUDIO_PARTICLE","sourceTask":"1105","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven or a typed build capability blocker is recorded","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1106-000","gapId":"RIG_ANIMATION","ownerFamily":"RIG","sourceTask":"1106","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1107-000","gapId":"MODIFIER_SYSTEM","ownerFamily":"MODIFIER","sourceTask":"1107","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1108-000","gapId":"NODES_GRAPH","ownerFamily":"NODES","sourceTask":"1108","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive graph reader/evaluation evidence is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1109-000","gapId":"IO_FORMAT","ownerFamily":"MEDIA","sourceTask":"1109","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and protocol hashes are bound","positive format routing/readiness evidence is proven","negative and recovery cases are proven","Chromium and deterministic recovery receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1110-000","gapId":"RENDER_PIPELINE","ownerFamily":"RENDER","sourceTask":"1110","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and protocol hashes are bound","positive render/reference evidence is proven","negative and recovery cases are proven","Chromium and deterministic render receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1111-000","gapId":"SCRIPTING_SECURITY","ownerFamily":"SCRIPTING","sourceTask":"1111","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and protocol hashes are bound","positive reader and policy evidence is proven","negative and recovery cases are proven","Chromium sandbox receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1112-000","gapId":"ANIMATION_TIMELINE","ownerFamily":"ANIMATION","sourceTask":"1112","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive frame/NLA evaluation is proven","negative and recovery cases are proven","Chromium and deterministic evaluation receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1113-000","gapId":"SHADER_MATERIAL","ownerFamily":"MATERIAL","sourceTask":"1113","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Shader Main compilation is proven","negative and recovery cases are proven","Chromium and deterministic compile receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1114-000","gapId":"GREASE_PENCIL","ownerFamily":"DRAWING","sourceTask":"1114","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Grease Pencil Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1115-000","gapId":"CURVE_SURFACE_EDITING","ownerFamily":"GEOMETRY","sourceTask":"1115","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive non-mesh Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1116-000","gapId":"STORAGE_RECOVERY","ownerFamily":"STORAGE","sourceTask":"1116","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and protocol hashes are bound","positive storage commit/recovery evidence is proven","negative and quarantine cases are proven","Chromium restart receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1117-000","gapId":"SIMULATION_CACHE","ownerFamily":"SIMULATION","sourceTask":"1117","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and protocol hashes are bound","positive cache identity/lifecycle evidence is proven","negative integrity and budget cases are proven","Chromium restart and quarantine receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1118-000","gapId":"UI_INPUT_INTERACTION","ownerFamily":"EDITOR","sourceTask":"1118","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and protocol hashes are bound","positive keyboard Main mutation and save are proven","negative mutex/input cases are proven","Chromium accessibility and responsive receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1119-000","gapId":"LIBRARY_WORKFLOW","ownerFamily":"ASSET","sourceTask":"1119","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive library Main mutation is proven","negative and recovery cases are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1120-000","gapId":"VOLUME_NANOVDB","ownerFamily":"MEDIA","sourceTask":"1120","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and protocol hashes are bound","positive volume resource and viewport evidence is proven","negative and recovery cases are proven","Chromium OPFS/restart receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1121-000","gapId":"PAINT_STROKE","ownerFamily":"SCULPT","sourceTask":"1121","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and protocol hashes are bound","positive paint Main transaction is proven","negative and recovery cases are proven","Chromium pointer/GPU receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1122-000","gapId":"ENGINE_RUNTIME","ownerFamily":"RUNTIME","sourceTask":"1122","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive compiled WASM Main lifecycle is proven","negative variant/hash cases are proven","Chromium Worker restart receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1123-000","gapId":"GLB_ROUNDTRIP_REPAIR","ownerFamily":"MEDIA","sourceTask":"1123","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive GLB and non-mesh roundtrip are proven","negative and recovery cases are proven","Chromium save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1124-000","gapId":"HISTORICAL_HASH_DRIFT","ownerFamily":"PROVENANCE","sourceTask":"1124","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["original and observed hashes are recorded","provenance remains BLOCKED_SOURCE_LOST where bytes cannot be restored","historical manifests and inventory remain unchanged","deterministic drift evidence is reproducible","no full-family parity claim"]}
{"id":"WBV2-P1125-000","gapId":"GEOMETRY_NODES_ALLOWLIST_REPAIR","ownerFamily":"NODES","sourceTask":"1125","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","supported graph Main materialization is proven","unsupported graph remains rejected without mutation","save/reopen graph retention is exact","full-family parity remains explicit"]}
{"id":"WBV2-P1126-000","gapId":"GREASE_PENCIL_VIEWPORT","ownerFamily":"DRAWING","sourceTask":"1126","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and protocol hashes are bound","2D and 3D selection revisions converge","main-thread and Offscreen marquee are exact","stale/foreign selection cases remain fail-closed","full-family parity remains explicit"]}
{"id":"WBV2-P1127-000","gapId":"TRACKING_MASK","ownerFamily":"TRACKING","sourceTask":"1127","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and protocol hashes are bound","positive Mask reader and interaction evidence is proven","negative solve/resource cases are proven","Chromium stable IDs and recovery receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1128-000","gapId":"SEQUENCER_MOVIE_CODEC","ownerFamily":"MEDIA","sourceTask":"1128","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and core-resource hashes are bound","positive MP4 probe and RGBA frame are proven","corrupt and source-identity cases are rejected","AbortSignal cancellation leaves no live Worker","full-family parity remains explicit"]}
{"id":"WBV2-P1129-000","gapId":"workflow:authorize_scene_settings_module","ownerFamily":"PROGRAM","sourceTask":"1129","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1128 evidence remains hash-bound","existing receipts are reused","inventory remains immutable","one source-backed module is active"]}
{"id":"WBV2-P1129-001","gapId":"CORE_SCENE_GRAPH_SETTINGS","ownerFamily":"CORE_SCENE","sourceTask":"1129","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutations are proven","negative no-mutation and recovery are proven","Chromium and save/reopen receipts are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1130-000","gapId":"workflow:authorize_editor_view2d_module","ownerFamily":"PROGRAM","sourceTask":"1130","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1129 evidence remains hash-bound","P1102 editor workflow source remains unchanged","inventory remains immutable","one source-backed module is active"]}
{"id":"WBV2-P1130-001","gapId":"UI_EDITOR_VIEW2D_STATE","ownerFamily":"EDITOR","sourceTask":"1130","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive reader state is proven","negative no-publish and recovery are proven","Chromium and save/reopen compatibility are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1131-000","gapId":"workflow:authorize_curve_topology_module","ownerFamily":"PROGRAM","sourceTask":"1131","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1130 evidence remains hash-bound","Curve topology source and protocol are present","inventory remains immutable","one source-backed module is active"]}
{"id":"WBV2-P1131-001","gapId":"CURVE_TOPOLOGY_EDITOR","ownerFamily":"EDITOR","sourceTask":"1131","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1132-000","gapId":"workflow:authorize_curve_handle_module","ownerFamily":"PROGRAM","sourceTask":"1132","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1131 evidence remains hash-bound","Curve handle source and protocol are present","inventory remains immutable","one source-backed module is active"]}
{"id":"WBV2-P1132-001","gapId":"CURVE_HANDLE_GIZMO","ownerFamily":"EDITOR","sourceTask":"1132","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1133-000","gapId":"workflow:authorize_curve_splines_module","ownerFamily":"PROGRAM","sourceTask":"1133","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1132 evidence remains hash-bound","Curve spline source and protocol are present","inventory remains immutable","one source-backed module is active"]}
{"id":"WBV2-P1133-001","gapId":"CURVE_SPLINES_TRANSACTION","ownerFamily":"EDITOR","sourceTask":"1133","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1134-000","gapId":"workflow:authorize_surface_topology_module","ownerFamily":"PROGRAM","sourceTask":"1134","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1133 evidence remains hash-bound","Surface topology source and protocol are present","inventory remains immutable","one source-backed module is active"]}
{"id":"WBV2-P1134-001","gapId":"SURFACE_TOPOLOGY_TRANSACTION","ownerFamily":"GEOMETRY","sourceTask":"1134","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1135-000","gapId":"workflow:authorize_font_body_module","ownerFamily":"PROGRAM","sourceTask":"1135","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1134 evidence remains hash-bound","Font body source and protocol are present","inventory remains immutable","one source-backed module is active"]}
{"id":"WBV2-P1135-001","gapId":"FONT_BODY_TRANSACTION","ownerFamily":"GEOMETRY","sourceTask":"1135","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1136-000","gapId":"workflow:authorize_font_properties_module","ownerFamily":"PROGRAM","sourceTask":"1136","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1135 evidence remains hash-bound","Font property source and protocol are present","inventory remains immutable","one source-backed module is active"]}
{"id":"WBV2-P1136-001","gapId":"FONT_PROPERTIES_TRANSACTION","ownerFamily":"GEOMETRY","sourceTask":"1136","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1137-000","gapId":"workflow:authorize_metaball_elements_module","ownerFamily":"PROGRAM","sourceTask":"1137","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1136 evidence remains hash-bound","Metaball element source and protocol are present","inventory remains immutable","one source-backed module is active"]}
{"id":"WBV2-P1137-001","gapId":"METABALL_ELEMENTS_TRANSACTION","ownerFamily":"GEOMETRY","sourceTask":"1137","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1138-000","gapId":"workflow:authorize_text_source_module","ownerFamily":"SCRIPTING","sourceTask":"1138","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1137 evidence remains hash-bound","ID_TXT is registered for WITH_WEB","inventory remains source-derived","one source-backed module is active"]}
{"id":"WBV2-P1138-001","gapId":"TEXT_SOURCE_TRANSACTION","ownerFamily":"SCRIPTING","sourceTask":"1138","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1139-000","gapId":"workflow:authorize_texture_properties_module","ownerFamily":"TEXTURE","sourceTask":"1139","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1138 evidence remains hash-bound","ID_TE is registered for WITH_WEB","inventory remains source-derived","one source-backed module is active"]}
{"id":"WBV2-P1139-001","gapId":"TEXTURE_PROPERTIES_TRANSACTION","ownerFamily":"TEXTURE","sourceTask":"1139","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main mutation is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1140-000","gapId":"workflow:authorize_action_group_reader_module","ownerFamily":"ANIMATION","sourceTask":"1140","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1139 evidence remains hash-bound","ActionGroup has explicit Blender source mapping","inventory remains source-derived","one source-backed module is active"]}
{"id":"WBV2-P1140-001","gapId":"ACTION_GROUP_READER","ownerFamily":"ANIMATION","sourceTask":"1140","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main reader is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1141-000","gapId":"workflow:authorize_action_pose_markers_module","ownerFamily":"ANIMATION","sourceTask":"1141","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1140 evidence remains hash-bound","ActionPoseMarkers has explicit Blender source mapping","inventory remains source-derived","one source-backed module is active"]}
{"id":"WBV2-P1141-001","gapId":"ACTION_POSE_MARKERS_READER","ownerFamily":"ANIMATION","sourceTask":"1141","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main reader is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1142-000","gapId":"workflow:authorize_fcurve_sample_reader_module","ownerFamily":"ANIMATION","sourceTask":"1142","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1141 evidence remains hash-bound","FCurveSample has explicit Blender source mapping","inventory remains source-derived","one source-backed module is active"]}
{"id":"WBV2-P1142-001","gapId":"FCURVE_SAMPLE_READER","ownerFamily":"ANIMATION","sourceTask":"1142","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main reader is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1143-000","gapId":"workflow:authorize_fcurve_modifier_reader_module","ownerFamily":"ANIMATION","sourceTask":"1143","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1142 evidence remains hash-bound","FCurveModifiers has explicit Blender source mapping","inventory remains source-derived","one source-backed module is active"]}
{"id":"WBV2-P1143-001","gapId":"FCURVE_MODIFIER_READER","ownerFamily":"ANIMATION","sourceTask":"1143","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main reader is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1144-000","gapId":"workflow:authorize_driver_reader_module","ownerFamily":"ANIMATION","sourceTask":"1144","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["P1143 evidence remains hash-bound","Driver has explicit Blender source mapping","inventory remains source-derived","one source-backed module is active"]}
{"id":"WBV2-P1144-001","gapId":"DRIVER_READER","ownerFamily":"ANIMATION","sourceTask":"1144","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main reader is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}
{"id":"WBV2-P1145-000","gapId":"workflow:authorize_corrective_smooth_reader_module","ownerFamily":"PROGRAM","sourceTask":"1145","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["prior evidence remains hash-bound","Corrective Smooth has explicit Blender source mapping","inventory remains source-derived","one source-backed module is active"]}
{"id":"WBV2-P1145-001","gapId":"CORRECTIVE_SMOOTH_READER","ownerFamily":"MODIFIER","sourceTask":"1145","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","positive Main reader is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact","full-family parity remains explicit"]}

File diff suppressed because one or more lines are too long