Rebuild local Blender WASM environment and recovery evidence
This commit is contained in:
51
tests/golden/WBV2-P0-002/inventory-check-report.json
Normal file
51
tests/golden/WBV2-P0-002/inventory-check-report.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P0-002",
|
||||
"operation": "BLENDER_52_INVENTORY_CHECK",
|
||||
"status": "PASS",
|
||||
"summary": {
|
||||
"inventoryEntries": 6900,
|
||||
"capabilityCount": 15,
|
||||
"unknownEntries": 0,
|
||||
"completedLegacyEntries": 281,
|
||||
"pendingLegacyEntries": 6618,
|
||||
"activeLegacyEntries": 1,
|
||||
"featureParityClaims": 0,
|
||||
"byKind": {
|
||||
"area": 19,
|
||||
"constraint": 29,
|
||||
"datablock": 29,
|
||||
"io": 33,
|
||||
"keymap": 280,
|
||||
"keymap-item": 3228,
|
||||
"modifier": 83,
|
||||
"node": 451,
|
||||
"operator": 2486,
|
||||
"physics": 65,
|
||||
"region": 17,
|
||||
"rna": 108,
|
||||
"space": 19,
|
||||
"space-class": 16,
|
||||
"strip": 24,
|
||||
"workspace": 13
|
||||
},
|
||||
"byLayer": {
|
||||
"CORE": 137,
|
||||
"FEATURE": 2833,
|
||||
"UI": 3930
|
||||
}
|
||||
},
|
||||
"sourceHashes": {
|
||||
"tests/golden/M15-02A/blender-parity-map.json": "f3e757f26e58a4252b6cc2a7f9275428bbe5bf659cc0f0ff6350a147bdf2809c",
|
||||
"tests/golden/M15-03A/next-task-plan.json": "bad0d7822c0d4d764bd174c86d9da897229e71de6363940125a594b8017e07f5",
|
||||
"tests/golden/M15-03A/completed-gap-tasks.json": "1dfc9c4ae8fb9a135e624ca4f9fe1ea10500ef16a2567a3cccdcfe48fbc38466",
|
||||
"docs/BLENDER_WASM_CAPABILITY_MATRIX_TEMPLATE.json": "053e1551a24da08e045bb54115858a892ddd825fa59f1691a26a1ccfc1db3ca0",
|
||||
"docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json": "c14e01161876ab924c1fe68466c78481fb583d1b822399ffa9f1df1b1d6fb266",
|
||||
"tests/golden/WBV2-P0-001/manifest.json": "09ffbe342f2c510500767ddaa02b18703c25f6c1ee0b2ebd0c563e260c0d0c2b"
|
||||
},
|
||||
"inventorySha256": "b506ca5974d3740ff6f49dcf67c786979f4c828b46c1a0fed3b18d6e90c544e6",
|
||||
"parityMapSha256": "a60a77cae000941a953d55adbf93d8f6e275533891713d6eae993f60faed94e8",
|
||||
"deterministic": true,
|
||||
"featureParityClaims": 0,
|
||||
"nextTask": "WBV2-P0-003"
|
||||
}
|
||||
41450
tests/golden/WBV2-P0-002/inventory.json
Normal file
41450
tests/golden/WBV2-P0-002/inventory.json
Normal file
File diff suppressed because it is too large
Load Diff
53
tests/golden/WBV2-P0-002/manifest.json
Normal file
53
tests/golden/WBV2-P0-002/manifest.json
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P0-002",
|
||||
"parentTask": "WBV2-P0-001",
|
||||
"enablingTask": true,
|
||||
"parityStateChange": false,
|
||||
"runtime": "BLENDER_5_2_INVENTORY",
|
||||
"operation": "BLENDER_52_CAPABILITY_PARITY_MAP",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {
|
||||
"path": "tests/golden/WBV2-P0-001/manifest.json",
|
||||
"sha256": "09ffbe342f2c510500767ddaa02b18703c25f6c1ee0b2ebd0c563e260c0d0c2b"
|
||||
},
|
||||
"generator": {
|
||||
"path": "tools/web/generate-wbv2-inventory.mjs",
|
||||
"sha256": "d801d6e187741cc8953797f139ba760a5f1022c7cae2a8976fe709070330e91b"
|
||||
},
|
||||
"checker": {
|
||||
"path": "tools/web/check-wbv2-inventory.mjs",
|
||||
"sha256": "e729e63886ddb658d84b2c29775a9d3c340c334f824861e458a944e15999af8c"
|
||||
},
|
||||
"inventory": {
|
||||
"path": "tests/golden/WBV2-P0-002/inventory.json",
|
||||
"sha256": "b506ca5974d3740ff6f49dcf67c786979f4c828b46c1a0fed3b18d6e90c544e6"
|
||||
},
|
||||
"parityMap": {
|
||||
"path": "tests/golden/WBV2-P0-002/parity-map.json",
|
||||
"sha256": "a60a77cae000941a953d55adbf93d8f6e275533891713d6eae993f60faed94e8"
|
||||
},
|
||||
"sourceHashes": {
|
||||
"path": "tests/golden/WBV2-P0-002/source-hashes.json",
|
||||
"sha256": "c6c6260d10bc8529e4b26563ce81168e1b0fffb3b175b2d4998ec1c0aa1c1497"
|
||||
},
|
||||
"report": {
|
||||
"path": "tests/golden/WBV2-P0-002/inventory-check-report.json",
|
||||
"sha256": "57d67fac6ab17c438cc1da446eac958edf364441d915a39439e550bd8c5d5571"
|
||||
},
|
||||
"status": {
|
||||
"path": "docs/status/WBV2-P0-002.md",
|
||||
"sha256": "adaaecf668840f83814ed0e94c8f1d8fc1d17e541dad5d55d237188b2eeccdb0"
|
||||
},
|
||||
"taskContext": {
|
||||
"path": "tests/golden/WBV2-P0-002/task-context.json",
|
||||
"sha256": "31598efe1d88e4f70431c413ab98f793c3fe41fcfe2d55fcfa6de3f95c229f6d"
|
||||
},
|
||||
"package": {
|
||||
"path": "web/package.json",
|
||||
"sha256": "40b7f14d4f568ae94bedde83e02115c127e0c714e5eb32a6a97b1e1084c4fa68"
|
||||
}
|
||||
},
|
||||
"nextTask": "WBV2-P0-003"
|
||||
}
|
||||
159012
tests/golden/WBV2-P0-002/parity-map.json
Normal file
159012
tests/golden/WBV2-P0-002/parity-map.json
Normal file
File diff suppressed because it is too large
Load Diff
12
tests/golden/WBV2-P0-002/source-hashes.json
Normal file
12
tests/golden/WBV2-P0-002/source-hashes.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P0-002",
|
||||
"sources": {
|
||||
"tests/golden/M15-02A/blender-parity-map.json": "f3e757f26e58a4252b6cc2a7f9275428bbe5bf659cc0f0ff6350a147bdf2809c",
|
||||
"tests/golden/M15-03A/next-task-plan.json": "bad0d7822c0d4d764bd174c86d9da897229e71de6363940125a594b8017e07f5",
|
||||
"tests/golden/M15-03A/completed-gap-tasks.json": "1dfc9c4ae8fb9a135e624ca4f9fe1ea10500ef16a2567a3cccdcfe48fbc38466",
|
||||
"docs/BLENDER_WASM_CAPABILITY_MATRIX_TEMPLATE.json": "053e1551a24da08e045bb54115858a892ddd825fa59f1691a26a1ccfc1db3ca0",
|
||||
"docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json": "c14e01161876ab924c1fe68466c78481fb583d1b822399ffa9f1df1b1d6fb266",
|
||||
"tests/golden/WBV2-P0-001/manifest.json": "09ffbe342f2c510500767ddaa02b18703c25f6c1ee0b2ebd0c563e260c0d0c2b"
|
||||
}
|
||||
}
|
||||
173
tests/golden/WBV2-P0-002/task-context.json
Normal file
173
tests/golden/WBV2-P0-002/task-context.json
Normal file
@@ -0,0 +1,173 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P0-002",
|
||||
"parentTask": "WBV2-P0-001",
|
||||
"status": "in_progress",
|
||||
"goal": "Generate a deterministic Blender 5.2 inventory and map each entry to a capability",
|
||||
"scope": {
|
||||
"gap": "workflow:blender52-inventory",
|
||||
"ownerFamily": "PARITY",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"node tools/web/generate-wbv2-inventory.mjs",
|
||||
"node tools/web/check-wbv2-inventory.mjs",
|
||||
"node tools/web/check-execution-control-plane.mjs",
|
||||
"node tools/web/check-web-parity-v2-plan.mjs",
|
||||
"node tools/web/check-corrective-plan.mjs",
|
||||
"npm --prefix web run test:context-governance"
|
||||
],
|
||||
"inputPaths": [
|
||||
"tests/golden/corrective/C5-003/capability-manifest.json",
|
||||
"tests/golden/corrective/C5-003/coverage-report.json",
|
||||
"tests/golden/corrective/C5-003/inventory-gate.log"
|
||||
],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 2745,
|
||||
"contextRemainingTokens": 684
|
||||
},
|
||||
"source": {
|
||||
"bytes": 7159,
|
||||
"tokens": 1792
|
||||
},
|
||||
"selected": [
|
||||
{
|
||||
"path": "tests/golden/corrective/C5-003/capability-manifest.json",
|
||||
"bytes": 1619,
|
||||
"tokens": 405
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/corrective/C5-003/coverage-report.json",
|
||||
"bytes": 683,
|
||||
"tokens": 171
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/corrective/C5-003/inventory-gate.log",
|
||||
"bytes": 87,
|
||||
"tokens": 22
|
||||
}
|
||||
],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "docs/BLENDER_WEB_EXECUTION_CONTROL_PLANE.md",
|
||||
"bytes": 3686,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 3,
|
||||
"bytes": 2389,
|
||||
"tokens": 598
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"unknown entries are classified",
|
||||
"inventory is deterministic",
|
||||
"no entry claims feature parity without evidence"
|
||||
],
|
||||
"nextTask": "WBV2-P0-003",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P0-002.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P0-001/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P0-001.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P0-002.md",
|
||||
"tests/golden/WBV2-P0-001/manifest.json",
|
||||
"docs/status/WBV2-P0-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-P0-001",
|
||||
"parentTask": "WBV2-BASELINE",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P0-002",
|
||||
"artifactCount": 6
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P0-001 Status",
|
||||
"status: done",
|
||||
"task: reconcile_scope_and_checkpoints",
|
||||
"gate: G0",
|
||||
"updated: 2026-08-24 America/New_York",
|
||||
"The production queue is now capability-oriented. `WBV2-P0-001` is the only ready",
|
||||
"task and is parented by the new transition baseline. The legacy M16 list remains",
|
||||
"an immutable coverage lane with `M16-GAP-00282` as its checkpoint; its manifests,"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 2186,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 56,
|
||||
"taskTokens": 547
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P0-002.md",
|
||||
"bytes": 2186,
|
||||
"lines": 56,
|
||||
"tokens": 547
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P0-001/manifest.json",
|
||||
"bytes": 1209,
|
||||
"lines": 20,
|
||||
"tokens": 303
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P0-001.md",
|
||||
"bytes": 965,
|
||||
"lines": 23,
|
||||
"tokens": 242
|
||||
}
|
||||
],
|
||||
"sourceTokens": 1792,
|
||||
"evidenceFiles": 3,
|
||||
"evidenceBytes": 2389,
|
||||
"evidenceTokens": 598,
|
||||
"totalTokens": 2390,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3414,
|
||||
"serializedContextTokens": 789,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"contract": {
|
||||
"budget": {
|
||||
"maxErrors": 8,
|
||||
"maxMessageBytes": 256,
|
||||
"maxUnknownFields": 16
|
||||
},
|
||||
"cancellation": {
|
||||
"code": "OPEN_CANCELLED",
|
||||
"preservesRevision": true
|
||||
},
|
||||
"capability": {
|
||||
"level": "L0",
|
||||
"status": "BOUNDED"
|
||||
},
|
||||
"contractId": "workflow:freeze_capability_error_budget_contract",
|
||||
"errors": [
|
||||
{
|
||||
"code": "PROTOCOL_MISMATCH",
|
||||
"recoverable": true,
|
||||
"severity": "error"
|
||||
},
|
||||
{
|
||||
"code": "REVISION_CONFLICT",
|
||||
"recoverable": true,
|
||||
"severity": "error"
|
||||
},
|
||||
{
|
||||
"code": "OPEN_CANCELLED",
|
||||
"recoverable": true,
|
||||
"severity": "info"
|
||||
},
|
||||
{
|
||||
"code": "CAPABILITY_CONTRACT_INVALID",
|
||||
"recoverable": true,
|
||||
"severity": "error"
|
||||
},
|
||||
{
|
||||
"code": "CAPABILITY_CONTRACT_BUDGET_EXCEEDED",
|
||||
"recoverable": true,
|
||||
"severity": "error"
|
||||
},
|
||||
{
|
||||
"code": "CAPABILITY_CONTRACT_UNSUPPORTED",
|
||||
"recoverable": false,
|
||||
"severity": "error"
|
||||
},
|
||||
{
|
||||
"code": "CAPABILITY_CONTRACT_SCHEMA_HASH_MISMATCH",
|
||||
"recoverable": false,
|
||||
"severity": "fatal"
|
||||
},
|
||||
{
|
||||
"code": "CAPABILITY_CONTRACT_MIGRATION_BLOCKED",
|
||||
"recoverable": true,
|
||||
"severity": "error"
|
||||
}
|
||||
],
|
||||
"extensions": {
|
||||
"futureField": {
|
||||
"kind": "opaque",
|
||||
"value": "preserve-me"
|
||||
}
|
||||
},
|
||||
"migration": {
|
||||
"currentSchemaVersion": 1,
|
||||
"preserveUnknown": true,
|
||||
"strategy": "RETAIN_UNKNOWN",
|
||||
"supportedSchemaVersions": [
|
||||
1
|
||||
]
|
||||
},
|
||||
"revision": {
|
||||
"base": 0,
|
||||
"current": 1
|
||||
},
|
||||
"schemaHash": "0ff3b488a0bc722f0e9cc5e8ad2b50105630517819e3f5e21686590bbf77b5d7",
|
||||
"schemaVersion": 1
|
||||
},
|
||||
"fixtureSha256": "ffc4a6635abd4f6d905945da8f79d475f5947d38df16e64a18740e443b6f111c",
|
||||
"operation": "CAPABILITY_ERROR_BUDGET_CONTRACT_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"sourceSha256": "e9449b75b8010caf19c37001e403ce842aa73f7612db5c11ad56399316d0decd",
|
||||
"task": "WBV2-P0-003"
|
||||
}
|
||||
35
tests/golden/WBV2-P0-003/capability-contract-report.json
Normal file
35
tests/golden/WBV2-P0-003/capability-contract-report.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P0-003",
|
||||
"operation": "CAPABILITY_ERROR_BUDGET_CONTRACT_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P0-003-workflow-freeze_capability_error_budget_contract.blend",
|
||||
"sha256": "ffc4a6635abd4f6d905945da8f79d475f5947d38df16e64a18740e443b6f111c"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P0-003/capability-contract-desktop-report.json",
|
||||
"sourceSha256": "e9449b75b8010caf19c37001e403ce842aa73f7612db5c11ad56399316d0decd",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"contractId": "workflow:freeze_capability_error_budget_contract",
|
||||
"capabilityContractStatus": "AVAILABLE",
|
||||
"revision": 1,
|
||||
"schemaHash": "0ff3b488a0bc722f0e9cc5e8ad2b50105630517819e3f5e21686590bbf77b5d7",
|
||||
"unknownExtension": {
|
||||
"kind": "opaque",
|
||||
"value": "preserve-me"
|
||||
}
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"negative": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"unsupportedSchema": "REJECTED_BEFORE_COMMIT",
|
||||
"duplicateErrorCode": "REJECTED_BEFORE_COMMIT",
|
||||
"overBudget": "REJECTED_BEFORE_COMMIT",
|
||||
"schemaHashDrift": "REJECTED_BEFORE_COMMIT"
|
||||
},
|
||||
"nextTask": "WBV2-P1-001"
|
||||
}
|
||||
84
tests/golden/WBV2-P0-003/manifest.json
Normal file
84
tests/golden/WBV2-P0-003/manifest.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P0-003",
|
||||
"parentTask": "WBV2-P0-002",
|
||||
"enablingTask": true,
|
||||
"parityStateChange": false,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "CAPABILITY_ERROR_BUDGET_CONTRACT_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {
|
||||
"path": "tests/golden/WBV2-P0-002/manifest.json",
|
||||
"sha256": "81ad5bf876000b370b619e58e03f6f2225106f16c5e780ff56a218bed7348fd9"
|
||||
},
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P0-003-workflow-freeze_capability_error_budget_contract.blend",
|
||||
"sha256": "ffc4a6635abd4f6d905945da8f79d475f5947d38df16e64a18740e443b6f111c"
|
||||
},
|
||||
"generator": {
|
||||
"path": "tools/web/generated/WBV2-P0-003.py",
|
||||
"sha256": "454be89d67593478666392f5d9eaa819602b0d7022abc1fd455b05d97ad0ca15"
|
||||
},
|
||||
"desktopChecker": {
|
||||
"path": "tools/web/check-wbv2-p0-003-desktop.py",
|
||||
"sha256": "964c192dddc19184281fa9a70b51a6d6caf48faa637e25aaca20d9d51bcfe00d"
|
||||
},
|
||||
"productionReader": {
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"sha256": "4e77fe6a1eb699432c8c5a8fbaae38b223f44a4cdcb314d624e2d2d4c3d570fa"
|
||||
},
|
||||
"protocol": {
|
||||
"path": "web/protocol/capability-contract.ts",
|
||||
"sha256": "4e222d854a1b14f35f1f1df0864fcc40a2e6ed5047a6efd6954437b1f7177ed2"
|
||||
},
|
||||
"checker": {
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"sha256": "19b7ba97bcd86e62dfba2a536d63a041bed9b39b491efc3d115fe58436d2c968"
|
||||
},
|
||||
"preflight": {
|
||||
"path": "tools/web/generated-gap-preflight.mjs",
|
||||
"sha256": "80fcb4b02c68de2703e6565debeafc7ee7d4c04bec125054be9e6e96da5c2ee9"
|
||||
},
|
||||
"wasmJavaScript": {
|
||||
"path": "web/app/src/vendor/blender/web_engine.js",
|
||||
"sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"
|
||||
},
|
||||
"wasmBinary": {
|
||||
"path": "web/app/src/vendor/blender/web_engine.wasm",
|
||||
"sha256": "63877fb8e5ad0fa6ffbe9a69c7f3a66c8997a59fe959bbefda185eb0bb6d0ab6"
|
||||
},
|
||||
"report": {
|
||||
"path": "tests/golden/WBV2-P0-003/capability-contract-report.json",
|
||||
"sha256": "436127af44928dfbfec193229789c64c12e98af6ba2035c572712d22071e49bc"
|
||||
},
|
||||
"desktopReport": {
|
||||
"path": "tests/golden/WBV2-P0-003/capability-contract-desktop-report.json",
|
||||
"sha256": "3034e12d108a1126fab48a20ec75168a86ba1c3c0ec8a91f15f7792fba560e39"
|
||||
},
|
||||
"status": {
|
||||
"path": "docs/status/WBV2-P0-003.md",
|
||||
"sha256": "39d11525bd87d18314c4e81a6b8f53cbf966cabe5a70644863d52fdf7e5eb2fc"
|
||||
},
|
||||
"taskContext": {
|
||||
"path": "tests/golden/WBV2-P0-003/task-context.json",
|
||||
"sha256": "c69a3ada239f203da4fc623f472e9b1693fc6ccd3dab68767eca641794527135"
|
||||
},
|
||||
"wasmBuildLog": {
|
||||
"path": "tests/golden/WBV2-P0-003/wasm-build.log",
|
||||
"sha256": "d278f1482e53384fe9e4863bb58a2d40bfaacd736720ace1e93a96c53790f227"
|
||||
},
|
||||
"commandLog": {
|
||||
"path": "tests/golden/WBV2-P0-003/command.log",
|
||||
"sha256": "4e0e99bcb98f1d7277c0ac3ce0acc59f778428df27efa744ab38f91e6de6216f"
|
||||
}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"unsupportedSchema": "REJECTED_BEFORE_COMMIT",
|
||||
"duplicateErrorCode": "REJECTED_BEFORE_COMMIT",
|
||||
"overBudget": "REJECTED_BEFORE_COMMIT",
|
||||
"schemaHashDrift": "REJECTED_BEFORE_COMMIT"
|
||||
},
|
||||
"nextTask": "WBV2-P1-001"
|
||||
}
|
||||
180
tests/golden/WBV2-P0-003/task-context.json
Normal file
180
tests/golden/WBV2-P0-003/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P0-003",
|
||||
"parentTask": "WBV2-P0-002",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable workflow:freeze_capability_error_budget_contract data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "workflow:freeze_capability_error_budget_contract",
|
||||
"ownerFamily": "PROTOCOL",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P0-003.py -- tests/files/web/generated/WBV2-P0-003-workflow-freeze_capability_error_budget_contract.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P0-003",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P0-003"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 2360,
|
||||
"contextRemainingTokens": 589
|
||||
},
|
||||
"source": {
|
||||
"bytes": 7544,
|
||||
"tokens": 1887
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P0-003-workflow-freeze_capability_error_budget_contract.blend",
|
||||
"bytes": 86455,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P0-003.py",
|
||||
"bytes": 2446,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 244962,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 854257,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P0-003/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P0-003.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P0-003/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"unsupported input fails closed",
|
||||
"schema hashes are stable",
|
||||
"migration policy preserves unknown data"
|
||||
],
|
||||
"nextTask": "WBV2-P1-001",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P0-003.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P0-002/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P0-002.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P0-003.md",
|
||||
"tests/golden/WBV2-P0-002/manifest.json",
|
||||
"docs/status/WBV2-P0-002.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-P0-002",
|
||||
"parentTask": "WBV2-P0-001",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P0-003",
|
||||
"artifactCount": 10
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P0-002 Status",
|
||||
"status: done",
|
||||
"task: WBV2-P0-002",
|
||||
"gate: G0",
|
||||
"updated: 2026-08-24 America/New_York",
|
||||
"The Blender 5.2 baseline is now represented by one deterministic capability map.",
|
||||
"The map covers 6900 immutable legacy entries in 15 capability families, with 281 completed legacy receipts and 6618 pending coverage records. Every entry remains L0 and METADATA_ONLY; no inventory row claims browser feature parity. Unknown entries are explicit and cannot advance a capability.",
|
||||
"Source inventories and legacy states are hash-bound. The old M15/M16 manifests remain unchanged, and the capability lane only consumes them as read-only evidence."
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1860,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 465
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P0-003.md",
|
||||
"bytes": 1860,
|
||||
"lines": 38,
|
||||
"tokens": 465
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P0-002/manifest.json",
|
||||
"bytes": 1931,
|
||||
"lines": 54,
|
||||
"tokens": 483
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P0-002.md",
|
||||
"bytes": 954,
|
||||
"lines": 22,
|
||||
"tokens": 239
|
||||
}
|
||||
],
|
||||
"sourceTokens": 1887,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 1887,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 2911,
|
||||
"serializedContextTokens": 710,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
33
tests/golden/WBV2-P1-001/manifest.json
Normal file
33
tests/golden/WBV2-P1-001/manifest.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-001",
|
||||
"parentTask": "WBV2-P0-003",
|
||||
"enablingTask": true,
|
||||
"parityStateChange": false,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "RUNTIME_VARIANTS_SOURCE_RECEIPTS_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P0-003/manifest.json", "sha256": "130290eb166e2087c9d7736b8f027f494e611dceabb610a89dd0b5469e4f90b2"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P1-001-workflow-stabilize_runtime_variants_and_source_receipts.blend", "sha256": "1f800845bad994e158a55c6a934f243d3b7c30a54c98887e6b35848ceb50e9e4"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P1-001.py", "sha256": "bcc236ffa1661c2c9cb88de680d2cb2b00111e1da282e8a9425ea575b0d016b2"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p1-001-desktop.py", "sha256": "8beddab3c701b221d9d0645b8e3df081e6f5c7fbb683d9983f4a31fbf2273155"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "4e77fe6a1eb699432c8c5a8fbaae38b223f44a4cdcb314d624e2d2d4c3d570fa"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "19b7ba97bcd86e62dfba2a536d63a041bed9b39b491efc3d115fe58436d2c968"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "80fcb4b02c68de2703e6565debeafc7ee7d4c04bec125054be9e6e96da5c2ee9"},
|
||||
"engineManifest": {"path": "web/app/public/engine-manifest.json", "sha256": "7656936afae05b4936d7c8fa8dde94ee9e09ffff3a2c5e6f1b9d8a38f043ac47"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "63877fb8e5ad0fa6ffbe9a69c7f3a66c8997a59fe959bbefda185eb0bb6d0ab6"},
|
||||
"report": {"path": "tests/golden/WBV2-P1-001/runtime-receipt-report.json", "sha256": "9c563f9bcd74e194804a383e9fd96476a7b0d07dcd5bc961a21ce31192371f34"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P1-001/runtime-receipt-desktop-report.json", "sha256": "80562d52ae82a067a9c3f9437d67a23354531131e259680660e1ddd1ca9a5f07"},
|
||||
"status": {"path": "docs/status/WBV2-P1-001.md", "sha256": "5f5a8f3870fbcaf1b2716b3c708a02e6f90f3f55aef5580d1363023da63c9581"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P1-001/task-context.json", "sha256": "b0b931a880ea49c1fef80777329cb567dd6c36c067480e0a189f5dd44cb7b641"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P1-001/command.log", "sha256": "dc1ecaf30a4fde3b0f9051989841d7fbf8dc7161571c57c59510d5486653de1d"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"variantHashDrift": "REJECTED_BEFORE_INITIALIZATION",
|
||||
"releaseMismatch": "REFRESH_REQUIRED_BEFORE_INITIALIZATION",
|
||||
"pthreadFailure": "CLEANED_THEN_SINGLE_FALLBACK",
|
||||
"generation": "ONE_ENGINE_PER_SESSION"
|
||||
},
|
||||
"nextTask": "WBV2-P1-002"
|
||||
}
|
||||
77
tests/golden/WBV2-P1-001/runtime-receipt-desktop-report.json
Normal file
77
tests/golden/WBV2-P1-001/runtime-receipt-desktop-report.json
Normal file
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "1f800845bad994e158a55c6a934f243d3b7c30a54c98887e6b35848ceb50e9e4",
|
||||
"operation": "RUNTIME_VARIANTS_SOURCE_RECEIPT_DESKTOP",
|
||||
"receipt": {
|
||||
"buildSha256": "63877fb8e5ad0fa6ffbe9a69c7f3a66c8997a59fe959bbefda185eb0bb6d0ab6",
|
||||
"engineVersion": "blender-wasm-0.1.0-rc.1",
|
||||
"extensions": {
|
||||
"futureField": {
|
||||
"kind": "opaque",
|
||||
"value": "preserve-me"
|
||||
}
|
||||
},
|
||||
"fallback": {
|
||||
"deterministicOrder": [
|
||||
"pthread",
|
||||
"single"
|
||||
],
|
||||
"policy": "AUTO",
|
||||
"reasonCode": "PTHREAD_INITIALIZATION_FAILED"
|
||||
},
|
||||
"receiptId": "workflow:stabilize_runtime_variants_and_source_receipts",
|
||||
"releaseId": "blender-wasm-0.1.0-rc.1",
|
||||
"schemaVersion": 1,
|
||||
"session": {
|
||||
"generation": 1,
|
||||
"oneEnginePerSession": true
|
||||
},
|
||||
"sourceSha256": "4e77fe6a1eb699432c8c5a8fbaae38b223f44a4cdcb314d624e2d2d4c3d570fa",
|
||||
"variants": [
|
||||
{
|
||||
"id": "single",
|
||||
"memory": {
|
||||
"initialPages": 256,
|
||||
"maximumPages": 32768,
|
||||
"shared": false
|
||||
},
|
||||
"resources": {
|
||||
"js": {
|
||||
"sha256": "25aa51361aa8c95479873240c776d6213c1092dd480ee2a0036d2cbbd561dcad",
|
||||
"url": "/vendor/blender/single/web_engine.js"
|
||||
},
|
||||
"wasm": {
|
||||
"sha256": "7f3a50f1d41b2ac0e6366e84caaabefc3cdfc47c055d5ea459abec654da6fcc0",
|
||||
"url": "/vendor/blender/single/web_engine.wasm"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "pthread",
|
||||
"memory": {
|
||||
"initialPages": 256,
|
||||
"maximumPages": 32768,
|
||||
"shared": true
|
||||
},
|
||||
"resources": {
|
||||
"js": {
|
||||
"sha256": "a64288eeb74fb0696d38d785348f0ba37e7ae716b5a341bf181f178f78e1324d",
|
||||
"url": "/vendor/blender/pthread/web_engine.js"
|
||||
},
|
||||
"pthreadWorker": {
|
||||
"sha256": "a64288eeb74fb0696d38d785348f0ba37e7ae716b5a341bf181f178f78e1324d",
|
||||
"url": "/vendor/blender/pthread/web_engine.js"
|
||||
},
|
||||
"wasm": {
|
||||
"sha256": "f2a26a9221b5d4d5e710463a89e2d93faf9b2d8a9076a455c5ce1a0e52d88b5f",
|
||||
"url": "/vendor/blender/pthread/web_engine.wasm"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"sourceSha256": "21cc1defb5d3cfd31c925baf80e963ac3a041315f144d1069931d00ae888c3bd",
|
||||
"task": "WBV2-P1-001"
|
||||
}
|
||||
37
tests/golden/WBV2-P1-001/runtime-receipt-report.json
Normal file
37
tests/golden/WBV2-P1-001/runtime-receipt-report.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-001",
|
||||
"operation": "RUNTIME_VARIANTS_SOURCE_RECEIPTS_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P1-001-workflow-stabilize_runtime_variants_and_source_receipts.blend",
|
||||
"sha256": "1f800845bad994e158a55c6a934f243d3b7c30a54c98887e6b35848ceb50e9e4"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P1-001/runtime-receipt-desktop-report.json",
|
||||
"sourceSha256": "21cc1defb5d3cfd31c925baf80e963ac3a041315f144d1069931d00ae888c3bd",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"receiptId": "workflow:stabilize_runtime_variants_and_source_receipts",
|
||||
"releaseId": "blender-wasm-0.1.0-rc.1",
|
||||
"sourceSha256": "4e77fe6a1eb699432c8c5a8fbaae38b223f44a4cdcb314d624e2d2d4c3d570fa",
|
||||
"buildSha256": "63877fb8e5ad0fa6ffbe9a69c7f3a66c8997a59fe959bbefda185eb0bb6d0ab6",
|
||||
"variants": [
|
||||
"single",
|
||||
"pthread"
|
||||
],
|
||||
"generation": 1
|
||||
},
|
||||
"fallback": {
|
||||
"policy": "AUTO",
|
||||
"order": [
|
||||
"pthread",
|
||||
"single"
|
||||
],
|
||||
"reasonCode": "PTHREAD_INITIALIZATION_FAILED"
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"nextTask": "WBV2-P1-002"
|
||||
}
|
||||
180
tests/golden/WBV2-P1-001/task-context.json
Normal file
180
tests/golden/WBV2-P1-001/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-001",
|
||||
"parentTask": "WBV2-P0-003",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable workflow:stabilize_runtime_variants_and_source_receipts data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "workflow:stabilize_runtime_variants_and_source_receipts",
|
||||
"ownerFamily": "RUNTIME",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P1-001.py -- tests/files/web/generated/WBV2-P1-001-workflow-stabilize_runtime_variants_and_source_receipts.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P1-001",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P1-001"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 58,
|
||||
"contextRemainingTokens": 13
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9846,
|
||||
"tokens": 2463
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P1-001-workflow-stabilize_runtime_variants_and_source_receipts.blend",
|
||||
"bytes": 86633,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P1-001.py",
|
||||
"bytes": 2356,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 246656,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 858820,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-001/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P1-001.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-001/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"variant fallback is deterministic",
|
||||
"source/build hash is verified",
|
||||
"one engine session has one generation"
|
||||
],
|
||||
"nextTask": "WBV2-P1-002",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P1-001.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P0-003/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P0-003.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P1-001.md",
|
||||
"tests/golden/WBV2-P0-003/manifest.json",
|
||||
"docs/status/WBV2-P0-003.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-P0-003",
|
||||
"parentTask": "WBV2-P0-002",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P1-001",
|
||||
"artifactCount": 16
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P0-003 Status",
|
||||
"status: done",
|
||||
"task: WBV2-P0-003",
|
||||
"gate: G0",
|
||||
"updated: 2026-08-24 America/New_York",
|
||||
"The capability error-budget contract is now a versioned, bounded protocol slice.",
|
||||
"The minimal fixture stores one canonical contract Text datablock with stable",
|
||||
"schema and source hashes, an explicit revision, error budget, cancellation"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1894,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 474
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P1-001.md",
|
||||
"bytes": 1894,
|
||||
"lines": 38,
|
||||
"tokens": 474
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P0-003/manifest.json",
|
||||
"bytes": 3359,
|
||||
"lines": 85,
|
||||
"tokens": 840
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P0-003.md",
|
||||
"bytes": 1794,
|
||||
"lines": 40,
|
||||
"tokens": 449
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2463,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2463,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3487,
|
||||
"serializedContextTokens": 717,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
31
tests/golden/WBV2-P1-002/manifest.json
Normal file
31
tests/golden/WBV2-P1-002/manifest.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-002",
|
||||
"parentTask": "WBV2-P1-001",
|
||||
"enablingTask": true,
|
||||
"parityStateChange": false,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "SCENEIR_STABLE_IDS_BINARY_DELTAS_LOCAL_EXACT",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P1-001/manifest.json", "sha256": "b40c32066ac0667729465568135edde25d8ca94f97d74b613efb94acc8a4b75d"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P1-002-workflow-unify_sceneir_stable_ids_and_binary_deltas.blend", "sha256": "09c4d34f7faf8b175f8a59ecb533ebee61ac9821447c522e8fd41d7892ea9b34"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P1-002.py", "sha256": "1913654f70a429842977e62871ba9c1f8f009e1cdca3df0455f0400c52e9e7df"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p1-002-desktop.py", "sha256": "1db18c365d8e70b5e25896eb9d363bea1d504c8d4a7f18c1527a67eafa9a4095"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "4e77fe6a1eb699432c8c5a8fbaae38b223f44a4cdcb314d624e2d2d4c3d570fa"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "19b7ba97bcd86e62dfba2a536d63a041bed9b39b491efc3d115fe58436d2c968"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "80fcb4b02c68de2703e6565debeafc7ee7d4c04bec125054be9e6e96da5c2ee9"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "63877fb8e5ad0fa6ffbe9a69c7f3a66c8997a59fe959bbefda185eb0bb6d0ab6"},
|
||||
"report": {"path": "tests/golden/WBV2-P1-002/sceneir-report.json", "sha256": "c30e5dfe2e5dd714e6b48e0c27ad2ee22aa003cac252bbff3c8550325ca93bd0"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P1-002/sceneir-desktop-report.json", "sha256": "db22f68fbe399dd79eb5b6c9496af114d1d724b37f07796f9a2427e1d2965978"},
|
||||
"status": {"path": "docs/status/WBV2-P1-002.md", "sha256": "848d9dc0dd95636a3622941507d6f53cb72bfdcb9ac38d6e6bcaf58231ae921f"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P1-002/task-context.json", "sha256": "891be94ecf48e2301636d6156025dbfee1485059094d88db6b880394f8d5a79d"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P1-002/command.log", "sha256": "6c3ddca300d57c3392259f7e77c361fdbdc9397f8c0427c9801ab1f39bcb3a7e"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"stableIds": "PRESERVED_AFTER_SAVE_REOPEN",
|
||||
"canonicalHash": "DESKTOP_WASM_EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P1-003"
|
||||
}
|
||||
42
tests/golden/WBV2-P1-002/sceneir-desktop-report.json
Normal file
42
tests/golden/WBV2-P1-002/sceneir-desktop-report.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"contract": {
|
||||
"binaryDelta": {
|
||||
"baseRevision": 1,
|
||||
"generation": 1,
|
||||
"patches": [
|
||||
{
|
||||
"byteLength": 12,
|
||||
"byteOffset": 0,
|
||||
"field": "positions"
|
||||
}
|
||||
],
|
||||
"schemaVersion": 1
|
||||
},
|
||||
"contractId": "workflow:unify_sceneir_stable_ids_and_binary_deltas",
|
||||
"extensions": {
|
||||
"futureField": {
|
||||
"kind": "opaque",
|
||||
"value": "preserve-me"
|
||||
}
|
||||
},
|
||||
"schemaVersion": 1,
|
||||
"stableIds": {
|
||||
"meshId": "mesh:WBV2P1002CubeMesh",
|
||||
"objectId": "object:WBV2P1002CubeObject"
|
||||
}
|
||||
},
|
||||
"fixtureSha256": "09c4d34f7faf8b175f8a59ecb533ebee61ac9821447c522e8fd41d7892ea9b34",
|
||||
"operation": "SCENEIR_STABLE_IDS_BINARY_DELTA_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"sourceSha256": "5836471c64adf311867303d3cf078a87fb2b2c0453ad531a77ca1b6f8595f202",
|
||||
"summary": {
|
||||
"meshId": "mesh:WBV2P1002CubeMesh",
|
||||
"objectId": "object:WBV2P1002CubeObject",
|
||||
"positionHash": "ab1104d5ac85e1b862a62835af7802096d98bfcc1f933a74b676ae6de297508e",
|
||||
"triangleCount": 12,
|
||||
"vertexCount": 8
|
||||
},
|
||||
"task": "WBV2-P1-002"
|
||||
}
|
||||
28
tests/golden/WBV2-P1-002/sceneir-report.json
Normal file
28
tests/golden/WBV2-P1-002/sceneir-report.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-002",
|
||||
"operation": "SCENEIR_STABLE_IDS_BINARY_DELTAS_LOCAL_EXACT",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P1-002-workflow-unify_sceneir_stable_ids_and_binary_deltas.blend",
|
||||
"sha256": "09c4d34f7faf8b175f8a59ecb533ebee61ac9821447c522e8fd41d7892ea9b34"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P1-002/sceneir-desktop-report.json",
|
||||
"sourceSha256": "5836471c64adf311867303d3cf078a87fb2b2c0453ad531a77ca1b6f8595f202",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"objectId": "object:WBV2P1002CubeObject",
|
||||
"meshId": "mesh:WBV2P1002CubeMesh",
|
||||
"vertexCount": 8,
|
||||
"triangleCount": 12,
|
||||
"canonicalHash": "a0dc01a164bfa12bd27da51db914d854409273a69a15defb6630fcf8e77e396e"
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"negative": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P1-003"
|
||||
}
|
||||
180
tests/golden/WBV2-P1-002/task-context.json
Normal file
180
tests/golden/WBV2-P1-002/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-002",
|
||||
"parentTask": "WBV2-P1-001",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable workflow:unify_sceneir_stable_ids_and_binary_deltas data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "workflow:unify_sceneir_stable_ids_and_binary_deltas",
|
||||
"ownerFamily": "MAIN",
|
||||
"implementationClass": "LOCAL_EXACT"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P1-002.py -- tests/files/web/generated/WBV2-P1-002-workflow-unify_sceneir_stable_ids_and_binary_deltas.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P1-002",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P1-002"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 1112,
|
||||
"contextRemainingTokens": 277
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8792,
|
||||
"tokens": 2199
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P1-002-workflow-unify_sceneir_stable_ids_and_binary_deltas.blend",
|
||||
"bytes": 86861,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P1-002.py",
|
||||
"bytes": 1736,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 246656,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 863349,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-002/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P1-002.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-002/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"IDs survive save/reopen",
|
||||
"malformed chunk is rejected",
|
||||
"desktop and WASM canonical hashes match"
|
||||
],
|
||||
"nextTask": "WBV2-P1-003",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P1-002.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P1-001/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P1-001.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P1-002.md",
|
||||
"tests/golden/WBV2-P1-001/manifest.json",
|
||||
"docs/status/WBV2-P1-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-P1-001",
|
||||
"parentTask": "WBV2-P0-003",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P1-002",
|
||||
"artifactCount": 14
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P1-001 Status",
|
||||
"status: done",
|
||||
"task: WBV2-P1-001",
|
||||
"gate: G1",
|
||||
"updated: 2026-08-25 America/New_York",
|
||||
"The runtime receipt fixture binds the single and pthread variants to one",
|
||||
"release, pinned source/build hashes, explicit memory/resource hashes, a",
|
||||
"deterministic pthread-to-single fallback order, and one engine generation per"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1869,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 468
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P1-002.md",
|
||||
"bytes": 1869,
|
||||
"lines": 38,
|
||||
"tokens": 468
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-001/manifest.json",
|
||||
"bytes": 2740,
|
||||
"lines": 34,
|
||||
"tokens": 685
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P1-001.md",
|
||||
"bytes": 1384,
|
||||
"lines": 33,
|
||||
"tokens": 346
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2199,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2199,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3223,
|
||||
"serializedContextTokens": 710,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
32
tests/golden/WBV2-P1-003/manifest.json
Normal file
32
tests/golden/WBV2-P1-003/manifest.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-003",
|
||||
"parentTask": "WBV2-P1-002",
|
||||
"enablingTask": true,
|
||||
"parityStateChange": false,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "MAIN_TRANSACTION_HISTORY_SAVE_LOCAL_EXACT",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P1-002/manifest.json", "sha256": "456b93a29ae0ce65e1490e688e5a8563fbe4ba57ac104814f344ad6e7c2ec668"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P1-003-workflow-unify_main_transaction_history_and_save.blend", "sha256": "71f784357a7c65eea5525a14c2741a92a01cc255b5ffda0dd9ae0a86fffa8e88"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P1-003.py", "sha256": "1f014abd129a927f9cc5640387df8b3b7e59a68a3080cc8a8ea7137e8c354ce9"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p1-003-desktop.py", "sha256": "8303f691cad1d5991251a9c79bd003f7c510982f18843cd68d0aecfca483026a"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "4e77fe6a1eb699432c8c5a8fbaae38b223f44a4cdcb314d624e2d2d4c3d570fa"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "19b7ba97bcd86e62dfba2a536d63a041bed9b39b491efc3d115fe58436d2c968"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "80fcb4b02c68de2703e6565debeafc7ee7d4c04bec125054be9e6e96da5c2ee9"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "63877fb8e5ad0fa6ffbe9a69c7f3a66c8997a59fe959bbefda185eb0bb6d0ab6"},
|
||||
"report": {"path": "tests/golden/WBV2-P1-003/transaction-report.json", "sha256": "28183baa4ee71827b0556a5b4e4bb9c35861a5f3f97da4623a69a03c0ada860f"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P1-003/transaction-desktop-report.json", "sha256": "325b5eedf9d4b94dbf3652d78c27bcb908c47f3acab3d271d108fb0920e36b8d"},
|
||||
"status": {"path": "docs/status/WBV2-P1-003.md", "sha256": "16862eadadb85109b21e24485bfb901fed453b202d64008ba5fb79ca04330570"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P1-003/task-context.json", "sha256": "309f8636a783ccb8a246bc5aa5e4e4dd4789865711b02017b442aa5af02f01a5"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P1-003/command.log", "sha256": "a23b25e16e8e2773bb76d9e3d3efdcff466b7a6541ae21628f6aa593b908fbf2"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"failedCommand": "NO_HISTORY_ENTRY",
|
||||
"staleRevision": "REJECTED_WITHOUT_MUTATION",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveHash": "BYTE_STABLE"
|
||||
},
|
||||
"nextTask": "WBV2-P1-004"
|
||||
}
|
||||
183
tests/golden/WBV2-P1-003/task-context.json
Normal file
183
tests/golden/WBV2-P1-003/task-context.json
Normal file
@@ -0,0 +1,183 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-003",
|
||||
"parentTask": "WBV2-P1-002",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable workflow:unify_main_transaction_history_and_save data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "workflow:unify_main_transaction_history_and_save",
|
||||
"ownerFamily": "MAIN",
|
||||
"implementationClass": "LOCAL_EXACT"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P1-003.py -- tests/files/web/generated/WBV2-P1-003-workflow-unify_main_transaction_history_and_save.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P1-003",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P1-003"
|
||||
],
|
||||
"inputPaths": [
|
||||
"tools/web/generated/WBV2-P1-003.py"
|
||||
],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 1646,
|
||||
"contextRemainingTokens": 410
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8258,
|
||||
"tokens": 2066
|
||||
},
|
||||
"selected": [
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P1-003.py",
|
||||
"bytes": 1518,
|
||||
"tokens": 380
|
||||
}
|
||||
],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P1-003-workflow-unify_main_transaction_history_and_save.blend",
|
||||
"bytes": 86826,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 246656,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 868494,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-003/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P1-003.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-003/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 1,
|
||||
"bytes": 1518,
|
||||
"tokens": 380
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"failed/no-op commands add no history",
|
||||
"stale revision cannot commit",
|
||||
"reopen state is byte/hash stable"
|
||||
],
|
||||
"nextTask": "WBV2-P1-004",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P1-003.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P1-002/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P1-002.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P1-003.md",
|
||||
"tests/golden/WBV2-P1-002/manifest.json",
|
||||
"docs/status/WBV2-P1-002.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-P1-002",
|
||||
"parentTask": "WBV2-P1-001",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P1-003",
|
||||
"artifactCount": 13
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P1-002 Status",
|
||||
"status: done",
|
||||
"task: WBV2-P1-002",
|
||||
"gate: G1",
|
||||
"updated: 2026-08-25 America/New_York",
|
||||
"The minimal cube fixture exposes canonical SceneIR stable object/mesh IDs,",
|
||||
"topology counts, positions, and a bounded binary delta contract. Desktop and",
|
||||
"WASM/Main produce the same canonical summary and preserve it through"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1854,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 464
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P1-003.md",
|
||||
"bytes": 1854,
|
||||
"lines": 38,
|
||||
"tokens": 464
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-002/manifest.json",
|
||||
"bytes": 2495,
|
||||
"lines": 32,
|
||||
"tokens": 624
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P1-002.md",
|
||||
"bytes": 1110,
|
||||
"lines": 28,
|
||||
"tokens": 278
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2066,
|
||||
"evidenceFiles": 1,
|
||||
"evidenceBytes": 1518,
|
||||
"evidenceTokens": 380,
|
||||
"totalTokens": 2446,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3470,
|
||||
"serializedContextTokens": 744,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
29
tests/golden/WBV2-P1-003/transaction-desktop-report.json
Normal file
29
tests/golden/WBV2-P1-003/transaction-desktop-report.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"contract": {
|
||||
"contractId": "workflow:unify_main_transaction_history_and_save",
|
||||
"history": {
|
||||
"failedCommandAddsHistory": false,
|
||||
"undoRedo": "SUPPORTED"
|
||||
},
|
||||
"initialVisibility": true,
|
||||
"mutation": {
|
||||
"command": "setObjectVisibility",
|
||||
"visible": false
|
||||
},
|
||||
"revision": {
|
||||
"staleCommit": "REJECTED"
|
||||
},
|
||||
"save": {
|
||||
"atomic": true,
|
||||
"byteStable": true
|
||||
},
|
||||
"schemaVersion": 1
|
||||
},
|
||||
"fixtureSha256": "71f784357a7c65eea5525a14c2741a92a01cc255b5ffda0dd9ae0a86fffa8e88",
|
||||
"objectId": "object:WBV2P1003CubeObject",
|
||||
"operation": "MAIN_TRANSACTION_HISTORY_SAVE_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-003"
|
||||
}
|
||||
32
tests/golden/WBV2-P1-003/transaction-report.json
Normal file
32
tests/golden/WBV2-P1-003/transaction-report.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-003",
|
||||
"operation": "MAIN_TRANSACTION_HISTORY_SAVE_LOCAL_EXACT",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P1-003-workflow-unify_main_transaction_history_and_save.blend",
|
||||
"sha256": "71f784357a7c65eea5525a14c2741a92a01cc255b5ffda0dd9ae0a86fffa8e88"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P1-003/transaction-desktop-report.json",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"objectId": "object:WBV2P1003CubeObject",
|
||||
"initialRevision": 1,
|
||||
"mutatedRevision": 2,
|
||||
"saveSha256": "8bfe012973f24edff2d1cc9c7e240e24fd9b0b97c133fdcabfadfd63427a363b"
|
||||
},
|
||||
"history": {
|
||||
"failedCommandAddsHistory": false,
|
||||
"undo": "EXACT",
|
||||
"redo": "EXACT",
|
||||
"staleRevision": "REJECTED"
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"negative": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P1-004"
|
||||
}
|
||||
35
tests/golden/WBV2-P1-004/manifest.json
Normal file
35
tests/golden/WBV2-P1-004/manifest.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-004",
|
||||
"parentTask": "WBV2-P1-003",
|
||||
"enablingTask": true,
|
||||
"parityStateChange": false,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "WORKER_CANCEL_RESTART_DISPOSE_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P1-003/manifest.json", "sha256": "bcdd4835ddc3f668419f6f5d505e010a7404d3c129bf85f99f587daa648f2ae1"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P1-004-workflow-harden_worker_cancel_restart_and_dispose.blend", "sha256": "c17cf938451b7bdbcda9a04b1e6436f217269e3167804cc785fd0d32e2d9d4bb"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P1-004.py", "sha256": "beea3a224b47bc2c16de09805e778afd223da44f043a04929148cafcdfe3d67e"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p1-004-desktop.py", "sha256": "2c305e8cc4d2c4651343a40513a038d6a5ce4cd82159df4c7497698908bf2f79"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "9aa7dd546473eaeb63e62dd3c9ccc6bfdbd50452f06201ad5bfa93cde661c375"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "8ea2d0ea85ad508fe447316e84ebc992c772b07907c61b0b23f6dac4800ad96e"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "9aa30f025af3bc0c1a690e7deaf6ed634179000b535019a7ab5571c463e14d6e"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "39f3e713d89fff92e1126108321ec1f102d777abf194404d4e2b27d31b123cb0"},
|
||||
"report": {"path": "tests/golden/WBV2-P1-004/worker-lifecycle-report.json", "sha256": "2587eae7937c8c6d2611cad8dc819d385ba43799a5897b2d48417e929bc31e52"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P1-004/worker-lifecycle-desktop-report.json", "sha256": "b8f7c388a5203fcf8abf56eff2d6ec685f69900a44f080e7529bf77a33edd7ad"},
|
||||
"status": {"path": "docs/status/WBV2-P1-004.md", "sha256": "479be7cdc89d63b476d2b293e27d90d54ee7b96bad79063e11d66bc3601417c3"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P1-004/task-context.json", "sha256": "879cb5c392344b6abad688011ae3f4ef9229727d64c9551628a94e3f442a3638"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P1-004/command.log", "sha256": "a6c1cdf44cf6feef1919a3621004ba37bd7b9e29dc652cd8ef6417caaa539c7a"},
|
||||
"wasmBuildLog": {"path": "tests/golden/WBV2-P1-004/wasm-build.log", "sha256": "6855f81eaebc59a24adce6f99171e849d56e994ade4b3f656fb05da666695652"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"hashDrift": "REJECTED_BEFORE_COMMIT",
|
||||
"cancelledResult": "NEVER_PUBLISHED",
|
||||
"generationMismatch": "REJECTED",
|
||||
"ownerBudgetAfterDispose": "ZERO"
|
||||
},
|
||||
"nextTask": "WBV2-P1-005"
|
||||
}
|
||||
180
tests/golden/WBV2-P1-004/task-context.json
Normal file
180
tests/golden/WBV2-P1-004/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-004",
|
||||
"parentTask": "WBV2-P1-003",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable workflow:harden_worker_cancel_restart_and_dispose data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "workflow:harden_worker_cancel_restart_and_dispose",
|
||||
"ownerFamily": "RUNTIME",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P1-004.py -- tests/files/web/generated/WBV2-P1-004-workflow-harden_worker_cancel_restart_and_dispose.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P1-004",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P1-004"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 1555,
|
||||
"contextRemainingTokens": 388
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8349,
|
||||
"tokens": 2088
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P1-004-workflow-harden_worker_cancel_restart_and_dispose.blend",
|
||||
"bytes": 87052,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P1-004.py",
|
||||
"bytes": 2422,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 251180,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 872919,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-004/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P1-004.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-004/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"cancel never publishes result",
|
||||
"generation mismatch is rejected",
|
||||
"CPU/WASM/GPU owners return to budget"
|
||||
],
|
||||
"nextTask": "WBV2-P1-005",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P1-004.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P1-003/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P1-003.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P1-004.md",
|
||||
"tests/golden/WBV2-P1-003/manifest.json",
|
||||
"docs/status/WBV2-P1-003.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-P1-003",
|
||||
"parentTask": "WBV2-P1-002",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P1-004",
|
||||
"artifactCount": 13
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P1-003 Status",
|
||||
"status: done",
|
||||
"task: WBV2-P1-003",
|
||||
"gate: G1",
|
||||
"updated: 2026-08-25 America/New_York",
|
||||
"The transaction fixture verifies a bounded Main command history: failed",
|
||||
"commands do not create a history entry, valid visibility changes advance the",
|
||||
"revision, stale base revisions are rejected, undo/redo restore the exact"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1864,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 466
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P1-004.md",
|
||||
"bytes": 1864,
|
||||
"lines": 38,
|
||||
"tokens": 466
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-003/manifest.json",
|
||||
"bytes": 2528,
|
||||
"lines": 33,
|
||||
"tokens": 632
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P1-003.md",
|
||||
"bytes": 1158,
|
||||
"lines": 30,
|
||||
"tokens": 290
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2088,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2088,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3112,
|
||||
"serializedContextTokens": 712,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"contract": {
|
||||
"budget": {
|
||||
"maxInputBytes": 1048576,
|
||||
"maxLiveRequests": 1,
|
||||
"releaseAfterCancel": true
|
||||
},
|
||||
"cancel": {
|
||||
"code": "OPEN_CANCELLED",
|
||||
"preservesRevision": true,
|
||||
"resultPublished": false
|
||||
},
|
||||
"contractId": "workflow:harden_worker_cancel_restart_and_dispose",
|
||||
"dispose": {
|
||||
"doubleDispose": "NOOP",
|
||||
"idempotent": true,
|
||||
"released": true
|
||||
},
|
||||
"extensions": {
|
||||
"futureField": {
|
||||
"kind": "opaque",
|
||||
"value": "preserve-me"
|
||||
}
|
||||
},
|
||||
"generation": {
|
||||
"afterRestart": 2,
|
||||
"initial": 1,
|
||||
"staleResult": "REJECTED"
|
||||
},
|
||||
"owners": {
|
||||
"cpu": {
|
||||
"afterCancel": 0,
|
||||
"afterDispose": 0,
|
||||
"afterRestart": 0,
|
||||
"peak": 1
|
||||
},
|
||||
"gpu": {
|
||||
"afterCancel": 0,
|
||||
"afterDispose": 0,
|
||||
"afterRestart": 0,
|
||||
"peak": 1
|
||||
},
|
||||
"wasm": {
|
||||
"afterCancel": 0,
|
||||
"afterDispose": 0,
|
||||
"afterRestart": 0,
|
||||
"peak": 1
|
||||
}
|
||||
},
|
||||
"schemaHash": "4567145720b21ffab0202d82584bc5ef41a829bc6a1be13683c35ed0115345ac",
|
||||
"schemaVersion": 1
|
||||
},
|
||||
"fixtureSha256": "c17cf938451b7bdbcda9a04b1e6436f217269e3167804cc785fd0d32e2d9d4bb",
|
||||
"operation": "WORKER_CANCEL_RESTART_DISPOSE_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"sourceSha256": "fe81c6faf84b9cc55ead37fd29dfeecd2bc8d279263ee14d6efffa1cef3e65ca",
|
||||
"task": "WBV2-P1-004"
|
||||
}
|
||||
62
tests/golden/WBV2-P1-004/worker-lifecycle-report.json
Normal file
62
tests/golden/WBV2-P1-004/worker-lifecycle-report.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-004",
|
||||
"operation": "WORKER_CANCEL_RESTART_DISPOSE_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P1-004-workflow-harden_worker_cancel_restart_and_dispose.blend",
|
||||
"sha256": "c17cf938451b7bdbcda9a04b1e6436f217269e3167804cc785fd0d32e2d9d4bb"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P1-004/worker-lifecycle-desktop-report.json",
|
||||
"sourceSha256": "fe81c6faf84b9cc55ead37fd29dfeecd2bc8d279263ee14d6efffa1cef3e65ca",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"contractId": "workflow:harden_worker_cancel_restart_and_dispose",
|
||||
"workerLifecycleContractStatus": "AVAILABLE",
|
||||
"revision": 1,
|
||||
"generation": {
|
||||
"afterRestart": 2,
|
||||
"initial": 1,
|
||||
"staleResult": "REJECTED"
|
||||
}
|
||||
},
|
||||
"cancel": {
|
||||
"resultPublished": false,
|
||||
"code": "OPEN_CANCELLED",
|
||||
"staleResult": "REJECTED"
|
||||
},
|
||||
"owners": {
|
||||
"cpu": {
|
||||
"afterCancel": 0,
|
||||
"afterDispose": 0,
|
||||
"afterRestart": 0,
|
||||
"peak": 1
|
||||
},
|
||||
"gpu": {
|
||||
"afterCancel": 0,
|
||||
"afterDispose": 0,
|
||||
"afterRestart": 0,
|
||||
"peak": 1
|
||||
},
|
||||
"wasm": {
|
||||
"afterCancel": 0,
|
||||
"afterDispose": 0,
|
||||
"afterRestart": 0,
|
||||
"peak": 1
|
||||
}
|
||||
},
|
||||
"dispose": {
|
||||
"doubleDispose": "NOOP",
|
||||
"idempotent": true,
|
||||
"released": true
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"negative": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"hashDrift": "REJECTED_BEFORE_COMMIT"
|
||||
},
|
||||
"nextTask": "WBV2-P1-005"
|
||||
}
|
||||
35
tests/golden/WBV2-P1-005/manifest.json
Normal file
35
tests/golden/WBV2-P1-005/manifest.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-005",
|
||||
"parentTask": "WBV2-P1-004",
|
||||
"enablingTask": true,
|
||||
"parityStateChange": false,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "STORAGE_JOURNAL_RECOVERY_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P1-004/manifest.json", "sha256": "19d9cbcf2455df8ffad49907b1765aeab45d865bd33a5771ed16a153b29887a1"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P1-005-workflow-harden_opfs_indexeddb_journal_recovery.blend", "sha256": "07455729e45c5b59caddfd2b06dbe76296ef4cb90d558d8a6c345d96f12ebdda"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P1-005.py", "sha256": "de43529b8e5a593ae6e4d7794ab62b049dc19594ac898c0719a0f55cdc56f60d"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p1-005-desktop.py", "sha256": "5f0623982e94c4d7e61c3ededd8a37f9188d9165fad211af4473d604f4532676"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "5cd0dd03ee788f67fe2eb4543589fee4a47c21234a419a6f18b1e3e0c3a3c2e4"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "b9b14de9b38e894d607d851eda3a868c1936529c48f035bbf92a5738905f68f3"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "4df07c381505d7c06050f568c13905d053e7b02294bd210ac162a2dd32e3074b"},
|
||||
"report": {"path": "tests/golden/WBV2-P1-005/storage-journal-report.json", "sha256": "4dcbc6e11868610d71bde782fbfbb84bfd94afdd6168e588d4a4e51cfd728c34"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P1-005/storage-journal-desktop-report.json", "sha256": "c328c0ce9e3a672c79ae21fdbe5f369ce58bd02d3e818f769b395287708c1eed"},
|
||||
"status": {"path": "docs/status/WBV2-P1-005.md", "sha256": "b779068972c37706472da7090c2a58f222e0127430c38880ca524a41cdb4da13"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P1-005/task-context.json", "sha256": "b8353597bffc19c8e005c4ca979916a12fd6cecab6c5e7e42b639e447000c287"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P1-005/command.log", "sha256": "582cbd1a810f1bf7c79948bff064949a6be65093602524ce0e04ffeed61052c1"},
|
||||
"wasmBuildLog": {"path": "tests/golden/WBV2-P1-005/wasm-build.log", "sha256": "7f21f5446576da369e7d925095695103e12be1afdec7a7e899a1d42e468fc74c"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"interruptedCommit": "OLD_PROJECT_USABLE",
|
||||
"hashMismatch": "QUARANTINED",
|
||||
"restart": "RECOVERED",
|
||||
"storageAfterRecovery": "ZERO"
|
||||
},
|
||||
"nextTask": "WBV2-P2-001"
|
||||
}
|
||||
53
tests/golden/WBV2-P1-005/storage-journal-desktop-report.json
Normal file
53
tests/golden/WBV2-P1-005/storage-journal-desktop-report.json
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"contract": {
|
||||
"budget": {
|
||||
"maxJournalEntries": 32,
|
||||
"maxProjectBytes": 4194304
|
||||
},
|
||||
"contractId": "workflow:harden_opfs_indexeddb_journal_recovery",
|
||||
"extensions": {
|
||||
"futureField": {
|
||||
"kind": "opaque",
|
||||
"value": "preserve-me"
|
||||
}
|
||||
},
|
||||
"hash": {
|
||||
"expected": "sha256:project-revision-8",
|
||||
"mismatch": "QUARANTINED",
|
||||
"verified": false
|
||||
},
|
||||
"journal": {
|
||||
"interruptedAt": "BEFORE_PUBLISH",
|
||||
"oldProjectUsable": true,
|
||||
"oldRevision": 7,
|
||||
"recovery": "ROLLBACK_OLD_REVISION",
|
||||
"stagedRevision": 8
|
||||
},
|
||||
"restart": {
|
||||
"generationAfter": 2,
|
||||
"generationBefore": 1,
|
||||
"status": "RECOVERED"
|
||||
},
|
||||
"schemaHash": "c7655279da06b11a53cce4b378f578369e161da132d07b9078024dd6fc796150",
|
||||
"schemaVersion": 1,
|
||||
"storage": {
|
||||
"indexeddb": {
|
||||
"afterRecovery": 0,
|
||||
"journalEntriesBefore": 1,
|
||||
"metadataRevision": 7
|
||||
},
|
||||
"opfs": {
|
||||
"afterRecovery": 0,
|
||||
"projectReadable": true,
|
||||
"stagingFilesBefore": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"fixtureSha256": "07455729e45c5b59caddfd2b06dbe76296ef4cb90d558d8a6c345d96f12ebdda",
|
||||
"operation": "STORAGE_JOURNAL_RECOVERY_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"sourceSha256": "b590362998b513d9fa81acf2ee13308d0b16f8010a8fb13264082b963a9abf5b",
|
||||
"task": "WBV2-P1-005"
|
||||
}
|
||||
50
tests/golden/WBV2-P1-005/storage-journal-report.json
Normal file
50
tests/golden/WBV2-P1-005/storage-journal-report.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-005",
|
||||
"operation": "STORAGE_JOURNAL_RECOVERY_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P1-005-workflow-harden_opfs_indexeddb_journal_recovery.blend",
|
||||
"sha256": "07455729e45c5b59caddfd2b06dbe76296ef4cb90d558d8a6c345d96f12ebdda"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P1-005/storage-journal-desktop-report.json",
|
||||
"sourceSha256": "b590362998b513d9fa81acf2ee13308d0b16f8010a8fb13264082b963a9abf5b",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"contractId": "workflow:harden_opfs_indexeddb_journal_recovery",
|
||||
"storageJournalContractStatus": "AVAILABLE",
|
||||
"revision": 1,
|
||||
"restart": {
|
||||
"generationAfter": 2,
|
||||
"generationBefore": 1,
|
||||
"status": "RECOVERED"
|
||||
}
|
||||
},
|
||||
"journal": {
|
||||
"interruptedCommit": "BEFORE_PUBLISH",
|
||||
"oldProjectUsable": true,
|
||||
"recovery": "ROLLBACK_OLD_REVISION"
|
||||
},
|
||||
"hashMismatch": "QUARANTINED",
|
||||
"storage": {
|
||||
"indexeddb": {
|
||||
"afterRecovery": 0,
|
||||
"journalEntriesBefore": 1,
|
||||
"metadataRevision": 7
|
||||
},
|
||||
"opfs": {
|
||||
"afterRecovery": 0,
|
||||
"projectReadable": true,
|
||||
"stagingFilesBefore": 1
|
||||
}
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"negative": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"hashMismatch": "QUARANTINED"
|
||||
},
|
||||
"nextTask": "WBV2-P2-001"
|
||||
}
|
||||
180
tests/golden/WBV2-P1-005/task-context.json
Normal file
180
tests/golden/WBV2-P1-005/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1-005",
|
||||
"parentTask": "WBV2-P1-004",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable workflow:harden_opfs_indexeddb_journal_recovery data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "workflow:harden_opfs_indexeddb_journal_recovery",
|
||||
"ownerFamily": "STORAGE",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P1-005.py -- tests/files/web/generated/WBV2-P1-005-workflow-harden_opfs_indexeddb_journal_recovery.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P1-005",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P1-005"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 887,
|
||||
"contextRemainingTokens": 220
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9017,
|
||||
"tokens": 2256
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P1-005-workflow-harden_opfs_indexeddb_journal_recovery.blend",
|
||||
"bytes": 87125,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P1-005.py",
|
||||
"bytes": 2336,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 877157,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-005/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P1-005.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-005/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"interrupted commit leaves old project usable",
|
||||
"hash mismatch quarantines payload",
|
||||
"small project recovers after restart"
|
||||
],
|
||||
"nextTask": "WBV2-P2-001",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P1-005.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P1-004/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P1-004.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P1-005.md",
|
||||
"tests/golden/WBV2-P1-004/manifest.json",
|
||||
"docs/status/WBV2-P1-004.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-P1-004",
|
||||
"parentTask": "WBV2-P1-003",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P1-005",
|
||||
"artifactCount": 15
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P1-004 Status",
|
||||
"status: done",
|
||||
"task: WBV2-P1-004",
|
||||
"gate: G1",
|
||||
"updated: 2026-08-25 America/New_York",
|
||||
"The worker lifecycle fixture exposes a bounded cancellation/restart/dispose",
|
||||
"contract through the Blender Text datablock and the WASM SceneIR reader.",
|
||||
"Desktop and WASM agree that cancelled opens publish no result, stale results"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1854,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 464
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P1-005.md",
|
||||
"bytes": 1854,
|
||||
"lines": 38,
|
||||
"tokens": 464
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-004/manifest.json",
|
||||
"bytes": 2886,
|
||||
"lines": 36,
|
||||
"tokens": 722
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P1-004.md",
|
||||
"bytes": 1478,
|
||||
"lines": 33,
|
||||
"tokens": 370
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2256,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2256,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3280,
|
||||
"serializedContextTokens": 714,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"context": {
|
||||
"collection": {
|
||||
"childCollectionIds": [],
|
||||
"id": "collection:WBV2P2001OutlinerCollection",
|
||||
"name": "WBV2P2001OutlinerCollection",
|
||||
"objectIds": [
|
||||
"object:WBV2P2001SelectedObject"
|
||||
]
|
||||
},
|
||||
"scene": {
|
||||
"id": "scene:WBV2P2001Scene",
|
||||
"name": "WBV2P2001Scene",
|
||||
"rootCollectionId": "collection:Scene Collection"
|
||||
},
|
||||
"selection": {
|
||||
"activeObjectId": "object:WBV2P2001SelectedObject",
|
||||
"revision": 1,
|
||||
"selectedObjectIds": [
|
||||
"object:WBV2P2001SelectedObject"
|
||||
]
|
||||
}
|
||||
},
|
||||
"fixtureSha256": "b84250d06f42b32b5c4912cb2411b90dda2167c69681d0e7e861d84352eec78c",
|
||||
"missingData": {
|
||||
"library": null,
|
||||
"pinnedData": null
|
||||
},
|
||||
"operation": "EDITOR_OPEN_SCENE_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-001"
|
||||
}
|
||||
31
tests/golden/WBV2-P2-001/editor-open-scene-report.json
Normal file
31
tests/golden/WBV2-P2-001/editor-open-scene-report.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-001",
|
||||
"operation": "EDITOR_OPEN_SCENE_LOCAL_EXACT",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P2-001-EDITOR.OPEN_SCENE.blend",
|
||||
"sha256": "b84250d06f42b32b5c4912cb2411b90dda2167c69681d0e7e861d84352eec78c"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P2-001/editor-open-scene-desktop-report.json",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"workflowStatus": "AVAILABLE",
|
||||
"sceneId": "scene:WBV2P2001Scene",
|
||||
"rootCollectionId": "collection:WBV2P2001OutlinerCollection",
|
||||
"activeObjectId": "object:WBV2P2001SelectedObject",
|
||||
"selectionRevision": 1,
|
||||
"missingData": {
|
||||
"pinnedData": null,
|
||||
"library": null
|
||||
}
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"negative": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P2-002"
|
||||
}
|
||||
33
tests/golden/WBV2-P2-001/manifest.json
Normal file
33
tests/golden/WBV2-P2-001/manifest.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-001",
|
||||
"parentTask": "WBV2-P1-005",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "EDITOR_OPEN_SCENE_LOCAL_EXACT",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P1-005/manifest.json", "sha256": "cb22c9c218ffcac0fd45527817eb864dbaf8f677e9b18775275f2f0fc8aa302d"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P2-001-EDITOR.OPEN_SCENE.blend", "sha256": "b84250d06f42b32b5c4912cb2411b90dda2167c69681d0e7e861d84352eec78c"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P2-001.py", "sha256": "747c9d734e90673dc7d6b3e01411bfc9443ffda9c22dc61d55c46207740c0df6"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p2-001-desktop.py", "sha256": "17db8ed9655ccdf1bfe0283cba2eae501abfb9cdbccdf5bd7ed665a52ee819d2"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "057753285f557b170cfda69dd0c116854b2042c9163948f2f33eddfb639d4904"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "754300d1fc9cdfffb4286e36054c0ab724c8bad067761e4b7c2718ed236b23e9"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "4df07c381505d7c06050f568c13905d053e7b02294bd210ac162a2dd32e3074b"},
|
||||
"report": {"path": "tests/golden/WBV2-P2-001/editor-open-scene-report.json", "sha256": "f602facfecca629e95f0231ff0e4de4a25b2e7a1b2a7f7103288f8e285be6c6d"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P2-001/editor-open-scene-desktop-report.json", "sha256": "644db9afdd919c938ca1067946e242d516d3aba90aa5a2f32d9754730df8a874"},
|
||||
"status": {"path": "docs/status/WBV2-P2-001.md", "sha256": "29acd859aeb6d173ce4bbdff9fd103b699a0b6ff486c12b7ebecc123b7a1d82e"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P2-001/task-context.json", "sha256": "c2294208826024535cd505938658535352c6f1b8b8938e5bcd2ad90dbe2fe538"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P2-001/command.log", "sha256": "1ff373478efc0559ff869c17e13087856d4fb88609d715193f77dce819b292bd"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"missingData": "STRUCTURED_NULL_FIELDS",
|
||||
"selectionRevision": "MATCHED_DESKTOP",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P2-002"
|
||||
}
|
||||
180
tests/golden/WBV2-P2-001/task-context.json
Normal file
180
tests/golden/WBV2-P2-001/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-001",
|
||||
"parentTask": "WBV2-P1-005",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable EDITOR.OPEN_SCENE data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "EDITOR.OPEN_SCENE",
|
||||
"ownerFamily": "EDITOR",
|
||||
"implementationClass": "LOCAL_EXACT"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P2-001.py -- tests/files/web/generated/WBV2-P2-001-EDITOR.OPEN_SCENE.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P2-001",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P2-001"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 1140,
|
||||
"contextRemainingTokens": 283
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8764,
|
||||
"tokens": 2193
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P2-001-EDITOR.OPEN_SCENE.blend",
|
||||
"bytes": 86465,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P2-001.py",
|
||||
"bytes": 1177,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 881727,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-001/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P2-001.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-001/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"stable IDs and selection revision match",
|
||||
"missing data is structured",
|
||||
"reopen preserves context"
|
||||
],
|
||||
"nextTask": "WBV2-P2-002",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P2-001.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P1-005/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P1-005.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P2-001.md",
|
||||
"tests/golden/WBV2-P1-005/manifest.json",
|
||||
"docs/status/WBV2-P1-005.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-P1-005",
|
||||
"parentTask": "WBV2-P1-004",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P2-001",
|
||||
"artifactCount": 15
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P1-005 Status",
|
||||
"status: done",
|
||||
"task: WBV2-P1-005",
|
||||
"gate: G1",
|
||||
"updated: 2026-08-25 America/New_York",
|
||||
"The storage journal fixture exposes a bounded OPFS/IndexedDB recovery",
|
||||
"contract through the Blender Text datablock and WASM SceneIR reader. Desktop",
|
||||
"and WASM agree that an interrupted commit keeps the old revision usable, a"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1701,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 426
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P2-001.md",
|
||||
"bytes": 1701,
|
||||
"lines": 38,
|
||||
"tokens": 426
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P1-005/manifest.json",
|
||||
"bytes": 2861,
|
||||
"lines": 36,
|
||||
"tokens": 716
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P1-005.md",
|
||||
"bytes": 1403,
|
||||
"lines": 33,
|
||||
"tokens": 351
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2193,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2193,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3217,
|
||||
"serializedContextTokens": 685,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
37
tests/golden/WBV2-P2-002/manifest.json
Normal file
37
tests/golden/WBV2-P2-002/manifest.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-002",
|
||||
"parentTask": "WBV2-P2-001",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "OBJECT_TRANSFORM_HIERARCHY_LOCAL_EXACT",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P2-001/manifest.json", "sha256": "ad6d73ac457d20f95fd080fcdacc38049d2ce9faa8c56f325f9f7f22074d1cb5"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P2-002-OBJECT.TRANSFORM_HIERARCHY.blend", "sha256": "62c70feb65822a58c38024d604d4cf93809372c3b7e79493f7829c4039ae01e6"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P2-002.py", "sha256": "17f6a47ab91b92a8128829b011a3341ba7f9cb67192cb7bc81c1a09f72227d65"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p2-002-desktop.py", "sha256": "d1568d92ccfda05d7b580ab1c8e4a709e617cb65f78bcb995df7da88373c14c5"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"productionApi": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "sha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8"},
|
||||
"productionMainState": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "sha256": "3c31a049714860cc89c5b28ebad887a1978df11f8c528c3dfd7836635ed62fb3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "ed85b49db9539efe2080d47365274e7731175b18e8e02812980fb86c792203cf"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "9eb8feba27f073b79a03f3285a8ffb45aa1c89008931656e4b195d9da21f7002"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P2-002/object-transform-report.json", "sha256": "17ede4ecd88d750dfb88e4ef3ab8467d55eb3be221e0d0f58b47bf20b80e646f"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P2-002/object-transform-desktop-report.json", "sha256": "045543872dd311216d21d57b6f33285234e444c9c77532c7d53f66708d7293fc"},
|
||||
"status": {"path": "docs/status/WBV2-P2-002.md", "sha256": "380a34433691aea47a6e34a7deb1c506dfde8dac2d1773d1e4b11579fc08b7a3"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P2-002/task-context.json", "sha256": "e72ab724eb1f096ec1927091fac80c121343ea8a3e0a675f33032f84d47840be"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P2-002/command.log", "sha256": "790054e07e23af09908cb2d2518cbe8607c503d6f4384a166cc25b5276b1445d"},
|
||||
"wasmBuildLog": {"path": "tests/golden/WBV2-P2-002/wasm-build.log", "sha256": "a74e9b6691395cb4fea394bf711716774a5fc9349196706f8701c5ba285bf95e"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"parentCycle": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"lockedOrLibraryTarget": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"saveReopen": "EXACT",
|
||||
"undoRedo": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P2-003"
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "62c70feb65822a58c38024d604d4cf93809372c3b7e79493f7829c4039ae01e6",
|
||||
"operation": "OBJECT_TRANSFORM_HIERARCHY_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"scene": {
|
||||
"collections": {
|
||||
"source": {
|
||||
"id": "collection:WBV2P2002Source",
|
||||
"objectIds": [
|
||||
"object:WBV2P2002Parent",
|
||||
"object:WBV2P2002Child"
|
||||
]
|
||||
},
|
||||
"target": {
|
||||
"id": "collection:WBV2P2002Target",
|
||||
"objectIds": []
|
||||
}
|
||||
},
|
||||
"objects": {
|
||||
"child": {
|
||||
"dataId": "mesh:WBV2P2002ChildMesh",
|
||||
"id": "object:WBV2P2002Child",
|
||||
"parentId": "object:WBV2P2002Parent",
|
||||
"rotationEuler": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"scale": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"translation": [
|
||||
0.0,
|
||||
2.0,
|
||||
0.0
|
||||
],
|
||||
"worldTranslation": [
|
||||
1.0,
|
||||
2.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"parent": {
|
||||
"dataId": "mesh:WBV2P2002ParentMesh",
|
||||
"id": "object:WBV2P2002Parent",
|
||||
"parentId": null,
|
||||
"rotationEuler": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"scale": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
],
|
||||
"translation": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"worldTranslation": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
}
|
||||
},
|
||||
"scene": {
|
||||
"id": "scene:WBV2P2002Scene",
|
||||
"name": "WBV2P2002Scene"
|
||||
},
|
||||
"selection": {
|
||||
"activeObjectId": "object:WBV2P2002Parent",
|
||||
"revision": 1,
|
||||
"selectedObjectIds": [
|
||||
"object:WBV2P2002Parent"
|
||||
]
|
||||
}
|
||||
},
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-002"
|
||||
}
|
||||
40
tests/golden/WBV2-P2-002/object-transform-report.json
Normal file
40
tests/golden/WBV2-P2-002/object-transform-report.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-002",
|
||||
"operation": "OBJECT_TRANSFORM_HIERARCHY_LOCAL_EXACT",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P2-002-OBJECT.TRANSFORM_HIERARCHY.blend",
|
||||
"sha256": "62c70feb65822a58c38024d604d4cf93809372c3b7e79493f7829c4039ae01e6"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P2-002/object-transform-desktop-report.json",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"parentId": "object:WBV2P2002Parent",
|
||||
"childId": "object:WBV2P2002Child",
|
||||
"transformedChildWorldTranslation": [
|
||||
2,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"targetCollectionId": "collection:WBV2P2002Target",
|
||||
"finalRevision": 6
|
||||
},
|
||||
"transactions": {
|
||||
"transform": "COMMITTED",
|
||||
"parentCycle": "REJECTED",
|
||||
"lockedOrLibraryTarget": "REJECTED",
|
||||
"moveCollection": "COMMITTED",
|
||||
"unparent": "COMMITTED",
|
||||
"undo": "EXACT",
|
||||
"redo": "EXACT"
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"negative": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P2-003"
|
||||
}
|
||||
183
tests/golden/WBV2-P2-002/task-context.json
Normal file
183
tests/golden/WBV2-P2-002/task-context.json
Normal file
@@ -0,0 +1,183 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-002",
|
||||
"parentTask": "WBV2-P2-001",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable OBJECT.TRANSFORM_HIERARCHY data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "OBJECT.TRANSFORM_HIERARCHY",
|
||||
"ownerFamily": "EDITOR",
|
||||
"implementationClass": "LOCAL_EXACT"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P2-002.py -- tests/files/web/generated/WBV2-P2-002-OBJECT.TRANSFORM_HIERARCHY.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P2-002",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P2-002"
|
||||
],
|
||||
"inputPaths": [
|
||||
"tools/web/generated/WBV2-P2-002.py"
|
||||
],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 1701,
|
||||
"contextRemainingTokens": 423
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8203,
|
||||
"tokens": 2053
|
||||
},
|
||||
"selected": [
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P2-002.py",
|
||||
"bytes": 1358,
|
||||
"tokens": 340
|
||||
}
|
||||
],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P2-002-OBJECT.TRANSFORM_HIERARCHY.blend",
|
||||
"bytes": 86822,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 888939,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-002/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P2-002.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-002/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 1,
|
||||
"bytes": 1358,
|
||||
"tokens": 340
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"world matrix parity",
|
||||
"cycle/locked/library edits reject",
|
||||
"undo/redo/save/reopen stable"
|
||||
],
|
||||
"nextTask": "WBV2-P2-003",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P2-002.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P2-001/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P2-001.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P2-002.md",
|
||||
"tests/golden/WBV2-P2-001/manifest.json",
|
||||
"docs/status/WBV2-P2-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-P2-001",
|
||||
"parentTask": "WBV2-P1-005",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P2-002",
|
||||
"artifactCount": 14
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P2-001 status",
|
||||
"- task: `WBV2-P2-001`",
|
||||
"- parent: `WBV2-P1-005`",
|
||||
"- parity: `EDITOR.OPEN_SCENE`",
|
||||
"- implementationClass: `LOCAL_EXACT`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P2-001-EDITOR.OPEN_SCENE.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1746,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 437
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P2-002.md",
|
||||
"bytes": 1746,
|
||||
"lines": 38,
|
||||
"tokens": 437
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-001/manifest.json",
|
||||
"bytes": 2645,
|
||||
"lines": 34,
|
||||
"tokens": 662
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P2-001.md",
|
||||
"bytes": 1013,
|
||||
"lines": 28,
|
||||
"tokens": 254
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2053,
|
||||
"evidenceFiles": 1,
|
||||
"evidenceBytes": 1358,
|
||||
"evidenceTokens": 340,
|
||||
"totalTokens": 2393,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3417,
|
||||
"serializedContextTokens": 724,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
36
tests/golden/WBV2-P2-003/manifest.json
Normal file
36
tests/golden/WBV2-P2-003/manifest.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-003",
|
||||
"parentTask": "WBV2-P2-002",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "MESH_EDIT_CORE_LOCAL_EXACT",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P2-002/manifest.json", "sha256": "fa65312256f556ce80609206e266f7fc3ccbeda34eae3da179040f8e80dd017c"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P2-003-MESH.EDIT_CORE.blend", "sha256": "1a9a894c4106d73a4533485d9fdddfe2883f75e4692b8e53dc174308e12fe60b"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P2-003.py", "sha256": "65d90913dfd63b345c5efc7851bf312330b0a37ed31c4fdb928ba36fb25e77b6"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p2-003-desktop.py", "sha256": "640048eb905b3849669f6b74bb19ca126851c8cbd4e525c9b7d00d70fe40e3e6"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"productionApi": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "sha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8"},
|
||||
"productionMainState": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "sha256": "3c31a049714860cc89c5b28ebad887a1978df11f8c528c3dfd7836635ed62fb3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "29582f7109c8e2b8584e85d7cd15dc2f91ce4f276a580eccae249ae8d4a2095f"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "4f38de9f1502b6676cfba72942af965aa040708c40345e36854d3240f8c82729"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P2-003/mesh-edit-report.json", "sha256": "f8bd2ced2e1345248d4b536ef045bb9446a55ca5ae87d834f38904b86521b11d"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P2-003/mesh-edit-desktop-report.json", "sha256": "de03b2c0f35e8d437d164b8d010438c1fbc004f933f8a13470874f02247b74c8"},
|
||||
"status": {"path": "docs/status/WBV2-P2-003.md", "sha256": "b861926c45ab96465e419fccabbcd01d887359d5493e477e12c1d23a1ee1c645"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P2-003/task-context.json", "sha256": "41ab5af171f582c766a47e1dd39c748b6a0709333b45264843ba8cf75216b890"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P2-003/command.log", "sha256": "fec55388964c4f0c2288b35a5046a73779eb918d96225909b9070614c07eb3c1"},
|
||||
"wasmBuildLog": {"path": "tests/golden/WBV2-P2-003/wasm-build.log", "sha256": "90e0120b3f5a5806c188408c5c5a0b3c4b5adade16d66a99640b9ed011ee22c5"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"invalidOperation": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"invalidSelection": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P2-004"
|
||||
}
|
||||
73
tests/golden/WBV2-P2-003/mesh-edit-desktop-report.json
Normal file
73
tests/golden/WBV2-P2-003/mesh-edit-desktop-report.json
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "1a9a894c4106d73a4533485d9fdddfe2883f75e4692b8e53dc174308e12fe60b",
|
||||
"meshes": {
|
||||
"Bevel": {
|
||||
"edgeCount": 4,
|
||||
"faceCount": 1,
|
||||
"meshId": "mesh:WBV2P2003BevelMesh",
|
||||
"objectId": "object:WBV2P2003BevelObject",
|
||||
"positionHash": "6950892ba966c4c44e1aef91ab52d8dfede9a33a1d33f4a5d139bc543d3158c5",
|
||||
"triangleCount": 2,
|
||||
"vertexCount": 4
|
||||
},
|
||||
"Dissolve": {
|
||||
"edgeCount": 4,
|
||||
"faceCount": 1,
|
||||
"meshId": "mesh:WBV2P2003DissolveMesh",
|
||||
"objectId": "object:WBV2P2003DissolveObject",
|
||||
"positionHash": "6950892ba966c4c44e1aef91ab52d8dfede9a33a1d33f4a5d139bc543d3158c5",
|
||||
"triangleCount": 2,
|
||||
"vertexCount": 4
|
||||
},
|
||||
"Extrude": {
|
||||
"edgeCount": 4,
|
||||
"faceCount": 1,
|
||||
"meshId": "mesh:WBV2P2003ExtrudeMesh",
|
||||
"objectId": "object:WBV2P2003ExtrudeObject",
|
||||
"positionHash": "6950892ba966c4c44e1aef91ab52d8dfede9a33a1d33f4a5d139bc543d3158c5",
|
||||
"triangleCount": 2,
|
||||
"vertexCount": 4
|
||||
},
|
||||
"Inset": {
|
||||
"edgeCount": 4,
|
||||
"faceCount": 1,
|
||||
"meshId": "mesh:WBV2P2003InsetMesh",
|
||||
"objectId": "object:WBV2P2003InsetObject",
|
||||
"positionHash": "6950892ba966c4c44e1aef91ab52d8dfede9a33a1d33f4a5d139bc543d3158c5",
|
||||
"triangleCount": 2,
|
||||
"vertexCount": 4
|
||||
},
|
||||
"LoopCut": {
|
||||
"edgeCount": 4,
|
||||
"faceCount": 1,
|
||||
"meshId": "mesh:WBV2P2003LoopCutMesh",
|
||||
"objectId": "object:WBV2P2003LoopCutObject",
|
||||
"positionHash": "6950892ba966c4c44e1aef91ab52d8dfede9a33a1d33f4a5d139bc543d3158c5",
|
||||
"triangleCount": 2,
|
||||
"vertexCount": 4
|
||||
},
|
||||
"Merge": {
|
||||
"edgeCount": 4,
|
||||
"faceCount": 1,
|
||||
"meshId": "mesh:WBV2P2003MergeMesh",
|
||||
"objectId": "object:WBV2P2003MergeObject",
|
||||
"positionHash": "6950892ba966c4c44e1aef91ab52d8dfede9a33a1d33f4a5d139bc543d3158c5",
|
||||
"triangleCount": 2,
|
||||
"vertexCount": 4
|
||||
},
|
||||
"Translate": {
|
||||
"edgeCount": 4,
|
||||
"faceCount": 1,
|
||||
"meshId": "mesh:WBV2P2003TranslateMesh",
|
||||
"objectId": "object:WBV2P2003TranslateObject",
|
||||
"positionHash": "6950892ba966c4c44e1aef91ab52d8dfede9a33a1d33f4a5d139bc543d3158c5",
|
||||
"triangleCount": 2,
|
||||
"vertexCount": 4
|
||||
}
|
||||
},
|
||||
"operation": "MESH_EDIT_CORE_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-003"
|
||||
}
|
||||
84
tests/golden/WBV2-P2-003/mesh-edit-report.json
Normal file
84
tests/golden/WBV2-P2-003/mesh-edit-report.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-003",
|
||||
"operation": "MESH_EDIT_CORE_LOCAL_EXACT",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P2-003-MESH.EDIT_CORE.blend",
|
||||
"sha256": "1a9a894c4106d73a4533485d9fdddfe2883f75e4692b8e53dc174308e12fe60b"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P2-003/mesh-edit-desktop-report.json",
|
||||
"saveReopen": "EXACT",
|
||||
"initialTopology": "quad"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"operations": {
|
||||
"Translate": {
|
||||
"meshId": "mesh:WBV2P2003TranslateMesh",
|
||||
"revision": 2,
|
||||
"vertexCount": 4,
|
||||
"edgeCount": 4,
|
||||
"faceCount": 1,
|
||||
"triangleCount": 2
|
||||
},
|
||||
"Merge": {
|
||||
"meshId": "mesh:WBV2P2003MergeMesh",
|
||||
"revision": 3,
|
||||
"vertexCount": 3,
|
||||
"edgeCount": 3,
|
||||
"faceCount": 1,
|
||||
"triangleCount": 1
|
||||
},
|
||||
"Dissolve": {
|
||||
"meshId": "mesh:WBV2P2003DissolveMesh",
|
||||
"revision": 4,
|
||||
"vertexCount": 4,
|
||||
"edgeCount": 4,
|
||||
"faceCount": 1,
|
||||
"triangleCount": 2
|
||||
},
|
||||
"Extrude": {
|
||||
"meshId": "mesh:WBV2P2003ExtrudeMesh",
|
||||
"revision": 5,
|
||||
"vertexCount": 8,
|
||||
"edgeCount": 12,
|
||||
"faceCount": 6,
|
||||
"triangleCount": 12
|
||||
},
|
||||
"Inset": {
|
||||
"meshId": "mesh:WBV2P2003InsetMesh",
|
||||
"revision": 6,
|
||||
"vertexCount": 8,
|
||||
"edgeCount": 12,
|
||||
"faceCount": 5,
|
||||
"triangleCount": 10
|
||||
},
|
||||
"Bevel": {
|
||||
"meshId": "mesh:WBV2P2003BevelMesh",
|
||||
"revision": 7,
|
||||
"vertexCount": 4,
|
||||
"edgeCount": 4,
|
||||
"faceCount": 1,
|
||||
"triangleCount": 2
|
||||
},
|
||||
"LoopCut": {
|
||||
"meshId": "mesh:WBV2P2003LoopCutMesh",
|
||||
"revision": 8,
|
||||
"vertexCount": 5,
|
||||
"edgeCount": 5,
|
||||
"faceCount": 1,
|
||||
"triangleCount": 3
|
||||
}
|
||||
},
|
||||
"finalRevision": 8
|
||||
},
|
||||
"negative": {
|
||||
"invalidOperation": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"invalidSelection": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"nextTask": "WBV2-P2-004"
|
||||
}
|
||||
180
tests/golden/WBV2-P2-003/task-context.json
Normal file
180
tests/golden/WBV2-P2-003/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-003",
|
||||
"parentTask": "WBV2-P2-002",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable MESH.EDIT_CORE data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "MESH.EDIT_CORE",
|
||||
"ownerFamily": "MESH",
|
||||
"implementationClass": "LOCAL_EXACT"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P2-003.py -- tests/files/web/generated/WBV2-P2-003-MESH.EDIT_CORE.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P2-003",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P2-003"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 825,
|
||||
"contextRemainingTokens": 205
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9079,
|
||||
"tokens": 2271
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P2-003-MESH.EDIT_CORE.blend",
|
||||
"bytes": 88023,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P2-003.py",
|
||||
"bytes": 1161,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 895739,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-003/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P2-003.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-003/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"topology/attributes match",
|
||||
"invalid selection and budget fail closed",
|
||||
"single transaction and reopen stable"
|
||||
],
|
||||
"nextTask": "WBV2-P2-004",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P2-003.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P2-002/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P2-002.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P2-003.md",
|
||||
"tests/golden/WBV2-P2-002/manifest.json",
|
||||
"docs/status/WBV2-P2-002.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-P2-002",
|
||||
"parentTask": "WBV2-P2-001",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P2-003",
|
||||
"artifactCount": 17
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P2-002 status",
|
||||
"- task: `WBV2-P2-002`",
|
||||
"- parent: `WBV2-P2-001`",
|
||||
"- parity: `OBJECT.TRANSFORM_HIERARCHY`",
|
||||
"- implementationClass: `LOCAL_EXACT`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P2-002-OBJECT.TRANSFORM_HIERARCHY.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1684,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 421
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P2-003.md",
|
||||
"bytes": 1684,
|
||||
"lines": 38,
|
||||
"tokens": 421
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-002/manifest.json",
|
||||
"bytes": 3223,
|
||||
"lines": 38,
|
||||
"tokens": 806
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P2-002.md",
|
||||
"bytes": 1373,
|
||||
"lines": 33,
|
||||
"tokens": 344
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2271,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2271,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3295,
|
||||
"serializedContextTokens": 685,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
39
tests/golden/WBV2-P2-004/manifest.json
Normal file
39
tests/golden/WBV2-P2-004/manifest.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-004",
|
||||
"parentTask": "WBV2-P2-003",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN_AND_PLAYWRIGHT_CHROMIUM",
|
||||
"operation": "VIEWPORT_MAIN_OFFSCREEN_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P2-003/manifest.json", "sha256": "79ebc20719fef2b60a3457bca25dac98e755a2f2c1bd3c35361527509a91a987"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P2-004-VIEWPORT.MAIN_OFFSCREEN.blend", "sha256": "69cb86102cad7f6a8e747ed29b3456761ba4a1de7f33e7c0d6dc7d3b5dbd2e17"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P2-004.py", "sha256": "fad8f75b84b5c4c1757645e94d81af265aba8f911d2ffd1c05abcffc24b24a51"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p2-004-desktop.py", "sha256": "cd936e328b79a83db910099a20136bac694c446509d8618cd199d6f8c7d34625"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "29582f7109c8e2b8584e85d7cd15dc2f91ce4f276a580eccae249ae8d4a2095f"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "4f38de9f1502b6676cfba72942af965aa040708c40345e36854d3240f8c82729"},
|
||||
"offscreenProtocol": {"path": "web/app/src/three-adapter/offscreen-viewport-protocol.ts", "sha256": "d79367b6361036a4d5b8cf0d12d9ffce783e3e2b6d686b5b5b152aa40ac9ae2e"},
|
||||
"offscreenViewport": {"path": "web/app/src/three-adapter/offscreen-viewport.ts", "sha256": "1d7d18146d34245e07392022a703ff16f6432093fb88e788927e1347556ffd71"},
|
||||
"offscreenWorker": {"path": "web/app/src/workers/viewport-render.worker.ts", "sha256": "9643724d2530a0af434613d4734f66fb18620a11e9f487d4d9d9e6312374c14b"},
|
||||
"mainViewport": {"path": "web/app/src/three-adapter/viewport.ts", "sha256": "e8d97cb59fd4eca3789aeeb35221a70cf47ef048a5665383d809d0efc49f7119"},
|
||||
"package": {"path": "web/package.json", "sha256": "40b7f14d4f568ae94bedde83e02115c127e0c714e5eb32a6a97b1e1084c4fa68"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P2-004/viewport-report.json", "sha256": "a38e7ff8da3042a82f4d20f9f6c60300ebd6ee393cf3625901c770ebff674dac"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P2-004/viewport-desktop-report.json", "sha256": "24383a87477efe6d72f457819260143d0b5f1a5b5c918a8e39279a13a3bfdc0c"},
|
||||
"status": {"path": "docs/status/WBV2-P2-004.md", "sha256": "56194bd7e40632398823467ab5cc1fd9b633f4605086bd40acc3865a94cfb268"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P2-004/task-context.json", "sha256": "7071c819b734d543cda60f3ac833d6b004befc1f3484c1396ebd9c96afd7c679"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P2-004/command.log", "sha256": "a2f494634f16d33ed5d341d241b190a4dd34c9b0ba39f0834afc1f48f7c67867"},
|
||||
"browserBuildLog": {"path": "tests/golden/WBV2-P2-004/browser-build.log", "sha256": "60187c83b43444ff22d02e505e74a94dc3c4b058d4c4f280ae67701089ab67af"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"mainDeviceLoss": "RECOVERED_WITH_NONBLANK_READBACK",
|
||||
"offscreenDisposeReopen": "EXACT",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P2-005"
|
||||
}
|
||||
180
tests/golden/WBV2-P2-004/task-context.json
Normal file
180
tests/golden/WBV2-P2-004/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-004",
|
||||
"parentTask": "WBV2-P2-003",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable VIEWPORT.MAIN_OFFSCREEN data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "VIEWPORT.MAIN_OFFSCREEN",
|
||||
"ownerFamily": "VIEWPORT",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P2-004.py -- tests/files/web/generated/WBV2-P2-004-VIEWPORT.MAIN_OFFSCREEN.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P2-004",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P2-004"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 1171,
|
||||
"contextRemainingTokens": 292
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8733,
|
||||
"tokens": 2184
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P2-004-VIEWPORT.MAIN_OFFSCREEN.blend",
|
||||
"bytes": 87800,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P2-004.py",
|
||||
"bytes": 1325,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 906837,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-004/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P2-004.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-004/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"both paths have nonblank pixels",
|
||||
"selection/camera revision is shared",
|
||||
"device loss releases resources"
|
||||
],
|
||||
"nextTask": "WBV2-P2-005",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P2-004.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P2-003/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P2-003.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P2-004.md",
|
||||
"tests/golden/WBV2-P2-003/manifest.json",
|
||||
"docs/status/WBV2-P2-003.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-P2-003",
|
||||
"parentTask": "WBV2-P2-002",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P2-004",
|
||||
"artifactCount": 17
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P2-003 status",
|
||||
"- task: `WBV2-P2-003`",
|
||||
"- parent: `WBV2-P2-002`",
|
||||
"- parity: `MESH.EDIT_CORE`",
|
||||
"- implementationClass: `LOCAL_EXACT`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P2-003-MESH.EDIT_CORE.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1735,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 434
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P2-004.md",
|
||||
"bytes": 1735,
|
||||
"lines": 38,
|
||||
"tokens": 434
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-003/manifest.json",
|
||||
"bytes": 3160,
|
||||
"lines": 37,
|
||||
"tokens": 790
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P2-003.md",
|
||||
"bytes": 1039,
|
||||
"lines": 27,
|
||||
"tokens": 260
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2184,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2184,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3208,
|
||||
"serializedContextTokens": 692,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
28
tests/golden/WBV2-P2-004/viewport-desktop-report.json
Normal file
28
tests/golden/WBV2-P2-004/viewport-desktop-report.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "69cb86102cad7f6a8e747ed29b3456761ba4a1de7f33e7c0d6dc7d3b5dbd2e17",
|
||||
"operation": "VIEWPORT_MAIN_OFFSCREEN_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"scene": {
|
||||
"cameraDataId": "camera:WBV2P2004ViewportCamera",
|
||||
"cameraId": "object:WBV2P2004ViewportCamera",
|
||||
"cameraLensMm": 52.0,
|
||||
"cameraLocation": [
|
||||
6.5,
|
||||
-6.5,
|
||||
4.75
|
||||
],
|
||||
"cubeId": "object:WBV2P2004ViewportCube",
|
||||
"cubeLocation": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"faceCount": 6,
|
||||
"meshId": "mesh:WBV2P2004ViewportCubeMesh",
|
||||
"sceneId": "scene:WBV2P2004ViewportScene",
|
||||
"vertexCount": 8
|
||||
},
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-004"
|
||||
}
|
||||
97
tests/golden/WBV2-P2-004/viewport-report.json
Normal file
97
tests/golden/WBV2-P2-004/viewport-report.json
Normal file
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-004",
|
||||
"operation": "VIEWPORT_MAIN_OFFSCREEN_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P2-004-VIEWPORT.MAIN_OFFSCREEN.blend",
|
||||
"sha256": "69cb86102cad7f6a8e747ed29b3456761ba4a1de7f33e7c0d6dc7d3b5dbd2e17"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P2-004/viewport-desktop-report.json",
|
||||
"scene": {
|
||||
"cameraDataId": "camera:WBV2P2004ViewportCamera",
|
||||
"cameraId": "object:WBV2P2004ViewportCamera",
|
||||
"cameraLensMm": 52,
|
||||
"cameraLocation": [
|
||||
6.5,
|
||||
-6.5,
|
||||
4.75
|
||||
],
|
||||
"cubeId": "object:WBV2P2004ViewportCube",
|
||||
"cubeLocation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"faceCount": 6,
|
||||
"meshId": "mesh:WBV2P2004ViewportCubeMesh",
|
||||
"sceneId": "scene:WBV2P2004ViewportScene",
|
||||
"vertexCount": 8
|
||||
},
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"revision": 1,
|
||||
"objectId": "object:WBV2P2004ViewportCube",
|
||||
"cameraObjectId": "object:WBV2P2004ViewportCamera",
|
||||
"cameraDataId": "camera:WBV2P2004ViewportCamera",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"browser": {
|
||||
"runtime": "PLAYWRIGHT_CHROMIUM",
|
||||
"main": {
|
||||
"backend": "webgl-pbr",
|
||||
"deviceStatus": "ready",
|
||||
"rendererPixels": 0,
|
||||
"readbackPixels": 256,
|
||||
"selected": "object:WBV2P2004ViewportCube",
|
||||
"cameraPosition": "4.219781,-4.219781,3.658811",
|
||||
"cameraTarget": "0,0,0",
|
||||
"cameraYaw": "-0.785398",
|
||||
"cameraPitch": "0.550000",
|
||||
"cameraDistance": "7.000000",
|
||||
"viewport": "679x321",
|
||||
"error": "",
|
||||
"deviceRecovery": {
|
||||
"supported": true,
|
||||
"status": "ready",
|
||||
"pixels": 1024
|
||||
},
|
||||
"dispose": "EXACT"
|
||||
},
|
||||
"offscreen": {
|
||||
"backend": "offscreen-worker",
|
||||
"deviceStatus": "ready",
|
||||
"rendererPixels": 61,
|
||||
"readbackPixels": 0,
|
||||
"selected": "object:WBV2P2004ViewportCube",
|
||||
"cameraPosition": "4.219781,-4.219781,3.658811",
|
||||
"cameraTarget": "0,0,0",
|
||||
"cameraYaw": "-0.785398",
|
||||
"cameraPitch": "0.550000",
|
||||
"cameraDistance": "7.000000",
|
||||
"viewport": "679x321",
|
||||
"error": "",
|
||||
"deviceRecovery": {
|
||||
"supported": false,
|
||||
"status": "ready",
|
||||
"pixels": 61
|
||||
},
|
||||
"dispose": "EXACT"
|
||||
},
|
||||
"sharedSelection": "object:WBV2P2004ViewportCube",
|
||||
"sharedCamera": {
|
||||
"position": "4.219781,-4.219781,3.658811",
|
||||
"target": "0,0,0",
|
||||
"yaw": "-0.785398",
|
||||
"pitch": "0.550000",
|
||||
"distance": "7.000000"
|
||||
}
|
||||
},
|
||||
"negative": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P2-005"
|
||||
}
|
||||
38
tests/golden/WBV2-P2-005/manifest.json
Normal file
38
tests/golden/WBV2-P2-005/manifest.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-005",
|
||||
"parentTask": "WBV2-P2-004",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN_AND_PLAYWRIGHT_CHROMIUM",
|
||||
"operation": "WORKFLOW_P0_USER_LOOP_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P2-004/manifest.json", "sha256": "9a511f9620bdc886ab4684ac449dcaa156086cde76c0b95d16795f0f51a304f2"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P2-005-WORKFLOW.P0_USER_LOOP.blend", "sha256": "51788408d7b1a273583872b749eec36191db441d431b2d4ddcfffecddb256999"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P2-005.py", "sha256": "96f6788bbe901f98d1bb2b50ec49e6d0418a8ec3c784e95dce54e7a1eab49e19"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p2-005-desktop.py", "sha256": "176359ff0665ec2fc1b62b0ac9a5af96dbc70977c7e5100c99aed5fd22b5e524"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "0f979e0f5f14a5db97d2f7cb24a8c4e13980db64268d4161cc9b520cad1ac4fa"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "e3460ba1f57bab2b17d98faec55dedc16bc4bcea4c23945196285dd7688f8cfd"},
|
||||
"app": {"path": "web/app/src/app/App.tsx", "sha256": "5861988f3dfbb8c05d36aee3033a72514de53a0cb4ec6f3d832418ef6b5cc8b2"},
|
||||
"engineClient": {"path": "web/app/src/engine-client/WebEngineClient.ts", "sha256": "f6d9a8e0a16403bc6fb765195b8f1a619a28de7a75c59a412f1654d46e8ebc0b"},
|
||||
"glbExporter": {"path": "web/protocol/glb-export.ts", "sha256": "a5d342827860a9e55b49a3bb3a196a01b1e53546325d6e594778afb9360c3125"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P2-005/workflow-report.json", "sha256": "aee794bac23af8acaaabe8ed808fad27a97dc628ed1cadd6224db2573b0a77ec"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P2-005/workflow-desktop-report.json", "sha256": "4a39d9dccfb2fa80992ca6abab2afcfd33052e427e3fd5f602c6bfb96622bdbe"},
|
||||
"status": {"path": "docs/status/WBV2-P2-005.md", "sha256": "f6be0ed47988bf3cab9a562ee36e31057919189fc589e17ced60c313ebf8fcee"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P2-005/task-context.json", "sha256": "9b494efbfa077f3d37b186a42631029e11108cef83a40aae1cab98f41312a276"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P2-005/command.log", "sha256": "a12ee0d21a00299b7d64be7814e479c4ab350e8e799b406af6849527feb2027d"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"cancellation": "RETAINED_PREVIOUS_SCENE_AND_RELEASED_RESOURCES",
|
||||
"workerFault": "RECOVERED_WITH_EDITED_SCENE",
|
||||
"duplicateSave": "SINGLE_COMMITTED_DOWNLOAD",
|
||||
"saveReopen": "EXACT",
|
||||
"glbExport": "VALID_GLTF_BINARY"
|
||||
},
|
||||
"nextTask": "WBV2-P3-001"
|
||||
}
|
||||
180
tests/golden/WBV2-P2-005/task-context.json
Normal file
180
tests/golden/WBV2-P2-005/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-005",
|
||||
"parentTask": "WBV2-P2-004",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable WORKFLOW.P0_USER_LOOP data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "WORKFLOW.P0_USER_LOOP",
|
||||
"ownerFamily": "INTEGRATION",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P2-005.py -- tests/files/web/generated/WBV2-P2-005-WORKFLOW.P0_USER_LOOP.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P2-005",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P2-005"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 564,
|
||||
"contextRemainingTokens": 140
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9340,
|
||||
"tokens": 2336
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P2-005-WORKFLOW.P0_USER_LOOP.blend",
|
||||
"bytes": 87280,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P2-005.py",
|
||||
"bytes": 919,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 919367,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-005/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P2-005.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-005/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"Main revision and exported asset are bound",
|
||||
"fault/cancel leaves old state",
|
||||
"Chromium production path passes"
|
||||
],
|
||||
"nextTask": "WBV2-P3-001",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P2-005.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P2-004/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P2-004.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P2-005.md",
|
||||
"tests/golden/WBV2-P2-004/manifest.json",
|
||||
"docs/status/WBV2-P2-004.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-P2-004",
|
||||
"parentTask": "WBV2-P2-003",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P2-005",
|
||||
"artifactCount": 20
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P2-004 status",
|
||||
"- task: `WBV2-P2-004`",
|
||||
"- parent: `WBV2-P2-003`",
|
||||
"- parity: `VIEWPORT.MAIN_OFFSCREEN`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P2-004-VIEWPORT.MAIN_OFFSCREEN.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1728,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 432
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P2-005.md",
|
||||
"bytes": 1728,
|
||||
"lines": 38,
|
||||
"tokens": 432
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-004/manifest.json",
|
||||
"bytes": 3599,
|
||||
"lines": 40,
|
||||
"tokens": 900
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P2-004.md",
|
||||
"bytes": 1214,
|
||||
"lines": 28,
|
||||
"tokens": 304
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2336,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2336,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3360,
|
||||
"serializedContextTokens": 693,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
20
tests/golden/WBV2-P2-005/workflow-desktop-report.json
Normal file
20
tests/golden/WBV2-P2-005/workflow-desktop-report.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "51788408d7b1a273583872b749eec36191db441d431b2d4ddcfffecddb256999",
|
||||
"operation": "WORKFLOW_P0_USER_LOOP_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"scene": {
|
||||
"faceCount": 6,
|
||||
"location": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"meshId": "mesh:WBV2P2005WorkflowCubeMesh",
|
||||
"objectId": "object:WBV2P2005WorkflowCube",
|
||||
"sceneId": "scene:WBV2P2005WorkflowScene",
|
||||
"vertexCount": 8
|
||||
},
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-005"
|
||||
}
|
||||
66
tests/golden/WBV2-P2-005/workflow-report.json
Normal file
66
tests/golden/WBV2-P2-005/workflow-report.json
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P2-005",
|
||||
"operation": "WORKFLOW_P0_USER_LOOP_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P2-005-WORKFLOW.P0_USER_LOOP.blend",
|
||||
"sha256": "51788408d7b1a273583872b749eec36191db441d431b2d4ddcfffecddb256999"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P2-005/workflow-desktop-report.json",
|
||||
"scene": {
|
||||
"faceCount": 6,
|
||||
"location": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"meshId": "mesh:WBV2P2005WorkflowCubeMesh",
|
||||
"objectId": "object:WBV2P2005WorkflowCube",
|
||||
"sceneId": "scene:WBV2P2005WorkflowScene",
|
||||
"vertexCount": 8
|
||||
},
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"initialRevision": 1,
|
||||
"createdRevision": 2,
|
||||
"transformedRevision": 3,
|
||||
"undoRevision": 4,
|
||||
"redoRevision": 5,
|
||||
"reopenedRevision": 1,
|
||||
"editedObjectId": "object:WBV2P2005EditedCube",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"browser": {
|
||||
"runtime": "PLAYWRIGHT_CHROMIUM",
|
||||
"engineFaultRecovery": "EXACT",
|
||||
"cancellation": "EXACT",
|
||||
"glb": "EXACT",
|
||||
"evidence": {
|
||||
"initialStats": "Objects 1 · Vertices 8 · Faces 6",
|
||||
"editedStats": "Objects 2 · Vertices 16 · Faces 18",
|
||||
"committedRevision": "1",
|
||||
"editedRevision": "2",
|
||||
"recoveryStatus": "SUCCEEDED",
|
||||
"cancellation": {
|
||||
"bytesRead": 4194304,
|
||||
"totalBytes": 41943040,
|
||||
"status": "CANCELLED"
|
||||
},
|
||||
"glb": {
|
||||
"byteLength": 4412,
|
||||
"magic": "glTF",
|
||||
"status": "SUCCEEDED"
|
||||
}
|
||||
}
|
||||
},
|
||||
"negative": {
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"cancellation": "RETAINED_PREVIOUS_SCENE",
|
||||
"duplicateSave": "SINGLE_COMMITTED_DOWNLOAD"
|
||||
},
|
||||
"nextTask": "WBV2-P3-001"
|
||||
}
|
||||
33
tests/golden/WBV2-P3-001/manifest.json
Normal file
33
tests/golden/WBV2-P3-001/manifest.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-001",
|
||||
"parentTask": "WBV2-P2-005",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "MATERIAL_PBR_UV_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P2-005/manifest.json", "sha256": "284eda53bb4191da68a30b4fcb8e02801cb83299864846f7e52875f4d976b7be"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P3-001-MATERIAL.PBR_UV.blend", "sha256": "cdf3a13e88a2084e9ac46b998a9ad1975c5e20e2bc0f2a68038c62de8801ed22"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P3-001.py", "sha256": "1fa6f39ccb9470e8fe9fc7763b9a96e084b75e75f5a73a88de5f7bf321a317d2"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p3-001-desktop.py", "sha256": "28b11bcb36bd52d5bb2968719bbc22874c46253f5eb62bfe1c6acad7f993dd1e"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "b26901f733040884038f38e12bd607da27cd91891776e7b67a774b000180fab6"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "e3460ba1f57bab2b17d98faec55dedc16bc4bcea4c23945196285dd7688f8cfd"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P3-001/material-report.json", "sha256": "8ab3dd49364a2f6c5404249f1433fc1f2085d9deaf9a6d126732dbd7ca9d262c"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P3-001/material-desktop-report.json", "sha256": "7635ae921b318f82bb8f3b0b1bbfadad4239eae2ef68195f4628f94bc996b6f6"},
|
||||
"status": {"path": "docs/status/WBV2-P3-001.md", "sha256": "f0550ca889d8a3991a966b7a8eefc2e15efd19d326bbc0a697b69d74a777d736"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P3-001/task-context.json", "sha256": "fceb8038a8535494c54363b43d01fe1e2166c3c2d658e3ebec045e292f3f02a9"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P3-001/command.log", "sha256": "f93d4c2526d3b22fd3c017804bb3cb8be57828a4a7943703bf15a570184acdf5"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"unsupportedNode": "RETAINED_AND_BLOCKED_BY_WARNING",
|
||||
"invalidUVMap": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P3-002"
|
||||
}
|
||||
33
tests/golden/WBV2-P3-001/material-desktop-report.json
Normal file
33
tests/golden/WBV2-P3-001/material-desktop-report.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "cdf3a13e88a2084e9ac46b998a9ad1975c5e20e2bc0f2a68038c62de8801ed22",
|
||||
"material": {
|
||||
"activeUVMap": "WBV2P3001UV",
|
||||
"baseColor": [
|
||||
0.12,
|
||||
0.34,
|
||||
0.56,
|
||||
1.0
|
||||
],
|
||||
"ior": 1.42,
|
||||
"materialId": "material:WBV2P3001PrincipledMaterial",
|
||||
"materialName": "WBV2P3001PrincipledMaterial",
|
||||
"metallic": 0.67,
|
||||
"nodeTypes": [
|
||||
"ShaderNodeBsdfPrincipled",
|
||||
"ShaderNodeOutputMaterial",
|
||||
"ShaderNodeTexNoise"
|
||||
],
|
||||
"roughness": 0.23,
|
||||
"unsupportedNode": true,
|
||||
"uvHash": "2d377662171031fd2165274c3717ed3e44260f4b5348ba1e54f24a735f00945e",
|
||||
"uvLayerNames": [
|
||||
"WBV2P3001UV"
|
||||
],
|
||||
"uvValueCount": 48
|
||||
},
|
||||
"operation": "MATERIAL_PBR_UV_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-001"
|
||||
}
|
||||
63
tests/golden/WBV2-P3-001/material-report.json
Normal file
63
tests/golden/WBV2-P3-001/material-report.json
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-001",
|
||||
"operation": "MATERIAL_PBR_UV_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P3-001-MATERIAL.PBR_UV.blend",
|
||||
"sha256": "cdf3a13e88a2084e9ac46b998a9ad1975c5e20e2bc0f2a68038c62de8801ed22"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P3-001/material-desktop-report.json",
|
||||
"material": {
|
||||
"activeUVMap": "WBV2P3001UV",
|
||||
"baseColor": [
|
||||
0.12,
|
||||
0.34,
|
||||
0.56,
|
||||
1
|
||||
],
|
||||
"ior": 1.42,
|
||||
"materialId": "material:WBV2P3001PrincipledMaterial",
|
||||
"materialName": "WBV2P3001PrincipledMaterial",
|
||||
"metallic": 0.67,
|
||||
"nodeTypes": [
|
||||
"ShaderNodeBsdfPrincipled",
|
||||
"ShaderNodeOutputMaterial",
|
||||
"ShaderNodeTexNoise"
|
||||
],
|
||||
"roughness": 0.23,
|
||||
"unsupportedNode": true,
|
||||
"uvHash": "2d377662171031fd2165274c3717ed3e44260f4b5348ba1e54f24a735f00945e",
|
||||
"uvLayerNames": [
|
||||
"WBV2P3001UV"
|
||||
],
|
||||
"uvValueCount": 48
|
||||
},
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"initialRevision": 1,
|
||||
"finalRevision": 5,
|
||||
"materialId": "material:WBV2P3001PrincipledMaterial",
|
||||
"meshId": "mesh:WBV2P3001MaterialCubeMesh",
|
||||
"activeUVMap": "WBV2P3001SecondaryUV",
|
||||
"baseColor": [
|
||||
0.20000000298023224,
|
||||
0.4000000059604645,
|
||||
0.6000000238418579,
|
||||
1
|
||||
],
|
||||
"roughness": 0.3100000023841858,
|
||||
"metallic": 0.7200000286102295,
|
||||
"unsupportedNode": true,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"negative": {
|
||||
"unsupportedNode": "RETAINED_AND_BLOCKED_BY_WARNING",
|
||||
"invalidUVMap": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P3-002"
|
||||
}
|
||||
180
tests/golden/WBV2-P3-001/task-context.json
Normal file
180
tests/golden/WBV2-P3-001/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-001",
|
||||
"parentTask": "WBV2-P2-005",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable MATERIAL.PBR_UV data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "MATERIAL.PBR_UV",
|
||||
"ownerFamily": "MATERIAL",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P3-001.py -- tests/files/web/generated/WBV2-P3-001-MATERIAL.PBR_UV.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P3-001",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P3-001"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 995,
|
||||
"contextRemainingTokens": 248
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8909,
|
||||
"tokens": 2228
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P3-001-MATERIAL.PBR_UV.blend",
|
||||
"bytes": 89548,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P3-001.py",
|
||||
"bytes": 1821,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 925517,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-001/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P3-001.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-001/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"desktop/WASM node fields match",
|
||||
"unsupported node retained/blocked",
|
||||
"packed asset survives reopen"
|
||||
],
|
||||
"nextTask": "WBV2-P3-002",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P3-001.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P2-005/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P2-005.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P3-001.md",
|
||||
"tests/golden/WBV2-P2-005/manifest.json",
|
||||
"docs/status/WBV2-P2-005.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-P2-005",
|
||||
"parentTask": "WBV2-P2-004",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P3-001",
|
||||
"artifactCount": 17
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P2-005 status",
|
||||
"- task: `WBV2-P2-005`",
|
||||
"- parent: `WBV2-P2-004`",
|
||||
"- parity: `WORKFLOW.P0_USER_LOOP`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P2-005-WORKFLOW.P0_USER_LOOP.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1695,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 424
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P3-001.md",
|
||||
"bytes": 1695,
|
||||
"lines": 38,
|
||||
"tokens": 424
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P2-005/manifest.json",
|
||||
"bytes": 3199,
|
||||
"lines": 39,
|
||||
"tokens": 800
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P2-005.md",
|
||||
"bytes": 1216,
|
||||
"lines": 27,
|
||||
"tokens": 304
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2228,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2228,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3252,
|
||||
"serializedContextTokens": 685,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
186
tests/golden/WBV2-P3-002/animation-desktop-report.json
Normal file
186
tests/golden/WBV2-P3-002/animation-desktop-report.json
Normal file
@@ -0,0 +1,186 @@
|
||||
{
|
||||
"action": {
|
||||
"channels": [
|
||||
{
|
||||
"frames": [
|
||||
1.0,
|
||||
10.0,
|
||||
20.0
|
||||
],
|
||||
"index": 0,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "location",
|
||||
"values": [
|
||||
0.0,
|
||||
1.0,
|
||||
2.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1.0,
|
||||
10.0,
|
||||
20.0
|
||||
],
|
||||
"index": 1,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "location",
|
||||
"values": [
|
||||
0.0,
|
||||
2.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1.0,
|
||||
10.0,
|
||||
20.0
|
||||
],
|
||||
"index": 2,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "location",
|
||||
"values": [
|
||||
0.0,
|
||||
0.5,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1.0,
|
||||
10.0,
|
||||
20.0
|
||||
],
|
||||
"index": 0,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "rotation_euler",
|
||||
"values": [
|
||||
0.0,
|
||||
0.1,
|
||||
0.4
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1.0,
|
||||
10.0,
|
||||
20.0
|
||||
],
|
||||
"index": 1,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "rotation_euler",
|
||||
"values": [
|
||||
0.0,
|
||||
0.2,
|
||||
0.1
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1.0,
|
||||
10.0,
|
||||
20.0
|
||||
],
|
||||
"index": 2,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "rotation_euler",
|
||||
"values": [
|
||||
0.0,
|
||||
0.3,
|
||||
0.6
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1.0,
|
||||
10.0,
|
||||
20.0
|
||||
],
|
||||
"index": 0,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "scale",
|
||||
"values": [
|
||||
1.0,
|
||||
1.2,
|
||||
0.9
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1.0,
|
||||
10.0,
|
||||
20.0
|
||||
],
|
||||
"index": 1,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "scale",
|
||||
"values": [
|
||||
1.0,
|
||||
0.8,
|
||||
1.3
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1.0,
|
||||
10.0,
|
||||
20.0
|
||||
],
|
||||
"index": 2,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "scale",
|
||||
"values": [
|
||||
1.0,
|
||||
1.1,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
],
|
||||
"id": "action:WBV2P3002TRSAction:object:WBV2P3002AnimatedCube",
|
||||
"name": "WBV2P3002TRSAction",
|
||||
"targetId": "object:WBV2P3002AnimatedCube"
|
||||
},
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "63b8b79115cf7305931cd92cacaef3a2d7ee68b8690056f402bd129048460b1d",
|
||||
"operation": "ANIMATION_TRS_ACTION_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-002"
|
||||
}
|
||||
213
tests/golden/WBV2-P3-002/animation-report.json
Normal file
213
tests/golden/WBV2-P3-002/animation-report.json
Normal file
@@ -0,0 +1,213 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-002",
|
||||
"operation": "ANIMATION_TRS_ACTION_LOCAL_EXACT",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P3-002-ANIMATION.TRS_ACTION.blend",
|
||||
"sha256": "63b8b79115cf7305931cd92cacaef3a2d7ee68b8690056f402bd129048460b1d"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P3-002/animation-desktop-report.json",
|
||||
"action": {
|
||||
"channels": [
|
||||
{
|
||||
"frames": [
|
||||
1,
|
||||
10,
|
||||
20
|
||||
],
|
||||
"index": 0,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "location",
|
||||
"values": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1,
|
||||
10,
|
||||
20
|
||||
],
|
||||
"index": 1,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "location",
|
||||
"values": [
|
||||
0,
|
||||
2,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1,
|
||||
10,
|
||||
20
|
||||
],
|
||||
"index": 2,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "location",
|
||||
"values": [
|
||||
0,
|
||||
0.5,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1,
|
||||
10,
|
||||
20
|
||||
],
|
||||
"index": 0,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "rotation_euler",
|
||||
"values": [
|
||||
0,
|
||||
0.1,
|
||||
0.4
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1,
|
||||
10,
|
||||
20
|
||||
],
|
||||
"index": 1,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "rotation_euler",
|
||||
"values": [
|
||||
0,
|
||||
0.2,
|
||||
0.1
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1,
|
||||
10,
|
||||
20
|
||||
],
|
||||
"index": 2,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "rotation_euler",
|
||||
"values": [
|
||||
0,
|
||||
0.3,
|
||||
0.6
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1,
|
||||
10,
|
||||
20
|
||||
],
|
||||
"index": 0,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "scale",
|
||||
"values": [
|
||||
1,
|
||||
1.2,
|
||||
0.9
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1,
|
||||
10,
|
||||
20
|
||||
],
|
||||
"index": 1,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "scale",
|
||||
"values": [
|
||||
1,
|
||||
0.8,
|
||||
1.3
|
||||
]
|
||||
},
|
||||
{
|
||||
"frames": [
|
||||
1,
|
||||
10,
|
||||
20
|
||||
],
|
||||
"index": 2,
|
||||
"interpolation": [
|
||||
"BEZIER",
|
||||
"BEZIER",
|
||||
"BEZIER"
|
||||
],
|
||||
"path": "scale",
|
||||
"values": [
|
||||
1,
|
||||
1.1,
|
||||
1
|
||||
]
|
||||
}
|
||||
],
|
||||
"id": "action:WBV2P3002TRSAction:object:WBV2P3002AnimatedCube",
|
||||
"name": "WBV2P3002TRSAction",
|
||||
"targetId": "object:WBV2P3002AnimatedCube"
|
||||
},
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"actionId": "action:WBV2P3002TRSAction:object:WBV2P3002AnimatedCube",
|
||||
"initialRevision": 1,
|
||||
"insertedRevision": 2,
|
||||
"finalRevision": 3,
|
||||
"channelCount": 9,
|
||||
"sampledFrames": [
|
||||
1,
|
||||
10,
|
||||
20,
|
||||
25
|
||||
],
|
||||
"changedInterpolation": "location[0]=LINEAR",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"negative": {
|
||||
"staleFrameCommand": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P3-003"
|
||||
}
|
||||
33
tests/golden/WBV2-P3-002/manifest.json
Normal file
33
tests/golden/WBV2-P3-002/manifest.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-002",
|
||||
"parentTask": "WBV2-P3-001",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "ANIMATION_TRS_ACTION_LOCAL_EXACT",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P3-001/manifest.json", "sha256": "e3b037fdcf55b5e64fd770c6fa90d0b72e96b3e764a305df0ceee378fa167191"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P3-002-ANIMATION.TRS_ACTION.blend", "sha256": "63b8b79115cf7305931cd92cacaef3a2d7ee68b8690056f402bd129048460b1d"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P3-002.py", "sha256": "554cb2f010c3ad641fd9889fecffb3c229db6d17f0da5d1b3565ae1ecb7b7264"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p3-002-desktop.py", "sha256": "a0a245d402129eb1440be22a061f10a73e432ab26d3078edc8d8bbfa182464dd"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "1f1528c1e365c52013d41c1b4b9b5457e763e536bedc35d8569d38e4c2fdb883"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "fd6f32cc1527dd950d95684b8cf20b2ce513637f7a3e7eaa05f1442986c94d61"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P3-002/animation-report.json", "sha256": "ac7bb8bbfa6db703c6d128ba5772213f46370be3a986cefcc2da99a1a9aad843"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P3-002/animation-desktop-report.json", "sha256": "b4f6021f1d1f8a3619fe2c6d31438ff06c27ea32f220952b00afbb93cf990b3c"},
|
||||
"status": {"path": "docs/status/WBV2-P3-002.md", "sha256": "c98a2b482dbe0ab075c6d093a596a8fc0907f2d4136abd88379bea862471f434"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P3-002/task-context.json", "sha256": "cd7b2b40ffa32edf31d99d6c05a37a946c2edd9d3d0fd58c3da365bcba4ab01f"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P3-002/command.log", "sha256": "a7ce194f072c321bb9f4ed5739ffc98a8b80c0c596cfb3567f152c802372450b"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"staleFrameCommand": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT",
|
||||
"interpolationHandle": "LOCATION_X_LINEAR_AFTER_COMMAND"
|
||||
},
|
||||
"nextTask": "WBV2-P3-003"
|
||||
}
|
||||
180
tests/golden/WBV2-P3-002/task-context.json
Normal file
180
tests/golden/WBV2-P3-002/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-002",
|
||||
"parentTask": "WBV2-P3-001",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable ANIMATION.TRS_ACTION data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "ANIMATION.TRS_ACTION",
|
||||
"ownerFamily": "ANIMATION",
|
||||
"implementationClass": "LOCAL_EXACT"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P3-002.py -- tests/files/web/generated/WBV2-P3-002-ANIMATION.TRS_ACTION.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P3-002",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P3-002"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 1584,
|
||||
"contextRemainingTokens": 395
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8320,
|
||||
"tokens": 2081
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P3-002-ANIMATION.TRS_ACTION.blend",
|
||||
"bytes": 88107,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P3-002.py",
|
||||
"bytes": 1697,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 931262,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-002/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P3-002.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-002/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"sampled values and handles match",
|
||||
"stale frame result rejected",
|
||||
"undo/save/reopen stable"
|
||||
],
|
||||
"nextTask": "WBV2-P3-003",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P3-002.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P3-001/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P3-001.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P3-002.md",
|
||||
"tests/golden/WBV2-P3-001/manifest.json",
|
||||
"docs/status/WBV2-P3-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-P3-001",
|
||||
"parentTask": "WBV2-P2-005",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P3-002",
|
||||
"artifactCount": 14
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P3-001 status",
|
||||
"- task: `WBV2-P3-001`",
|
||||
"- parent: `WBV2-P2-005`",
|
||||
"- parity: `MATERIAL.PBR_UV`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P3-001-MATERIAL.PBR_UV.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1719,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 430
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P3-002.md",
|
||||
"bytes": 1719,
|
||||
"lines": 38,
|
||||
"tokens": 430
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-001/manifest.json",
|
||||
"bytes": 2650,
|
||||
"lines": 34,
|
||||
"tokens": 663
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P3-001.md",
|
||||
"bytes": 1152,
|
||||
"lines": 27,
|
||||
"tokens": 288
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2081,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2081,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3105,
|
||||
"serializedContextTokens": 686,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
33
tests/golden/WBV2-P3-003/manifest.json
Normal file
33
tests/golden/WBV2-P3-003/manifest.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-003",
|
||||
"parentTask": "WBV2-P3-002",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "RIG_POSE_SKIN_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P3-002/manifest.json", "sha256": "cc36b933a2b6d817ea7226c07d0617ecdf2f89575136a83cb15de4e7c8f59188"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P3-003-RIG.POSE_SKIN.blend", "sha256": "1044ac6b81561ef0f5f22578c279de82fcb2d543eff822d0375d59f35bb6d142"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P3-003.py", "sha256": "a811e8bd42890c17cffa0575f8e629a8fe42db2751cef629ed9c2ca5f8cab821"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p3-003-desktop.py", "sha256": "830a084420632c31ec64fc2a4d68d7007a3e5730d8ff29ab0841c6bc8a6a9923"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "2ce9756a1c2f2a858413adf6051aa4147ad0313b2207e02018fc6f6ed3348a6f"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "273702e48f09e29f06f2918a0450a5a5a1852f94f10e3e22bc3a7a91262a7d84"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P3-003/rig-report.json", "sha256": "13b1227a6dcb02fbbf0d618b6fc8d504fa81a9e7babec1973e9814639a5ea028"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P3-003/rig-desktop-report.json", "sha256": "6331aeeabdfa3a48ab9c1d8fd6cd6fd986b204f1a89d899098539ddbeb678b8f"},
|
||||
"status": {"path": "docs/status/WBV2-P3-003.md", "sha256": "1267edaa74e65c4fa898d574460a8ddad995b501cab6d11542ea585fcebf4b52"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P3-003/task-context.json", "sha256": "a12d0be9cafbb644c7e74946e1d7e5cac4d0bcb212c2cfab8362445c29d90052"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P3-003/command.log", "sha256": "19b83f9e589ff9a81c109b4df70bdb728cd3374a75b5ad7d51e4f5b0c5fbb0dd"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"unsupportedConstraint": "EXPLICIT_LIMIT_ROTATION_TYPE_5",
|
||||
"staleWeightCommand": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P3-004"
|
||||
}
|
||||
209
tests/golden/WBV2-P3-003/rig-desktop-report.json
Normal file
209
tests/golden/WBV2-P3-003/rig-desktop-report.json
Normal file
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "1044ac6b81561ef0f5f22578c279de82fcb2d543eff822d0375d59f35bb6d142",
|
||||
"operation": "RIG_POSE_SKIN_DESKTOP",
|
||||
"rig": {
|
||||
"armature": {
|
||||
"bones": [
|
||||
{
|
||||
"constraints": [],
|
||||
"head": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"name": "WBV2P3003Root",
|
||||
"parent": null,
|
||||
"poseMatrix": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
],
|
||||
"tail": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"constraints": [
|
||||
{
|
||||
"influence": 0.65,
|
||||
"name": "WBV2P3003UnsupportedLimitRotation",
|
||||
"type": "LIMIT_ROTATION"
|
||||
}
|
||||
],
|
||||
"head": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
],
|
||||
"name": "WBV2P3003Tip",
|
||||
"parent": "WBV2P3003Root",
|
||||
"poseMatrix": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.756875,
|
||||
-0.65356,
|
||||
0.0,
|
||||
0.0,
|
||||
0.65356,
|
||||
0.756875,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
],
|
||||
"tail": [
|
||||
0.0,
|
||||
0.0,
|
||||
2.0
|
||||
]
|
||||
}
|
||||
],
|
||||
"id": "armature:WBV2P3003Armature",
|
||||
"name": "WBV2P3003Armature",
|
||||
"objectId": "object:WBV2P3003ArmatureObject"
|
||||
},
|
||||
"mesh": {
|
||||
"armatureModifier": {
|
||||
"name": "WBV2P3003ArmatureDeform",
|
||||
"objectId": "object:WBV2P3003ArmatureObject"
|
||||
},
|
||||
"constraints": [
|
||||
{
|
||||
"influence": 0.8,
|
||||
"name": "WBV2P3003BoundedObjectConstraint",
|
||||
"type": "LIMIT_LOCATION"
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
"WBV2P3003Root",
|
||||
"WBV2P3003Tip"
|
||||
],
|
||||
"id": "mesh:WBV2P3003SkinnedMesh",
|
||||
"objectId": "object:WBV2P3003SkinnedMeshObject",
|
||||
"shapeKeys": [
|
||||
{
|
||||
"name": "Basis",
|
||||
"positions": [
|
||||
-1.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
1.0,
|
||||
0.0,
|
||||
-1.0,
|
||||
1.0,
|
||||
0.0,
|
||||
-1.0,
|
||||
-1.0,
|
||||
2.0,
|
||||
1.0,
|
||||
-1.0,
|
||||
2.0,
|
||||
1.0,
|
||||
1.0,
|
||||
2.0,
|
||||
-1.0,
|
||||
1.0,
|
||||
2.0
|
||||
],
|
||||
"value": 1.0
|
||||
},
|
||||
{
|
||||
"name": "WBV2P3003Smile",
|
||||
"positions": [
|
||||
-1.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
-1.0,
|
||||
0.0,
|
||||
1.0,
|
||||
1.0,
|
||||
0.35,
|
||||
-1.0,
|
||||
1.0,
|
||||
0.0,
|
||||
-1.0,
|
||||
-1.0,
|
||||
2.0,
|
||||
1.0,
|
||||
-1.0,
|
||||
2.0,
|
||||
1.0,
|
||||
1.0,
|
||||
2.35,
|
||||
-1.0,
|
||||
1.0,
|
||||
2.0
|
||||
],
|
||||
"value": 0.4
|
||||
}
|
||||
],
|
||||
"weights": [
|
||||
{
|
||||
"WBV2P3003Root": 1.0,
|
||||
"WBV2P3003Tip": 0.0
|
||||
},
|
||||
{
|
||||
"WBV2P3003Root": 1.0,
|
||||
"WBV2P3003Tip": 0.0
|
||||
},
|
||||
{
|
||||
"WBV2P3003Root": 1.0,
|
||||
"WBV2P3003Tip": 0.0
|
||||
},
|
||||
{
|
||||
"WBV2P3003Root": 1.0,
|
||||
"WBV2P3003Tip": 0.0
|
||||
},
|
||||
{
|
||||
"WBV2P3003Root": 0.2,
|
||||
"WBV2P3003Tip": 0.8
|
||||
},
|
||||
{
|
||||
"WBV2P3003Root": 0.2,
|
||||
"WBV2P3003Tip": 0.8
|
||||
},
|
||||
{
|
||||
"WBV2P3003Root": 0.2,
|
||||
"WBV2P3003Tip": 0.8
|
||||
},
|
||||
{
|
||||
"WBV2P3003Root": 0.2,
|
||||
"WBV2P3003Tip": 0.8
|
||||
}
|
||||
]
|
||||
},
|
||||
"unsupportedConstraint": {
|
||||
"name": "WBV2P3003UnsupportedLimitRotation",
|
||||
"status": "EXPLICIT_UNSUPPORTED_BY_WASM_DEPSGRAPH",
|
||||
"type": "LIMIT_ROTATION"
|
||||
}
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-003"
|
||||
}
|
||||
37
tests/golden/WBV2-P3-003/rig-report.json
Normal file
37
tests/golden/WBV2-P3-003/rig-report.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-003",
|
||||
"operation": "RIG_POSE_SKIN_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P3-003-RIG.POSE_SKIN.blend",
|
||||
"sha256": "1044ac6b81561ef0f5f22578c279de82fcb2d543eff822d0375d59f35bb6d142"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P3-003/rig-desktop-report.json",
|
||||
"armatureId": "armature:WBV2P3003Armature",
|
||||
"boneCount": 2,
|
||||
"groupCount": 2,
|
||||
"shapeKeyCount": 2,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"armatureId": "armature:WBV2P3003Armature",
|
||||
"meshId": "mesh:WBV2P3003SkinnedMesh",
|
||||
"poseMatrices": "EVALUATED",
|
||||
"weights": "MATCHED",
|
||||
"shapeKey": "MATCHED",
|
||||
"initialRevision": 1,
|
||||
"finalRevision": 3,
|
||||
"editedConstraint": "disabled@0.4",
|
||||
"editedVertex": 4,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"negative": {
|
||||
"unsupportedConstraint": "EXPLICIT_LIMIT_ROTATION_TYPE_5",
|
||||
"staleWeightCommand": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P3-004"
|
||||
}
|
||||
180
tests/golden/WBV2-P3-003/task-context.json
Normal file
180
tests/golden/WBV2-P3-003/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-003",
|
||||
"parentTask": "WBV2-P3-002",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable RIG.POSE_SKIN data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "RIG.POSE_SKIN",
|
||||
"ownerFamily": "RIG",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P3-003.py -- tests/files/web/generated/WBV2-P3-003-RIG.POSE_SKIN.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P3-003",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P3-003"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 1327,
|
||||
"contextRemainingTokens": 330
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8577,
|
||||
"tokens": 2146
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P3-003-RIG.POSE_SKIN.blend",
|
||||
"bytes": 88676,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P3-003.py",
|
||||
"bytes": 3475,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 940163,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-003/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P3-003.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-003/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"pose matrices and weights match",
|
||||
"unsupported constraint is explicit",
|
||||
"save/reopen and small recovery pass"
|
||||
],
|
||||
"nextTask": "WBV2-P3-004",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P3-003.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P3-002/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P3-002.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P3-003.md",
|
||||
"tests/golden/WBV2-P3-002/manifest.json",
|
||||
"docs/status/WBV2-P3-002.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-P3-002",
|
||||
"parentTask": "WBV2-P3-001",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P3-003",
|
||||
"artifactCount": 14
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P3-002 status",
|
||||
"- task: `WBV2-P3-002`",
|
||||
"- parent: `WBV2-P3-001`",
|
||||
"- parity: `ANIMATION.TRS_ACTION`",
|
||||
"- implementationClass: `LOCAL_EXACT`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P3-002-ANIMATION.TRS_ACTION.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1680,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 420
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P3-003.md",
|
||||
"bytes": 1680,
|
||||
"lines": 38,
|
||||
"tokens": 420
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-002/manifest.json",
|
||||
"bytes": 2669,
|
||||
"lines": 34,
|
||||
"tokens": 668
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P3-002.md",
|
||||
"bytes": 1429,
|
||||
"lines": 29,
|
||||
"tokens": 358
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2146,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2146,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3170,
|
||||
"serializedContextTokens": 685,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
89
tests/golden/WBV2-P3-004/glb-desktop-report.json
Normal file
89
tests/golden/WBV2-P3-004/glb-desktop-report.json
Normal file
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"canonical": {
|
||||
"animation": {
|
||||
"actionName": "WBV2P3004RoundTripAction",
|
||||
"channelCount": 3,
|
||||
"frameRange": [
|
||||
1,
|
||||
20
|
||||
]
|
||||
},
|
||||
"material": {
|
||||
"baseColor": [
|
||||
0.22,
|
||||
0.48,
|
||||
0.82,
|
||||
1.0
|
||||
],
|
||||
"imagePacked": true,
|
||||
"metallic": 0.35,
|
||||
"name": "WBV2P3004PBRMaterial",
|
||||
"roughness": 0.42
|
||||
},
|
||||
"mesh": {
|
||||
"name": "WBV2P3004RoundTripMesh",
|
||||
"shapeKeys": [
|
||||
{
|
||||
"name": "WBV2P3004Morph",
|
||||
"value": 0.5,
|
||||
"vertexCount": 8
|
||||
}
|
||||
],
|
||||
"triangleCount": 12,
|
||||
"uvLayers": [
|
||||
"WBV2P3004UV"
|
||||
],
|
||||
"vertexCount": 8
|
||||
},
|
||||
"skin": {
|
||||
"bones": [
|
||||
"WBV2P3004Root",
|
||||
"WBV2P3004Tip"
|
||||
],
|
||||
"parents": {
|
||||
"WBV2P3004Root": null,
|
||||
"WBV2P3004Tip": "WBV2P3004Root"
|
||||
},
|
||||
"vertexGroups": [
|
||||
"WBV2P3004Root",
|
||||
"WBV2P3004Tip"
|
||||
],
|
||||
"weightSums": [
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
0.25,
|
||||
0.75
|
||||
],
|
||||
[
|
||||
0.25,
|
||||
0.75
|
||||
],
|
||||
[
|
||||
0.25,
|
||||
0.75
|
||||
],
|
||||
[
|
||||
0.25,
|
||||
0.75
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"fixtureSha256": "64279933b4c2fb00b02496f8e1322893a6c95f8fb99a996c06b8f8323bfbec5d",
|
||||
"operation": "IO_GLB_ROUNDTRIP_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-004"
|
||||
}
|
||||
113
tests/golden/WBV2-P3-004/glb-report.json
Normal file
113
tests/golden/WBV2-P3-004/glb-report.json
Normal file
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-004",
|
||||
"operation": "IO_GLB_ROUNDTRIP_LOCAL_EXACT",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P3-004-IO.GLB_ROUNDTRIP.blend",
|
||||
"sha256": "64279933b4c2fb00b02496f8e1322893a6c95f8fb99a996c06b8f8323bfbec5d"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P3-004/glb-desktop-report.json",
|
||||
"canonical": {
|
||||
"animation": {
|
||||
"actionName": "WBV2P3004RoundTripAction",
|
||||
"channelCount": 3,
|
||||
"frameRange": [
|
||||
1,
|
||||
20
|
||||
]
|
||||
},
|
||||
"material": {
|
||||
"baseColor": [
|
||||
0.22,
|
||||
0.48,
|
||||
0.82,
|
||||
1
|
||||
],
|
||||
"imagePacked": true,
|
||||
"metallic": 0.35,
|
||||
"name": "WBV2P3004PBRMaterial",
|
||||
"roughness": 0.42
|
||||
},
|
||||
"mesh": {
|
||||
"name": "WBV2P3004RoundTripMesh",
|
||||
"shapeKeys": [
|
||||
{
|
||||
"name": "WBV2P3004Morph",
|
||||
"value": 0.5,
|
||||
"vertexCount": 8
|
||||
}
|
||||
],
|
||||
"triangleCount": 12,
|
||||
"uvLayers": [
|
||||
"WBV2P3004UV"
|
||||
],
|
||||
"vertexCount": 8
|
||||
},
|
||||
"skin": {
|
||||
"bones": [
|
||||
"WBV2P3004Root",
|
||||
"WBV2P3004Tip"
|
||||
],
|
||||
"parents": {
|
||||
"WBV2P3004Root": null,
|
||||
"WBV2P3004Tip": "WBV2P3004Root"
|
||||
},
|
||||
"vertexGroups": [
|
||||
"WBV2P3004Root",
|
||||
"WBV2P3004Tip"
|
||||
],
|
||||
"weightSums": [
|
||||
[
|
||||
1
|
||||
],
|
||||
[
|
||||
1
|
||||
],
|
||||
[
|
||||
1
|
||||
],
|
||||
[
|
||||
1
|
||||
],
|
||||
[
|
||||
0.25,
|
||||
0.75
|
||||
],
|
||||
[
|
||||
0.25,
|
||||
0.75
|
||||
],
|
||||
[
|
||||
0.25,
|
||||
0.75
|
||||
],
|
||||
[
|
||||
0.25,
|
||||
0.75
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"glbBytes": 7540,
|
||||
"magic": "glTF",
|
||||
"meshCount": 1,
|
||||
"skinCount": 1,
|
||||
"morphTargetCount": 1,
|
||||
"animationCount": 1,
|
||||
"animationChannelCount": 1,
|
||||
"comparison": "EXACT"
|
||||
},
|
||||
"negative": {
|
||||
"malformed": "REJECTED",
|
||||
"externalUri": "REJECTED_GLB_EXTERNAL_URI_BLOCKED",
|
||||
"overBudget": "REJECTED_GLB_IMPORT_BUDGET_EXCEEDED"
|
||||
},
|
||||
"saveReopen": "EXACT",
|
||||
"nextTask": "WBV2-P3-005"
|
||||
}
|
||||
33
tests/golden/WBV2-P3-004/manifest.json
Normal file
33
tests/golden/WBV2-P3-004/manifest.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-004",
|
||||
"parentTask": "WBV2-P3-003",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "IO_GLB_ROUNDTRIP_LOCAL_EXACT",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P3-003/manifest.json", "sha256": "1b97d2ca9add58a6185a21137729edc4c8b11a2d21be1682793e3d05b9ef9011"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P3-004-IO.GLB_ROUNDTRIP.blend", "sha256": "64279933b4c2fb00b02496f8e1322893a6c95f8fb99a996c06b8f8323bfbec5d"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P3-004.py", "sha256": "b5406e2c3612264c1708f2d8bfb7b90a39b8b179a0beee6fc5a21108e7d1c78c"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p3-004-desktop.py", "sha256": "ff45538a4695331c36f3332a29dc3f745d2cf70c23667ae79988eae654ddae13"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "7c7a0f4a499a186dac777e0f5c1d7b33dba5daa2b507c9a76f560c5c243942e4"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "158e60e76aace9dd55da0ee5edf986886a7fa288bd256c31695d91064cd83e2a"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P3-004/glb-report.json", "sha256": "9f642f50c7764928909346e91ab11becc5e7e3794760e53ea1d3cef9055e8626"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P3-004/glb-desktop-report.json", "sha256": "cae8772fde2b760ed0dbbb72cbbaeaccba185470267689b283191e549544a18d"},
|
||||
"status": {"path": "docs/status/WBV2-P3-004.md", "sha256": "b219d5102db552d7cb0fb2e0697f6a24ccb071beb5a9c0a1c4b87ca513fdd20a"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P3-004/task-context.json", "sha256": "5c60c5b6f37956f7578723d7ec69374dcf2b19d177cac967b876e427d6791d05"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P3-004/command.log", "sha256": "2b4fb1a8dc840ebe2ddecff73727081af0a4690c0deed0946f99fdd2f9b3fbbe"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"malformed": "REJECTED_GLB_JSON",
|
||||
"externalUri": "REJECTED_GLB_EXTERNAL_URI_BLOCKED",
|
||||
"overBudget": "REJECTED_GLB_IMPORT_BUDGET_EXCEEDED",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P3-005"
|
||||
}
|
||||
180
tests/golden/WBV2-P3-004/task-context.json
Normal file
180
tests/golden/WBV2-P3-004/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-004",
|
||||
"parentTask": "WBV2-P3-003",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable IO.GLB_ROUNDTRIP data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "IO.GLB_ROUNDTRIP",
|
||||
"ownerFamily": "IO",
|
||||
"implementationClass": "LOCAL_EXACT"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P3-004.py -- tests/files/web/generated/WBV2-P3-004-IO.GLB_ROUNDTRIP.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P3-004",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P3-004"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 1267,
|
||||
"contextRemainingTokens": 316
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8637,
|
||||
"tokens": 2160
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P3-004-IO.GLB_ROUNDTRIP.blend",
|
||||
"bytes": 91036,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P3-004.py",
|
||||
"bytes": 4214,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 948821,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-004/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P3-004.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-004/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"roundtrip canonical graph matches",
|
||||
"sparse/external URI/budget negatives reject",
|
||||
"no silent loss"
|
||||
],
|
||||
"nextTask": "WBV2-P3-005",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P3-004.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P3-003/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P3-003.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P3-004.md",
|
||||
"tests/golden/WBV2-P3-003/manifest.json",
|
||||
"docs/status/WBV2-P3-003.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-P3-003",
|
||||
"parentTask": "WBV2-P3-002",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P3-004",
|
||||
"artifactCount": 14
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P3-003 status",
|
||||
"- task: `WBV2-P3-003`",
|
||||
"- parent: `WBV2-P3-002`",
|
||||
"- parity: `RIG.POSE_SKIN`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P3-003-RIG.POSE_SKIN.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1692,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 423
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P3-004.md",
|
||||
"bytes": 1692,
|
||||
"lines": 38,
|
||||
"tokens": 423
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-003/manifest.json",
|
||||
"bytes": 2647,
|
||||
"lines": 34,
|
||||
"tokens": 662
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P3-003.md",
|
||||
"bytes": 1499,
|
||||
"lines": 29,
|
||||
"tokens": 375
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2160,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2160,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3184,
|
||||
"serializedContextTokens": 684,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
31
tests/golden/WBV2-P3-005/library-desktop-report.json
Normal file
31
tests/golden/WBV2-P3-005/library-desktop-report.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "86af081b949ac96d6431303464852b4e983cf8c3d05671cacb36e1de4267a425",
|
||||
"operation": "ASSET_LIBRARY_OWNERSHIP_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"sourceClosure": {
|
||||
"image": "WBV2P3005AppendImage",
|
||||
"imagePacked": true,
|
||||
"material": "WBV2P3005AppendMaterial",
|
||||
"mesh": "WBV2P3005AppendMesh",
|
||||
"object": "WBV2P3005AppendObject"
|
||||
},
|
||||
"sourceSha256": "dcda742db77c6af5e05b79e006a0bd89cf1e8ea8d438592cd1ed2e981c7aca76",
|
||||
"state": {
|
||||
"library": {
|
||||
"dependencyIds": [],
|
||||
"name": "WBV2P3005Library.blend",
|
||||
"packed": false,
|
||||
"readOnly": true,
|
||||
"sourcePath": "//WBV2P3005Library.blend"
|
||||
},
|
||||
"linked": {
|
||||
"library": "WBV2P3005Library.blend",
|
||||
"name": "WBV2P3005LinkedObject",
|
||||
"override": false,
|
||||
"readOnly": true
|
||||
}
|
||||
},
|
||||
"task": "WBV2-P3-005"
|
||||
}
|
||||
82
tests/golden/WBV2-P3-005/library-report.json
Normal file
82
tests/golden/WBV2-P3-005/library-report.json
Normal file
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-005",
|
||||
"operation": "ASSET_LIBRARY_APPEND_LINK_OVERRIDE_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P3-005-ASSET.LIBRARY_OPERATIONS.blend",
|
||||
"sha256": "86af081b949ac96d6431303464852b4e983cf8c3d05671cacb36e1de4267a425"
|
||||
},
|
||||
"sourceLibrary": {
|
||||
"path": "tests/files/web/generated/WBV2P3005Library.blend",
|
||||
"sha256": "dcda742db77c6af5e05b79e006a0bd89cf1e8ea8d438592cd1ed2e981c7aca76",
|
||||
"sourceLibraryId": "library:58cde9b79f9fc987dfdac773f4e21d9b3c21a5633f29766342c5e14c7b5eed66",
|
||||
"locator": "//WBV2P3005Library.blend"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P3-005/library-desktop-report.json",
|
||||
"library": {
|
||||
"dependencyIds": [],
|
||||
"name": "WBV2P3005Library.blend",
|
||||
"packed": false,
|
||||
"readOnly": true,
|
||||
"sourcePath": "//WBV2P3005Library.blend"
|
||||
},
|
||||
"linked": {
|
||||
"library": "WBV2P3005Library.blend",
|
||||
"name": "WBV2P3005LinkedObject",
|
||||
"override": false,
|
||||
"readOnly": true
|
||||
},
|
||||
"sourceClosure": {
|
||||
"image": "WBV2P3005AppendImage",
|
||||
"imagePacked": true,
|
||||
"material": "WBV2P3005AppendMaterial",
|
||||
"mesh": "WBV2P3005AppendMesh",
|
||||
"object": "WBV2P3005AppendObject"
|
||||
},
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"initialRevision": 1,
|
||||
"appendedRevision": 2,
|
||||
"appendedObjectId": "object:WBV2P3005AppendObject",
|
||||
"appendedImageStatus": "PACKED",
|
||||
"appendedImagePacked": true,
|
||||
"appendSourceLibraryId": "library:58cde9b79f9fc987dfdac773f4e21d9b3c21a5633f29766342c5e14c7b5eed66",
|
||||
"appendOwner": {
|
||||
"kind": "LOCAL_MAIN",
|
||||
"projectId": "project:wbv2-p3-005",
|
||||
"localDataBlockId": "Object/WBV2P3005AppendObject"
|
||||
},
|
||||
"linkOwner": {
|
||||
"kind": "SOURCE_LIBRARY",
|
||||
"sourceLibraryId": "library:58cde9b79f9fc987dfdac773f4e21d9b3c21a5633f29766342c5e14c7b5eed66",
|
||||
"sourceDataBlockId": "Object/WBV2P3005LinkedObject"
|
||||
},
|
||||
"overrideOwner": {
|
||||
"kind": "LOCAL_OVERRIDE",
|
||||
"projectId": "project:wbv2-p3-005",
|
||||
"localDataBlockId": "Object/WBV2P3005OverrideObject",
|
||||
"referenceSourceDataBlockId": "Object/WBV2P3005LinkedObject",
|
||||
"hierarchyRootDataBlockId": "Object/WBV2P3005OverrideObject"
|
||||
},
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"protocol": {
|
||||
"override": "READY",
|
||||
"reload": "REPLACED",
|
||||
"missing": "MARKED"
|
||||
},
|
||||
"negative": {
|
||||
"staleAppend": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"collisionAppend": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"linkedMutation": "REJECTED_BY_OWNERSHIP",
|
||||
"staleOverride": "BLOCKED_REVISION_CONFLICT",
|
||||
"staleReload": "STALE_REVISION",
|
||||
"staleMissingHash": "STALE_SOURCE_HASH",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P4-001"
|
||||
}
|
||||
38
tests/golden/WBV2-P3-005/manifest.json
Normal file
38
tests/golden/WBV2-P3-005/manifest.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-005",
|
||||
"parentTask": "WBV2-P3-004",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "ASSET_LIBRARY_APPEND_LINK_OVERRIDE_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P3-004/manifest.json", "sha256": "bb4f2783eaa78a0104045048fc9f5d925a78e5a2539f5f1b9e699a067d05fa27"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P3-005-ASSET.LIBRARY_OPERATIONS.blend", "sha256": "86af081b949ac96d6431303464852b4e983cf8c3d05671cacb36e1de4267a425"},
|
||||
"sourceLibrary": {"path": "tests/files/web/generated/WBV2P3005Library.blend", "sha256": "dcda742db77c6af5e05b79e006a0bd89cf1e8ea8d438592cd1ed2e981c7aca76"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P3-005.py", "sha256": "50e5f7b3db1fec8eb3e2aa22e7ce4a8d40cb1ef01c8ec8dda59a3a3fe06c0253"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p3-005-desktop.py", "sha256": "4605e4a453e8b767fc187f0de69a51100a46a4d78d03a03d7ec1adb43fa376ee"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "c3f5e581e460d9c44beea583b241e5b56ae0d163e134bd7862bc03d10a7bb13a"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "158dcb322959d845908a5414952ce9300e524de7cd85b3773472d05fe52549dd"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P3-005/library-report.json", "sha256": "0b572a5b480dd9b123cbb9c55c842fb002b1a8a6c96afd196af90bee1ebd9940"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P3-005/library-desktop-report.json", "sha256": "eb8512d3fd78e8588284b9acb2f6b3eaf72f2c36912483f1dc030da3464f8cdd"},
|
||||
"status": {"path": "docs/status/WBV2-P3-005.md", "sha256": "b1ef6eff8c5f0d64d651de2dffe0d2c914e8726711c42259ee7c0cc3bbcd1cd6"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P3-005/task-context.json", "sha256": "df8ed12aa4ecb585e59eb212ea4d16fbc0dc1299668a44283fcde9886ddc912f"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P3-005/command.log", "sha256": "f72bc26c0000a8d38a6ccf91690567d17974d3fdd9226a314bfaf4720d2af6ab"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"staleAppend": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"collisionAppend": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"linkedMutation": "REJECTED_BY_OWNERSHIP",
|
||||
"staleOverride": "BLOCKED_REVISION_CONFLICT",
|
||||
"staleReload": "STALE_REVISION",
|
||||
"staleMissingHash": "STALE_SOURCE_HASH",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P4-001"
|
||||
}
|
||||
180
tests/golden/WBV2-P3-005/task-context.json
Normal file
180
tests/golden/WBV2-P3-005/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P3-005",
|
||||
"parentTask": "WBV2-P3-004",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable ASSET.LIBRARY_OPERATIONS data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "ASSET.LIBRARY_OPERATIONS",
|
||||
"ownerFamily": "ASSET",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P3-005.py -- tests/files/web/generated/WBV2-P3-005-ASSET.LIBRARY_OPERATIONS.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P3-005",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P3-005"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 1284,
|
||||
"contextRemainingTokens": 319
|
||||
},
|
||||
"source": {
|
||||
"bytes": 8620,
|
||||
"tokens": 2157
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P3-005-ASSET.LIBRARY_OPERATIONS.blend",
|
||||
"bytes": 85884,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P3-005.py",
|
||||
"bytes": 3301,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 962579,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-005/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P3-005.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-005/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"source/hash/owner identity preserved",
|
||||
"linked mutation blocked",
|
||||
"stale generation and missing source fail closed"
|
||||
],
|
||||
"nextTask": "WBV2-P4-001",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P3-005.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P3-004/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P3-004.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P3-005.md",
|
||||
"tests/golden/WBV2-P3-004/manifest.json",
|
||||
"docs/status/WBV2-P3-004.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-P3-004",
|
||||
"parentTask": "WBV2-P3-003",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P3-005",
|
||||
"artifactCount": 14
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P3-004 status",
|
||||
"- task: `WBV2-P3-004`",
|
||||
"- parent: `WBV2-P3-003`",
|
||||
"- parity: `IO.GLB_ROUNDTRIP`",
|
||||
"- implementationClass: `LOCAL_EXACT`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P3-004-IO.GLB_ROUNDTRIP.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1737,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 435
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P3-005.md",
|
||||
"bytes": 1737,
|
||||
"lines": 38,
|
||||
"tokens": 435
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-004/manifest.json",
|
||||
"bytes": 2621,
|
||||
"lines": 34,
|
||||
"tokens": 656
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P3-004.md",
|
||||
"bytes": 1463,
|
||||
"lines": 29,
|
||||
"tokens": 366
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2157,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2157,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3181,
|
||||
"serializedContextTokens": 695,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
35
tests/golden/WBV2-P4-001/manifest.json
Normal file
35
tests/golden/WBV2-P4-001/manifest.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-001",
|
||||
"parentTask": "WBV2-P3-005",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "MODIFIER_DECLARED_SLICES_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P3-005/manifest.json", "sha256": "42dc02d198630c2735c5a0a1beab37f2a98ff0233927215099f67606d248c39e"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P4-001-MODIFIER.DECLARED_SLICES.blend", "sha256": "02e56fd6745d983ee9f5ee3f48e581f116f0c41c2d2e7dec062517b4af86718f"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P4-001.py", "sha256": "30df1e0d94b6c439203f6def7a5136f109da6a23839c59a766c12db8cc294eb2"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p4-001-desktop.py", "sha256": "9b62082a9d43eb614a7922428cdfa2f86ca31bf6d3ba61d4292615e1f224fe43"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"productionApi": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "sha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8"},
|
||||
"productionMainState": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "sha256": "3c31a049714860cc89c5b28ebad887a1978df11f8c528c3dfd7836635ed62fb3"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "c74eda4e746f5ef1d93d8e9a188fe4a0624a4acb26658c410f096db495411e62"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "828a54bbe5a83ab43b82da278bd373c5ab7eaeb2d31ec1fe4f5f8b7ff614b0d3"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P4-001/modifier-report.json", "sha256": "65d2cf962511ae181e53cda1cc01f8db46819ee450a470384abbe829d549adf8"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P4-001/modifier-desktop-report.json", "sha256": "23a348e30dc67f796b0ca44abcf7ef7aac932af146178c8dccbce40170431b8a"},
|
||||
"status": {"path": "docs/status/WBV2-P4-001.md", "sha256": "957816b2d29edcc076669d6c0adde66ae0012191899773a37a5cb986b38a9ce1"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P4-001/task-context.json", "sha256": "7d7109550a359138fd7f4a2c9336d625555c3fa2620e1f3b516e4ee39490b763"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P4-001/command.log", "sha256": "03d98bd745da53fcec3580105171078edbca9a3c55683dfe6d08a078b4c107fd"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"unknownModifier": "RETAINED_BLOCKED",
|
||||
"staleDecimateProfile": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P4-002"
|
||||
}
|
||||
39
tests/golden/WBV2-P4-001/modifier-desktop-report.json
Normal file
39
tests/golden/WBV2-P4-001/modifier-desktop-report.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "02e56fd6745d983ee9f5ee3f48e581f116f0c41c2d2e7dec062517b4af86718f",
|
||||
"operation": "MODIFIER_DECLARED_SLICES_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"state": {
|
||||
"modifiers": [
|
||||
{
|
||||
"name": "WBV2P4001Bevel",
|
||||
"showEditMode": true,
|
||||
"showOnCage": false,
|
||||
"showRender": true,
|
||||
"showViewport": true,
|
||||
"type": "BEVEL"
|
||||
},
|
||||
{
|
||||
"name": "WBV2P4001Decimate",
|
||||
"showEditMode": false,
|
||||
"showOnCage": false,
|
||||
"showRender": false,
|
||||
"showViewport": true,
|
||||
"type": "DECIMATE"
|
||||
},
|
||||
{
|
||||
"name": "WBV2P4001UnsupportedParticle",
|
||||
"showEditMode": false,
|
||||
"showOnCage": false,
|
||||
"showRender": false,
|
||||
"showViewport": true,
|
||||
"type": "PARTICLE_SYSTEM"
|
||||
}
|
||||
],
|
||||
"object": "WBV2P4001ModifierObject",
|
||||
"polygonCount": 12,
|
||||
"vertexCount": 8
|
||||
},
|
||||
"task": "WBV2-P4-001"
|
||||
}
|
||||
40
tests/golden/WBV2-P4-001/modifier-report.json
Normal file
40
tests/golden/WBV2-P4-001/modifier-report.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-001",
|
||||
"operation": "MODIFIER_DECLARED_SLICES_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P4-001-MODIFIER.DECLARED_SLICES.blend",
|
||||
"sha256": "02e56fd6745d983ee9f5ee3f48e581f116f0c41c2d2e7dec062517b4af86718f"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P4-001/modifier-desktop-report.json",
|
||||
"modifierTypes": [
|
||||
"BEVEL",
|
||||
"DECIMATE",
|
||||
"PARTICLE_SYSTEM"
|
||||
],
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"meshId": "mesh:WBV2P4001ModifierMesh",
|
||||
"modifierTypes": [
|
||||
"BEVEL",
|
||||
"DECIMATE",
|
||||
"PARTICLE_SYSTEM"
|
||||
],
|
||||
"blockedModifier": "modifier:object:WBV2P4001ModifierObject:336849697",
|
||||
"initialRevision": 1,
|
||||
"finalRevision": 6,
|
||||
"appliedVertexCount": 6,
|
||||
"appliedTriangleCount": 8,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"negative": {
|
||||
"unknownModifier": "RETAINED_BLOCKED",
|
||||
"staleDecimateProfile": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P4-002"
|
||||
}
|
||||
180
tests/golden/WBV2-P4-001/task-context.json
Normal file
180
tests/golden/WBV2-P4-001/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-001",
|
||||
"parentTask": "WBV2-P3-005",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable MODIFIER.DECLARED_SLICES data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "MODIFIER.DECLARED_SLICES",
|
||||
"ownerFamily": "MODIFIER",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P4-001.py -- tests/files/web/generated/WBV2-P4-001-MODIFIER.DECLARED_SLICES.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P4-001",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P4-001"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 459,
|
||||
"contextRemainingTokens": 114
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9445,
|
||||
"tokens": 2362
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P4-001-MODIFIER.DECLARED_SLICES.blend",
|
||||
"bytes": 87318,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P4-001.py",
|
||||
"bytes": 1803,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 969047,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-001/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P4-001.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-001/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"desktop/evaluated Main match",
|
||||
"unknown modifier retained and blocked",
|
||||
"apply/undo/save/reopen stable"
|
||||
],
|
||||
"nextTask": "WBV2-P4-002",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P4-001.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P3-005/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P3-005.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P4-001.md",
|
||||
"tests/golden/WBV2-P3-005/manifest.json",
|
||||
"docs/status/WBV2-P3-005.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-P3-005",
|
||||
"parentTask": "WBV2-P3-004",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P4-001",
|
||||
"artifactCount": 15
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P3-005 status",
|
||||
"- task: `WBV2-P3-005`",
|
||||
"- parent: `WBV2-P3-004`",
|
||||
"- parity: `ASSET.LIBRARY_OPERATIONS`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P3-005-ASSET.LIBRARY_OPERATIONS.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1740,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 435
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P4-001.md",
|
||||
"bytes": 1740,
|
||||
"lines": 38,
|
||||
"tokens": 435
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P3-005/manifest.json",
|
||||
"bytes": 3016,
|
||||
"lines": 39,
|
||||
"tokens": 754
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P3-005.md",
|
||||
"bytes": 1890,
|
||||
"lines": 29,
|
||||
"tokens": 473
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2362,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2362,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3386,
|
||||
"serializedContextTokens": 693,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
40
tests/golden/WBV2-P4-002/manifest.json
Normal file
40
tests/golden/WBV2-P4-002/manifest.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-002",
|
||||
"parentTask": "WBV2-P4-001",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "NODES_ALLOWLIST_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P4-001/manifest.json", "sha256": "6f1bee73c987f5e66733feb03d1d708e0f2dbd0776ac6634dbf694cde385143c"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P4-002-NODES.ALLOWLIST.blend", "sha256": "df1ad2e270112c081a96b2bc2c2da1bc8272bc82ba6c33ae56c0b2d24e3d5c4e"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P4-002.py", "sha256": "210a9cfd099e3962f113d6848d61a045ea0e874a01d34ec64c6e8c49156316b7"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p4-002-desktop.py", "sha256": "38aaec097d6a9c2a477707627905082c642d044c8a83453e3d7c30d588283a01"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"productionApi": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "sha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8"},
|
||||
"productionMainState": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "sha256": "3c31a049714860cc89c5b28ebad887a1978df11f8c528c3dfd7836635ed62fb3"},
|
||||
"geometryProtocol": {"path": "web/protocol/geometry-nodes.ts", "sha256": "8d04291c29e9ce30e3f2f6d4141bc4101d49529bf7f7edf109d67d059efa58b1"},
|
||||
"shaderGraphProtocol": {"path": "web/protocol/shader-graph.ts", "sha256": "6e9421743925b30ac7aee7c39d7a9cc38632f22584675ec5286685f442b12683"},
|
||||
"shaderCompiler": {"path": "web/protocol/shader-compiler.ts", "sha256": "acd5f8deb2912f6823533df12baba8049c5e64d440c17a6dc3f90741f71774b2"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "35bcec8575fa3985ea31868db999ece6dbeddc96f79069b77a204d7f0f811190"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "24564d280a73a28cb281d416485452a8b78e1d01b8fa5f72cdde0f314af3af47"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P4-002/nodes-report.json", "sha256": "258bbbcb5ba4b1a5b8163f2841b833397ff560357538b4a419381ec9a67af8c7"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P4-002/nodes-desktop-report.json", "sha256": "3a712f3e7f6503a1480c4e19ee824c6fddaad499930257d8baa36021531f4e74"},
|
||||
"status": {"path": "docs/status/WBV2-P4-002.md", "sha256": "b165d7e641d83804a1d779aeae4eae913cdfe6bf14422a5b7d47fa2dd5ace359"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P4-002/task-context.json", "sha256": "9a9bc55a6c85f5296b757b017ba05d5fa3ea357083f8d07beff65502211cf9d3"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P4-002/command.log", "sha256": "33aa0d1a258fe9a1f32ecd6211497bbb8b6756577c92af63dbb31ef2d2eb9a9a"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"unknownGeometryNode": "BLOCKED_BEFORE_COMMIT",
|
||||
"geometryNodeBudget": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"unknownShaderNode": "BLOCKED_BEFORE_COMMIT",
|
||||
"compileFailureRollback": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P4-003"
|
||||
}
|
||||
80
tests/golden/WBV2-P4-002/nodes-desktop-report.json
Normal file
80
tests/golden/WBV2-P4-002/nodes-desktop-report.json
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "df1ad2e270112c081a96b2bc2c2da1bc8272bc82ba6c33ae56c0b2d24e3d5c4e",
|
||||
"operation": "NODES_ALLOWLIST_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"state": {
|
||||
"graphs": [
|
||||
{
|
||||
"interface": [
|
||||
{
|
||||
"inOut": "OUTPUT",
|
||||
"name": "Geometry",
|
||||
"socketType": "NodeSocketGeometry"
|
||||
},
|
||||
{
|
||||
"inOut": "INPUT",
|
||||
"name": "Geometry",
|
||||
"socketType": "NodeSocketGeometry"
|
||||
}
|
||||
],
|
||||
"linkCount": 2,
|
||||
"name": "WBV2P4002SupportedGraph",
|
||||
"nodeNames": [
|
||||
"WBV2P4002 Group Input",
|
||||
"WBV2P4002 Group Output",
|
||||
"WBV2P4002 Transform"
|
||||
],
|
||||
"nodeTypes": [
|
||||
"GeometryNodeTransform",
|
||||
"NodeGroupInput",
|
||||
"NodeGroupOutput"
|
||||
],
|
||||
"type": "GeometryNodeTree"
|
||||
},
|
||||
{
|
||||
"interface": [
|
||||
{
|
||||
"inOut": "OUTPUT",
|
||||
"name": "Geometry",
|
||||
"socketType": "NodeSocketGeometry"
|
||||
},
|
||||
{
|
||||
"inOut": "INPUT",
|
||||
"name": "Geometry",
|
||||
"socketType": "NodeSocketGeometry"
|
||||
}
|
||||
],
|
||||
"linkCount": 2,
|
||||
"name": "WBV2P4002BlockedGraph",
|
||||
"nodeNames": [
|
||||
"WBV2P4002 Group Input",
|
||||
"WBV2P4002 Group Output",
|
||||
"WBV2P4002 Unsupported Distribute"
|
||||
],
|
||||
"nodeTypes": [
|
||||
"GeometryNodeDistributePointsOnFaces",
|
||||
"NodeGroupInput",
|
||||
"NodeGroupOutput"
|
||||
],
|
||||
"type": "GeometryNodeTree"
|
||||
}
|
||||
],
|
||||
"material": {
|
||||
"linkCount": 2,
|
||||
"name": "WBV2P4002ShaderMaterial",
|
||||
"nodeNames": [
|
||||
"Material Output",
|
||||
"Principled BSDF",
|
||||
"WBV2P4002 RGB"
|
||||
],
|
||||
"nodeTypes": [
|
||||
"ShaderNodeBsdfPrincipled",
|
||||
"ShaderNodeOutputMaterial",
|
||||
"ShaderNodeRGB"
|
||||
]
|
||||
}
|
||||
},
|
||||
"task": "WBV2-P4-002"
|
||||
}
|
||||
54
tests/golden/WBV2-P4-002/nodes-report.json
Normal file
54
tests/golden/WBV2-P4-002/nodes-report.json
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-002",
|
||||
"operation": "NODES_ALLOWLIST_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P4-002-NODES.ALLOWLIST.blend",
|
||||
"sha256": "df1ad2e270112c081a96b2bc2c2da1bc8272bc82ba6c33ae56c0b2d24e3d5c4e"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P4-002/nodes-desktop-report.json",
|
||||
"graphs": [
|
||||
{
|
||||
"name": "WBV2P4002SupportedGraph",
|
||||
"nodeTypes": [
|
||||
"GeometryNodeTransform",
|
||||
"NodeGroupInput",
|
||||
"NodeGroupOutput"
|
||||
],
|
||||
"linkCount": 2
|
||||
},
|
||||
{
|
||||
"name": "WBV2P4002BlockedGraph",
|
||||
"nodeTypes": [
|
||||
"GeometryNodeDistributePointsOnFaces",
|
||||
"NodeGroupInput",
|
||||
"NodeGroupOutput"
|
||||
],
|
||||
"linkCount": 2
|
||||
}
|
||||
],
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"graphCount": 2,
|
||||
"supportedGraph": "WBV2P4002SupportedGraph",
|
||||
"blockedNodeTypes": [
|
||||
"GeometryNodeDistributePointsOnFaces"
|
||||
],
|
||||
"shaderCompile": "COMPILED",
|
||||
"compileKey": "168f4684772b2a264ed75aebbbd0d4955a9ef6e5bd4f1469a95b342b21e7bb3d",
|
||||
"revisionAfterShader": 2,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"negative": {
|
||||
"unknownGeometryNode": "BLOCKED_BEFORE_COMMIT",
|
||||
"geometryNodeBudget": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"unknownShaderNode": "BLOCKED_BEFORE_COMMIT",
|
||||
"compileFailureRollback": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P4-003"
|
||||
}
|
||||
180
tests/golden/WBV2-P4-002/task-context.json
Normal file
180
tests/golden/WBV2-P4-002/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-002",
|
||||
"parentTask": "WBV2-P4-001",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable NODES.ALLOWLIST data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "NODES.ALLOWLIST",
|
||||
"ownerFamily": "NODES",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P4-002.py -- tests/files/web/generated/WBV2-P4-002-NODES.ALLOWLIST.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P4-002",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P4-002"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 712,
|
||||
"contextRemainingTokens": 177
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9192,
|
||||
"tokens": 2299
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P4-002-NODES.ALLOWLIST.blend",
|
||||
"bytes": 90698,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P4-002.py",
|
||||
"bytes": 3497,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 978902,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-002/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P4-002.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-002/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"node/socket/link/default parity",
|
||||
"budget and unknown-node block before commit",
|
||||
"compile failure rolls back"
|
||||
],
|
||||
"nextTask": "WBV2-P4-003",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P4-002.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P4-001/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P4-001.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P4-002.md",
|
||||
"tests/golden/WBV2-P4-001/manifest.json",
|
||||
"docs/status/WBV2-P4-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-P4-001",
|
||||
"parentTask": "WBV2-P3-005",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P4-002",
|
||||
"artifactCount": 16
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P4-001 status",
|
||||
"- task: `WBV2-P4-001`",
|
||||
"- parent: `WBV2-P3-005`",
|
||||
"- parity: `MODIFIER.DECLARED_SLICES`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P4-001-MODIFIER.DECLARED_SLICES.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1692,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 423
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P4-002.md",
|
||||
"bytes": 1692,
|
||||
"lines": 38,
|
||||
"tokens": 423
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-001/manifest.json",
|
||||
"bytes": 3016,
|
||||
"lines": 36,
|
||||
"tokens": 754
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P4-001.md",
|
||||
"bytes": 1685,
|
||||
"lines": 29,
|
||||
"tokens": 422
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2299,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2299,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3323,
|
||||
"serializedContextTokens": 687,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
39
tests/golden/WBV2-P4-003/manifest.json
Normal file
39
tests/golden/WBV2-P4-003/manifest.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-003",
|
||||
"parentTask": "WBV2-P4-002",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "SCULPT_NONMESH_PAINT_BOUNDED_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P4-002/manifest.json", "sha256": "2b9e907fa11470b354bbb98695696bcdfae5c654ef03373b1eb2230098f28142"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P4-003-SCULPT.NONMESH.PAINT_BOUNDED.blend", "sha256": "88e64b7ca103025111891c3dbdb78d5dd038c99d77d46831414ee984ee16d161"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P4-003.py", "sha256": "1ea38a48702f9df0600dec5ebb27498e8699a30cb5bd4ed9f4ded0a22d757ac1"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p4-003-desktop.py", "sha256": "87576e43dba1654e4c26c037032bc92e96e953c917ce86c2bf38878e17385f66"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"productionMainState": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "sha256": "3c31a049714860cc89c5b28ebad887a1978df11f8c528c3dfd7836635ed62fb3"},
|
||||
"productionApi": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "sha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8"},
|
||||
"sculptProtocol": {"path": "web/protocol/sculpt.ts", "sha256": "f2ca6c49a5fb110fe837a462d1da115076c032649b5a78eb640a77fe7d049b8b"},
|
||||
"paintPbvhProtocol": {"path": "web/protocol/paint-pbvh-capability.ts", "sha256": "749eb772f0cdeb0fe79c058391a47fdf680dc331db300a91a22d324e535f32c5"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "31f52cd0c027cdbb7a79530147b70e830d6e94becf57cbd7133591d55bb4e04f"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "2b34dca1d199d71d6e65c3b8426463d926a790083c140607445056d20d1fdc55"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P4-003/sculpt-report.json", "sha256": "de29aabbb753b682d85c30258ff4d68530650d00e167f30181d5c9a68669dd99"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P4-003/sculpt-desktop-report.json", "sha256": "a890aab8336bd9fac900ce9f8c143708476b6a16d19a9ee4a6154c974a3807b6"},
|
||||
"status": {"path": "docs/status/WBV2-P4-003.md", "sha256": "e3e0bebbcd979c4b59b4c3f1744dc82095e55a52d9875c59e53e7f052c507d9f"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P4-003/task-context.json", "sha256": "34bf26c4b70438b5f88ce87ba96666d71597049c65752462627015711a518e78"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P4-003/command.log", "sha256": "4616e0a4eb2484b707380bfe6ea08c72831df6856e554a53c02bc0fef5c71946"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"unsupportedBrush": "BLOCKED_BEFORE_COMMIT",
|
||||
"invalidAttributes": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"pbvhUnavailable": "BLOCKED_STABLE_CODE",
|
||||
"stalePBVH": "REVISION_CONFLICT",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P4-004"
|
||||
}
|
||||
40
tests/golden/WBV2-P4-003/sculpt-desktop-report.json
Normal file
40
tests/golden/WBV2-P4-003/sculpt-desktop-report.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "88e64b7ca103025111891c3dbdb78d5dd038c99d77d46831414ee984ee16d161",
|
||||
"operation": "SCULPT_NONMESH_PAINT_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"state": {
|
||||
"mesh": {
|
||||
"faceCount": 5,
|
||||
"faceSets": [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5
|
||||
],
|
||||
"mask": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.5,
|
||||
0.75,
|
||||
1.0
|
||||
],
|
||||
"name": "WBV2P4003SculptObject",
|
||||
"vertexCount": 5
|
||||
},
|
||||
"nonMesh": {
|
||||
"curve": {
|
||||
"name": "WBV2P4003Curve",
|
||||
"pointCount": 3,
|
||||
"splineCount": 1
|
||||
},
|
||||
"pointCloud": {
|
||||
"name": "WBV2P4003PointCloud",
|
||||
"pointCount": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
"task": "WBV2-P4-003"
|
||||
}
|
||||
63
tests/golden/WBV2-P4-003/sculpt-report.json
Normal file
63
tests/golden/WBV2-P4-003/sculpt-report.json
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-003",
|
||||
"operation": "SCULPT_NONMESH_PAINT_BOUNDED_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P4-003-SCULPT.NONMESH.PAINT_BOUNDED.blend",
|
||||
"sha256": "88e64b7ca103025111891c3dbdb78d5dd038c99d77d46831414ee984ee16d161"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P4-003/sculpt-desktop-report.json",
|
||||
"sculpt": {
|
||||
"faceCount": 5,
|
||||
"faceSets": [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5
|
||||
],
|
||||
"mask": [
|
||||
0,
|
||||
0.25,
|
||||
0.5,
|
||||
0.75,
|
||||
1
|
||||
],
|
||||
"name": "WBV2P4003SculptObject",
|
||||
"vertexCount": 5
|
||||
},
|
||||
"nonMesh": {
|
||||
"curve": {
|
||||
"name": "WBV2P4003Curve",
|
||||
"pointCount": 3,
|
||||
"splineCount": 1
|
||||
},
|
||||
"pointCloud": {
|
||||
"name": "WBV2P4003PointCloud",
|
||||
"pointCount": 3
|
||||
}
|
||||
},
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"meshId": "mesh:WBV2P4003SculptMesh",
|
||||
"curveId": "curve:WBV2P4003Curve",
|
||||
"pointCloudId": "pointcloud:WBV2P4003PointCloud",
|
||||
"initialRevision": 1,
|
||||
"finalRevision": 3,
|
||||
"sculptStroke": "APPLIED",
|
||||
"pbvhBrushInventory": 46,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"negative": {
|
||||
"unsupportedBrush": "BLOCKED_BEFORE_COMMIT",
|
||||
"invalidAttributes": "REJECTED_WITHOUT_REVISION_CHANGE",
|
||||
"pbvhUnavailable": "BLOCKED_STABLE_CODE",
|
||||
"stalePBVH": "REVISION_CONFLICT",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P4-004"
|
||||
}
|
||||
180
tests/golden/WBV2-P4-003/task-context.json
Normal file
180
tests/golden/WBV2-P4-003/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-003",
|
||||
"parentTask": "WBV2-P4-002",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable SCULPT.NONMESH.PAINT_BOUNDED data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "SCULPT.NONMESH.PAINT_BOUNDED",
|
||||
"ownerFamily": "SCULPT",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P4-003.py -- tests/files/web/generated/WBV2-P4-003-SCULPT.NONMESH.PAINT_BOUNDED.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P4-003",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P4-003"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 41,
|
||||
"contextRemainingTokens": 8
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9863,
|
||||
"tokens": 2468
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P4-003-SCULPT.NONMESH.PAINT_BOUNDED.blend",
|
||||
"bytes": 87250,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P4-003.py",
|
||||
"bytes": 2584,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 986958,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-003/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P4-003.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-003/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"Main commit is atomic",
|
||||
"unsupported brush/solver returns stable code",
|
||||
"GPU/OOM/restart recovery passes"
|
||||
],
|
||||
"nextTask": "WBV2-P4-004",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P4-003.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P4-002/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P4-002.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P4-003.md",
|
||||
"tests/golden/WBV2-P4-002/manifest.json",
|
||||
"docs/status/WBV2-P4-002.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-P4-002",
|
||||
"parentTask": "WBV2-P4-001",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P4-003",
|
||||
"artifactCount": 19
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P4-002 status",
|
||||
"- task: `WBV2-P4-002`",
|
||||
"- parent: `WBV2-P4-001`",
|
||||
"- parity: `NODES.ALLOWLIST`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P4-002-NODES.ALLOWLIST.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1758,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 440
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P4-003.md",
|
||||
"bytes": 1758,
|
||||
"lines": 38,
|
||||
"tokens": 440
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-002/manifest.json",
|
||||
"bytes": 3553,
|
||||
"lines": 41,
|
||||
"tokens": 889
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P4-002.md",
|
||||
"bytes": 1753,
|
||||
"lines": 29,
|
||||
"tokens": 439
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2468,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2468,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3492,
|
||||
"serializedContextTokens": 696,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
38
tests/golden/WBV2-P4-004/manifest.json
Normal file
38
tests/golden/WBV2-P4-004/manifest.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-004",
|
||||
"parentTask": "WBV2-P4-003",
|
||||
"enablingTask": false,
|
||||
"parityStateChange": true,
|
||||
"runtime": "BLENDER_5_2_WASM_MAIN",
|
||||
"operation": "SIMULATION_CACHE_IDENTITY_LIFECYCLE_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P4-003/manifest.json", "sha256": "9c41ef52263d544650b1bad2dc2ec5f40ed63a9ab1b9732492a46672384e1218"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P4-004-SIMULATION.CACHE_LIFECYCLE.blend", "sha256": "c7d88d3ea29e8d54872d90078979ba155fa4b04594477136db2fee39e9fccf4f"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P4-004.py", "sha256": "6292441ac282354125fd3f160f941429b440df164f67ecea89ef258a2a58dc68"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p4-004-desktop.py", "sha256": "21c6d124435558721235dec994939c84c2fb54c90b248a9ee301788a6e5e237f"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "7c36f36872248226ea6c96c281c49fd7b58af28e5b6d52f6f5ef10e391daedf3"},
|
||||
"productionMainState": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "sha256": "3c31a049714860cc89c5b28ebad887a1978df11f8c528c3dfd7836635ed62fb3"},
|
||||
"productionApi": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "sha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8"},
|
||||
"simulationProtocol": {"path": "web/protocol/simulation-cache.ts", "sha256": "a1302e42129420a96416e363cbc857d082d4646655685520c9e81f877ce3d9b8"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "efe1298aab720d0b0d0822c1c33ba93a1496bfff18f786898854ffcc7cfe2788"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "2bcaeb4e5a319d5d6276575b1949f84e5c38d8ac40582c7a89021efb29b057c6"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P4-004/simulation-report.json", "sha256": "ef0575debda0bd76e106a63f9a321f6bd1640cbc84bb7b40e17a4acf360c425a"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P4-004/simulation-desktop-report.json", "sha256": "3b62d0cc13f833140cdee3061b2af01675da29d0aba75012e30e6183e68efcc2"},
|
||||
"status": {"path": "docs/status/WBV2-P4-004.md", "sha256": "76241a1c4f269e4d8987e08c5bd00deab595cda6dad348238b4adeccf3d45e0a"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P4-004/task-context.json", "sha256": "ae4a91c5d676dd655ddb16fbb860afe4171ed4ab24d73ded187b14eea8eaf720"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P4-004/command.log", "sha256": "d4e64a063dcb68424b1f07c47e521d88bfba61aa9a57528accbafeeefe22184a"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"staleRevision": "CACHE_KEY_CHANGED_AND_NOT_PUBLISHED",
|
||||
"corruptPayload": "HASH_MISMATCH",
|
||||
"cancelledVerification": "CANCELLED_WITHOUT_PUBLISH",
|
||||
"lruProtected": "PROTECTED_AND_BUDGET_SATISFIED",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P5-001"
|
||||
}
|
||||
30
tests/golden/WBV2-P4-004/simulation-desktop-report.json
Normal file
30
tests/golden/WBV2-P4-004/simulation-desktop-report.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "c7d88d3ea29e8d54872d90078979ba155fa4b04594477136db2fee39e9fccf4f",
|
||||
"operation": "SIMULATION_CACHE_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"state": {
|
||||
"body": {
|
||||
"angularDamping": 0.10000000149011612,
|
||||
"friction": 0.3499999940395355,
|
||||
"linearDamping": 0.03999999910593033,
|
||||
"mass": 2.5,
|
||||
"name": "WBV2P4004RigidBody",
|
||||
"restitution": 0.20000000298023224,
|
||||
"shape": "BOX",
|
||||
"type": "ACTIVE"
|
||||
},
|
||||
"collision": {
|
||||
"name": "WBV2P4004Collision",
|
||||
"shape": "BOX",
|
||||
"type": "PASSIVE"
|
||||
},
|
||||
"frame": [
|
||||
1,
|
||||
4,
|
||||
1
|
||||
]
|
||||
},
|
||||
"task": "WBV2-P4-004"
|
||||
}
|
||||
32
tests/golden/WBV2-P4-004/simulation-report.json
Normal file
32
tests/golden/WBV2-P4-004/simulation-report.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-004",
|
||||
"operation": "SIMULATION_CACHE_IDENTITY_LIFECYCLE_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P4-004-SIMULATION.CACHE_LIFECYCLE.blend",
|
||||
"sha256": "c7d88d3ea29e8d54872d90078979ba155fa4b04594477136db2fee39e9fccf4f"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P4-004/simulation-desktop-report.json",
|
||||
"physicsSystems": 2,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"physicsSystems": 2,
|
||||
"activeSystemId": "physics:rigid-body:WBV2P4004RigidBody",
|
||||
"sourceRevision": 1,
|
||||
"cacheKey": "sim2-74ebf1c8eacf9c7ef388af641302145b09072ea3355d25167252a689ed7acf31",
|
||||
"frameCount": 2,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"negative": {
|
||||
"staleRevision": "CACHE_KEY_CHANGED_AND_NOT_PUBLISHED",
|
||||
"corruptPayload": "HASH_MISMATCH",
|
||||
"cancelledVerification": "CANCELLED_WITHOUT_PUBLISH",
|
||||
"lruProtected": "PROTECTED_AND_BUDGET_SATISFIED",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P5-001"
|
||||
}
|
||||
180
tests/golden/WBV2-P4-004/task-context.json
Normal file
180
tests/golden/WBV2-P4-004/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P4-004",
|
||||
"parentTask": "WBV2-P4-003",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable SIMULATION.CACHE_LIFECYCLE data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "SIMULATION.CACHE_LIFECYCLE",
|
||||
"ownerFamily": "SIMULATION",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P4-004.py -- tests/files/web/generated/WBV2-P4-004-SIMULATION.CACHE_LIFECYCLE.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P4-004",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P4-004"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 277,
|
||||
"contextRemainingTokens": 68
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9627,
|
||||
"tokens": 2408
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P4-004-SIMULATION.CACHE_LIFECYCLE.blend",
|
||||
"bytes": 87355,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P4-004.py",
|
||||
"bytes": 1475,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 255189,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 994008,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-004/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P4-004.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-004/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"stale/corrupt cache never publishes",
|
||||
"small cache recovers after restart",
|
||||
"budget release is observable"
|
||||
],
|
||||
"nextTask": "WBV2-P5-001",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P4-004.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P4-003/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P4-003.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P4-004.md",
|
||||
"tests/golden/WBV2-P4-003/manifest.json",
|
||||
"docs/status/WBV2-P4-003.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-P4-003",
|
||||
"parentTask": "WBV2-P4-002",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P4-004",
|
||||
"artifactCount": 18
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P4-003 status",
|
||||
"- task: `WBV2-P4-003`",
|
||||
"- parent: `WBV2-P4-002`",
|
||||
"- parity: `SCULPT.NONMESH.PAINT_BOUNDED`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P4-003-SCULPT.NONMESH.PAINT_BOUNDED.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1752,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 438
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P4-004.md",
|
||||
"bytes": 1752,
|
||||
"lines": 38,
|
||||
"tokens": 438
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-003/manifest.json",
|
||||
"bytes": 3397,
|
||||
"lines": 40,
|
||||
"tokens": 850
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P4-003.md",
|
||||
"bytes": 1679,
|
||||
"lines": 29,
|
||||
"tokens": 420
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2408,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2408,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3432,
|
||||
"serializedContextTokens": 695,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
38
tests/golden/WBV2-P5-001/manifest.json
Normal file
38
tests/golden/WBV2-P5-001/manifest.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P5-001",
|
||||
"parentTask": "WBV2-P4-004",
|
||||
"operation": "RENDER_CAPABILITY_ROUTING_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P4-004/manifest.json", "sha256": "c6c18a2cf7cfb39fce5718d3e68c7f358329ff8afc2d89d9a6eda7485fd3d016"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P5-001-RENDER.ROUTING.blend", "sha256": "c9ae82e6c36d3e31d272c2f5ea268dd45424e3809ae6618c53b5090c91006f7c"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P5-001.py", "sha256": "be32df4f252451b35cc05e8232b0ef0599ae4796721d52532300c728dba799b1"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p5-001-desktop.py", "sha256": "6c29222f990156baa53d4a9fefc2eb10cdd921f0d2bf616be79d545c56a4b16f"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "076551fc1669ae943f8566bee8ea9c608bbb8c0ffb827bb728ae968a061ee5b5"},
|
||||
"productionMainState": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "sha256": "3c31a049714860cc89c5b28ebad887a1978df11f8c528c3dfd7836635ed62fb3"},
|
||||
"productionApi": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "sha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8"},
|
||||
"sceneIrProtocol": {"path": "web/protocol/scene-ir.ts", "sha256": "2d4ce6c0cfc0585f395dc134f166b158beb953143e3e08089937d00e57525f26"},
|
||||
"renderRoutingProtocol": {"path": "web/protocol/render-routing.ts", "sha256": "2d41d48609635c810572aaae95979df2fe9e49bbd130c60d70f64042c5d0f097"},
|
||||
"renderImageComparisonProtocol": {"path": "web/protocol/render-image-comparison.ts", "sha256": "4345cc0d02b4482201de34292cbf5198009bf615e69c80cc00bc3e76116efec2"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "7663db046860f15287de6b19ebda6a9071a10dc05c0303df39f7d3c4ee7fd000"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "d39917ad8b29e515a828c7d167b005e6ad6fc2fef602ea76097ddd61beb47ef2"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P5-001/render-report.json", "sha256": "801c6c93df9cb16205b0489f66d9f3b53447b21db1a99e5fb80b71bd2c184f95"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P5-001/render-desktop-report.json", "sha256": "63ec20b8e2d3a10998d8b074e723abf3f15a10d8032b5e59e8500db667b69638"},
|
||||
"status": {"path": "docs/status/WBV2-P5-001.md", "sha256": "029749ec9c44bbae00ac2d2a2674ae6c36ffb3dade7fec620afc445e81e8fb97"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P5-001/task-context.json", "sha256": "345912968bca514c39558f8b51c8a1aad709be159cbdc225f1b9d8cfbfd7b678"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P5-001/command.log", "sha256": "9d033dd21d024190906d78c91a6ef372084ec33fde7e0829131b622996147796"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"unsupportedRoute": "BLOCKED_WITHOUT_LOCAL_SUCCESS",
|
||||
"malformedRoute": "REJECTED_BEFORE_COMMIT",
|
||||
"pixelMismatch": "RENDER_REFERENCE_MISMATCH",
|
||||
"cancelledRender": "OPEN_CANCELLED_WITHOUT_PUBLISH",
|
||||
"deviceLoss": "RELEASED_WITH_ZERO_RESOURCES",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P5-002"
|
||||
}
|
||||
100
tests/golden/WBV2-P5-001/render-desktop-report.json
Normal file
100
tests/golden/WBV2-P5-001/render-desktop-report.json
Normal file
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "c9ae82e6c36d3e31d272c2f5ea268dd45424e3809ae6618c53b5090c91006f7c",
|
||||
"operation": "RENDER_ROUTING_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"state": {
|
||||
"cameraId": "object:WBV2P5001RenderCamera",
|
||||
"cubeId": "object:WBV2P5001RenderCube",
|
||||
"pixelBytes": 16384,
|
||||
"pixelSha256": "38ad15c4e21d59639ddb001e69a102c3fc37ae89d0aac9122cb3e89e3e95ff76",
|
||||
"receipt": {
|
||||
"build": {
|
||||
"buildSha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c",
|
||||
"version": "5.2.0"
|
||||
},
|
||||
"receiptId": "workflow:render_capability_routing",
|
||||
"recovery": {
|
||||
"cancellation": "OPEN_CANCELLED",
|
||||
"deviceLoss": "RELEASED",
|
||||
"publishedResults": 0,
|
||||
"temporaryResourcesAfter": 0
|
||||
},
|
||||
"routes": [
|
||||
{
|
||||
"capability": "WEB_REALTIME_BOUNDED",
|
||||
"name": "boundedEevee",
|
||||
"reason": "BOUNDED_EEVEE",
|
||||
"status": "READY",
|
||||
"target": "WEB_LOCAL_BOUNDED"
|
||||
},
|
||||
{
|
||||
"capability": "CYCLES_SERVER_RENDER",
|
||||
"code": "SERVER_JOB_UNAVAILABLE",
|
||||
"name": "cycles",
|
||||
"reason": "CYCLES_REQUIRES_SERVER",
|
||||
"status": "BLOCKED",
|
||||
"target": "SERVER_JOB"
|
||||
},
|
||||
{
|
||||
"capability": "COMPLEX_EEVEE_SERVER_RENDER",
|
||||
"code": "SERVER_JOB_UNAVAILABLE",
|
||||
"name": "complexEevee",
|
||||
"reason": "COMPLEX_EEVEE_REQUIRES_SERVER",
|
||||
"status": "BLOCKED",
|
||||
"target": "SERVER_JOB"
|
||||
},
|
||||
{
|
||||
"capability": "HARDWARE_SERVER_RENDER",
|
||||
"code": "SERVER_JOB_UNAVAILABLE",
|
||||
"name": "hardware",
|
||||
"reason": "HARDWARE_BACKEND_REQUIRES_SERVER",
|
||||
"status": "BLOCKED",
|
||||
"target": "SERVER_JOB"
|
||||
},
|
||||
{
|
||||
"capability": "WEB_REALTIME_BOUNDED",
|
||||
"code": "WEBGPU_RENDERER_UNAVAILABLE",
|
||||
"name": "webgpu",
|
||||
"reason": "WEBGPU_UNAVAILABLE",
|
||||
"status": "BLOCKED",
|
||||
"target": "WEB_LOCAL_BOUNDED"
|
||||
},
|
||||
{
|
||||
"capability": "UNSUPPORTED_RENDER_ENGINE",
|
||||
"code": "PLATFORM_CAPABILITY_UNAVAILABLE",
|
||||
"name": "unknownEngine",
|
||||
"reason": "UNSUPPORTED_ENGINE",
|
||||
"status": "BLOCKED",
|
||||
"target": "SERVER_JOB"
|
||||
}
|
||||
],
|
||||
"schemaVersion": 1,
|
||||
"settings": {
|
||||
"backend": "WEBGL2",
|
||||
"complexity": "BOUNDED",
|
||||
"renderEngine": "BLENDER_EEVEE",
|
||||
"resolutionPercentage": 100,
|
||||
"resolutionX": 64,
|
||||
"resolutionY": 64,
|
||||
"samples": 1,
|
||||
"sha256": "a1da0f997a25619b2d7b75bb8889603563abe9c6789b270332c5b0de0ff88445"
|
||||
},
|
||||
"source": {
|
||||
"identifier": "WBV2-P5-001-RENDER.ROUTING",
|
||||
"kind": "blend",
|
||||
"sha256": "292333a04260417caa9a335f596508cc7e5f8200b8451afb40d0c4773944c687"
|
||||
}
|
||||
},
|
||||
"renderEngine": "BLENDER_EEVEE",
|
||||
"resolution": [
|
||||
64,
|
||||
64,
|
||||
100
|
||||
],
|
||||
"sceneId": "scene:WBV2P5001RenderRoutingScene",
|
||||
"visiblePixels": 4096
|
||||
},
|
||||
"task": "WBV2-P5-001"
|
||||
}
|
||||
76
tests/golden/WBV2-P5-001/render-report.json
Normal file
76
tests/golden/WBV2-P5-001/render-report.json
Normal file
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P5-001",
|
||||
"operation": "RENDER_CAPABILITY_ROUTING_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P5-001-RENDER.ROUTING.blend",
|
||||
"sha256": "c9ae82e6c36d3e31d272c2f5ea268dd45424e3809ae6618c53b5090c91006f7c"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P5-001/render-desktop-report.json",
|
||||
"renderEngine": "BLENDER_EEVEE",
|
||||
"pixelSha256": "38ad15c4e21d59639ddb001e69a102c3fc37ae89d0aac9122cb3e89e3e95ff76",
|
||||
"pixelBytes": 16384,
|
||||
"visiblePixels": 4096,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"routingStatus": "AVAILABLE_FROM_TEXT_RECEIPT",
|
||||
"receiptId": "workflow:render_capability_routing",
|
||||
"buildSha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c",
|
||||
"routes": [
|
||||
{
|
||||
"name": "boundedEevee",
|
||||
"target": "WEB_LOCAL_BOUNDED",
|
||||
"status": "READY"
|
||||
},
|
||||
{
|
||||
"name": "cycles",
|
||||
"target": "SERVER_JOB",
|
||||
"status": "BLOCKED"
|
||||
},
|
||||
{
|
||||
"name": "complexEevee",
|
||||
"target": "SERVER_JOB",
|
||||
"status": "BLOCKED"
|
||||
},
|
||||
{
|
||||
"name": "hardware",
|
||||
"target": "SERVER_JOB",
|
||||
"status": "BLOCKED"
|
||||
},
|
||||
{
|
||||
"name": "webgpu",
|
||||
"target": "WEB_LOCAL_BOUNDED",
|
||||
"status": "BLOCKED"
|
||||
},
|
||||
{
|
||||
"name": "unknownEngine",
|
||||
"target": "SERVER_JOB",
|
||||
"status": "BLOCKED"
|
||||
}
|
||||
],
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"pixelGolden": {
|
||||
"status": "READY",
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"referenceSha256": "da6e6f3210614dd1485fe35499db63a34f1acdaebce07a0dd91a171123b69bf6",
|
||||
"mismatch": "RENDER_REFERENCE_MISMATCH"
|
||||
},
|
||||
"recovery": {
|
||||
"cancellation": "OPEN_CANCELLED",
|
||||
"deviceLoss": "RELEASED",
|
||||
"temporaryResourcesAfter": 0
|
||||
},
|
||||
"negative": {
|
||||
"unsupportedRoute": "BLOCKED_WITHOUT_LOCAL_SUCCESS",
|
||||
"malformedRoute": "REJECTED_BEFORE_COMMIT",
|
||||
"pixelMismatch": "RENDER_REFERENCE_MISMATCH",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P5-002"
|
||||
}
|
||||
180
tests/golden/WBV2-P5-001/task-context.json
Normal file
180
tests/golden/WBV2-P5-001/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P5-001",
|
||||
"parentTask": "WBV2-P4-004",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable RENDER.ROUTING data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "RENDER.ROUTING",
|
||||
"ownerFamily": "RENDER",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P5-001.py -- tests/files/web/generated/WBV2-P5-001-RENDER.ROUTING.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P5-001",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P5-001"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 424,
|
||||
"contextRemainingTokens": 105
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9480,
|
||||
"tokens": 2371
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P5-001-RENDER.ROUTING.blend",
|
||||
"bytes": 90527,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P5-001.py",
|
||||
"bytes": 4870,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 258578,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 1003040,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P5-001/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P5-001.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P5-001/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"source/settings/build identity bound",
|
||||
"unsupported route cannot pretend local success",
|
||||
"cancel/device loss releases resources"
|
||||
],
|
||||
"nextTask": "WBV2-P5-002",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P5-001.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P4-004/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P4-004.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P5-001.md",
|
||||
"tests/golden/WBV2-P4-004/manifest.json",
|
||||
"docs/status/WBV2-P4-004.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-P4-004",
|
||||
"parentTask": "WBV2-P4-003",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P5-001",
|
||||
"artifactCount": 17
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P4-004 status",
|
||||
"- task: `WBV2-P4-004`",
|
||||
"- parent: `WBV2-P4-003`",
|
||||
"- parity: `SIMULATION.CACHE_LIFECYCLE`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P4-004-SIMULATION.CACHE_LIFECYCLE.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1688,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 422
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P5-001.md",
|
||||
"bytes": 1688,
|
||||
"lines": 38,
|
||||
"tokens": 422
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P4-004/manifest.json",
|
||||
"bytes": 3287,
|
||||
"lines": 39,
|
||||
"tokens": 822
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P4-004.md",
|
||||
"bytes": 1706,
|
||||
"lines": 29,
|
||||
"tokens": 427
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2371,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2371,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3395,
|
||||
"serializedContextTokens": 691,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
35
tests/golden/WBV2-P5-002/manifest.json
Normal file
35
tests/golden/WBV2-P5-002/manifest.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P5-002",
|
||||
"parentTask": "WBV2-P5-001",
|
||||
"operation": "MEDIA_BOUNDED_WORKFLOW_LOCAL_BOUNDED",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P5-001/manifest.json", "sha256": "b3f1a8b56649d8fa386cbc3f00996e98ce7e4104604731da9af43dea65467d4e"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P5-002-MEDIA.BOUNDED_WORKFLOW.blend", "sha256": "3f45837a2cc24aebc2c6f04434cb75d04708c2cf38bbce76bf7a280aad47d8ab"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P5-002.py", "sha256": "d2704903d60ac2fd7ebb0fa5702edcab10f2e91f2736cada25e6970886bdc6e7"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p5-002-desktop.py", "sha256": "6c0fbfb1eb7fa18f98824c91308fa38df5a219477fb18199f7989eba73822fad"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "076551fc1669ae943f8566bee8ea9c608bbb8c0ffb827bb728ae968a061ee5b5"},
|
||||
"compositorProtocol": {"path": "web/protocol/compositor.ts", "sha256": "3ce4819dadb2d6de7305c3676b2708689cd8be95e6fa7894651d6a02c4658b31"},
|
||||
"sequencerProtocol": {"path": "web/protocol/sequencer.ts", "sha256": "6e6141ddc0771bfdbcb176929ecc2882e507e07e4f4f7eb610cb0a89f9a74a25"},
|
||||
"recoveryProtocol": {"path": "web/protocol/render-compositor-media-recovery.ts", "sha256": "a1b0b36cf93173347d55a955ff2e02f3666f7c28ef7f06442b86f0ee2b272286"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "d394f600989563c8e25c5914ba362b658f76d8b6ebaab86b82d7d8649640ef7c"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "1ddb9d1a1bf4358773adeaccb70a09ba52e09ae09513089597a4265fc6ac9ff4"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P5-002/media-report.json", "sha256": "90cf9e6eb6f09f2e3e0a25740e5b3e674209efd6f7dbf7fd91a7999ded35e3a0"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P5-002/media-desktop-report.json", "sha256": "7023aef81bea94b1954fbe6eb448ab698d2cca9457b54bac210c70b3b45ec87c"},
|
||||
"status": {"path": "docs/status/WBV2-P5-002.md", "sha256": "557a6a38f3c43f1684a4880425a6f9cd86ec11378d163be09832dca3466b1e0b"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P5-002/task-context.json", "sha256": "feba3ec4bb60ba4a7861cfad74773d189054c3f8404cd9e6859ec7287828db98"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P5-002/command.log", "sha256": "0f253f5bbf14e9bd106c954a997bb433e7d52191b65ca15ae7918a85aeda308c"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"staleSeek": "REVISION_CONFLICT",
|
||||
"cancelledCompositor": "COMPOSITOR_CANCELLED",
|
||||
"codecHashDrift": "SEQUENCER_CODEC_UNSUPPORTED",
|
||||
"quotaOrBudget": "BLOCKED_WITHOUT_MUTATION",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P5-003"
|
||||
}
|
||||
65
tests/golden/WBV2-P5-002/media-desktop-report.json
Normal file
65
tests/golden/WBV2-P5-002/media-desktop-report.json
Normal file
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "3f45837a2cc24aebc2c6f04434cb75d04708c2cf38bbce76bf7a280aad47d8ab",
|
||||
"operation": "MEDIA_BOUNDED_WORKFLOW_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"state": {
|
||||
"compositor": {
|
||||
"links": 3,
|
||||
"name": "WBV2P5002CompositorTree",
|
||||
"nodes": [
|
||||
"WBV2P5002Composite",
|
||||
"WBV2P5002Constant",
|
||||
"WBV2P5002Exposure",
|
||||
"WBV2P5002Invert"
|
||||
]
|
||||
},
|
||||
"sceneId": "scene:WBV2P5002MediaScene",
|
||||
"sequencer": {
|
||||
"fps": [
|
||||
24,
|
||||
1.0
|
||||
],
|
||||
"strips": [
|
||||
{
|
||||
"channel": 4,
|
||||
"frameEnd": 25,
|
||||
"frameStart": 1,
|
||||
"mute": true,
|
||||
"name": "WBV2P5002Cross",
|
||||
"source": null,
|
||||
"type": "CROSS"
|
||||
},
|
||||
{
|
||||
"channel": 2,
|
||||
"frameEnd": 25,
|
||||
"frameStart": 1,
|
||||
"mute": false,
|
||||
"name": "WBV2P5002Image",
|
||||
"source": "//media/",
|
||||
"type": "IMAGE"
|
||||
},
|
||||
{
|
||||
"channel": 3,
|
||||
"frameEnd": 25,
|
||||
"frameStart": 1,
|
||||
"mute": false,
|
||||
"name": "WBV2P5002ImageB",
|
||||
"source": "//media/",
|
||||
"type": "IMAGE"
|
||||
},
|
||||
{
|
||||
"channel": 1,
|
||||
"frameEnd": 25,
|
||||
"frameStart": 1,
|
||||
"mute": true,
|
||||
"name": "WBV2P5002Sound",
|
||||
"source": "//media/WBV2P5002-silence.wav",
|
||||
"type": "SOUND"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"task": "WBV2-P5-002"
|
||||
}
|
||||
48
tests/golden/WBV2-P5-002/media-report.json
Normal file
48
tests/golden/WBV2-P5-002/media-report.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P5-002",
|
||||
"operation": "MEDIA_BOUNDED_WORKFLOW_LOCAL_BOUNDED",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P5-002-MEDIA.BOUNDED_WORKFLOW.blend",
|
||||
"sha256": "3f45837a2cc24aebc2c6f04434cb75d04708c2cf38bbce76bf7a280aad47d8ab"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P5-002/media-desktop-report.json",
|
||||
"compositorNodes": 4,
|
||||
"sequencerStrips": 4,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"compositorStatus": "AVAILABLE",
|
||||
"sequencerStatus": "AVAILABLE",
|
||||
"cacheHit": true,
|
||||
"transition": "CROSS",
|
||||
"frameInputs": 2,
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"codec": {
|
||||
"image": "READY",
|
||||
"sound": "BLOCKED_RUNTIME_UNAVAILABLE",
|
||||
"sourceHashMismatch": "BLOCKED"
|
||||
},
|
||||
"recovery": {
|
||||
"domains": [
|
||||
"RENDER",
|
||||
"COMPOSITOR",
|
||||
"MEDIA"
|
||||
],
|
||||
"cancelled": true,
|
||||
"budgetBlocked": true,
|
||||
"restart": "RECOVERED",
|
||||
"resourcesAfter": 0
|
||||
},
|
||||
"negative": {
|
||||
"staleSeek": "REVISION_CONFLICT",
|
||||
"cancelledCompositor": "COMPOSITOR_CANCELLED",
|
||||
"codecHashDrift": "SEQUENCER_CODEC_UNSUPPORTED",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P5-003"
|
||||
}
|
||||
180
tests/golden/WBV2-P5-002/task-context.json
Normal file
180
tests/golden/WBV2-P5-002/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P5-002",
|
||||
"parentTask": "WBV2-P5-001",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable MEDIA.BOUNDED_WORKFLOW data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "MEDIA.BOUNDED_WORKFLOW",
|
||||
"ownerFamily": "MEDIA",
|
||||
"implementationClass": "LOCAL_BOUNDED"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P5-002.py -- tests/files/web/generated/WBV2-P5-002-MEDIA.BOUNDED_WORKFLOW.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P5-002",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P5-002"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 145,
|
||||
"contextRemainingTokens": 35
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9759,
|
||||
"tokens": 2441
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P5-002-MEDIA.BOUNDED_WORKFLOW.blend",
|
||||
"bytes": 87897,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P5-002.py",
|
||||
"bytes": 3216,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 258578,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 1012059,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P5-002/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P5-002.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P5-002/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"seek/decode revision ordering",
|
||||
"cancel/timeout does not publish",
|
||||
"quota/OOM/restart leaves project valid"
|
||||
],
|
||||
"nextTask": "WBV2-P5-003",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P5-002.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P5-001/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P5-001.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P5-002.md",
|
||||
"tests/golden/WBV2-P5-001/manifest.json",
|
||||
"docs/status/WBV2-P5-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-P5-001",
|
||||
"parentTask": "WBV2-P4-004",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P5-002",
|
||||
"artifactCount": 19
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P5-001 status",
|
||||
"- task: `WBV2-P5-001`",
|
||||
"- parent: `WBV2-P4-004`",
|
||||
"- parity: `RENDER.ROUTING`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P5-001-RENDER.ROUTING.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1727,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 432
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P5-002.md",
|
||||
"bytes": 1727,
|
||||
"lines": 38,
|
||||
"tokens": 432
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P5-001/manifest.json",
|
||||
"bytes": 3524,
|
||||
"lines": 39,
|
||||
"tokens": 881
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P5-001.md",
|
||||
"bytes": 1709,
|
||||
"lines": 30,
|
||||
"tokens": 428
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2441,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2441,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3465,
|
||||
"serializedContextTokens": 691,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
40
tests/golden/WBV2-P5-003/manifest.json
Normal file
40
tests/golden/WBV2-P5-003/manifest.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P5-003",
|
||||
"parentTask": "WBV2-P5-002",
|
||||
"operation": "SERVER_JOB_RESULT_BINDING_SERVER_EXACT",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P5-002/manifest.json", "sha256": "70d8fb89a3ddbf02d1128a4efbb76931c17045d7d223aa1e72106366491dbed2"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P5-003-SERVER.JOB_BINDING.blend", "sha256": "016164a5d2462c52f0430955f4156535f05cfcb337a3c1ba77968b4db020c410"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P5-003.py", "sha256": "77cd88a7f56cc499c93596874ae7a2dd6757fc20e09f7a00ec7838e8490195f1"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p5-003-desktop.py", "sha256": "d5423a7b7424fdae37cc374d938f39ed11d8a43fbd38d3a916437c8cfe11858b"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "d2554187b26afdedbb502109d123f2e11a97af16fe822762ab4bcb2f87d236d0"},
|
||||
"sceneIrProtocol": {"path": "web/protocol/scene-ir.ts", "sha256": "b95d3c276a58c4e70ee91017243eeeff0384726e909b69bb8465b2daf0219d7f"},
|
||||
"serverRenderProtocol": {"path": "web/protocol/server-render-job.ts", "sha256": "e2b5b95032b0dbcb346aa35d1a10a3b55d6c006603f16b9e72c3de45763906c5"},
|
||||
"idempotency": {"path": "tools/web/server-job-idempotency.mjs", "sha256": "15eca7550964c9985e26a22a7900d3f3aa69fdef35fe5962b48a8f55ebba5863"},
|
||||
"resultBinding": {"path": "tools/web/server-job-result-binding.mjs", "sha256": "ecf3bddef53e2766dcc055ec027b04c14e3d884132c7fdea476663617364ad86"},
|
||||
"faultProtocol": {"path": "tools/web/server-job-fault.mjs", "sha256": "858360b4468a7b6cf796fc83a1627ba18626b61a0799f83531de996ea374519b"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "f59391c8da9b7d8eef8e414d7e009c896c5bb8e6d450d7ad2593b2b803547cc4"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "0bf6ea8a6c066780dec3a4e9f257aa54de99fa44e8eab3c1680260419a41aa93"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P5-003/server-job-report.json", "sha256": "656546af44238e2b07c44a1f8cccedf996ba639f6cb9ac1c38a4ec30eeafeca3"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P5-003/server-desktop-report.json", "sha256": "34e0108bb5114209c6c4a4f9534a3e7c7955852bd2ccac501e0a2f6943b31e4c"},
|
||||
"status": {"path": "docs/status/WBV2-P5-003.md", "sha256": "3e4f09e03bdd83e09a3a16f645ad14f1a6f535093d8c1fd9781bcd9168495086"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P5-003/task-context.json", "sha256": "51a2fe6c145dcec177addebbe92968ee5ae0999d051367083709b240b22bd315"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P5-003/command.log", "sha256": "3cdcf02375467b1cc27ad5a4ceba794d0cec250f53931eec14ba9a4ee9614b1f"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"staleResult": "SERVER_RENDER_BINDING_MISMATCH",
|
||||
"outputHashDrift": "SERVER_RENDER_OUTPUT_HASH_MISMATCH",
|
||||
"malformedSettings": "SERVER_RENDER_SETTINGS_INVALID",
|
||||
"duplicateConflict": "SERVER_JOB_IDEMPOTENCY_CONFLICT",
|
||||
"cancel": "SERVER_JOB_CANCELLED",
|
||||
"timeout": "SERVER_JOB_TIMEOUT",
|
||||
"oom": "SERVER_JOB_OOM",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P6-001"
|
||||
}
|
||||
62
tests/golden/WBV2-P5-003/server-desktop-report.json
Normal file
62
tests/golden/WBV2-P5-003/server-desktop-report.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"fixtureSha256": "016164a5d2462c52f0430955f4156535f05cfcb337a3c1ba77968b4db020c410",
|
||||
"operation": "SERVER_JOB_BINDING_DESKTOP",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"state": {
|
||||
"cubeId": "object:WBV2P5003ServerCube",
|
||||
"engine": "BLENDER_EEVEE",
|
||||
"receipt": {
|
||||
"build": {
|
||||
"buildSha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c",
|
||||
"version": "5.2.0"
|
||||
},
|
||||
"lifecycle": {
|
||||
"cancel": "CANCELLED",
|
||||
"duplicate": "REUSED",
|
||||
"oom": "OOM",
|
||||
"publishedOnFailure": false,
|
||||
"stale": "BLOCKED",
|
||||
"timeout": "TIMEOUT"
|
||||
},
|
||||
"receiptId": "workflow:server_job_result_binding",
|
||||
"request": {
|
||||
"jobId": "wbv2-p5-003",
|
||||
"requestSha256": "caa71d9bcfdc5702adaefc3fe50eca0f48d247e3b9d6de841237f5f2d66fe587",
|
||||
"sourceRevision": 1
|
||||
},
|
||||
"result": {
|
||||
"outputByteLength": 512,
|
||||
"outputMime": "image/png",
|
||||
"outputSha256": "bde194626d489972c73190c41db64e9f12a3056590c757f4e5f62c7e9442ff0e",
|
||||
"resultSha256": "23028627d452e5270580e7521e95ba88c28c3c6350104dedb174895dfbd41025",
|
||||
"status": "SUCCEEDED"
|
||||
},
|
||||
"schemaVersion": 1,
|
||||
"settings": {
|
||||
"frameEnd": 1,
|
||||
"frameStart": 1,
|
||||
"outputMime": "image/png",
|
||||
"renderEngine": "BLENDER_EEVEE",
|
||||
"resolutionPercentage": 100,
|
||||
"resolutionX": 32,
|
||||
"resolutionY": 32,
|
||||
"samples": 1,
|
||||
"settingsSha256": "de0473fc528c2d546778b735dce389f8919d4e4ef6e24ec42ec2b30683458bdd",
|
||||
"transparent": false
|
||||
},
|
||||
"source": {
|
||||
"identifier": "WBV2-P5-003-SERVER.JOB_BINDING",
|
||||
"kind": "blend",
|
||||
"sha256": "9ecaa86b3dc1915a991a42d62ef34c0eac013b0faa4cf91ea43991f76722f530"
|
||||
}
|
||||
},
|
||||
"resolution": [
|
||||
32,
|
||||
32
|
||||
],
|
||||
"sceneId": "scene:WBV2P5003ServerJobScene"
|
||||
},
|
||||
"task": "WBV2-P5-003"
|
||||
}
|
||||
37
tests/golden/WBV2-P5-003/server-job-report.json
Normal file
37
tests/golden/WBV2-P5-003/server-job-report.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P5-003",
|
||||
"operation": "SERVER_JOB_RESULT_BINDING_SERVER_EXACT",
|
||||
"fixture": {
|
||||
"path": "tests/files/web/generated/WBV2-P5-003-SERVER.JOB_BINDING.blend",
|
||||
"sha256": "016164a5d2462c52f0430955f4156535f05cfcb337a3c1ba77968b4db020c410"
|
||||
},
|
||||
"desktop": {
|
||||
"status": "EXACT",
|
||||
"report": "tests/golden/WBV2-P5-003/server-desktop-report.json",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"wasm": {
|
||||
"status": "EXACT",
|
||||
"bindingStatus": "AVAILABLE_FROM_TEXT_RECEIPT",
|
||||
"receiptId": "workflow:server_job_result_binding",
|
||||
"requestSha256": "6bc72c6cd071c52efecb6cfa2e349f74080a7650dd39f48e553a4ccf413d78af",
|
||||
"resultSha256": "920b687c0a0c8238d2f749a235ea48482bbf72cd627dbb74cae0ae6683fc3639",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"idempotency": {
|
||||
"first": "COMMITTED",
|
||||
"retry": "REUSED",
|
||||
"conflict": "BLOCKED"
|
||||
},
|
||||
"negative": {
|
||||
"staleResult": "SERVER_RENDER_BINDING_MISMATCH",
|
||||
"outputHashDrift": "SERVER_RENDER_OUTPUT_HASH_MISMATCH",
|
||||
"malformedSettings": "SERVER_RENDER_SETTINGS_INVALID",
|
||||
"cancel": "SERVER_JOB_CANCELLED",
|
||||
"timeout": "SERVER_JOB_TIMEOUT",
|
||||
"oom": "SERVER_JOB_OOM",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION"
|
||||
},
|
||||
"nextTask": "WBV2-P6-001"
|
||||
}
|
||||
180
tests/golden/WBV2-P5-003/task-context.json
Normal file
180
tests/golden/WBV2-P5-003/task-context.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P5-003",
|
||||
"parentTask": "WBV2-P5-002",
|
||||
"status": "in_progress",
|
||||
"goal": "Make the same minimal fixture produce observable SERVER.JOB_BINDING data in Blender desktop and WASM/Main, with save/reopen stability. Change only this gap; do not expand to other data-blocks, editors, or browsers.",
|
||||
"scope": {
|
||||
"gap": "SERVER.JOB_BINDING",
|
||||
"ownerFamily": "SERVER",
|
||||
"implementationClass": "SERVER_EXACT"
|
||||
},
|
||||
"commands": [
|
||||
"build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/WBV2-P5-003.py -- tests/files/web/generated/WBV2-P5-003-SERVER.JOB_BINDING.blend",
|
||||
"npm --prefix web run test:generated-gap -- --task WBV2-P5-003",
|
||||
"node tools/web/check-generated-gap.mjs --task WBV2-P5-003"
|
||||
],
|
||||
"inputPaths": [],
|
||||
"inputSelection": {
|
||||
"schemaVersion": 1,
|
||||
"limits": {
|
||||
"maxFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextRemainingBytes": 610,
|
||||
"contextRemainingTokens": 151
|
||||
},
|
||||
"source": {
|
||||
"bytes": 9294,
|
||||
"tokens": 2325
|
||||
},
|
||||
"selected": [],
|
||||
"excluded": [
|
||||
{
|
||||
"path": "tests/files/web/generated/WBV2-P5-003-SERVER.JOB_BINDING.blend",
|
||||
"bytes": 89446,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/generated/WBV2-P5-003.py",
|
||||
"bytes": 2741,
|
||||
"reason": "CONTEXT_REMAINING_SPACE"
|
||||
},
|
||||
{
|
||||
"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp",
|
||||
"bytes": 262020,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tools/web/check-generated-gap.mjs",
|
||||
"bytes": 1020285,
|
||||
"reason": "EVIDENCE_BYTE_BUDGET"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P5-003/",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P5-003.md",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P5-003/manifest.json",
|
||||
"bytes": null,
|
||||
"reason": "GENERATED_EVIDENCE_OUTPUT"
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"files": 0,
|
||||
"bytes": 0,
|
||||
"tokens": 0
|
||||
}
|
||||
},
|
||||
"exitCriteria": [
|
||||
"duplicate request is idempotent",
|
||||
"stale result cannot bind",
|
||||
"timeout/cancel/OOM produces no READY output"
|
||||
],
|
||||
"nextTask": "WBV2-P6-001",
|
||||
"sourceDocuments": {
|
||||
"queue": "docs/EXECUTION_QUEUE.md",
|
||||
"taskCard": "docs/tasks/WBV2-P5-003.md",
|
||||
"taskIndex": "tests/golden/WBV2/task-index.json",
|
||||
"parentManifest": "tests/golden/WBV2-P5-002/manifest.json",
|
||||
"parentStatus": "docs/status/WBV2-P5-002.md"
|
||||
},
|
||||
"readPolicy": {
|
||||
"required": [
|
||||
"docs/EXECUTION_QUEUE.md",
|
||||
"docs/tasks/WBV2-P5-003.md",
|
||||
"tests/golden/WBV2-P5-002/manifest.json",
|
||||
"docs/status/WBV2-P5-002.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-P5-002",
|
||||
"parentTask": "WBV2-P5-001",
|
||||
"status": "done",
|
||||
"nextTask": "WBV2-P5-003",
|
||||
"artifactCount": 17
|
||||
},
|
||||
"statusSummary": [
|
||||
"# WBV2-P5-002 status",
|
||||
"- task: `WBV2-P5-002`",
|
||||
"- parent: `WBV2-P5-001`",
|
||||
"- parity: `MEDIA.BOUNDED_WORKFLOW`",
|
||||
"- implementationClass: `LOCAL_BOUNDED`",
|
||||
"- status: `done`",
|
||||
"- fixture: `tests/files/web/generated/WBV2-P5-002-MEDIA.BOUNDED_WORKFLOW.blend`",
|
||||
"## Evidence"
|
||||
]
|
||||
},
|
||||
"budgets": {
|
||||
"queueBytes": 4096,
|
||||
"taskBytes": 1707,
|
||||
"parentManifestBytes": 24576,
|
||||
"parentStatusBytes": 6144,
|
||||
"evidenceFiles": 12,
|
||||
"evidenceBytes": 8192,
|
||||
"contextTokens": 3500,
|
||||
"contextEnvelopeTokens": 1024,
|
||||
"taskLines": 38,
|
||||
"taskTokens": 427
|
||||
},
|
||||
"size": {
|
||||
"documents": [
|
||||
{
|
||||
"path": "docs/EXECUTION_QUEUE.md",
|
||||
"bytes": 2799,
|
||||
"lines": 51,
|
||||
"tokens": 700
|
||||
},
|
||||
{
|
||||
"path": "docs/tasks/WBV2-P5-003.md",
|
||||
"bytes": 1707,
|
||||
"lines": 38,
|
||||
"tokens": 427
|
||||
},
|
||||
{
|
||||
"path": "tests/golden/WBV2-P5-002/manifest.json",
|
||||
"bytes": 3093,
|
||||
"lines": 36,
|
||||
"tokens": 774
|
||||
},
|
||||
{
|
||||
"path": "docs/status/WBV2-P5-002.md",
|
||||
"bytes": 1695,
|
||||
"lines": 30,
|
||||
"tokens": 424
|
||||
}
|
||||
],
|
||||
"sourceTokens": 2325,
|
||||
"evidenceFiles": 0,
|
||||
"evidenceBytes": 0,
|
||||
"evidenceTokens": 0,
|
||||
"totalTokens": 2325,
|
||||
"reservedEnvelopeTokens": 1024,
|
||||
"estimatedContextTokens": 3349,
|
||||
"serializedContextTokens": 688,
|
||||
"withinBudget": true
|
||||
}
|
||||
}
|
||||
39
tests/golden/WBV2-P6-001/manifest.json
Normal file
39
tests/golden/WBV2-P6-001/manifest.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P6-001",
|
||||
"parentTask": "WBV2-P5-003",
|
||||
"operation": "SECURITY_SCRIPTING_LOCAL_EXACT",
|
||||
"status": "done",
|
||||
"artifacts": {
|
||||
"parentManifest": {"path": "tests/golden/WBV2-P5-003/manifest.json", "sha256": "86fbc8da2b02c1ed595c6d0bdf90f9dd4697def63349c0729edbd9c2bd77a25c"},
|
||||
"fixture": {"path": "tests/files/web/generated/WBV2-P6-001-SECURITY.SCRIPTING.blend", "sha256": "5d4d5b1e5b6ce564a3d526681d5d6dd1bef0d6ecc79d1cd4449b9fe5083928ec"},
|
||||
"generator": {"path": "tools/web/generated/WBV2-P6-001.py", "sha256": "4d1c63124c3bc381950eab7efb4b63f0aaf145aaf8b804b6d345d79e33d7d029"},
|
||||
"desktopChecker": {"path": "tools/web/check-wbv2-p6-001-desktop.py", "sha256": "b8074fc011c8c35f1d5c760c45cf8b96050790ce3dcdf74546ca4d20e95ab784"},
|
||||
"productionReader": {"path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", "sha256": "2510fc525ac61e3b70377a186f62044c985e1500bac6d3e7c453dbc1f12eca26"},
|
||||
"sceneIrProtocol": {"path": "web/protocol/scene-ir.ts", "sha256": "5989c8f8c8e6f0aaa15aabf302a1e67ea7b3302ca62bf475fe3249dd2f08dd4f"},
|
||||
"scriptingProtocol": {"path": "web/protocol/scripting-platform.ts", "sha256": "6699fc0a19e0736823f164e707a420655803e36019cf0071f7ff9c760d25e9f2"},
|
||||
"checker": {"path": "tools/web/check-generated-gap.mjs", "sha256": "00eb478d24508bb384e6864eca54e8440d78f596d0f640ced4092b35add039af"},
|
||||
"preflight": {"path": "tools/web/generated-gap-preflight.mjs", "sha256": "5c7ea9b7bc7691a2dbd1f53baf7fa6e38860afc9aac5cc6c92d361b4acc831ad"},
|
||||
"wasmJavaScript": {"path": "web/app/src/vendor/blender/web_engine.js", "sha256": "e2b21fcc3c9d098cfb343fc682776c2ed95678064e95eabd71409a8b3284cce0"},
|
||||
"wasmBinary": {"path": "web/app/src/vendor/blender/web_engine.wasm", "sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"},
|
||||
"report": {"path": "tests/golden/WBV2-P6-001/scripting-report.json", "sha256": "9af7be5ddc2db3893a037294e073487a62c250fb9cb308edcdf0e335f0d66f16"},
|
||||
"desktopReport": {"path": "tests/golden/WBV2-P6-001/scripting-desktop-report.json", "sha256": "fe575ee718a8745c9be46d0e29d4feb22afae2f7b3bed76d5f2a582cbea3ad6e"},
|
||||
"status": {"path": "docs/status/WBV2-P6-001.md", "sha256": "b97d1924727b083aec7f5cee6afffb92028732d2afad076c47f8a75be17c5e59"},
|
||||
"taskContext": {"path": "tests/golden/WBV2-P6-001/task-context.json", "sha256": "4c035136a0100a7cc2a28f5709201669dee570929bdf99ed98294f465f18a227"},
|
||||
"commandLog": {"path": "tests/golden/WBV2-P6-001/command.log", "sha256": "a07ba8ff5264117909f7b3ee6c8e43eeca2226ebf53c7d5a2fa97a8555aef345"}
|
||||
},
|
||||
"negativeMatrix": {
|
||||
"autorun": "SCRIPT_POLICY_DENIED",
|
||||
"network": "SCRIPT_POLICY_DENIED",
|
||||
"addonInstall": "ADDON_INSTALL_BLOCKED",
|
||||
"driverExpressions": "DRIVER_EXECUTION_BLOCKED",
|
||||
"unsigned": "SCRIPT_SIGNATURE_INVALID",
|
||||
"approvedKey": "SCRIPT_SANDBOX_UNAVAILABLE",
|
||||
"sandboxCancel": "SCRIPT_SANDBOX_CANCELLED",
|
||||
"lateResult": "SCRIPT_SANDBOX_LATE_RESULT",
|
||||
"filesystemEscape": "SCRIPT_MANIFEST_INVALID",
|
||||
"malformedBlend": "REJECTED_WITHOUT_MAIN_MUTATION",
|
||||
"saveReopen": "EXACT"
|
||||
},
|
||||
"nextTask": "WBV2-P6-002"
|
||||
}
|
||||
57
tests/golden/WBV2-P6-001/scripting-desktop-report.json
Normal file
57
tests/golden/WBV2-P6-001/scripting-desktop-report.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"blenderVersion": "5.2.0 LTS",
|
||||
"execution": "DISABLED",
|
||||
"fixtureSha256": "5d4d5b1e5b6ce564a3d526681d5d6dd1bef0d6ecc79d1cd4449b9fe5083928ec",
|
||||
"operation": "SECURITY_SCRIPTING_DESKTOP_METADATA",
|
||||
"saveReopen": "EXACT",
|
||||
"schemaVersion": 1,
|
||||
"state": {
|
||||
"receipt": {
|
||||
"audit": {
|
||||
"approvedKey": false,
|
||||
"decision": "DENY",
|
||||
"reason": "SCRIPT_SIGNATURE_INVALID",
|
||||
"requestId": "script-audit:WBV2-P6-001"
|
||||
},
|
||||
"boundaries": {
|
||||
"filesystemEscape": "BLOCKED",
|
||||
"network": "BLOCKED",
|
||||
"secretAccess": "BLOCKED"
|
||||
},
|
||||
"budget": {
|
||||
"maxAuditEntries": 256,
|
||||
"maxScripts": 64,
|
||||
"maxSourceBytes": 1048576
|
||||
},
|
||||
"defaults": {
|
||||
"addonInstall": false,
|
||||
"autorun": false,
|
||||
"driverExpressions": false,
|
||||
"module": false,
|
||||
"network": false
|
||||
},
|
||||
"policyHash": "3b31546795bc2395cc52d91fbb83d3a73163d507194fecf4430775797f55f822",
|
||||
"policyId": "workflow:scripting_default_deny_audit",
|
||||
"sandbox": {
|
||||
"cancellation": "SCRIPT_SANDBOX_CANCELLED",
|
||||
"dispose": "RELEASED",
|
||||
"execution": "DISABLED",
|
||||
"mainRevisionUnchanged": true,
|
||||
"publishedResults": 0,
|
||||
"temporaryBytes": 0
|
||||
},
|
||||
"schemaVersion": 1,
|
||||
"scope": {
|
||||
"dom": false,
|
||||
"hostWorker": false,
|
||||
"indexedDB": false,
|
||||
"network": false,
|
||||
"opfs": false
|
||||
}
|
||||
},
|
||||
"sceneId": "scene:WBV2P6001ScriptingSecurityScene",
|
||||
"source": "import os\nimport socket\nopen('../escape.txt', 'w')\nprint('secret-token')",
|
||||
"useModule": true
|
||||
},
|
||||
"task": "WBV2-P6-001"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user