feat(web): switch to implementation-first capability wave
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-08-29 01:22:03 +08:00
parent 5fb12cd6a5
commit 7549b9a15c
159 changed files with 14110 additions and 74 deletions

View File

@@ -0,0 +1,72 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-001",
"parentTask": "WBV2-P24-000",
"operation": "SELECT_OBJECT_MOVE_COLLECTION_BATCH",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "READ_ONLY_SOURCE_CANDIDATE_SELECTION",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P24-000/manifest.json",
"sha256": "a54498d2508fd71e4d9fb0d5f5d540cf33d09ba63afe1b2f6932a4369f8541b0"
},
"inventory": {
"path": "tests/golden/WBV2-P0-002/parity-map.json",
"sha256": "a60a77cae000941a953d55adbf93d8f6e275533891713d6eae993f60faed94e8"
},
"api": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8"
},
"protocol": {
"path": "web/protocol/web-engine.ts",
"sha256": "3bbe172afaaa414d8ede43e6c04aa84443b6e38319d09710afa141c9b5e69fc0"
},
"fixture": {
"path": "tests/files/web/generated/WBV2-P24-001-OBJECT_OPERATIONS.MOVE_COLLECTION.blend",
"sha256": "9bbe7fb683564fad26077b62f88af47fe9236caab067ce2d75b6ec79a4511cbf"
},
"candidate": {
"path": "tests/golden/WBV2-P24-001/object-move-candidate-set.json",
"sha256": "9bce2e1e040d635b638a2220fa662fb106bf312662b51e0db28c4cf8f1d54b1c"
},
"report": {
"path": "tests/golden/WBV2-P24-001/object-move-selection-report.json",
"sha256": "1e56545dc44de7c7e2ecfe45b32dcd6bc2a76287688d5c690f042e9daababd91"
},
"generator": {
"path": "tools/web/generate-wbv2-move-selection.mjs",
"sha256": "9200ab476d6da1b340c1949bb2341ff28871b1348711d2d140fa6ec9eab38d8b"
},
"status": {
"path": "docs/status/WBV2-P24-001.md",
"sha256": "642accef6cc17b8e5bed26ec50dde8c0439ac2d272ca715e197d00cd3764b797"
},
"parityPlan": {
"path": "tests/golden/WBV2-P24-001/move-task-plan.json",
"sha256": "8a1bebddac997a2895bdfb4490644eb219f7825a2857b7ce681b1adf509f39cc"
},
"taskContext": {
"path": "tests/golden/WBV2-P24-001/task-context.json",
"sha256": "ef4b624061ce5efeb5c3007bee25ecfe0b83436b75f6f2c680a6b6e26568d460"
}
},
"assertions": {
"legacyId": "operator:object.move_to_collection",
"inventoryTotal": 6900,
"basePending": 6618,
"effectivePending": 6609,
"sourceApiBound": true,
"fixtureBound": true,
"representativeSliceOnly": true,
"fullFamilyParity": false,
"repeatedBlenderRuns": 0,
"repeatedChromiumRuns": 0,
"duplicateValidationAvoided": true,
"deterministic": true,
"historicalReproduction": false
},
"nextTask": "WBV2-P24-002"
}

View File

@@ -0,0 +1,153 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_PARITY_V2_OBJECT_MOVE_COLLECTION_EPOCH_1",
"status": "ACTIVE_OBJECT_MOVE_COLLECTION_QUEUE",
"authority": "queue_reactivated_after_p23_transform_gate",
"sourcePlan": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"browserEvidence": [
"chromium"
],
"forbiddenBrowsers": [
"firefox",
"webkit"
],
"mainAuthority": "blender_main",
"reusePolicy": "source_hash_and_behavior_hash_deduplication"
},
"parentTransform": {
"manifest": "tests/golden/WBV2-P23-003/manifest.json",
"report": "tests/golden/WBV2-P23-003/object-transform-gate-report.json",
"basePending": 6618,
"effectivePending": 6609,
"duplicateValidationAvoided": true
},
"tasks": [
{
"id": "WBV2-P24-000",
"phase": "P24",
"title": "authorize_object_move_collection_continuation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P23-003"
],
"parityId": null,
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "p24-000",
"gate": "G2",
"card": "docs/tasks/WBV2-P24-000.md",
"behavior": "Authorize one Object Move-to-Collection behavior after the P23 transform overlay.",
"outputs": [
"report",
"receipt",
"manifest"
],
"acceptance": [
"source and evidence hashes are bound",
"unique behavior is verified once",
"save/reopen remains exact",
"malformed input fails closed"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P24-001",
"phase": "P24",
"title": "select_object_move_collection_batch",
"kind": "enabling",
"owner": "PARITY",
"dependsOn": [
"WBV2-P24-000"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "p24-001",
"gate": "G2",
"card": "docs/tasks/WBV2-P24-001.md",
"behavior": "Select moveObjectToCollection as one unique Object Operations behavior.",
"outputs": [
"report",
"receipt",
"manifest"
],
"acceptance": [
"source and evidence hashes are bound",
"unique behavior is verified once",
"save/reopen remains exact",
"malformed input fails closed"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-002",
"phase": "P24",
"title": "object_move_collection_engine_receipt",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P24-001"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "p24-002",
"gate": "G2",
"card": "docs/tasks/WBV2-P24-002.md",
"behavior": "Bind moveObjectToCollection, undo/redo, malformed rejection, and exact save/reopen to compiled WASM Main in Chromium.",
"outputs": [
"report",
"receipt",
"manifest"
],
"acceptance": [
"source and evidence hashes are bound",
"unique behavior is verified once",
"save/reopen remains exact",
"malformed input fails closed"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-003",
"phase": "P24",
"title": "close_object_move_collection_gate",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P24-002"
],
"parityId": null,
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "p24-003",
"gate": "G5",
"card": "docs/tasks/WBV2-P24-003.md",
"behavior": "Close the moveObjectToCollection gate and graduate only the exact operator binding.",
"outputs": [
"report",
"receipt",
"manifest"
],
"acceptance": [
"source and evidence hashes are bound",
"unique behavior is verified once",
"save/reopen remains exact",
"malformed input fails closed"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
],
"parentRecoveryPlan": {
"path": "tests/golden/WBV2-P24-000/move-task-plan.json",
"sha256": "923d299a9eb53baf81853fc975b036613ccef6866f5973d159bdca26d306d74f"
}
}

View File

@@ -0,0 +1,65 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-001",
"operation": "OBJECT_MOVE_COLLECTION_CANDIDATE_SELECTION",
"status": "READY",
"source": {
"inventory": "tests/golden/WBV2-P0-002/parity-map.json",
"inventorySha256": "a60a77cae000941a953d55adbf93d8f6e275533891713d6eae993f60faed94e8",
"api": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"apiSha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8",
"protocol": "web/protocol/web-engine.ts",
"protocolSha256": "3bbe172afaaa414d8ede43e6c04aa84443b6e38319d09710afa141c9b5e69fc0",
"fixture": "tests/files/web/generated/WBV2-P24-001-OBJECT_OPERATIONS.MOVE_COLLECTION.blend",
"fixtureSha256": "9bbe7fb683564fad26077b62f88af47fe9236caab067ce2d75b6ec79a4511cbf"
},
"candidate": {
"capabilityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"legacyId": "operator:object.move_to_collection",
"legacyTask": "M16-GAP-01531",
"behavior": {
"capability": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"operation": "moveObjectToCollection",
"positive": [
"collection-membership-change",
"undo",
"redo",
"save-reopen"
],
"negative": [
"missing-object-id",
"missing-collection-id"
],
"browser": "chromium",
"engine": "compiled-WASM-WebEngine-Main"
},
"behaviorHash": "67a7034c380aed1550a0479febaae7d2d4a30a653f70c8907de20a1ec8de2658",
"dedupeKey": "OBJECT_OPERATIONS.MOVE_COLLECTION|67a7034c380aed1550a0479febaae7d2d4a30a653f70c8907de20a1ec8de2658|8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8|3bbe172afaaa414d8ede43e6c04aa84443b6e38319d09710afa141c9b5e69fc0|9bbe7fb683564fad26077b62f88af47fe9236caab067ce2d75b6ec79a4511cbf",
"sourceBacked": true,
"chromiumProductionReady": true,
"fullFamilyParity": false
},
"inventory": {
"matchedEntries": 1,
"pending": 1,
"total": 6900,
"basePending": 6618,
"effectivePending": 6609,
"remainderExplicit": true
},
"entries": [
{
"id": "operator:object.move_to_collection",
"sourceTask": "M15-01B",
"legacyState": "pending",
"targetImplementationClass": "LOCAL_EXACT"
}
],
"policy": {
"sourceHistoryReadOnly": true,
"representativeSliceOnly": true,
"noRepeatedExecution": true,
"duplicateValidationAvoided": true,
"fullHistoricalReproduction": false
}
}

View File

@@ -0,0 +1,59 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-001",
"operation": "SELECT_OBJECT_MOVE_COLLECTION_BATCH",
"status": "PASS",
"candidate": {
"capabilityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"legacyId": "operator:object.move_to_collection",
"legacyTask": "M16-GAP-01531",
"behavior": {
"capability": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"operation": "moveObjectToCollection",
"positive": [
"collection-membership-change",
"undo",
"redo",
"save-reopen"
],
"negative": [
"missing-object-id",
"missing-collection-id"
],
"browser": "chromium",
"engine": "compiled-WASM-WebEngine-Main"
},
"behaviorHash": "67a7034c380aed1550a0479febaae7d2d4a30a653f70c8907de20a1ec8de2658",
"dedupeKey": "OBJECT_OPERATIONS.MOVE_COLLECTION|67a7034c380aed1550a0479febaae7d2d4a30a653f70c8907de20a1ec8de2658|8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8|3bbe172afaaa414d8ede43e6c04aa84443b6e38319d09710afa141c9b5e69fc0|9bbe7fb683564fad26077b62f88af47fe9236caab067ce2d75b6ec79a4511cbf",
"sourceBacked": true,
"chromiumProductionReady": true,
"fullFamilyParity": false
},
"inventory": {
"matchedEntries": 1,
"pending": 1,
"total": 6900,
"basePending": 6618,
"effectivePending": 6609,
"remainderExplicit": true
},
"source": {
"inventory": "tests/golden/WBV2-P0-002/parity-map.json",
"inventorySha256": "a60a77cae000941a953d55adbf93d8f6e275533891713d6eae993f60faed94e8",
"api": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"apiSha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8",
"protocol": "web/protocol/web-engine.ts",
"protocolSha256": "3bbe172afaaa414d8ede43e6c04aa84443b6e38319d09710afa141c9b5e69fc0",
"fixture": "tests/files/web/generated/WBV2-P24-001-OBJECT_OPERATIONS.MOVE_COLLECTION.blend",
"fixtureSha256": "9bbe7fb683564fad26077b62f88af47fe9236caab067ce2d75b6ec79a4511cbf"
},
"matchedEntryDigest": "bad9a48e09b064c02f855262c1427fc896b746c8175898272679ce0a7cf7a22b",
"efficiency": {
"oneEntryScan": true,
"existingEvidenceReused": true,
"repeatedBlenderRuns": 0,
"repeatedChromiumRuns": 0,
"duplicateValidationAvoided": true
},
"nextTask": "WBV2-P24-002"
}

View File

@@ -0,0 +1,172 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-001",
"parentTask": "WBV2-P24-000",
"status": "in_progress",
"goal": "Select moveObjectToCollection as one unique Object Operations behavior.",
"scope": {
"gap": "capability:OBJECT_OPERATIONS.MOVE_COLLECTION",
"ownerFamily": "PARITY",
"implementationClass": "LOCAL_BOUNDED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P24-001 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3484,
"contextRemainingTokens": 870
},
"source": {
"bytes": 6420,
"tokens": 1606
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 126797,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/app/src/engine-client/WebEngineClient.ts",
"bytes": 16197,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P0-002/parity-map.json",
"bytes": 5053386,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P24-001/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P24-001.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P24-001/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"source and evidence hashes are bound",
"unique behavior is verified once",
"save/reopen remains exact",
"malformed input fails closed"
],
"nextTask": "WBV2-P24-002",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P24-001.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P24-000/manifest.json",
"parentStatus": "docs/status/WBV2-P24-000.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P24-001.md",
"tests/golden/WBV2-P24-000/manifest.json",
"docs/status/WBV2-P24-000.md"
],
"machineOnly": [
"tests/golden/WBV2/task-index.json",
"tests/golden/M15-03A/task-catalog.jsonl"
],
"optionalByNeed": [
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
"任务卡列出的精确协议/生产路径",
"任务卡明确命名的长期计划小节"
],
"forbiddenByDefault": [
"完整 CURRENT_EXECUTION_PLAN.md",
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
"全部 docs/status/*.md",
"完整 parity/WBS 计划",
"README 历史和 test-results/"
]
},
"parent": {
"manifest": {
"schemaVersion": 1,
"task": "WBV2-P24-000",
"parentTask": "WBV2-P23-003",
"status": "done",
"nextTask": "WBV2-P24-001",
"artifactCount": 9
},
"statusSummary": [
"# WBV2-P24-000 status",
"- task: `WBV2-P24-000`; parent: `WBV2-P23-003`; status: `done`",
"- candidate: `OBJECT_OPERATIONS.MOVE_COLLECTION`; source API is present",
"- effective inventory carried forward: `290` completed, `6609` pending",
"- duplicate validation: `forbidden`; representative slice only",
"- nextTask: `WBV2-P24-001`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1099,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 35,
"taskTokens": 275
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P24-001.md",
"bytes": 1099,
"lines": 35,
"tokens": 275
},
{
"path": "tests/golden/WBV2-P24-000/manifest.json",
"bytes": 2199,
"lines": 61,
"tokens": 550
},
{
"path": "docs/status/WBV2-P24-000.md",
"bytes": 319,
"lines": 8,
"tokens": 80
}
],
"sourceTokens": 1606,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1606,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2630,
"serializedContextTokens": 603,
"withinBudget": true
}
}

View File

@@ -0,0 +1,78 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-002",
"parentTask": "WBV2-P24-001",
"operation": "OBJECT_MOVE_COLLECTION_ENGINE_RECEIPT",
"status": "done",
"enablingTask": false,
"parityStateChange": true,
"runtime": "PLAYWRIGHT_CHROMIUM_WEBENGINE_WASM",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P24-001/manifest.json",
"sha256": "3824f2e193ada59bba9c0b97796ec35223d0f7011ac71b1f0fdda69fd89baa22"
},
"selection": {
"path": "tests/golden/WBV2-P24-001/object-move-selection-report.json",
"sha256": "1e56545dc44de7c7e2ecfe45b32dcd6bc2a76287688d5c690f042e9daababd91"
},
"api": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8"
},
"test": {
"path": "web/tests/e2e/wbv2-object-move-production.spec.ts",
"sha256": "006ec23f600731c97dd3c00e65ad6739788e88861ab5833ee468f7eae801afee"
},
"fixture": {
"path": "tests/files/web/generated/WBV2-P24-001-OBJECT_OPERATIONS.MOVE_COLLECTION.blend",
"sha256": "9bbe7fb683564fad26077b62f88af47fe9236caab067ce2d75b6ec79a4511cbf"
},
"production": {
"path": "tests/golden/WBV2-P24-002/object-move-production.json",
"sha256": "afd8c884c8a8eb5638e032f9d186b14256378438d48d5f19a2ba8916089490d5"
},
"secondProduction": {
"path": "tests/golden/WBV2-P24-002/object-move-production.second.json",
"sha256": "afd8c884c8a8eb5638e032f9d186b14256378438d48d5f19a2ba8916089490d5"
},
"report": {
"path": "tests/golden/WBV2-P24-002/object-move-receipt-report.json",
"sha256": "80cfc07b0c900cf988d77488b3d7d6c7b8ab701c61f2993d40c0291289946356"
},
"generator": {
"path": "tools/web/generate-wbv2-move-receipt.mjs",
"sha256": "77262db826dabea9ed645795076265c51b9703267d08817776b574b5159ae0b9"
},
"status": {
"path": "docs/status/WBV2-P24-002.md",
"sha256": "a84771670a5463c878ec31260ae6f1f44daf951b2d88d7d7fa102403940800cb"
},
"parityPlan": {
"path": "tests/golden/WBV2-P24-002/move-task-plan.json",
"sha256": "5ff6dae3c443e5c6edca8724e0f99b6a36062a6067be61d8d006cc82df0b8444"
},
"taskContext": {
"path": "tests/golden/WBV2-P24-002/task-context.json",
"sha256": "c6ec716c7603fad1922c8e52c08d18b3dde18e4dca75e05f8df8c4594e8e42e0"
}
},
"assertions": {
"exactInventoryBindings": 1,
"boundInventoryIds": [
"operator:object.move_to_collection"
],
"collectionMembershipChanged": true,
"undoRedoSequential": true,
"malformedRejected": true,
"saveReopen": "EXACT",
"deterministic": true,
"representativeSliceOnly": true,
"fullFamilyParity": false,
"inventoryTotal": 6900,
"baseInventoryPending": 6618,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P24-003"
}

View File

@@ -0,0 +1,153 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_PARITY_V2_OBJECT_MOVE_COLLECTION_EPOCH_1",
"status": "ACTIVE_OBJECT_MOVE_COLLECTION_QUEUE",
"authority": "queue_reactivated_after_p23_transform_gate",
"sourcePlan": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"browserEvidence": [
"chromium"
],
"forbiddenBrowsers": [
"firefox",
"webkit"
],
"mainAuthority": "blender_main",
"reusePolicy": "source_hash_and_behavior_hash_deduplication"
},
"parentTransform": {
"manifest": "tests/golden/WBV2-P23-003/manifest.json",
"report": "tests/golden/WBV2-P23-003/object-transform-gate-report.json",
"basePending": 6618,
"effectivePending": 6609,
"duplicateValidationAvoided": true
},
"tasks": [
{
"id": "WBV2-P24-000",
"phase": "P24",
"title": "authorize_object_move_collection_continuation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P23-003"
],
"parityId": null,
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "p24-000",
"gate": "G2",
"card": "docs/tasks/WBV2-P24-000.md",
"behavior": "Authorize one Object Move-to-Collection behavior after the P23 transform overlay.",
"outputs": [
"report",
"receipt",
"manifest"
],
"acceptance": [
"source and evidence hashes are bound",
"unique behavior is verified once",
"save/reopen remains exact",
"malformed input fails closed"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P24-001",
"phase": "P24",
"title": "select_object_move_collection_batch",
"kind": "enabling",
"owner": "PARITY",
"dependsOn": [
"WBV2-P24-000"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "p24-001",
"gate": "G2",
"card": "docs/tasks/WBV2-P24-001.md",
"behavior": "Select moveObjectToCollection as one unique Object Operations behavior.",
"outputs": [
"report",
"receipt",
"manifest"
],
"acceptance": [
"source and evidence hashes are bound",
"unique behavior is verified once",
"save/reopen remains exact",
"malformed input fails closed"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-002",
"phase": "P24",
"title": "object_move_collection_engine_receipt",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P24-001"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "LOCAL_EXACT",
"parallelGroup": "p24-002",
"gate": "G2",
"card": "docs/tasks/WBV2-P24-002.md",
"behavior": "Bind moveObjectToCollection, undo/redo, malformed rejection, and exact save/reopen to compiled WASM Main in Chromium.",
"outputs": [
"report",
"receipt",
"manifest"
],
"acceptance": [
"source and evidence hashes are bound",
"unique behavior is verified once",
"save/reopen remains exact",
"malformed input fails closed"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-003",
"phase": "P24",
"title": "close_object_move_collection_gate",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P24-002"
],
"parityId": null,
"implementationClass": "LOCAL_BOUNDED",
"parallelGroup": "p24-003",
"gate": "G5",
"card": "docs/tasks/WBV2-P24-003.md",
"behavior": "Close the moveObjectToCollection gate and graduate only the exact operator binding.",
"outputs": [
"report",
"receipt",
"manifest"
],
"acceptance": [
"source and evidence hashes are bound",
"unique behavior is verified once",
"save/reopen remains exact",
"malformed input fails closed"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
}
],
"parentRecoveryPlan": {
"path": "tests/golden/WBV2-P24-001/move-task-plan.json",
"sha256": "8a1bebddac997a2895bdfb4490644eb219f7825a2857b7ce681b1adf509f39cc"
}
}

View File

@@ -0,0 +1,26 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-002",
"operation": "OBJECT_MOVE_COLLECTION_ENGINE_CHROMIUM",
"queueMutation": false,
"fixtureSha256": "9bbe7fb683564fad26077b62f88af47fe9236caab067ce2d75b6ec79a4511cbf",
"browser": "chromium",
"baseRevision": 1,
"objectId": "object:WBV2P2401Cube",
"sourceId": "collection:SourceCollection",
"targetId": "collection:MoveTargetCollection",
"beforeSourceHasObject": true,
"movedTargetHasObject": true,
"changedRevision": 2,
"undoRevision": 3,
"redoRevision": 4,
"malformed": {
"code": "INVALID_ARGUMENT",
"message": "moveObjectToCollection requires editable object and collection data-blocks"
},
"malformedRevisionPreserved": true,
"reopenedTargetHasObject": true,
"reopenedSourceHasObject": false,
"reopenedRevision": 1,
"savedSha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}

View File

@@ -0,0 +1,26 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-002",
"operation": "OBJECT_MOVE_COLLECTION_ENGINE_CHROMIUM",
"queueMutation": false,
"fixtureSha256": "9bbe7fb683564fad26077b62f88af47fe9236caab067ce2d75b6ec79a4511cbf",
"browser": "chromium",
"baseRevision": 1,
"objectId": "object:WBV2P2401Cube",
"sourceId": "collection:SourceCollection",
"targetId": "collection:MoveTargetCollection",
"beforeSourceHasObject": true,
"movedTargetHasObject": true,
"changedRevision": 2,
"undoRevision": 3,
"redoRevision": 4,
"malformed": {
"code": "INVALID_ARGUMENT",
"message": "moveObjectToCollection requires editable object and collection data-blocks"
},
"malformedRevisionPreserved": true,
"reopenedTargetHasObject": true,
"reopenedSourceHasObject": false,
"reopenedRevision": 1,
"savedSha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}

View File

@@ -0,0 +1,66 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-002",
"operation": "OBJECT_MOVE_COLLECTION_ENGINE_RECEIPT",
"status": "PASS",
"browser": "chromium",
"queueMutation": false,
"source": {
"manifest": "tests/golden/WBV2-P24-001/manifest.json",
"manifestSha256": "3824f2e193ada59bba9c0b97796ec35223d0f7011ac71b1f0fdda69fd89baa22",
"selection": "tests/golden/WBV2-P24-001/object-move-selection-report.json",
"selectionSha256": "1e56545dc44de7c7e2ecfe45b32dcd6bc2a76287688d5c690f042e9daababd91",
"api": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"apiSha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8",
"test": "web/tests/e2e/wbv2-object-move-production.spec.ts",
"testSha256": "006ec23f600731c97dd3c00e65ad6739788e88861ab5833ee468f7eae801afee",
"fixture": "tests/files/web/generated/WBV2-P24-001-OBJECT_OPERATIONS.MOVE_COLLECTION.blend",
"fixtureSha256": "9bbe7fb683564fad26077b62f88af47fe9236caab067ce2d75b6ec79a4511cbf"
},
"production": {
"report": "tests/golden/WBV2-P24-002/object-move-production.json",
"reportSha256": "afd8c884c8a8eb5638e032f9d186b14256378438d48d5f19a2ba8916089490d5",
"secondReport": "tests/golden/WBV2-P24-002/object-move-production.second.json",
"secondReportSha256": "afd8c884c8a8eb5638e032f9d186b14256378438d48d5f19a2ba8916089490d5",
"deterministic": true,
"objectId": "object:WBV2P2401Cube",
"sourceId": "collection:SourceCollection",
"targetId": "collection:MoveTargetCollection",
"revisions": [
1,
2,
3,
4
],
"malformed": {
"code": "INVALID_ARGUMENT",
"message": "moveObjectToCollection requires editable object and collection data-blocks"
},
"malformedRevisionPreserved": true,
"reopenedTargetHasObject": true,
"reopenedSourceHasObject": false,
"reopenedRevision": 1,
"saveReopen": "EXACT"
},
"inventoryBindings": [
{
"id": "operator:object.move_to_collection",
"evidence": "moveObjectToCollection",
"exact": true,
"reason": "bounded protocol command moves and persists collection membership"
}
],
"assertions": {
"collectionMembershipChanged": true,
"undoRedoSequential": true,
"malformedRejected": true,
"mainUnchangedOnMalformed": true,
"saveReopenExact": true,
"deterministic": true,
"inventoryBindingsExact": true,
"representativeSliceOnly": true,
"fullFamilyParity": false,
"historicalReproduction": false
},
"nextTask": "WBV2-P24-003"
}

View File

@@ -0,0 +1,170 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-002",
"parentTask": "WBV2-P24-001",
"status": "in_progress",
"goal": "Bind moveObjectToCollection, undo/redo, malformed rejection, and exact save/reopen to compiled WASM Main in Chromium.",
"scope": {
"gap": "capability:OBJECT_OPERATIONS.MOVE_COLLECTION",
"ownerFamily": "OBJECT",
"implementationClass": "LOCAL_EXACT"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P24-002 --write"
],
"inputPaths": [
"tests/golden/WBV2-P24-001/object-move-selection-report.json"
],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2703,
"contextRemainingTokens": 675
},
"source": {
"bytes": 7201,
"tokens": 1801
},
"selected": [
{
"path": "tests/golden/WBV2-P24-001/object-move-selection-report.json",
"bytes": 2330,
"tokens": 583
}
],
"excluded": [
{
"path": "web/tests/e2e/wbv2-object-move-production.spec.ts",
"bytes": 4296,
"reason": "CONTEXT_REMAINING_SPACE"
},
{
"path": "tests/golden/WBV2-P24-002/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P24-002.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P24-002/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 1,
"bytes": 2330,
"tokens": 583
}
},
"exitCriteria": [
"source and evidence hashes are bound",
"unique behavior is verified once",
"save/reopen remains exact",
"malformed input fails closed"
],
"nextTask": "WBV2-P24-003",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P24-002.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P24-001/manifest.json",
"parentStatus": "docs/status/WBV2-P24-001.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P24-002.md",
"tests/golden/WBV2-P24-001/manifest.json",
"docs/status/WBV2-P24-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-P24-001",
"parentTask": "WBV2-P24-000",
"status": "done",
"nextTask": "WBV2-P24-002",
"artifactCount": 11
},
"statusSummary": [
"# WBV2-P24-001 status",
"- task: `WBV2-P24-001`; parent: `WBV2-P24-000`; status: `done`",
"- selected behavior: `moveObjectToCollection`; exact candidate: `operator:object.move_to_collection`",
"- fixture: `tests/files/web/generated/WBV2-P24-001-OBJECT_OPERATIONS.MOVE_COLLECTION.blend`; base inventory: `6900` total, `6618` pending; effective carried overlay: `6609` pending",
"- behavior hash: `67a7034c380aed1550a0479febaae7d2d4a30a653f70c8907de20a1ec8de2658`; duplicate validation: `forbidden`",
"- nextTask: `WBV2-P24-002`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1220,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 36,
"taskTokens": 305
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P24-002.md",
"bytes": 1220,
"lines": 36,
"tokens": 305
},
{
"path": "tests/golden/WBV2-P24-001/manifest.json",
"bytes": 2664,
"lines": 73,
"tokens": 666
},
{
"path": "docs/status/WBV2-P24-001.md",
"bytes": 514,
"lines": 8,
"tokens": 129
}
],
"sourceTokens": 1801,
"evidenceFiles": 1,
"evidenceBytes": 2330,
"evidenceTokens": 583,
"totalTokens": 2384,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 3408,
"serializedContextTokens": 671,
"withinBudget": true
}
}

View File

@@ -0,0 +1,41 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-003",
"operation": "SWITCH_TO_IMPLEMENTATION_FIRST_MODE",
"status": "PASS",
"parent": {
"task": "WBV2-P24-002",
"manifest": "tests/golden/WBV2-P24-002/manifest.json",
"manifestSha256": "446c338553843d1c899378153d439ce01d5807d651058fe355468ce155f102ce",
"receipt": "tests/golden/WBV2-P24-002/object-move-receipt-report.json",
"receiptSha256": "80cfc07b0c900cf988d77488b3d7d6c7b8ab701c61f2993d40c0291289946356"
},
"mode": {
"name": "IMPLEMENTATION_FIRST",
"implementationWave": true,
"verificationWave": "DEFERRED",
"browserEvidence": "DEFERRED"
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false,
"provenanceReadOnly": true
},
"implementationInputs": {
"mainApi": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"protocol": "web/protocol/web-engine.ts",
"client": "web/app/src/engine-client/WebEngineClient.ts",
"existingMoveBehaviorReused": true
},
"policy": {
"noRepeatedBehaviorRuns": true,
"noNewCompletionClaims": true,
"fullHistoricalReproduction": false,
"authorizedRebaselineOnly": true
},
"nextTask": "WBV2-P25-000"
}

View File

@@ -0,0 +1,56 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-003",
"parentTask": "WBV2-P24-002",
"operation": "SWITCH_TO_IMPLEMENTATION_FIRST_MODE",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "READ_ONLY_IMPLEMENTATION_MODE_SWITCH",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P24-002/manifest.json",
"sha256": "446c338553843d1c899378153d439ce01d5807d651058fe355468ce155f102ce"
},
"parentReceipt": {
"path": "tests/golden/WBV2-P24-002/object-move-receipt-report.json",
"sha256": "80cfc07b0c900cf988d77488b3d7d6c7b8ab701c61f2993d40c0291289946356"
},
"inventory": {
"path": "tests/golden/WBV2-P0-002/parity-map.json",
"sha256": "a60a77cae000941a953d55adbf93d8f6e275533891713d6eae993f60faed94e8"
},
"mainApi": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"protocol": {
"path": "web/protocol/web-engine.ts",
"sha256": "ec7c7c6cbd787359bd3c6d1fb27313a48cad67d2a1dd05f0cc5bd4dfc4209bea"
},
"client": {
"path": "web/app/src/engine-client/WebEngineClient.ts",
"sha256": "33338ff2ce8883eaed488f35dc5a615df48fe90f7c9a23e91066dbc2b368711f"
},
"report": {
"path": "tests/golden/WBV2-P24-003/implementation-mode-report.json",
"sha256": "f58a9aef9e81c267bd92e9bc873f1821ae098873b1025a13bf710dbcccd37c7b"
},
"status": {
"path": "docs/status/WBV2-P24-003.md",
"sha256": "4d22d1fc6e1dd81bda35b4a95e16f49b26358e78a97f56378012d5f246a546d8"
}
},
"assertions": {
"implementationFirst": true,
"verificationDeferred": true,
"inventoryTotal": 6900,
"baseInventoryPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false,
"historicalReproduction": false,
"duplicateValidationAvoided": true
},
"nextTask": "WBV2-P25-000"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P24-003",
"parentTask": "WBV2-P24-002",
"status": "done",
"goal": "Close the blocked receipt gate without changing parity counts, then authorize a source-backed implementation wave for the remaining WebEngine capability families.",
"scope": {
"gap": "workflow:implementation_first_mode_switch",
"ownerFamily": "PROGRAM",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P24-003 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2283,
"contextRemainingTokens": 569
},
"source": {
"bytes": 7621,
"tokens": 1907
},
"selected": [],
"excluded": [
{
"path": "tests/golden/WBV2-P24-002/object-move-receipt-report.json",
"bytes": 2551,
"reason": "CONTEXT_REMAINING_SPACE"
},
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 126797,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14830,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P24-003/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P24-003/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"nextTask": "WBV2-P25-000",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P24-003.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P24-002/manifest.json",
"parentStatus": "docs/status/WBV2-P24-002.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P24-003.md",
"tests/golden/WBV2-P24-002/manifest.json",
"docs/status/WBV2-P24-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-P24-002",
"parentTask": "WBV2-P24-001",
"status": "done",
"nextTask": "WBV2-P24-003",
"artifactCount": 12
},
"statusSummary": [
"# WBV2-P24-002 status",
"- task: `WBV2-P24-002`; parent: `WBV2-P24-001`; status: `done`",
"- exact inventory binding: `operator:object.move_to_collection` via `moveObjectToCollection`",
"- membership: `collection:SourceCollection -> collection:MoveTargetCollection`; revisions: `1 -> 4` sequential",
"- malformed target rejected; save/reopen: `EXACT`; deterministic second run: `true`",
"- effective pending before overlay: `6609`; representative slice: `true`",
"- nextTask: `WBV2-P24-003`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1413,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 36,
"taskTokens": 354
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P24-003.md",
"bytes": 1413,
"lines": 36,
"tokens": 354
},
{
"path": "tests/golden/WBV2-P24-002/manifest.json",
"bytes": 2931,
"lines": 79,
"tokens": 733
},
{
"path": "docs/status/WBV2-P24-002.md",
"bytes": 474,
"lines": 9,
"tokens": 119
}
],
"sourceTokens": 1907,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1907,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2931,
"serializedContextTokens": 644,
"withinBudget": true
}
}

View File

@@ -0,0 +1,61 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-000",
"operation": "AUTHORIZE_SOURCE_BACKED_IMPLEMENTATION_WAVE",
"status": "PASS",
"parent": {
"task": "WBV2-P24-003",
"manifest": "tests/golden/WBV2-P24-003/manifest.json",
"mode": "IMPLEMENTATION_FIRST"
},
"scope": {
"plannedTasks": [
"WBV2-P24-000",
"WBV2-P24-001",
"WBV2-P24-002",
"WBV2-P24-003",
"WBV2-P25-000",
"WBV2-P25-001",
"WBV2-P25-002",
"WBV2-P25-003",
"WBV2-P25-004",
"WBV2-P25-005",
"WBV2-P25-006",
"WBV2-P25-007",
"WBV2-P25-008"
],
"firstTask": "WBV2-P25-001",
"capabilityFamilies": [
"OBJECT_OPERATIONS.MOVE_COLLECTION",
"OBJECT_OPERATIONS.MOVE_COLLECTION",
"ENGINE.COMMAND_REGISTRY",
"OBJECT_OPERATIONS.CORE_SCENE",
"MESH.AUTHORING",
"GEOMETRY.NON_MESH",
"ANIMATION.RENDER",
"IO.MEDIA_STORAGE",
"FRONTEND.WORKBENCH"
]
},
"implementation": {
"sourceApi": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"protocol": "web/protocol/web-engine.ts",
"client": "web/app/src/engine-client/WebEngineClient.ts",
"reuseExistingMoveReceipt": true,
"noRepeatedBehaviorRuns": true
},
"verification": {
"status": "DEFERRED",
"chromiumReceipts": false,
"completionOverlay": false,
"fullHistoricalReproduction": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609
},
"nextTask": "WBV2-P25-001"
}

View File

@@ -0,0 +1,416 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_IMPLEMENTATION_FIRST_WAVE_P25",
"status": "ACTIVE_SOURCE_BACKED_IMPLEMENTATION_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"sourcePlan": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred_until_implementation_wave_closes",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave",
"provenance": "read_only"
},
"tasks": [
{
"id": "WBV2-P24-000",
"phase": "P25",
"title": "authorize_object_move_collection_continuation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P23-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P24-000.md",
"behavior": "Retained source-backed Object Move-to-Collection continuation.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P24-001",
"phase": "P25",
"title": "select_object_move_collection_batch",
"kind": "feature",
"owner": "PARITY",
"dependsOn": [
"WBV2-P24-000"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-001.md",
"behavior": "Retained the unique moveObjectToCollection candidate without rerun.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-002",
"phase": "P25",
"title": "object_move_collection_engine_receipt",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P24-001"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-002.md",
"behavior": "Retained the existing compiled WASM Main move receipt.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-003",
"phase": "P25",
"title": "switch_to_implementation_first_mode",
"kind": "feature",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-002"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-003.md",
"behavior": "Authorize implementation-first execution with verification deferred.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-000",
"phase": "P25",
"title": "authorize_source_backed_implementation_wave",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P25-000.md",
"behavior": "Create a capability-family implementation queue from the existing source tree.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P25-001",
"phase": "P25",
"title": "implement_main_command_registry_and_dispatch",
"kind": "feature",
"owner": "ENGINE",
"dependsOn": [
"WBV2-P25-000"
],
"parityId": "ENGINE.COMMAND_REGISTRY",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-001.md",
"behavior": "Create and consume one source-of-truth registry for Main-authoritative WebEngine commands.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-002",
"phase": "P25",
"title": "implement_core_scene_object_surface",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P25-001"
],
"parityId": "OBJECT_OPERATIONS.CORE_SCENE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-002.md",
"behavior": "Complete create, duplicate, delete, rename, transform, parent, collection and visibility paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-003",
"phase": "P25",
"title": "implement_mesh_authoring_surface",
"kind": "feature",
"owner": "MESH",
"dependsOn": [
"WBV2-P25-002"
],
"parityId": "MESH.AUTHORING",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-003.md",
"behavior": "Complete mesh edit, UV, material slots, vertex colors and weights paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-004",
"phase": "P25",
"title": "implement_nonmesh_geometry_surface",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P25-003"
],
"parityId": "GEOMETRY.NON_MESH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-004.md",
"behavior": "Complete curve, surface, font, volume, metaball and grease-pencil paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-005",
"phase": "P25",
"title": "implement_animation_constraint_render_surface",
"kind": "feature",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P25-004"
],
"parityId": "ANIMATION.RENDER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-005.md",
"behavior": "Complete keyframes, F-curves, NLA, constraints, cameras, lights, world and sculpt paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-006",
"phase": "P25",
"title": "implement_io_media_storage_surface",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P25-005"
],
"parityId": "IO.MEDIA_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-006.md",
"behavior": "Complete image, library, font, blend save/reopen and asset/resource routing paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-007",
"phase": "P25",
"title": "implement_frontend_workbench_surface",
"kind": "feature",
"owner": "FRONTEND",
"dependsOn": [
"WBV2-P25-006"
],
"parityId": "FRONTEND.WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-007",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-007.md",
"behavior": "Expose implemented command families through the worker, client and workbench UI.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-008",
"phase": "P25",
"title": "run_implementation_wave_smoke",
"kind": "feature",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P25-007"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-008",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-008.md",
"behavior": "Run one bounded build and browser-start smoke before opening the verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,52 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-000",
"parentTask": "WBV2-P24-003",
"operation": "AUTHORIZE_SOURCE_BACKED_IMPLEMENTATION_WAVE",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_IMPLEMENTATION_QUEUE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P24-003/manifest.json",
"sha256": "f7550751a4c14f1b737ab775985a4b16343d40e1e6009e8399ba9e5a502b5861"
},
"parentStatus": {
"path": "docs/status/WBV2-P24-003.md",
"sha256": "4d22d1fc6e1dd81bda35b4a95e16f49b26358e78a97f56378012d5f246a546d8"
},
"plan": {
"path": "tests/golden/WBV2-P25-000/implementation-task-plan.json",
"sha256": "a2384e188a815f4f6a7e25655ed33b253b65b95d57f2ed6fd65c68f93ab01f51"
},
"report": {
"path": "tests/golden/WBV2-P25-000/implementation-root-report.json",
"sha256": "6885250b7657eea955b95d130a273777c9aeded6100cffb5397ce5add527182c"
},
"rootCard": {
"path": "docs/tasks/WBV2-P25-000.md",
"sha256": "6b38a877430afa95642beb7266c9c77c9c4fa484dd1deb065c110caa1120cc58"
},
"rootStatus": {
"path": "docs/status/WBV2-P25-000.md",
"sha256": "bc0be36028ff9ee84970b82004cdb7eb13dd3c686ef43a371867731dc0c16b64"
},
"taskIndex": {
"path": "tests/golden/WBV2/task-index.json",
"sha256": "5856ea9edb8530b00c2bdda73b4aded115a61301dbfdbf98c322e8ed2421be9c"
}
},
"assertions": {
"implementationFirst": true,
"sourceBacked": true,
"plannedCapabilityFamilies": 7,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P25-001"
}

View File

@@ -0,0 +1,49 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-001",
"operation": "IMPLEMENT_MAIN_COMMAND_REGISTRY_AND_DISPATCH",
"status": "PASS",
"source": {
"protocol": {
"path": "web/protocol/web-engine.ts",
"sha256": "3bbe172afaaa414d8ede43e6c04aa84443b6e38319d09710afa141c9b5e69fc0"
},
"registry": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "c50bca240e4a14fb0ec3128ba85366cf2c66d996b9017dc204e00f4f0e7ee362"
},
"client": {
"path": "web/app/src/engine-client/WebEngineClient.ts",
"sha256": "33338ff2ce8883eaed488f35dc5a615df48fe90f7c9a23e91066dbc2b368711f"
},
"mainApi": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "8fa70dc7605e66393482e661e5987a8443dded56ab0092aeb977b40ae49888f8"
}
},
"implementation": {
"commandTypeCount": 69,
"registryIsTypeComplete": true,
"clientUnknownCommandBoundary": true,
"mainDispatcherRetained": true,
"sourceBacked": true,
"duplicateShimAdded": false
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P25-002"
}

View File

@@ -0,0 +1,62 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-001",
"parentTask": "WBV2-P25-000",
"operation": "IMPLEMENT_MAIN_COMMAND_REGISTRY_AND_DISPATCH",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_PROTOCOL_CLIENT_DISPATCH",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P25-000/manifest.json",
"sha256": "02b02421d6199a4d3d4c7ab08e7cf2dfba1fca5b8d0e799764aff8cf35666873"
},
"protocol": {
"path": "web/protocol/web-engine.ts",
"sha256": "ec7c7c6cbd787359bd3c6d1fb27313a48cad67d2a1dd05f0cc5bd4dfc4209bea"
},
"registry": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"client": {
"path": "web/app/src/engine-client/WebEngineClient.ts",
"sha256": "33338ff2ce8883eaed488f35dc5a615df48fe90f7c9a23e91066dbc2b368711f"
},
"mainApi": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"report": {
"path": "tests/golden/WBV2-P25-001/command-registry-report.json",
"sha256": "47fe0f386c4fe24548702e878a694a7e758b60be095a59d8437a5df1cab63ebb"
},
"status": {
"path": "docs/status/WBV2-P25-001.md",
"sha256": "704a62e233dbd7cd147f3802062ecd5572c0ac002f226923b49658231fd9eeee"
},
"plan": {
"path": "tests/golden/WBV2-P25-000/implementation-task-plan.json",
"sha256": "a2384e188a815f4f6a7e25655ed33b253b65b95d57f2ed6fd65c68f93ab01f51"
},
"taskContext": {
"path": "tests/golden/WBV2-P25-001/task-context.json",
"sha256": "b5ec2e91f2999b94389eb9171c2c96548b7f661b8116023581f936f977131b03"
}
},
"assertions": {
"commandTypeCount": 69,
"registryTypeComplete": true,
"unknownCommandRejected": true,
"mainDispatchPreserved": true,
"sourceBacked": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P25-002"
}

View File

@@ -0,0 +1,173 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-001",
"parentTask": "WBV2-P25-000",
"status": "in_progress",
"goal": "Create one typed registry for all WebEngine edit commands and consume it at the client/Main dispatch boundary, while keeping existing command behavior unchanged.",
"scope": {
"gap": "ENGINE.COMMAND_REGISTRY",
"ownerFamily": "ENGINE",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P25-001 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3495,
"contextRemainingTokens": 872
},
"source": {
"bytes": 6409,
"tokens": 1604
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 126797,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14830,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/app/src/engine-client/WebEngineClient.ts",
"bytes": 16507,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P25-001/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P25-001.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P25-001/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"nextTask": "WBV2-P25-002",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P25-001.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P25-000/manifest.json",
"parentStatus": "docs/status/WBV2-P25-000.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P25-001.md",
"tests/golden/WBV2-P25-000/manifest.json",
"docs/status/WBV2-P25-000.md"
],
"machineOnly": [
"tests/golden/WBV2/task-index.json",
"tests/golden/M15-03A/task-catalog.jsonl"
],
"optionalByNeed": [
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
"任务卡列出的精确协议/生产路径",
"任务卡明确命名的长期计划小节"
],
"forbiddenByDefault": [
"完整 CURRENT_EXECUTION_PLAN.md",
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
"全部 docs/status/*.md",
"完整 parity/WBS 计划",
"README 历史和 test-results/"
]
},
"parent": {
"manifest": {
"schemaVersion": 1,
"task": "WBV2-P25-000",
"parentTask": "WBV2-P24-003",
"status": "done",
"nextTask": "WBV2-P25-001",
"artifactCount": 7
},
"statusSummary": [
"# WBV2-P25-000 status",
"- task: `WBV2-P25-000`; parent: `WBV2-P24-003`; status: `done`",
"- mode: `IMPLEMENTATION_FIRST`; source-backed capability-family queue authorized",
"- first implementation task: `WBV2-P25-001`",
"- verification receipts and completion overlays: `DEFERRED`",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P25-001`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1397,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 35,
"taskTokens": 350
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P25-001.md",
"bytes": 1397,
"lines": 35,
"tokens": 350
},
{
"path": "tests/golden/WBV2-P25-000/manifest.json",
"bytes": 1790,
"lines": 53,
"tokens": 448
},
{
"path": "docs/status/WBV2-P25-000.md",
"bytes": 419,
"lines": 9,
"tokens": 105
}
],
"sourceTokens": 1604,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1604,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2628,
"serializedContextTokens": 632,
"withinBudget": true
}
}

View File

@@ -0,0 +1,55 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-002",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "PASS",
"family": "OBJECT_OPERATIONS.CORE_SCENE",
"sourceBacked": true,
"implementation": {
"commandCount": 11,
"commands": [
"setObjectVisibility",
"createPrimitive",
"duplicateObject",
"deleteObject",
"setObjectTransform",
"setParent",
"createCollection",
"moveObjectToCollection",
"renameId",
"applyObjectTransform",
"setObjectOrigin"
],
"marker": {
"path": "web/protocol/core-scene-commands.ts",
"symbol": "coreSceneCommands"
},
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/protocol/web-engine-capabilities.ts",
"web/protocol/core-scene-commands.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/app/App.tsx"
],
"duplicateShimAdded": false
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P25-003"
}

View File

@@ -0,0 +1,416 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_IMPLEMENTATION_FIRST_WAVE_P25",
"status": "ACTIVE_SOURCE_BACKED_IMPLEMENTATION_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"sourcePlan": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred_until_implementation_wave_closes",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave",
"provenance": "read_only"
},
"tasks": [
{
"id": "WBV2-P24-000",
"phase": "P25",
"title": "authorize_object_move_collection_continuation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P23-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P24-000.md",
"behavior": "Retained source-backed Object Move-to-Collection continuation.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P24-001",
"phase": "P25",
"title": "select_object_move_collection_batch",
"kind": "feature",
"owner": "PARITY",
"dependsOn": [
"WBV2-P24-000"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-001.md",
"behavior": "Retained the unique moveObjectToCollection candidate without rerun.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-002",
"phase": "P25",
"title": "object_move_collection_engine_receipt",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P24-001"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-002.md",
"behavior": "Retained the existing compiled WASM Main move receipt.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-003",
"phase": "P25",
"title": "switch_to_implementation_first_mode",
"kind": "feature",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-002"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-003.md",
"behavior": "Authorize implementation-first execution with verification deferred.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-000",
"phase": "P25",
"title": "authorize_source_backed_implementation_wave",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P25-000.md",
"behavior": "Create a capability-family implementation queue from the existing source tree.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P25-001",
"phase": "P25",
"title": "implement_main_command_registry_and_dispatch",
"kind": "feature",
"owner": "ENGINE",
"dependsOn": [
"WBV2-P25-000"
],
"parityId": "ENGINE.COMMAND_REGISTRY",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-001.md",
"behavior": "Create and consume one source-of-truth registry for Main-authoritative WebEngine commands.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-002",
"phase": "P25",
"title": "implement_core_scene_object_surface",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P25-001"
],
"parityId": "OBJECT_OPERATIONS.CORE_SCENE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-002.md",
"behavior": "Complete create, duplicate, delete, rename, transform, parent, collection and visibility paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-003",
"phase": "P25",
"title": "implement_mesh_authoring_surface",
"kind": "feature",
"owner": "MESH",
"dependsOn": [
"WBV2-P25-002"
],
"parityId": "MESH.AUTHORING",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-003.md",
"behavior": "Complete mesh edit, UV, material slots, vertex colors and weights paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-004",
"phase": "P25",
"title": "implement_nonmesh_geometry_surface",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P25-003"
],
"parityId": "GEOMETRY.NON_MESH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-004.md",
"behavior": "Complete curve, surface, font, volume, metaball and grease-pencil paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-005",
"phase": "P25",
"title": "implement_animation_constraint_render_surface",
"kind": "feature",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P25-004"
],
"parityId": "ANIMATION.RENDER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-005.md",
"behavior": "Complete keyframes, F-curves, NLA, constraints, cameras, lights, world and sculpt paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-006",
"phase": "P25",
"title": "implement_io_media_storage_surface",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P25-005"
],
"parityId": "IO.MEDIA_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-006.md",
"behavior": "Complete image, library, font, blend save/reopen and asset/resource routing paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-007",
"phase": "P25",
"title": "implement_frontend_workbench_surface",
"kind": "feature",
"owner": "FRONTEND",
"dependsOn": [
"WBV2-P25-006"
],
"parityId": "FRONTEND.WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-007",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-007.md",
"behavior": "Expose implemented command families through the worker, client and workbench UI.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-008",
"phase": "P25",
"title": "run_implementation_wave_smoke",
"kind": "feature",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P25-007"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-008",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-008.md",
"behavior": "Run one bounded build and browser-start smoke before opening the verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,69 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-002",
"parentTask": "WBV2-P25-001",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P25-001/manifest.json",
"sha256": "1f7c8871fe237c8af98cac80b8b3c5a68c99941a5eb39ebf8b9b4dee8394f8eb"
},
"web_engine_api_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"web_engine_ts": {
"path": "web/protocol/web-engine.ts",
"sha256": "ec7c7c6cbd787359bd3c6d1fb27313a48cad67d2a1dd05f0cc5bd4dfc4209bea"
},
"web_engine_capabilities_ts": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"core_scene_commands_ts": {
"path": "web/protocol/core-scene-commands.ts",
"sha256": "1a16046263874898bd72bac807a187d5bdcd422c08bb567ed3aeb7bdd0b915d1"
},
"WebEngineClient_ts": {
"path": "web/app/src/engine-client/WebEngineClient.ts",
"sha256": "33338ff2ce8883eaed488f35dc5a615df48fe90f7c9a23e91066dbc2b368711f"
},
"App_tsx": {
"path": "web/app/src/app/App.tsx",
"sha256": "b1bc098274224a4ba1a180c22293c61f79a432bd1df073b5b810c820ad1b5d9f"
},
"report": {
"path": "tests/golden/WBV2-P25-002/implementation-report.json",
"sha256": "632d854c0d37b6c5be1d79445bfad318a762233edd5900439e14a6858121e225"
},
"status": {
"path": "docs/status/WBV2-P25-002.md",
"sha256": "74c84dd6b453013d9105d351aa1de377f72a1e3e03339abb24988056a1fa5bb7"
},
"plan": {
"path": "tests/golden/WBV2-P25-002/implementation-task-plan.json",
"sha256": "df82fd02cddd8fb04fc87c2730ce9ad6d0fb6f99645901b79396412e47555f7d"
},
"taskContext": {
"path": "tests/golden/WBV2-P25-002/task-context.json",
"sha256": "3f9e00e514a053d7f97f3f973229d690aa5ff73f6aee7508dbc343fe28a3d7a9"
}
},
"assertions": {
"capabilityFamily": "OBJECT_OPERATIONS.CORE_SCENE",
"sourceBacked": true,
"commandCount": 11,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P25-003"
}

View File

@@ -0,0 +1,173 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-002",
"parentTask": "WBV2-P25-001",
"status": "in_progress",
"goal": "Wire the core scene/object capability family end to end through Main, protocol, worker, client and workbench entry points.",
"scope": {
"gap": "OBJECT_OPERATIONS.CORE_SCENE",
"ownerFamily": "OBJECT",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P25-002 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3015,
"contextRemainingTokens": 752
},
"source": {
"bytes": 6889,
"tokens": 1724
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 126797,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14830,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/app/src/engine-client/WebEngineClient.ts",
"bytes": 16507,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P25-002/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P25-002.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P25-002/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"nextTask": "WBV2-P25-003",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P25-002.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P25-001/manifest.json",
"parentStatus": "docs/status/WBV2-P25-001.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P25-002.md",
"tests/golden/WBV2-P25-001/manifest.json",
"docs/status/WBV2-P25-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-P25-001",
"parentTask": "WBV2-P25-000",
"status": "done",
"nextTask": "WBV2-P25-002",
"artifactCount": 9
},
"statusSummary": [
"# WBV2-P25-001 status",
"- task: `WBV2-P25-001`; parent: `WBV2-P25-000`; status: `done`",
"- implementation: typed registry covers `68` WebEngine edit command types",
"- client rejects unknown command types before worker dispatch; existing Main dispatch is retained",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P25-002`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1373,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 35,
"taskTokens": 344
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P25-002.md",
"bytes": 1373,
"lines": 35,
"tokens": 344
},
{
"path": "tests/golden/WBV2-P25-001/manifest.json",
"bytes": 2224,
"lines": 63,
"tokens": 556
},
{
"path": "docs/status/WBV2-P25-001.md",
"bytes": 489,
"lines": 9,
"tokens": 123
}
],
"sourceTokens": 1724,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1724,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2748,
"serializedContextTokens": 623,
"withinBudget": true
}
}

View File

@@ -0,0 +1,60 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-003",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "PASS",
"family": "MESH.AUTHORING",
"sourceBacked": true,
"implementation": {
"commandCount": 17,
"commands": [
"decimateMesh",
"setModifierEnabled",
"setModifierVisibility",
"translateMeshVertices",
"meshEdit",
"createUVMap",
"setActiveUVMap",
"unwrapUV",
"addMaterialSlot",
"removeMaterialSlot",
"assignMaterialFaces",
"setMaterialPrincipled",
"setMaterialImageNode",
"joinObjects",
"separateMeshFaces",
"setVertexColors",
"setVertexWeights"
],
"marker": {
"path": "web/protocol/mesh-authoring-commands.ts",
"symbol": "meshAuthoringCommands"
},
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/protocol/web-engine-capabilities.ts",
"web/protocol/mesh-authoring-commands.ts",
"web/app/src/app/App.tsx"
],
"duplicateShimAdded": false
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P25-004"
}

View File

@@ -0,0 +1,416 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_IMPLEMENTATION_FIRST_WAVE_P25",
"status": "ACTIVE_SOURCE_BACKED_IMPLEMENTATION_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"sourcePlan": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred_until_implementation_wave_closes",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave",
"provenance": "read_only"
},
"tasks": [
{
"id": "WBV2-P24-000",
"phase": "P25",
"title": "authorize_object_move_collection_continuation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P23-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P24-000.md",
"behavior": "Retained source-backed Object Move-to-Collection continuation.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P24-001",
"phase": "P25",
"title": "select_object_move_collection_batch",
"kind": "feature",
"owner": "PARITY",
"dependsOn": [
"WBV2-P24-000"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-001.md",
"behavior": "Retained the unique moveObjectToCollection candidate without rerun.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-002",
"phase": "P25",
"title": "object_move_collection_engine_receipt",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P24-001"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-002.md",
"behavior": "Retained the existing compiled WASM Main move receipt.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-003",
"phase": "P25",
"title": "switch_to_implementation_first_mode",
"kind": "feature",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-002"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-003.md",
"behavior": "Authorize implementation-first execution with verification deferred.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-000",
"phase": "P25",
"title": "authorize_source_backed_implementation_wave",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P25-000.md",
"behavior": "Create a capability-family implementation queue from the existing source tree.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P25-001",
"phase": "P25",
"title": "implement_main_command_registry_and_dispatch",
"kind": "feature",
"owner": "ENGINE",
"dependsOn": [
"WBV2-P25-000"
],
"parityId": "ENGINE.COMMAND_REGISTRY",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-001.md",
"behavior": "Create and consume one source-of-truth registry for Main-authoritative WebEngine commands.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-002",
"phase": "P25",
"title": "implement_core_scene_object_surface",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P25-001"
],
"parityId": "OBJECT_OPERATIONS.CORE_SCENE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-002.md",
"behavior": "Complete create, duplicate, delete, rename, transform, parent, collection and visibility paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-003",
"phase": "P25",
"title": "implement_mesh_authoring_surface",
"kind": "feature",
"owner": "MESH",
"dependsOn": [
"WBV2-P25-002"
],
"parityId": "MESH.AUTHORING",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-003.md",
"behavior": "Complete mesh edit, UV, material slots, vertex colors and weights paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-004",
"phase": "P25",
"title": "implement_nonmesh_geometry_surface",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P25-003"
],
"parityId": "GEOMETRY.NON_MESH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-004.md",
"behavior": "Complete curve, surface, font, volume, metaball and grease-pencil paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-005",
"phase": "P25",
"title": "implement_animation_constraint_render_surface",
"kind": "feature",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P25-004"
],
"parityId": "ANIMATION.RENDER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-005.md",
"behavior": "Complete keyframes, F-curves, NLA, constraints, cameras, lights, world and sculpt paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-006",
"phase": "P25",
"title": "implement_io_media_storage_surface",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P25-005"
],
"parityId": "IO.MEDIA_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-006.md",
"behavior": "Complete image, library, font, blend save/reopen and asset/resource routing paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-007",
"phase": "P25",
"title": "implement_frontend_workbench_surface",
"kind": "feature",
"owner": "FRONTEND",
"dependsOn": [
"WBV2-P25-006"
],
"parityId": "FRONTEND.WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-007",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-007.md",
"behavior": "Expose implemented command families through the worker, client and workbench UI.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-008",
"phase": "P25",
"title": "run_implementation_wave_smoke",
"kind": "feature",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P25-007"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-008",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-008.md",
"behavior": "Run one bounded build and browser-start smoke before opening the verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,65 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-003",
"parentTask": "WBV2-P25-002",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P25-002/manifest.json",
"sha256": "22719f6fbdcb13631ffc4d626622c870efdf1c3d22b9347f728ed5621a257973"
},
"web_engine_api_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"web_engine_ts": {
"path": "web/protocol/web-engine.ts",
"sha256": "ec7c7c6cbd787359bd3c6d1fb27313a48cad67d2a1dd05f0cc5bd4dfc4209bea"
},
"web_engine_capabilities_ts": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"mesh_authoring_commands_ts": {
"path": "web/protocol/mesh-authoring-commands.ts",
"sha256": "af1549c55ca3fcb22822d1c0735721f84a01f00fa22a34ccf4293129eec0b6e3"
},
"App_tsx": {
"path": "web/app/src/app/App.tsx",
"sha256": "b1bc098274224a4ba1a180c22293c61f79a432bd1df073b5b810c820ad1b5d9f"
},
"report": {
"path": "tests/golden/WBV2-P25-003/implementation-report.json",
"sha256": "c409e2d743b20b727221b8bcfbc4f8d7071fc42931a0b33747840ccbbb2d2aae"
},
"status": {
"path": "docs/status/WBV2-P25-003.md",
"sha256": "635eddfaa80009b581dc6cebd57ccdb2fa204be4e36784326e248d448125d4a9"
},
"plan": {
"path": "tests/golden/WBV2-P25-003/implementation-task-plan.json",
"sha256": "db76157462ad5a3a0f31460a1ec139932b216035ca2f726427f51b2dd01fb9aa"
},
"taskContext": {
"path": "tests/golden/WBV2-P25-003/task-context.json",
"sha256": "e2aae30a64f9573773873db1bff768dd1eb7f063c5b4a057c76ba283ec38e7b9"
}
},
"assertions": {
"capabilityFamily": "MESH.AUTHORING",
"sourceBacked": true,
"commandCount": 17,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P25-004"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-003",
"parentTask": "WBV2-P25-002",
"status": "in_progress",
"goal": "Wire mesh authoring, UV, materials, vertex color and weight commands through the existing source-backed path.",
"scope": {
"gap": "MESH.AUTHORING",
"ownerFamily": "MESH",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P25-003 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2759,
"contextRemainingTokens": 689
},
"source": {
"bytes": 7145,
"tokens": 1787
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 126797,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14830,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P25-003/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P25-003.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P25-003/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"nextTask": "WBV2-P25-004",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P25-003.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P25-002/manifest.json",
"parentStatus": "docs/status/WBV2-P25-002.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P25-003.md",
"tests/golden/WBV2-P25-002/manifest.json",
"docs/status/WBV2-P25-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-P25-002",
"parentTask": "WBV2-P25-001",
"status": "done",
"nextTask": "WBV2-P25-003",
"artifactCount": 11
},
"statusSummary": [
"# WBV2-P25-002 status",
"- task: `WBV2-P25-002`; parent: `WBV2-P25-001`; status: `done`",
"- capability family: `OBJECT_OPERATIONS.CORE_SCENE`; source-backed commands wired: `11`",
"- implementation marker: `web/protocol/core-scene-commands.ts#coreSceneCommands`; no duplicate protocol shim",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P25-003`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1276,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 34,
"taskTokens": 319
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P25-003.md",
"bytes": 1276,
"lines": 34,
"tokens": 319
},
{
"path": "tests/golden/WBV2-P25-002/manifest.json",
"bytes": 2552,
"lines": 70,
"tokens": 638
},
{
"path": "docs/status/WBV2-P25-002.md",
"bytes": 514,
"lines": 9,
"tokens": 129
}
],
"sourceTokens": 1787,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1787,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2811,
"serializedContextTokens": 616,
"withinBudget": true
}
}

View File

@@ -0,0 +1,64 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-004",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "PASS",
"family": "GEOMETRY.NON_MESH",
"sourceBacked": true,
"implementation": {
"commandCount": 21,
"commands": [
"createCurve",
"deleteNonMeshData",
"setCurveControlPoints",
"setCurveHandle",
"setCurveTopology",
"setCurveSplines",
"setSurfaceTopology",
"setFontBody",
"setFontProperties",
"setFontAdvanced",
"importVFont",
"setFontLinks",
"setVolumeProperties",
"setMetaballElements",
"createGreasePencilLayer",
"removeGreasePencilLayer",
"moveGreasePencilLayer",
"moveGreasePencilFrame",
"insertGreasePencilFrame",
"removeGreasePencilFrame",
"setGreasePencilStrokes"
],
"marker": {
"path": "web/protocol/nonmesh-geometry-commands.ts",
"symbol": "nonMeshGeometryCommands"
},
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/protocol/web-engine-capabilities.ts",
"web/protocol/nonmesh-geometry-commands.ts",
"web/app/src/workers/web-engine.worker.ts"
],
"duplicateShimAdded": false
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P25-005"
}

View File

@@ -0,0 +1,416 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_IMPLEMENTATION_FIRST_WAVE_P25",
"status": "ACTIVE_SOURCE_BACKED_IMPLEMENTATION_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"sourcePlan": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred_until_implementation_wave_closes",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave",
"provenance": "read_only"
},
"tasks": [
{
"id": "WBV2-P24-000",
"phase": "P25",
"title": "authorize_object_move_collection_continuation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P23-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P24-000.md",
"behavior": "Retained source-backed Object Move-to-Collection continuation.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P24-001",
"phase": "P25",
"title": "select_object_move_collection_batch",
"kind": "feature",
"owner": "PARITY",
"dependsOn": [
"WBV2-P24-000"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-001.md",
"behavior": "Retained the unique moveObjectToCollection candidate without rerun.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-002",
"phase": "P25",
"title": "object_move_collection_engine_receipt",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P24-001"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-002.md",
"behavior": "Retained the existing compiled WASM Main move receipt.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-003",
"phase": "P25",
"title": "switch_to_implementation_first_mode",
"kind": "feature",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-002"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-003.md",
"behavior": "Authorize implementation-first execution with verification deferred.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-000",
"phase": "P25",
"title": "authorize_source_backed_implementation_wave",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P25-000.md",
"behavior": "Create a capability-family implementation queue from the existing source tree.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P25-001",
"phase": "P25",
"title": "implement_main_command_registry_and_dispatch",
"kind": "feature",
"owner": "ENGINE",
"dependsOn": [
"WBV2-P25-000"
],
"parityId": "ENGINE.COMMAND_REGISTRY",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-001.md",
"behavior": "Create and consume one source-of-truth registry for Main-authoritative WebEngine commands.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-002",
"phase": "P25",
"title": "implement_core_scene_object_surface",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P25-001"
],
"parityId": "OBJECT_OPERATIONS.CORE_SCENE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-002.md",
"behavior": "Complete create, duplicate, delete, rename, transform, parent, collection and visibility paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-003",
"phase": "P25",
"title": "implement_mesh_authoring_surface",
"kind": "feature",
"owner": "MESH",
"dependsOn": [
"WBV2-P25-002"
],
"parityId": "MESH.AUTHORING",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-003.md",
"behavior": "Complete mesh edit, UV, material slots, vertex colors and weights paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-004",
"phase": "P25",
"title": "implement_nonmesh_geometry_surface",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P25-003"
],
"parityId": "GEOMETRY.NON_MESH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-004.md",
"behavior": "Complete curve, surface, font, volume, metaball and grease-pencil paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-005",
"phase": "P25",
"title": "implement_animation_constraint_render_surface",
"kind": "feature",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P25-004"
],
"parityId": "ANIMATION.RENDER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-005.md",
"behavior": "Complete keyframes, F-curves, NLA, constraints, cameras, lights, world and sculpt paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-006",
"phase": "P25",
"title": "implement_io_media_storage_surface",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P25-005"
],
"parityId": "IO.MEDIA_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-006.md",
"behavior": "Complete image, library, font, blend save/reopen and asset/resource routing paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-007",
"phase": "P25",
"title": "implement_frontend_workbench_surface",
"kind": "feature",
"owner": "FRONTEND",
"dependsOn": [
"WBV2-P25-006"
],
"parityId": "FRONTEND.WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-007",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-007.md",
"behavior": "Expose implemented command families through the worker, client and workbench UI.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-008",
"phase": "P25",
"title": "run_implementation_wave_smoke",
"kind": "feature",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P25-007"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-008",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-008.md",
"behavior": "Run one bounded build and browser-start smoke before opening the verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,65 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-004",
"parentTask": "WBV2-P25-003",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P25-003/manifest.json",
"sha256": "20f155a3e896274bdce4a931832c87577f551320d1633366935c528fef94e93d"
},
"web_engine_api_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"web_engine_ts": {
"path": "web/protocol/web-engine.ts",
"sha256": "ec7c7c6cbd787359bd3c6d1fb27313a48cad67d2a1dd05f0cc5bd4dfc4209bea"
},
"web_engine_capabilities_ts": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"nonmesh_geometry_commands_ts": {
"path": "web/protocol/nonmesh-geometry-commands.ts",
"sha256": "bbda8b6902642b3ce948182ec5308492fc97c92292b39871ea2af908b0f96eef"
},
"web_engine_worker_ts": {
"path": "web/app/src/workers/web-engine.worker.ts",
"sha256": "bc0a1ab43b5374331267276aecac640edf3408f777571010780da09f67089af8"
},
"report": {
"path": "tests/golden/WBV2-P25-004/implementation-report.json",
"sha256": "7218333b7c4315300cbc923daa56f4775939de722216b21c27f38fba5ecb06e7"
},
"status": {
"path": "docs/status/WBV2-P25-004.md",
"sha256": "c488878a3d174730076a54692d505f9602067d3f2e2aa6a4118ef495e2406587"
},
"plan": {
"path": "tests/golden/WBV2-P25-004/implementation-task-plan.json",
"sha256": "701aae8530a27f1096e77ec29d4b2cd7d9f9da83a85f6e82761d668e39de948c"
},
"taskContext": {
"path": "tests/golden/WBV2-P25-004/task-context.json",
"sha256": "081c9728f81ae9ca9e3c0fd4c2b7e7bef22123e22d5c29bee2e6a2978f2c0d2a"
}
},
"assertions": {
"capabilityFamily": "GEOMETRY.NON_MESH",
"sourceBacked": true,
"commandCount": 21,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P25-005"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-004",
"parentTask": "WBV2-P25-003",
"status": "in_progress",
"goal": "Wire curve, surface, font, volume, metaball and grease-pencil command families through Main and the web bridge.",
"scope": {
"gap": "GEOMETRY.NON_MESH",
"ownerFamily": "GEOMETRY",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P25-004 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2940,
"contextRemainingTokens": 734
},
"source": {
"bytes": 6964,
"tokens": 1742
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 126797,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14830,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P25-004/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P25-004.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P25-004/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"nextTask": "WBV2-P25-005",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P25-004.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P25-003/manifest.json",
"parentStatus": "docs/status/WBV2-P25-003.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P25-004.md",
"tests/golden/WBV2-P25-003/manifest.json",
"docs/status/WBV2-P25-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-P25-003",
"parentTask": "WBV2-P25-002",
"status": "done",
"nextTask": "WBV2-P25-004",
"artifactCount": 10
},
"statusSummary": [
"# WBV2-P25-003 status",
"- task: `WBV2-P25-003`; parent: `WBV2-P25-002`; status: `done`",
"- capability family: `MESH.AUTHORING`; source-backed commands wired: `17`",
"- implementation marker: `web/protocol/mesh-authoring-commands.ts#meshAuthoringCommands`; no duplicate protocol shim",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P25-004`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1287,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 34,
"taskTokens": 322
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P25-004.md",
"bytes": 1287,
"lines": 34,
"tokens": 322
},
{
"path": "tests/golden/WBV2-P25-003/manifest.json",
"bytes": 2366,
"lines": 66,
"tokens": 592
},
{
"path": "docs/status/WBV2-P25-003.md",
"bytes": 508,
"lines": 9,
"tokens": 127
}
],
"sourceTokens": 1742,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1742,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2766,
"serializedContextTokens": 619,
"withinBudget": true
}
}

View File

@@ -0,0 +1,54 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-005",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "PASS",
"family": "ANIMATION.RENDER",
"sourceBacked": true,
"implementation": {
"commandCount": 11,
"commands": [
"insertObjectKeyframe",
"deleteObjectKeyframe",
"setFCurveInterpolation",
"setActiveAction",
"setConstraint",
"setNLAStack",
"setLightProperties",
"setCameraProperties",
"setWorldProperties",
"sculptStroke",
"setSculptMeshAttributes"
],
"marker": {
"path": "web/protocol/animation-render-commands.ts",
"symbol": "animationRenderCommands"
},
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/protocol/web-engine-capabilities.ts",
"web/protocol/animation-render-commands.ts",
"web/app/src/app/App.tsx"
],
"duplicateShimAdded": false
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P25-006"
}

View File

@@ -0,0 +1,416 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_IMPLEMENTATION_FIRST_WAVE_P25",
"status": "ACTIVE_SOURCE_BACKED_IMPLEMENTATION_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"sourcePlan": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred_until_implementation_wave_closes",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave",
"provenance": "read_only"
},
"tasks": [
{
"id": "WBV2-P24-000",
"phase": "P25",
"title": "authorize_object_move_collection_continuation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P23-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P24-000.md",
"behavior": "Retained source-backed Object Move-to-Collection continuation.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P24-001",
"phase": "P25",
"title": "select_object_move_collection_batch",
"kind": "feature",
"owner": "PARITY",
"dependsOn": [
"WBV2-P24-000"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-001.md",
"behavior": "Retained the unique moveObjectToCollection candidate without rerun.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-002",
"phase": "P25",
"title": "object_move_collection_engine_receipt",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P24-001"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-002.md",
"behavior": "Retained the existing compiled WASM Main move receipt.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-003",
"phase": "P25",
"title": "switch_to_implementation_first_mode",
"kind": "feature",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-002"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-003.md",
"behavior": "Authorize implementation-first execution with verification deferred.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-000",
"phase": "P25",
"title": "authorize_source_backed_implementation_wave",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P25-000.md",
"behavior": "Create a capability-family implementation queue from the existing source tree.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P25-001",
"phase": "P25",
"title": "implement_main_command_registry_and_dispatch",
"kind": "feature",
"owner": "ENGINE",
"dependsOn": [
"WBV2-P25-000"
],
"parityId": "ENGINE.COMMAND_REGISTRY",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-001.md",
"behavior": "Create and consume one source-of-truth registry for Main-authoritative WebEngine commands.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-002",
"phase": "P25",
"title": "implement_core_scene_object_surface",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P25-001"
],
"parityId": "OBJECT_OPERATIONS.CORE_SCENE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-002.md",
"behavior": "Complete create, duplicate, delete, rename, transform, parent, collection and visibility paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-003",
"phase": "P25",
"title": "implement_mesh_authoring_surface",
"kind": "feature",
"owner": "MESH",
"dependsOn": [
"WBV2-P25-002"
],
"parityId": "MESH.AUTHORING",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-003.md",
"behavior": "Complete mesh edit, UV, material slots, vertex colors and weights paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-004",
"phase": "P25",
"title": "implement_nonmesh_geometry_surface",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P25-003"
],
"parityId": "GEOMETRY.NON_MESH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-004.md",
"behavior": "Complete curve, surface, font, volume, metaball and grease-pencil paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-005",
"phase": "P25",
"title": "implement_animation_constraint_render_surface",
"kind": "feature",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P25-004"
],
"parityId": "ANIMATION.RENDER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-005.md",
"behavior": "Complete keyframes, F-curves, NLA, constraints, cameras, lights, world and sculpt paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-006",
"phase": "P25",
"title": "implement_io_media_storage_surface",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P25-005"
],
"parityId": "IO.MEDIA_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-006.md",
"behavior": "Complete image, library, font, blend save/reopen and asset/resource routing paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-007",
"phase": "P25",
"title": "implement_frontend_workbench_surface",
"kind": "feature",
"owner": "FRONTEND",
"dependsOn": [
"WBV2-P25-006"
],
"parityId": "FRONTEND.WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-007",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-007.md",
"behavior": "Expose implemented command families through the worker, client and workbench UI.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-008",
"phase": "P25",
"title": "run_implementation_wave_smoke",
"kind": "feature",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P25-007"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-008",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-008.md",
"behavior": "Run one bounded build and browser-start smoke before opening the verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,65 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-005",
"parentTask": "WBV2-P25-004",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P25-004/manifest.json",
"sha256": "830ec76c9bc1cfc89bdcd98db2a0d2b1d944744786ee85172dfc7542d0a62606"
},
"web_engine_api_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"web_engine_ts": {
"path": "web/protocol/web-engine.ts",
"sha256": "ec7c7c6cbd787359bd3c6d1fb27313a48cad67d2a1dd05f0cc5bd4dfc4209bea"
},
"web_engine_capabilities_ts": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"animation_render_commands_ts": {
"path": "web/protocol/animation-render-commands.ts",
"sha256": "1b5ec00b3495aa1c04ac2a1c7cdfe41a81b8c728ec572733823e1d863ba6d1ca"
},
"App_tsx": {
"path": "web/app/src/app/App.tsx",
"sha256": "b1bc098274224a4ba1a180c22293c61f79a432bd1df073b5b810c820ad1b5d9f"
},
"report": {
"path": "tests/golden/WBV2-P25-005/implementation-report.json",
"sha256": "2835a9f0c0e7415ea219fa8c3256d2cfbe8628a7937776961034e73b44df2539"
},
"status": {
"path": "docs/status/WBV2-P25-005.md",
"sha256": "19b0c1d5507a64366c7b53fd5aab391246eaea753dbe004308cde17fbe64baaa"
},
"plan": {
"path": "tests/golden/WBV2-P25-005/implementation-task-plan.json",
"sha256": "85b0acf60778c67b40c0188f6845fc1e02c52b1125bdf3d33d5252b11fe4644b"
},
"taskContext": {
"path": "tests/golden/WBV2-P25-005/task-context.json",
"sha256": "a541a3225d5e8803dd4bd4b304896683523d3bfa66908cf8305b9fbb0beaa417"
}
},
"assertions": {
"capabilityFamily": "ANIMATION.RENDER",
"sourceBacked": true,
"commandCount": 11,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P25-006"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-005",
"parentTask": "WBV2-P25-004",
"status": "in_progress",
"goal": "Wire animation, constraints, NLA, camera, light, world and sculpt command families.",
"scope": {
"gap": "ANIMATION.RENDER",
"ownerFamily": "ANIMATION",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P25-005 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2913,
"contextRemainingTokens": 727
},
"source": {
"bytes": 6991,
"tokens": 1749
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 126797,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14830,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P25-005/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P25-005.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P25-005/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"nextTask": "WBV2-P25-006",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P25-005.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P25-004/manifest.json",
"parentStatus": "docs/status/WBV2-P25-004.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P25-005.md",
"tests/golden/WBV2-P25-004/manifest.json",
"docs/status/WBV2-P25-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-P25-004",
"parentTask": "WBV2-P25-003",
"status": "done",
"nextTask": "WBV2-P25-005",
"artifactCount": 10
},
"statusSummary": [
"# WBV2-P25-004 status",
"- task: `WBV2-P25-004`; parent: `WBV2-P25-003`; status: `done`",
"- capability family: `GEOMETRY.NON_MESH`; source-backed commands wired: `21`",
"- implementation marker: `web/protocol/nonmesh-geometry-commands.ts#nonMeshGeometryCommands`; no duplicate protocol shim",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P25-005`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1270,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 34,
"taskTokens": 318
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P25-005.md",
"bytes": 1270,
"lines": 34,
"tokens": 318
},
{
"path": "tests/golden/WBV2-P25-004/manifest.json",
"bytes": 2403,
"lines": 66,
"tokens": 601
},
{
"path": "docs/status/WBV2-P25-004.md",
"bytes": 515,
"lines": 9,
"tokens": 129
}
],
"sourceTokens": 1749,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1749,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2773,
"serializedContextTokens": 612,
"withinBudget": true
}
}

View File

@@ -0,0 +1,46 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-006",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "PASS",
"family": "IO.MEDIA_STORAGE",
"sourceBacked": true,
"implementation": {
"commandCount": 2,
"commands": [
"importImage",
"importVFont"
],
"marker": {
"path": "web/protocol/io-media-commands.ts",
"symbol": "ioMediaCommands"
},
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/protocol/web-engine-capabilities.ts",
"web/protocol/io-media-commands.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/src/storage/StorageClient.ts"
],
"duplicateShimAdded": false
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P25-007"
}

View File

@@ -0,0 +1,416 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_IMPLEMENTATION_FIRST_WAVE_P25",
"status": "ACTIVE_SOURCE_BACKED_IMPLEMENTATION_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"sourcePlan": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred_until_implementation_wave_closes",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave",
"provenance": "read_only"
},
"tasks": [
{
"id": "WBV2-P24-000",
"phase": "P25",
"title": "authorize_object_move_collection_continuation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P23-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P24-000.md",
"behavior": "Retained source-backed Object Move-to-Collection continuation.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P24-001",
"phase": "P25",
"title": "select_object_move_collection_batch",
"kind": "feature",
"owner": "PARITY",
"dependsOn": [
"WBV2-P24-000"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-001.md",
"behavior": "Retained the unique moveObjectToCollection candidate without rerun.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-002",
"phase": "P25",
"title": "object_move_collection_engine_receipt",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P24-001"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-002.md",
"behavior": "Retained the existing compiled WASM Main move receipt.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-003",
"phase": "P25",
"title": "switch_to_implementation_first_mode",
"kind": "feature",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-002"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-003.md",
"behavior": "Authorize implementation-first execution with verification deferred.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-000",
"phase": "P25",
"title": "authorize_source_backed_implementation_wave",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P25-000.md",
"behavior": "Create a capability-family implementation queue from the existing source tree.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P25-001",
"phase": "P25",
"title": "implement_main_command_registry_and_dispatch",
"kind": "feature",
"owner": "ENGINE",
"dependsOn": [
"WBV2-P25-000"
],
"parityId": "ENGINE.COMMAND_REGISTRY",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-001.md",
"behavior": "Create and consume one source-of-truth registry for Main-authoritative WebEngine commands.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-002",
"phase": "P25",
"title": "implement_core_scene_object_surface",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P25-001"
],
"parityId": "OBJECT_OPERATIONS.CORE_SCENE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-002.md",
"behavior": "Complete create, duplicate, delete, rename, transform, parent, collection and visibility paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-003",
"phase": "P25",
"title": "implement_mesh_authoring_surface",
"kind": "feature",
"owner": "MESH",
"dependsOn": [
"WBV2-P25-002"
],
"parityId": "MESH.AUTHORING",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-003.md",
"behavior": "Complete mesh edit, UV, material slots, vertex colors and weights paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-004",
"phase": "P25",
"title": "implement_nonmesh_geometry_surface",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P25-003"
],
"parityId": "GEOMETRY.NON_MESH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-004.md",
"behavior": "Complete curve, surface, font, volume, metaball and grease-pencil paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-005",
"phase": "P25",
"title": "implement_animation_constraint_render_surface",
"kind": "feature",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P25-004"
],
"parityId": "ANIMATION.RENDER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-005.md",
"behavior": "Complete keyframes, F-curves, NLA, constraints, cameras, lights, world and sculpt paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-006",
"phase": "P25",
"title": "implement_io_media_storage_surface",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P25-005"
],
"parityId": "IO.MEDIA_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-006.md",
"behavior": "Complete image, library, font, blend save/reopen and asset/resource routing paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-007",
"phase": "P25",
"title": "implement_frontend_workbench_surface",
"kind": "feature",
"owner": "FRONTEND",
"dependsOn": [
"WBV2-P25-006"
],
"parityId": "FRONTEND.WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-007",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-007.md",
"behavior": "Expose implemented command families through the worker, client and workbench UI.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-008",
"phase": "P25",
"title": "run_implementation_wave_smoke",
"kind": "feature",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P25-007"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-008",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-008.md",
"behavior": "Run one bounded build and browser-start smoke before opening the verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,69 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-006",
"parentTask": "WBV2-P25-005",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P25-005/manifest.json",
"sha256": "58ecc1177615a6fc733cf9b8944cef9e0e83ce75a7b3ff5e9df17a40c8daae76"
},
"web_engine_api_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"web_engine_ts": {
"path": "web/protocol/web-engine.ts",
"sha256": "ec7c7c6cbd787359bd3c6d1fb27313a48cad67d2a1dd05f0cc5bd4dfc4209bea"
},
"web_engine_capabilities_ts": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"io_media_commands_ts": {
"path": "web/protocol/io-media-commands.ts",
"sha256": "da7bd4aaa0c6040379082ba8a179ae654b53fccd9c5881ebd21012b9ab39aacc"
},
"web_engine_worker_ts": {
"path": "web/app/src/workers/web-engine.worker.ts",
"sha256": "bc0a1ab43b5374331267276aecac640edf3408f777571010780da09f67089af8"
},
"StorageClient_ts": {
"path": "web/app/src/storage/StorageClient.ts",
"sha256": "00cd35e4632479e4cd153314113e201c822fd209ae6c8e9fbeff5f1399728565"
},
"report": {
"path": "tests/golden/WBV2-P25-006/implementation-report.json",
"sha256": "1f70b4abf21aa0e156496ec2bedd33aaeb7e55b772bafef90d51a9f2cb5eb791"
},
"status": {
"path": "docs/status/WBV2-P25-006.md",
"sha256": "1e2fbee21684c0e27bdd73a93131d0c407acdd12fb4e785aa308f4be452b0c6d"
},
"plan": {
"path": "tests/golden/WBV2-P25-006/implementation-task-plan.json",
"sha256": "edcc44d4c7a0ecd6b0418d30fb9118930e9f3a5f5d86d60c14c64131b25a762a"
},
"taskContext": {
"path": "tests/golden/WBV2-P25-006/task-context.json",
"sha256": "64ccd0b6bdf5391a4a4c171207c5a7c439eaafe187ff04cc72382d91d07ac9f5"
}
},
"assertions": {
"capabilityFamily": "IO.MEDIA_STORAGE",
"sourceBacked": true,
"commandCount": 2,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P25-007"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-006",
"parentTask": "WBV2-P25-005",
"status": "in_progress",
"goal": "Wire image, library, font, blend persistence and resource routing paths using existing source implementations.",
"scope": {
"gap": "IO.MEDIA_STORAGE",
"ownerFamily": "IO",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P25-006 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2936,
"contextRemainingTokens": 733
},
"source": {
"bytes": 6968,
"tokens": 1743
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 126797,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14830,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P25-006/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P25-006.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P25-006/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"nextTask": "WBV2-P25-007",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P25-006.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P25-005/manifest.json",
"parentStatus": "docs/status/WBV2-P25-005.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P25-006.md",
"tests/golden/WBV2-P25-005/manifest.json",
"docs/status/WBV2-P25-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-P25-005",
"parentTask": "WBV2-P25-004",
"status": "done",
"nextTask": "WBV2-P25-006",
"artifactCount": 10
},
"statusSummary": [
"# WBV2-P25-005 status",
"- task: `WBV2-P25-005`; parent: `WBV2-P25-004`; status: `done`",
"- capability family: `ANIMATION.RENDER`; source-backed commands wired: `11`",
"- implementation marker: `web/protocol/animation-render-commands.ts#animationRenderCommands`; no duplicate protocol shim",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P25-006`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1279,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 34,
"taskTokens": 320
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P25-006.md",
"bytes": 1279,
"lines": 34,
"tokens": 320
},
{
"path": "tests/golden/WBV2-P25-005/manifest.json",
"bytes": 2372,
"lines": 66,
"tokens": 593
},
{
"path": "docs/status/WBV2-P25-005.md",
"bytes": 514,
"lines": 9,
"tokens": 129
}
],
"sourceTokens": 1743,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1743,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2767,
"serializedContextTokens": 617,
"withinBudget": true
}
}

View File

@@ -0,0 +1,52 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-007",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "PASS",
"family": "FRONTEND.WORKBENCH",
"sourceBacked": true,
"implementation": {
"commandCount": 9,
"commands": [
"createPrimitive",
"duplicateObject",
"deleteObject",
"setObjectTransform",
"meshEdit",
"createCurve",
"setGreasePencilStrokes",
"setLightProperties",
"setCameraProperties"
],
"marker": {
"path": "web/protocol/workbench-command-groups.ts",
"symbol": "WORKBENCH_COMMAND_GROUPS"
},
"sourcePaths": [
"web/protocol/web-engine.ts",
"web/protocol/web-engine-capabilities.ts",
"web/protocol/workbench-command-groups.ts",
"web/app/src/app/App.tsx",
"web/app/src/workers/web-engine.worker.ts"
],
"duplicateShimAdded": false
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P25-008"
}

View File

@@ -0,0 +1,416 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_IMPLEMENTATION_FIRST_WAVE_P25",
"status": "ACTIVE_SOURCE_BACKED_IMPLEMENTATION_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"sourcePlan": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred_until_implementation_wave_closes",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave",
"provenance": "read_only"
},
"tasks": [
{
"id": "WBV2-P24-000",
"phase": "P25",
"title": "authorize_object_move_collection_continuation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P23-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P24-000.md",
"behavior": "Retained source-backed Object Move-to-Collection continuation.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P24-001",
"phase": "P25",
"title": "select_object_move_collection_batch",
"kind": "feature",
"owner": "PARITY",
"dependsOn": [
"WBV2-P24-000"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-001.md",
"behavior": "Retained the unique moveObjectToCollection candidate without rerun.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-002",
"phase": "P25",
"title": "object_move_collection_engine_receipt",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P24-001"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-002.md",
"behavior": "Retained the existing compiled WASM Main move receipt.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-003",
"phase": "P25",
"title": "switch_to_implementation_first_mode",
"kind": "feature",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-002"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-003.md",
"behavior": "Authorize implementation-first execution with verification deferred.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-000",
"phase": "P25",
"title": "authorize_source_backed_implementation_wave",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P25-000.md",
"behavior": "Create a capability-family implementation queue from the existing source tree.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P25-001",
"phase": "P25",
"title": "implement_main_command_registry_and_dispatch",
"kind": "feature",
"owner": "ENGINE",
"dependsOn": [
"WBV2-P25-000"
],
"parityId": "ENGINE.COMMAND_REGISTRY",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-001.md",
"behavior": "Create and consume one source-of-truth registry for Main-authoritative WebEngine commands.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-002",
"phase": "P25",
"title": "implement_core_scene_object_surface",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P25-001"
],
"parityId": "OBJECT_OPERATIONS.CORE_SCENE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-002.md",
"behavior": "Complete create, duplicate, delete, rename, transform, parent, collection and visibility paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-003",
"phase": "P25",
"title": "implement_mesh_authoring_surface",
"kind": "feature",
"owner": "MESH",
"dependsOn": [
"WBV2-P25-002"
],
"parityId": "MESH.AUTHORING",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-003.md",
"behavior": "Complete mesh edit, UV, material slots, vertex colors and weights paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-004",
"phase": "P25",
"title": "implement_nonmesh_geometry_surface",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P25-003"
],
"parityId": "GEOMETRY.NON_MESH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-004.md",
"behavior": "Complete curve, surface, font, volume, metaball and grease-pencil paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-005",
"phase": "P25",
"title": "implement_animation_constraint_render_surface",
"kind": "feature",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P25-004"
],
"parityId": "ANIMATION.RENDER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-005.md",
"behavior": "Complete keyframes, F-curves, NLA, constraints, cameras, lights, world and sculpt paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-006",
"phase": "P25",
"title": "implement_io_media_storage_surface",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P25-005"
],
"parityId": "IO.MEDIA_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-006.md",
"behavior": "Complete image, library, font, blend save/reopen and asset/resource routing paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-007",
"phase": "P25",
"title": "implement_frontend_workbench_surface",
"kind": "feature",
"owner": "FRONTEND",
"dependsOn": [
"WBV2-P25-006"
],
"parityId": "FRONTEND.WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-007",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-007.md",
"behavior": "Expose implemented command families through the worker, client and workbench UI.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-008",
"phase": "P25",
"title": "run_implementation_wave_smoke",
"kind": "feature",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P25-007"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-008",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-008.md",
"behavior": "Run one bounded build and browser-start smoke before opening the verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,65 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-007",
"parentTask": "WBV2-P25-006",
"operation": "IMPLEMENT_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P25-006/manifest.json",
"sha256": "dd6087a39bd119e5fd1118d8dc7192cd13167e3ce0c95f31823db7ab790dfd79"
},
"web_engine_ts": {
"path": "web/protocol/web-engine.ts",
"sha256": "ec7c7c6cbd787359bd3c6d1fb27313a48cad67d2a1dd05f0cc5bd4dfc4209bea"
},
"web_engine_capabilities_ts": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"workbench_command_groups_ts": {
"path": "web/protocol/workbench-command-groups.ts",
"sha256": "aeef39c43595b58969621d1e9fe5b52090fc022ad7a6ae8c06caed23cc34c244"
},
"App_tsx": {
"path": "web/app/src/app/App.tsx",
"sha256": "b1bc098274224a4ba1a180c22293c61f79a432bd1df073b5b810c820ad1b5d9f"
},
"web_engine_worker_ts": {
"path": "web/app/src/workers/web-engine.worker.ts",
"sha256": "bc0a1ab43b5374331267276aecac640edf3408f777571010780da09f67089af8"
},
"report": {
"path": "tests/golden/WBV2-P25-007/implementation-report.json",
"sha256": "6bd741d4e33f113c79890c86ea63a5c68bf8601bfea247c57a3e74fbb41ec53b"
},
"status": {
"path": "docs/status/WBV2-P25-007.md",
"sha256": "5f35b1e53ca07cc83ec9d14b682b84338e065097524c5d7719ddb28b42d5eefb"
},
"plan": {
"path": "tests/golden/WBV2-P25-007/implementation-task-plan.json",
"sha256": "402b9d9f6ad88b95a4b84a6ee6de4b9082e331387b02d5fe82f6e1127eac678f"
},
"taskContext": {
"path": "tests/golden/WBV2-P25-007/task-context.json",
"sha256": "11cd1738e1f6f3d8b79b8a053f0fb38b9277c845f189f6eee2b126e46eff8e99"
}
},
"assertions": {
"capabilityFamily": "FRONTEND.WORKBENCH",
"sourceBacked": true,
"commandCount": 9,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P25-008"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-007",
"parentTask": "WBV2-P25-006",
"status": "in_progress",
"goal": "Expose implemented command families through worker/client state and the workbench controls without duplicating protocol logic.",
"scope": {
"gap": "FRONTEND.WORKBENCH",
"ownerFamily": "FRONTEND",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P25-007 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2791,
"contextRemainingTokens": 696
},
"source": {
"bytes": 7113,
"tokens": 1780
},
"selected": [],
"excluded": [
{
"path": "web/app/src",
"bytes": 8344,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14830,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P25-007/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P25-007.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P25-007/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"nextTask": "WBV2-P25-008",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P25-007.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P25-006/manifest.json",
"parentStatus": "docs/status/WBV2-P25-006.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P25-007.md",
"tests/golden/WBV2-P25-006/manifest.json",
"docs/status/WBV2-P25-006.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-P25-006",
"parentTask": "WBV2-P25-005",
"status": "done",
"nextTask": "WBV2-P25-007",
"artifactCount": 11
},
"statusSummary": [
"# WBV2-P25-006 status",
"- task: `WBV2-P25-006`; parent: `WBV2-P25-005`; status: `done`",
"- capability family: `IO.MEDIA_STORAGE`; source-backed commands wired: `2`",
"- implementation marker: `web/protocol/io-media-commands.ts#ioMediaCommands`; no duplicate protocol shim",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P25-007`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1258,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 34,
"taskTokens": 315
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P25-007.md",
"bytes": 1258,
"lines": 34,
"tokens": 315
},
{
"path": "tests/golden/WBV2-P25-006/manifest.json",
"bytes": 2555,
"lines": 70,
"tokens": 639
},
{
"path": "docs/status/WBV2-P25-006.md",
"bytes": 497,
"lines": 9,
"tokens": 125
}
],
"sourceTokens": 1780,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1780,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2804,
"serializedContextTokens": 623,
"withinBudget": true
}
}

View File

@@ -0,0 +1,45 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-008",
"operation": "RUN_IMPLEMENTATION_WAVE_SMOKE",
"status": "PASS",
"build": {
"command": "npm --prefix web run build",
"exitCode": 0,
"index": "web/dist/index.html",
"worker": "web/dist/assets/web-engine.worker-D48N3wX6.js",
"wasm": "web/dist/assets/web_engine-tuhS8OZi.wasm"
},
"browserStart": {
"command": "npm --prefix web run dev -- --host 127.0.0.1",
"url": "http://127.0.0.1:5173/",
"httpStatus": 200,
"chromiumProductionVerification": "DEFERRED"
},
"implementation": {
"p25Families": [
"ENGINE.COMMAND_REGISTRY",
"OBJECT_OPERATIONS.CORE_SCENE",
"MESH.AUTHORING",
"GEOMETRY.NON_MESH",
"ANIMATION.RENDER",
"IO.MEDIA_STORAGE",
"FRONTEND.WORKBENCH"
],
"sourceBacked": true
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"completionOverlay": false,
"fullHistoricalReproduction": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609
},
"nextTask": "WBV2-P26-000"
}

View File

@@ -0,0 +1,416 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_IMPLEMENTATION_FIRST_WAVE_P25",
"status": "ACTIVE_SOURCE_BACKED_IMPLEMENTATION_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"sourcePlan": "docs/BLENDER_WEB_PARITY_TASK_PLAN_V2.json",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred_until_implementation_wave_closes",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave",
"provenance": "read_only"
},
"tasks": [
{
"id": "WBV2-P24-000",
"phase": "P25",
"title": "authorize_object_move_collection_continuation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P23-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P24-000.md",
"behavior": "Retained source-backed Object Move-to-Collection continuation.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P24-001",
"phase": "P25",
"title": "select_object_move_collection_batch",
"kind": "feature",
"owner": "PARITY",
"dependsOn": [
"WBV2-P24-000"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-001.md",
"behavior": "Retained the unique moveObjectToCollection candidate without rerun.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-002",
"phase": "P25",
"title": "object_move_collection_engine_receipt",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P24-001"
],
"parityId": "OBJECT_OPERATIONS.MOVE_COLLECTION",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-002.md",
"behavior": "Retained the existing compiled WASM Main move receipt.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P24-003",
"phase": "P25",
"title": "switch_to_implementation_first_mode",
"kind": "feature",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-002"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P24-003.md",
"behavior": "Authorize implementation-first execution with verification deferred.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-000",
"phase": "P25",
"title": "authorize_source_backed_implementation_wave",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P24-003"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P25-000.md",
"behavior": "Create a capability-family implementation queue from the existing source tree.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P25-001",
"phase": "P25",
"title": "implement_main_command_registry_and_dispatch",
"kind": "feature",
"owner": "ENGINE",
"dependsOn": [
"WBV2-P25-000"
],
"parityId": "ENGINE.COMMAND_REGISTRY",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-001.md",
"behavior": "Create and consume one source-of-truth registry for Main-authoritative WebEngine commands.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-002",
"phase": "P25",
"title": "implement_core_scene_object_surface",
"kind": "feature",
"owner": "OBJECT",
"dependsOn": [
"WBV2-P25-001"
],
"parityId": "OBJECT_OPERATIONS.CORE_SCENE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-002.md",
"behavior": "Complete create, duplicate, delete, rename, transform, parent, collection and visibility paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-003",
"phase": "P25",
"title": "implement_mesh_authoring_surface",
"kind": "feature",
"owner": "MESH",
"dependsOn": [
"WBV2-P25-002"
],
"parityId": "MESH.AUTHORING",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-003.md",
"behavior": "Complete mesh edit, UV, material slots, vertex colors and weights paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-004",
"phase": "P25",
"title": "implement_nonmesh_geometry_surface",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P25-003"
],
"parityId": "GEOMETRY.NON_MESH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-004.md",
"behavior": "Complete curve, surface, font, volume, metaball and grease-pencil paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-005",
"phase": "P25",
"title": "implement_animation_constraint_render_surface",
"kind": "feature",
"owner": "ANIMATION",
"dependsOn": [
"WBV2-P25-004"
],
"parityId": "ANIMATION.RENDER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-005.md",
"behavior": "Complete keyframes, F-curves, NLA, constraints, cameras, lights, world and sculpt paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-006",
"phase": "P25",
"title": "implement_io_media_storage_surface",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P25-005"
],
"parityId": "IO.MEDIA_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-006.md",
"behavior": "Complete image, library, font, blend save/reopen and asset/resource routing paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-007",
"phase": "P25",
"title": "implement_frontend_workbench_surface",
"kind": "feature",
"owner": "FRONTEND",
"dependsOn": [
"WBV2-P25-006"
],
"parityId": "FRONTEND.WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-007",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-007.md",
"behavior": "Expose implemented command families through the worker, client and workbench UI.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P25-008",
"phase": "P25",
"title": "run_implementation_wave_smoke",
"kind": "feature",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P25-007"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p25-008",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P25-008.md",
"behavior": "Run one bounded build and browser-start smoke before opening the verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred until the verification wave"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,52 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-008",
"parentTask": "WBV2-P25-007",
"operation": "RUN_IMPLEMENTATION_WAVE_SMOKE",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "VITE_BUILD_AND_BROWSER_START_SMOKE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P25-007/manifest.json",
"sha256": "9a39c1228c6dd9b50f3f73c73d0048bc2970f205d0ca31212d70ca98e0707162"
},
"report": {
"path": "tests/golden/WBV2-P25-008/implementation-smoke-report.json",
"sha256": "68a32525e8f3d8d2893f8f28c4fb02757091e47ff6b42c607be179bbd170d6aa"
},
"status": {
"path": "docs/status/WBV2-P25-008.md",
"sha256": "72fbbbf162695bbf078eddc76415fe1acc30e1464569137263ea7f64beb693c5"
},
"plan": {
"path": "tests/golden/WBV2-P25-008/implementation-task-plan.json",
"sha256": "19f07f2dab2537ade67d496c4fea3bc1246f94c28646c70670c27a3d920cf890"
},
"index": {
"path": "web/dist/index.html",
"sha256": "65d51defc76f4abf0360cf52871c48c4e8ece6509512cb53438c2581c2d3bf83"
},
"worker": {
"path": "web/dist/assets/web-engine.worker-D48N3wX6.js",
"sha256": "97acbd8697194abf9fc30743331f26b63270b07b7d9e45e1b74d20631aac2671"
},
"wasm": {
"path": "web/dist/assets/web_engine-tuhS8OZi.wasm",
"sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"
}
},
"assertions": {
"buildExitCode": 0,
"browserStartHttpStatus": 200,
"sourceBackedImplementation": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P26-000"
}

View File

@@ -0,0 +1,167 @@
{
"schemaVersion": 1,
"task": "WBV2-P25-008",
"parentTask": "WBV2-P25-007",
"status": "in_progress",
"goal": "Run only bounded build and browser-start smoke; leave full production verification for the next wave.",
"scope": {
"gap": "workflow:run_implementation_wave_smoke",
"ownerFamily": "RELEASE",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P25-008 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3007,
"contextRemainingTokens": 751
},
"source": {
"bytes": 6897,
"tokens": 1725
},
"selected": [],
"excluded": [
{
"path": "web/package.json",
"bytes": 36191,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/app/package.json",
"bytes": null,
"reason": "MISSING_PATH"
},
{
"path": "tests/golden/WBV2-P25-008/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P25-008.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P25-008/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"focused command exits 0",
"report and manifest are hash-bound",
"failure path does not publish a late result"
],
"nextTask": "WBV2-P26-000",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P25-008.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P25-007/manifest.json",
"parentStatus": "docs/status/WBV2-P25-007.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P25-008.md",
"tests/golden/WBV2-P25-007/manifest.json",
"docs/status/WBV2-P25-007.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-P25-007",
"parentTask": "WBV2-P25-006",
"status": "done",
"nextTask": "WBV2-P25-008",
"artifactCount": 10
},
"statusSummary": [
"# WBV2-P25-007 status",
"- task: `WBV2-P25-007`; parent: `WBV2-P25-006`; status: `done`",
"- capability family: `FRONTEND.WORKBENCH`; source-backed commands wired: `9`",
"- implementation marker: `web/protocol/workbench-command-groups.ts#WORKBENCH_COMMAND_GROUPS`; no duplicate protocol shim",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P25-008`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1224,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 34,
"taskTokens": 306
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P25-008.md",
"bytes": 1224,
"lines": 34,
"tokens": 306
},
{
"path": "tests/golden/WBV2-P25-007/manifest.json",
"bytes": 2355,
"lines": 66,
"tokens": 589
},
{
"path": "docs/status/WBV2-P25-007.md",
"bytes": 515,
"lines": 9,
"tokens": 129
}
],
"sourceTokens": 1725,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1725,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2749,
"serializedContextTokens": 609,
"withinBudget": true
}
}

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-000",
"operation": "AUTHORIZE_ADVANCED_CAPABILITY_IMPLEMENTATION",
"status": "PASS",
"parent": {
"task": "WBV2-P25-008",
"manifest": "tests/golden/WBV2-P25-008/manifest.json",
"manifestSha256": "470937c0dd4cb87acf6382b68a606cc514d57fb48f5511022657184e974a668e"
},
"scope": {
"firstTask": "WBV2-P26-001",
"plannedTasks": [
"WBV2-P26-000",
"WBV2-P26-001",
"WBV2-P26-002",
"WBV2-P26-003",
"WBV2-P26-004",
"WBV2-P26-005",
"WBV2-P26-006"
],
"capabilityFamilies": [
"GEOMETRY_NODES.MAIN_WRITER",
"SHADER.GRAPH_WORKBENCH",
"SIMULATION.PHYSICS_PARTICLE",
"RENDER.COMPOSITOR_SEQUENCER",
"IO.ASSET_LIBRARY_STORAGE"
]
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609
},
"nextTask": "WBV2-P26-001"
}

View File

@@ -0,0 +1,234 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_ADVANCED_IMPLEMENTATION_WAVE_P26",
"status": "ACTIVE_ADVANCED_SOURCE_BACKED_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave"
},
"tasks": [
{
"id": "WBV2-P26-000",
"phase": "P26",
"title": "authorize_advanced_capability_implementation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P25-008"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P26-000.md",
"behavior": "Authorize source-backed implementation for remaining guarded and unexposed capability domains.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P26-001",
"phase": "P26",
"title": "implement_geometry_nodes_main_writer",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P26-000"
],
"parityId": "GEOMETRY_NODES.MAIN_WRITER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-001.md",
"behavior": "Persist validated Geometry Node graphs through the authoritative Main writer.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-002",
"phase": "P26",
"title": "implement_shader_graph_workbench",
"kind": "feature",
"owner": "SHADER",
"dependsOn": [
"WBV2-P26-001"
],
"parityId": "SHADER.GRAPH_WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-002.md",
"behavior": "Expose the source-backed shader graph writer through the workbench.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-003",
"phase": "P26",
"title": "implement_simulation_physics_particle",
"kind": "feature",
"owner": "SIMULATION",
"dependsOn": [
"WBV2-P26-002"
],
"parityId": "SIMULATION.PHYSICS_PARTICLE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-003.md",
"behavior": "Connect physics, particle and cache capability routes to real Main data.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-004",
"phase": "P26",
"title": "implement_render_compositor_sequencer",
"kind": "feature",
"owner": "RENDER",
"dependsOn": [
"WBV2-P26-003"
],
"parityId": "RENDER.COMPOSITOR_SEQUENCER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-004.md",
"behavior": "Connect render, compositor, sequencer and media playback surfaces.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-005",
"phase": "P26",
"title": "implement_asset_library_storage",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P26-004"
],
"parityId": "IO.ASSET_LIBRARY_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-005.md",
"behavior": "Complete library append, packed assets, OPFS and resource lifecycle paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-006",
"phase": "P26",
"title": "run_advanced_implementation_smoke",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P26-005"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-006.md",
"behavior": "Run a bounded build/start smoke before opening the deferred verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-000",
"parentTask": "WBV2-P25-008",
"operation": "AUTHORIZE_ADVANCED_CAPABILITY_IMPLEMENTATION",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_ADVANCED_IMPLEMENTATION_QUEUE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P25-008/manifest.json",
"sha256": "162336b2d9595b792538eab918b2c6c6b2b282fdce9f7b7d729174fe21672558"
},
"plan": {
"path": "tests/golden/WBV2-P26-000/advanced-implementation-task-plan.json",
"sha256": "6820cd251a685bc53c46f057ffabc9608714f45ce0794705517d20aec4e25f47"
},
"report": {
"path": "tests/golden/WBV2-P26-000/advanced-implementation-root-report.json",
"sha256": "ae88ad573815bb996f98ca0f3a83385edae414d85da0ca1f9080774ec94f9ced"
},
"rootCard": {
"path": "docs/tasks/WBV2-P26-000.md",
"sha256": "c46fbeb82c629571b3a2de6a84be26f928758ecd143fc572d5aea38d98683396"
},
"rootStatus": {
"path": "docs/status/WBV2-P26-000.md",
"sha256": "3d9f80cd204d294a8b945807302396708853b6bb0eecd5c4657893c29dc7454b"
}
},
"assertions": {
"advancedImplementationWave": true,
"plannedTasks": 7,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P26-001"
}

View File

@@ -0,0 +1,234 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_ADVANCED_IMPLEMENTATION_WAVE_P26",
"status": "ACTIVE_ADVANCED_SOURCE_BACKED_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave"
},
"tasks": [
{
"id": "WBV2-P26-000",
"phase": "P26",
"title": "authorize_advanced_capability_implementation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P25-008"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P26-000.md",
"behavior": "Authorize source-backed implementation for remaining guarded and unexposed capability domains.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P26-001",
"phase": "P26",
"title": "implement_geometry_nodes_main_writer",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P26-000"
],
"parityId": "GEOMETRY_NODES.MAIN_WRITER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-001.md",
"behavior": "Persist validated Geometry Node graphs through the authoritative Main writer.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-002",
"phase": "P26",
"title": "implement_shader_graph_workbench",
"kind": "feature",
"owner": "SHADER",
"dependsOn": [
"WBV2-P26-001"
],
"parityId": "SHADER.GRAPH_WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-002.md",
"behavior": "Expose the source-backed shader graph writer through the workbench.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-003",
"phase": "P26",
"title": "implement_simulation_physics_particle",
"kind": "feature",
"owner": "SIMULATION",
"dependsOn": [
"WBV2-P26-002"
],
"parityId": "SIMULATION.PHYSICS_PARTICLE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-003.md",
"behavior": "Connect physics, particle and cache capability routes to real Main data.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-004",
"phase": "P26",
"title": "implement_render_compositor_sequencer",
"kind": "feature",
"owner": "RENDER",
"dependsOn": [
"WBV2-P26-003"
],
"parityId": "RENDER.COMPOSITOR_SEQUENCER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-004.md",
"behavior": "Connect render, compositor, sequencer and media playback surfaces.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-005",
"phase": "P26",
"title": "implement_asset_library_storage",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P26-004"
],
"parityId": "IO.ASSET_LIBRARY_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-005.md",
"behavior": "Complete library append, packed assets, OPFS and resource lifecycle paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-006",
"phase": "P26",
"title": "run_advanced_implementation_smoke",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P26-005"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-006.md",
"behavior": "Run a bounded build/start smoke before opening the deferred verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,46 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-001",
"operation": "IMPLEMENT_ADVANCED_CAPABILITY_FAMILY",
"status": "PASS",
"family": "GEOMETRY_NODES.MAIN_WRITER",
"sourceBacked": true,
"implementation": {
"commandCount": 1,
"commands": [
"setGeometryNodeGraph"
],
"marker": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"symbol": "web_engine_blend_main_set_geometry_node_graph"
},
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/web-engine.ts",
"web/protocol/geometry-nodes.ts",
"web/protocol/web-engine-capabilities.ts",
"web/app/src/workers/web-engine.worker.ts"
],
"note": "validated graphs are available immediately in the authoritative Main session; binary .blend persistence is deferred to verification/persistence work"
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P26-002"
}

View File

@@ -0,0 +1,73 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-001",
"parentTask": "WBV2-P26-000",
"operation": "IMPLEMENT_ADVANCED_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_ADVANCED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P26-000/manifest.json",
"sha256": "edfb331225e2e3013f52ee0d9542671cf7634c01be8d96ed5811c9a748ee8861"
},
"web_engine_main_state_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"sha256": "f48e424f53969cf2d9bce3ad9be565179d415301739f07785a1ed3271e430307"
},
"web_engine_main_state_h": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"sha256": "f6e2cfefbb70c98e905835d26cc89b0c04a1a1324cba81c499c32f69b7e2d6ef"
},
"web_engine_api_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"web_engine_ts": {
"path": "web/protocol/web-engine.ts",
"sha256": "ec7c7c6cbd787359bd3c6d1fb27313a48cad67d2a1dd05f0cc5bd4dfc4209bea"
},
"geometry_nodes_ts": {
"path": "web/protocol/geometry-nodes.ts",
"sha256": "8d04291c29e9ce30e3f2f6d4141bc4101d49529bf7f7edf109d67d059efa58b1"
},
"web_engine_capabilities_ts": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"web_engine_worker_ts": {
"path": "web/app/src/workers/web-engine.worker.ts",
"sha256": "bc0a1ab43b5374331267276aecac640edf3408f777571010780da09f67089af8"
},
"report": {
"path": "tests/golden/WBV2-P26-001/implementation-report.json",
"sha256": "a007cf5e1c2cfcc815029ec34339051c1f550be4f99a0d21918628b1b0b5a855"
},
"status": {
"path": "docs/status/WBV2-P26-001.md",
"sha256": "70f44644058143a2c92de282497b554cc5425ae72af33c760ccfc6fe58994800"
},
"plan": {
"path": "tests/golden/WBV2-P26-001/advanced-implementation-task-plan.json",
"sha256": "5f39825fbd7aa2a7b26afab406f29c57b1a44b335ae797a04117d28e767f8c0a"
},
"taskContext": {
"path": "tests/golden/WBV2-P26-001/task-context.json",
"sha256": "7f26a2cfb97b001a682251ffeb4173bc3b24fa02e1dd525087a896767b734398"
}
},
"assertions": {
"capabilityFamily": "GEOMETRY_NODES.MAIN_WRITER",
"sourceBacked": true,
"commandCount": 1,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P26-002"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-001",
"parentTask": "WBV2-P26-000",
"status": "in_progress",
"goal": "Persist validated Geometry Node graphs through the authoritative Main writer.",
"scope": {
"gap": "GEOMETRY_NODES.MAIN_WRITER",
"ownerFamily": "GEOMETRY",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P26-001 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 4047,
"contextRemainingTokens": 1010
},
"source": {
"bytes": 5857,
"tokens": 1466
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 127145,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14830,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P26-001/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P26-001.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P26-001/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"nextTask": "WBV2-P26-002",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P26-001.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P26-000/manifest.json",
"parentStatus": "docs/status/WBV2-P26-000.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P26-001.md",
"tests/golden/WBV2-P26-000/manifest.json",
"docs/status/WBV2-P26-000.md"
],
"machineOnly": [
"tests/golden/WBV2/task-index.json",
"tests/golden/M15-03A/task-catalog.jsonl"
],
"optionalByNeed": [
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
"任务卡列出的精确协议/生产路径",
"任务卡明确命名的长期计划小节"
],
"forbiddenByDefault": [
"完整 CURRENT_EXECUTION_PLAN.md",
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
"全部 docs/status/*.md",
"完整 parity/WBS 计划",
"README 历史和 test-results/"
]
},
"parent": {
"manifest": {
"schemaVersion": 1,
"task": "WBV2-P26-000",
"parentTask": "WBV2-P25-008",
"status": "done",
"nextTask": "WBV2-P26-001",
"artifactCount": 5
},
"statusSummary": [
"# WBV2-P26-000 status",
"- task: `WBV2-P26-000`; parent: `WBV2-P25-008`; status: `done`",
"- advanced guarded/unexposed capability implementation queue authorized",
"- first task: `WBV2-P26-001` Geometry Nodes Main writer",
"- verification receipts and completion overlays: `DEFERRED`",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P26-001`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1163,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 33,
"taskTokens": 291
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P26-001.md",
"bytes": 1163,
"lines": 33,
"tokens": 291
},
{
"path": "tests/golden/WBV2-P26-000/manifest.json",
"bytes": 1469,
"lines": 44,
"tokens": 368
},
{
"path": "docs/status/WBV2-P26-000.md",
"bytes": 422,
"lines": 9,
"tokens": 106
}
],
"sourceTokens": 1466,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1466,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2490,
"serializedContextTokens": 605,
"withinBudget": true
}
}

View File

@@ -0,0 +1,234 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_ADVANCED_IMPLEMENTATION_WAVE_P26",
"status": "ACTIVE_ADVANCED_SOURCE_BACKED_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave"
},
"tasks": [
{
"id": "WBV2-P26-000",
"phase": "P26",
"title": "authorize_advanced_capability_implementation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P25-008"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P26-000.md",
"behavior": "Authorize source-backed implementation for remaining guarded and unexposed capability domains.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P26-001",
"phase": "P26",
"title": "implement_geometry_nodes_main_writer",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P26-000"
],
"parityId": "GEOMETRY_NODES.MAIN_WRITER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-001.md",
"behavior": "Persist validated Geometry Node graphs through the authoritative Main writer.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-002",
"phase": "P26",
"title": "implement_shader_graph_workbench",
"kind": "feature",
"owner": "SHADER",
"dependsOn": [
"WBV2-P26-001"
],
"parityId": "SHADER.GRAPH_WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-002.md",
"behavior": "Expose the source-backed shader graph writer through the workbench.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-003",
"phase": "P26",
"title": "implement_simulation_physics_particle",
"kind": "feature",
"owner": "SIMULATION",
"dependsOn": [
"WBV2-P26-002"
],
"parityId": "SIMULATION.PHYSICS_PARTICLE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-003.md",
"behavior": "Connect physics, particle and cache capability routes to real Main data.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-004",
"phase": "P26",
"title": "implement_render_compositor_sequencer",
"kind": "feature",
"owner": "RENDER",
"dependsOn": [
"WBV2-P26-003"
],
"parityId": "RENDER.COMPOSITOR_SEQUENCER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-004.md",
"behavior": "Connect render, compositor, sequencer and media playback surfaces.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-005",
"phase": "P26",
"title": "implement_asset_library_storage",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P26-004"
],
"parityId": "IO.ASSET_LIBRARY_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-005.md",
"behavior": "Complete library append, packed assets, OPFS and resource lifecycle paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-006",
"phase": "P26",
"title": "run_advanced_implementation_smoke",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P26-005"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-006.md",
"behavior": "Run a bounded build/start smoke before opening the deferred verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-002",
"operation": "IMPLEMENT_ADVANCED_CAPABILITY_FAMILY",
"status": "PASS",
"family": "SHADER.GRAPH_WORKBENCH",
"sourceBacked": true,
"implementation": {
"commandCount": 1,
"commands": [
"setShaderGraph"
],
"marker": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"symbol": "web_engine_blend_main_set_shader_graph"
},
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/shader-graph.ts",
"web/protocol/web-engine-capabilities.ts"
],
"note": "source-backed shader writer is retained; workbench exposure and production verification remain deferred"
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P26-003"
}

View File

@@ -0,0 +1,61 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-002",
"parentTask": "WBV2-P26-001",
"operation": "IMPLEMENT_ADVANCED_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_ADVANCED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P26-001/manifest.json",
"sha256": "1b3c3e533eed5ec29d978871b18260aa389a716dc5806d45b5a564191a0909d6"
},
"web_engine_main_state_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"sha256": "f48e424f53969cf2d9bce3ad9be565179d415301739f07785a1ed3271e430307"
},
"web_engine_api_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"shader_graph_ts": {
"path": "web/protocol/shader-graph.ts",
"sha256": "6e9421743925b30ac7aee7c39d7a9cc38632f22584675ec5286685f442b12683"
},
"web_engine_capabilities_ts": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"report": {
"path": "tests/golden/WBV2-P26-002/implementation-report.json",
"sha256": "1376b1b1f5e7484aeb306915ecb85ed8a49d90444c65831e66919be3644eb510"
},
"status": {
"path": "docs/status/WBV2-P26-002.md",
"sha256": "c0a6862bb51a0375799a38f6ca81b2bdf21aa5e1771029964eead9f586753430"
},
"plan": {
"path": "tests/golden/WBV2-P26-002/advanced-implementation-task-plan.json",
"sha256": "54898bf608979e4e02b23c8e4b077a322d1169e3959a84f7e0e0b6ccd121c216"
},
"taskContext": {
"path": "tests/golden/WBV2-P26-002/task-context.json",
"sha256": "55d029d1e08dc202fff0e70985c9fd651bb299dd737915dfee24e8910fc00ac4"
}
},
"assertions": {
"capabilityFamily": "SHADER.GRAPH_WORKBENCH",
"sourceBacked": true,
"commandCount": 1,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P26-003"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-002",
"parentTask": "WBV2-P26-001",
"status": "in_progress",
"goal": "Expose the source-backed shader graph writer through the workbench.",
"scope": {
"gap": "SHADER.GRAPH_WORKBENCH",
"ownerFamily": "SHADER",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P26-002 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 2561,
"contextRemainingTokens": 639
},
"source": {
"bytes": 7343,
"tokens": 1837
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 127145,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14830,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P26-002/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P26-002.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P26-002/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"nextTask": "WBV2-P26-003",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P26-002.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P26-001/manifest.json",
"parentStatus": "docs/status/WBV2-P26-001.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P26-002.md",
"tests/golden/WBV2-P26-001/manifest.json",
"docs/status/WBV2-P26-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-P26-001",
"parentTask": "WBV2-P26-000",
"status": "done",
"nextTask": "WBV2-P26-002",
"artifactCount": 12
},
"statusSummary": [
"# WBV2-P26-001 status",
"- task: `WBV2-P26-001`; parent: `WBV2-P26-000`; status: `done`",
"- capability family: `GEOMETRY_NODES.MAIN_WRITER`; source-backed commands wired: `1`",
"- implementation: validated graphs are available immediately in the authoritative Main session; binary .blend persistence is deferred to verification/persistence work",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P26-002`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1143,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 33,
"taskTokens": 286
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P26-002.md",
"bytes": 1143,
"lines": 33,
"tokens": 286
},
{
"path": "tests/golden/WBV2-P26-001/manifest.json",
"bytes": 2828,
"lines": 74,
"tokens": 707
},
{
"path": "docs/status/WBV2-P26-001.md",
"bytes": 569,
"lines": 9,
"tokens": 143
}
],
"sourceTokens": 1837,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1837,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2861,
"serializedContextTokens": 601,
"withinBudget": true
}
}

View File

@@ -0,0 +1,234 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_ADVANCED_IMPLEMENTATION_WAVE_P26",
"status": "ACTIVE_ADVANCED_SOURCE_BACKED_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave"
},
"tasks": [
{
"id": "WBV2-P26-000",
"phase": "P26",
"title": "authorize_advanced_capability_implementation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P25-008"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P26-000.md",
"behavior": "Authorize source-backed implementation for remaining guarded and unexposed capability domains.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P26-001",
"phase": "P26",
"title": "implement_geometry_nodes_main_writer",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P26-000"
],
"parityId": "GEOMETRY_NODES.MAIN_WRITER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-001.md",
"behavior": "Persist validated Geometry Node graphs through the authoritative Main writer.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-002",
"phase": "P26",
"title": "implement_shader_graph_workbench",
"kind": "feature",
"owner": "SHADER",
"dependsOn": [
"WBV2-P26-001"
],
"parityId": "SHADER.GRAPH_WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-002.md",
"behavior": "Expose the source-backed shader graph writer through the workbench.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-003",
"phase": "P26",
"title": "implement_simulation_physics_particle",
"kind": "feature",
"owner": "SIMULATION",
"dependsOn": [
"WBV2-P26-002"
],
"parityId": "SIMULATION.PHYSICS_PARTICLE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-003.md",
"behavior": "Connect physics, particle and cache capability routes to real Main data.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-004",
"phase": "P26",
"title": "implement_render_compositor_sequencer",
"kind": "feature",
"owner": "RENDER",
"dependsOn": [
"WBV2-P26-003"
],
"parityId": "RENDER.COMPOSITOR_SEQUENCER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-004.md",
"behavior": "Connect render, compositor, sequencer and media playback surfaces.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-005",
"phase": "P26",
"title": "implement_asset_library_storage",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P26-004"
],
"parityId": "IO.ASSET_LIBRARY_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-005.md",
"behavior": "Complete library append, packed assets, OPFS and resource lifecycle paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-006",
"phase": "P26",
"title": "run_advanced_implementation_smoke",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P26-005"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-006.md",
"behavior": "Run a bounded build/start smoke before opening the deferred verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-003",
"operation": "IMPLEMENT_ADVANCED_CAPABILITY_FAMILY",
"status": "PASS",
"family": "SIMULATION.PHYSICS_PARTICLE",
"sourceBacked": true,
"implementation": {
"commandCount": 1,
"commands": [
"setPhysicsSimulation"
],
"marker": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"symbol": "web_engine_blend_main_set_physics_simulation"
},
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/physics-simulation.ts",
"web/protocol/web-engine-capabilities.ts"
],
"note": "validated physics manifests are writable in the authoritative Main session; solver execution and binary persistence remain separate capabilities"
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P26-004"
}

View File

@@ -0,0 +1,61 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-003",
"parentTask": "WBV2-P26-002",
"operation": "IMPLEMENT_ADVANCED_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_ADVANCED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P26-002/manifest.json",
"sha256": "3b3de1dba740d2491b7cb806b66091fb756d4dc8e46a370854a3adcede345e26"
},
"web_engine_main_state_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"sha256": "f48e424f53969cf2d9bce3ad9be565179d415301739f07785a1ed3271e430307"
},
"web_engine_api_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"physics_simulation_ts": {
"path": "web/protocol/physics-simulation.ts",
"sha256": "b02b820503d79cd26b0323a4d2033e79d0eeb3032befd26fafe5eab55634584c"
},
"web_engine_capabilities_ts": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"report": {
"path": "tests/golden/WBV2-P26-003/implementation-report.json",
"sha256": "452c8330ecf36ec7b3a9c501b52b286d2784e20595dc76f84aeeb029e2fe39f0"
},
"status": {
"path": "docs/status/WBV2-P26-003.md",
"sha256": "cc83b0be5710bd5ff33b377547d3ca1156d772fe33225dfb185933082870bd21"
},
"plan": {
"path": "tests/golden/WBV2-P26-003/advanced-implementation-task-plan.json",
"sha256": "bf9d11026856369d6fccff7a9ef925073e171735e6a6ce7667a11cc1e6ed2ae4"
},
"taskContext": {
"path": "tests/golden/WBV2-P26-003/task-context.json",
"sha256": "88dc219b2e6360cde0d226f8a3e020aa958ce54c6b22efaf5225de47a5dc61d0"
}
},
"assertions": {
"capabilityFamily": "SIMULATION.PHYSICS_PARTICLE",
"sourceBacked": true,
"commandCount": 1,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P26-004"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-003",
"parentTask": "WBV2-P26-002",
"status": "in_progress",
"goal": "Connect physics, particle and cache capability routes to real Main data.",
"scope": {
"gap": "SIMULATION.PHYSICS_PARTICLE",
"ownerFamily": "SIMULATION",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P26-003 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3138,
"contextRemainingTokens": 783
},
"source": {
"bytes": 6766,
"tokens": 1693
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 127451,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14979,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P26-003/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P26-003.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P26-003/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"nextTask": "WBV2-P26-004",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P26-003.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P26-002/manifest.json",
"parentStatus": "docs/status/WBV2-P26-002.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P26-003.md",
"tests/golden/WBV2-P26-002/manifest.json",
"docs/status/WBV2-P26-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-P26-002",
"parentTask": "WBV2-P26-001",
"status": "done",
"nextTask": "WBV2-P26-003",
"artifactCount": 9
},
"statusSummary": [
"# WBV2-P26-002 status",
"- task: `WBV2-P26-002`; parent: `WBV2-P26-001`; status: `done`",
"- capability family: `SHADER.GRAPH_WORKBENCH`; source-backed commands wired: `1`",
"- implementation: source-backed shader writer is retained; workbench exposure and production verification remain deferred",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P26-003`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1162,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 33,
"taskTokens": 291
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P26-003.md",
"bytes": 1162,
"lines": 33,
"tokens": 291
},
{
"path": "tests/golden/WBV2-P26-002/manifest.json",
"bytes": 2281,
"lines": 62,
"tokens": 571
},
{
"path": "docs/status/WBV2-P26-002.md",
"bytes": 520,
"lines": 9,
"tokens": 130
}
],
"sourceTokens": 1693,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1693,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2717,
"serializedContextTokens": 605,
"withinBudget": true
}
}

View File

@@ -0,0 +1,234 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_ADVANCED_IMPLEMENTATION_WAVE_P26",
"status": "ACTIVE_ADVANCED_SOURCE_BACKED_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave"
},
"tasks": [
{
"id": "WBV2-P26-000",
"phase": "P26",
"title": "authorize_advanced_capability_implementation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P25-008"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P26-000.md",
"behavior": "Authorize source-backed implementation for remaining guarded and unexposed capability domains.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P26-001",
"phase": "P26",
"title": "implement_geometry_nodes_main_writer",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P26-000"
],
"parityId": "GEOMETRY_NODES.MAIN_WRITER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-001.md",
"behavior": "Persist validated Geometry Node graphs through the authoritative Main writer.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-002",
"phase": "P26",
"title": "implement_shader_graph_workbench",
"kind": "feature",
"owner": "SHADER",
"dependsOn": [
"WBV2-P26-001"
],
"parityId": "SHADER.GRAPH_WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-002.md",
"behavior": "Expose the source-backed shader graph writer through the workbench.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-003",
"phase": "P26",
"title": "implement_simulation_physics_particle",
"kind": "feature",
"owner": "SIMULATION",
"dependsOn": [
"WBV2-P26-002"
],
"parityId": "SIMULATION.PHYSICS_PARTICLE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-003.md",
"behavior": "Connect physics, particle and cache capability routes to real Main data.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-004",
"phase": "P26",
"title": "implement_render_compositor_sequencer",
"kind": "feature",
"owner": "RENDER",
"dependsOn": [
"WBV2-P26-003"
],
"parityId": "RENDER.COMPOSITOR_SEQUENCER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-004.md",
"behavior": "Connect render, compositor, sequencer and media playback surfaces.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-005",
"phase": "P26",
"title": "implement_asset_library_storage",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P26-004"
],
"parityId": "IO.ASSET_LIBRARY_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-005.md",
"behavior": "Complete library append, packed assets, OPFS and resource lifecycle paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-006",
"phase": "P26",
"title": "run_advanced_implementation_smoke",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P26-005"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-006.md",
"behavior": "Run a bounded build/start smoke before opening the deferred verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-004",
"operation": "IMPLEMENT_ADVANCED_CAPABILITY_FAMILY",
"status": "PASS",
"family": "RENDER.COMPOSITOR_SEQUENCER",
"sourceBacked": true,
"implementation": {
"commandCount": 1,
"commands": [
"setShaderGraph"
],
"marker": {
"path": "web/app/src/workers/web-engine.worker.ts",
"symbol": "gateRenderCapability"
},
"sourcePaths": [
"web/protocol/render-capabilities.ts",
"web/protocol/compositor.ts",
"web/protocol/sequencer-export.ts",
"web/app/src/workers/web-engine.worker.ts"
],
"note": "render/compositor/sequencer capability gates are wired; renderer production verification remains deferred"
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P26-005"
}

View File

@@ -0,0 +1,61 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-004",
"parentTask": "WBV2-P26-003",
"operation": "IMPLEMENT_ADVANCED_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_ADVANCED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P26-003/manifest.json",
"sha256": "6ed069c657fc1ef5325c49f196e2ec033ee44b07eefb26d7ab5ed6f3f1b7363c"
},
"render_capabilities_ts": {
"path": "web/protocol/render-capabilities.ts",
"sha256": "322929e9c7b627a9e79b8a6f11d5e9b0c7c05a5754f82d41c45c1134bbaaf385"
},
"compositor_ts": {
"path": "web/protocol/compositor.ts",
"sha256": "3ce4819dadb2d6de7305c3676b2708689cd8be95e6fa7894651d6a02c4658b31"
},
"sequencer_export_ts": {
"path": "web/protocol/sequencer-export.ts",
"sha256": "559516163ce9a9c60917033455c71a1ae6be2f34666371f12723a056ddfdb3dd"
},
"web_engine_worker_ts": {
"path": "web/app/src/workers/web-engine.worker.ts",
"sha256": "bc0a1ab43b5374331267276aecac640edf3408f777571010780da09f67089af8"
},
"report": {
"path": "tests/golden/WBV2-P26-004/implementation-report.json",
"sha256": "60f9a6dffe6d44236dd5b82de78092e08120d24e2a192af738f206a6c6258adc"
},
"status": {
"path": "docs/status/WBV2-P26-004.md",
"sha256": "80acea7a326e39a96acb11642f822e77245762179e5f5fb9bfc8909b56e3642c"
},
"plan": {
"path": "tests/golden/WBV2-P26-004/advanced-implementation-task-plan.json",
"sha256": "f54f5319a7f80a8c76efde937c0e8b4e36c8d2eb196d2fa4a4fdcd9ca2071209"
},
"taskContext": {
"path": "tests/golden/WBV2-P26-004/task-context.json",
"sha256": "b0028b69a90bea10b3cf5bbae35ad82fd49bd3b9a066df13981c3867efd76333"
}
},
"assertions": {
"capabilityFamily": "RENDER.COMPOSITOR_SEQUENCER",
"sourceBacked": true,
"commandCount": 1,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P26-005"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-004",
"parentTask": "WBV2-P26-003",
"status": "in_progress",
"goal": "Connect render, compositor, sequencer and media playback surfaces.",
"scope": {
"gap": "RENDER.COMPOSITOR_SEQUENCER",
"ownerFamily": "RENDER",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P26-004 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3085,
"contextRemainingTokens": 770
},
"source": {
"bytes": 6819,
"tokens": 1706
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 127451,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14979,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P26-004/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P26-004.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P26-004/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"nextTask": "WBV2-P26-005",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P26-004.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P26-003/manifest.json",
"parentStatus": "docs/status/WBV2-P26-003.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P26-004.md",
"tests/golden/WBV2-P26-003/manifest.json",
"docs/status/WBV2-P26-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-P26-003",
"parentTask": "WBV2-P26-002",
"status": "done",
"nextTask": "WBV2-P26-004",
"artifactCount": 9
},
"statusSummary": [
"# WBV2-P26-003 status",
"- task: `WBV2-P26-003`; parent: `WBV2-P26-002`; status: `done`",
"- capability family: `SIMULATION.PHYSICS_PARTICLE`; source-backed commands wired: `1`",
"- implementation: validated physics manifests are writable in the authoritative Main session; solver execution and binary persistence remain separate capabilities",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P26-004`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1152,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 33,
"taskTokens": 288
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P26-004.md",
"bytes": 1152,
"lines": 33,
"tokens": 288
},
{
"path": "tests/golden/WBV2-P26-003/manifest.json",
"bytes": 2298,
"lines": 62,
"tokens": 575
},
{
"path": "docs/status/WBV2-P26-003.md",
"bytes": 566,
"lines": 9,
"tokens": 142
}
],
"sourceTokens": 1706,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1706,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2730,
"serializedContextTokens": 602,
"withinBudget": true
}
}

View File

@@ -0,0 +1,234 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_ADVANCED_IMPLEMENTATION_WAVE_P26",
"status": "ACTIVE_ADVANCED_SOURCE_BACKED_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave"
},
"tasks": [
{
"id": "WBV2-P26-000",
"phase": "P26",
"title": "authorize_advanced_capability_implementation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P25-008"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P26-000.md",
"behavior": "Authorize source-backed implementation for remaining guarded and unexposed capability domains.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P26-001",
"phase": "P26",
"title": "implement_geometry_nodes_main_writer",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P26-000"
],
"parityId": "GEOMETRY_NODES.MAIN_WRITER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-001.md",
"behavior": "Persist validated Geometry Node graphs through the authoritative Main writer.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-002",
"phase": "P26",
"title": "implement_shader_graph_workbench",
"kind": "feature",
"owner": "SHADER",
"dependsOn": [
"WBV2-P26-001"
],
"parityId": "SHADER.GRAPH_WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-002.md",
"behavior": "Expose the source-backed shader graph writer through the workbench.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-003",
"phase": "P26",
"title": "implement_simulation_physics_particle",
"kind": "feature",
"owner": "SIMULATION",
"dependsOn": [
"WBV2-P26-002"
],
"parityId": "SIMULATION.PHYSICS_PARTICLE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-003.md",
"behavior": "Connect physics, particle and cache capability routes to real Main data.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-004",
"phase": "P26",
"title": "implement_render_compositor_sequencer",
"kind": "feature",
"owner": "RENDER",
"dependsOn": [
"WBV2-P26-003"
],
"parityId": "RENDER.COMPOSITOR_SEQUENCER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-004.md",
"behavior": "Connect render, compositor, sequencer and media playback surfaces.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-005",
"phase": "P26",
"title": "implement_asset_library_storage",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P26-004"
],
"parityId": "IO.ASSET_LIBRARY_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-005.md",
"behavior": "Complete library append, packed assets, OPFS and resource lifecycle paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-006",
"phase": "P26",
"title": "run_advanced_implementation_smoke",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P26-005"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-006.md",
"behavior": "Run a bounded build/start smoke before opening the deferred verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-005",
"operation": "IMPLEMENT_ADVANCED_CAPABILITY_FAMILY",
"status": "PASS",
"family": "IO.ASSET_LIBRARY_STORAGE",
"sourceBacked": true,
"implementation": {
"commandCount": 1,
"commands": [
"importImage"
],
"marker": {
"path": "web/app/src/workers/web-engine.worker.ts",
"symbol": "appendLibraryObject"
},
"sourcePaths": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"web/protocol/library-main-append.ts",
"web/app/src/storage/StorageClient.ts",
"web/app/src/workers/web-engine.worker.ts"
],
"note": "asset/library/storage routes are retained and ready for persistence verification"
},
"verification": {
"status": "DEFERRED",
"chromium": false,
"malformedProductionReceipt": false,
"undoRedo": false,
"saveReopen": false,
"deterministicSecondRun": false,
"completionOverlay": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayChanged": false
},
"nextTask": "WBV2-P26-006"
}

View File

@@ -0,0 +1,61 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-005",
"parentTask": "WBV2-P26-004",
"operation": "IMPLEMENT_ADVANCED_CAPABILITY_FAMILY",
"status": "done",
"enablingTask": false,
"parityStateChange": false,
"runtime": "SOURCE_BACKED_ADVANCED_IMPLEMENTATION_WAVE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P26-004/manifest.json",
"sha256": "65b9387946b5aab07b1dc3beb38b04ae9637bfe50da761259235b9cab26e107e"
},
"web_engine_api_cpp": {
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"sha256": "a7f4241cb0b4bd26130ef3d4e2773736c1af49d3bf4d99d2c57477c1e73a358e"
},
"library_main_append_ts": {
"path": "web/protocol/library-main-append.ts",
"sha256": "bfd98561cbe797d7b8f07c92c53a25460c839a64ab7222b7795cf58d54dff8d7"
},
"StorageClient_ts": {
"path": "web/app/src/storage/StorageClient.ts",
"sha256": "00cd35e4632479e4cd153314113e201c822fd209ae6c8e9fbeff5f1399728565"
},
"web_engine_worker_ts": {
"path": "web/app/src/workers/web-engine.worker.ts",
"sha256": "bc0a1ab43b5374331267276aecac640edf3408f777571010780da09f67089af8"
},
"report": {
"path": "tests/golden/WBV2-P26-005/implementation-report.json",
"sha256": "9edbe1fc0146386589b1c7bbeeb8258cf13c97eeacbbea193293d679f0f9198d"
},
"status": {
"path": "docs/status/WBV2-P26-005.md",
"sha256": "c3649578aff1e06403a75f9610916aa877045f28e3b0f4a02569235ff41ecfae"
},
"plan": {
"path": "tests/golden/WBV2-P26-005/advanced-implementation-task-plan.json",
"sha256": "69e3f38ad43dd01b83d691546675aeaffbd625c50d0bcee79b294312e460f6a6"
},
"taskContext": {
"path": "tests/golden/WBV2-P26-005/task-context.json",
"sha256": "3e48533c02b6608dd453217701caa777e7fe4077a4e01d6699a645c46ba8fa3b"
}
},
"assertions": {
"capabilityFamily": "IO.ASSET_LIBRARY_STORAGE",
"sourceBacked": true,
"commandCount": 1,
"unsupportedFailsClosed": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P26-006"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-005",
"parentTask": "WBV2-P26-004",
"status": "in_progress",
"goal": "Complete library append, packed assets, OPFS and resource lifecycle paths.",
"scope": {
"gap": "IO.ASSET_LIBRARY_STORAGE",
"ownerFamily": "IO",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P26-005 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3208,
"contextRemainingTokens": 801
},
"source": {
"bytes": 6696,
"tokens": 1675
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 127451,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14979,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P26-005/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P26-005.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P26-005/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"nextTask": "WBV2-P26-006",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P26-005.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P26-004/manifest.json",
"parentStatus": "docs/status/WBV2-P26-004.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P26-005.md",
"tests/golden/WBV2-P26-004/manifest.json",
"docs/status/WBV2-P26-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-P26-004",
"parentTask": "WBV2-P26-003",
"status": "done",
"nextTask": "WBV2-P26-005",
"artifactCount": 9
},
"statusSummary": [
"# WBV2-P26-004 status",
"- task: `WBV2-P26-004`; parent: `WBV2-P26-003`; status: `done`",
"- capability family: `RENDER.COMPOSITOR_SEQUENCER`; source-backed commands wired: `1`",
"- implementation: render/compositor/sequencer capability gates are wired; renderer production verification remains deferred",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P26-005`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1147,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 33,
"taskTokens": 287
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P26-005.md",
"bytes": 1147,
"lines": 33,
"tokens": 287
},
{
"path": "tests/golden/WBV2-P26-004/manifest.json",
"bytes": 2219,
"lines": 62,
"tokens": 555
},
{
"path": "docs/status/WBV2-P26-004.md",
"bytes": 527,
"lines": 9,
"tokens": 132
}
],
"sourceTokens": 1675,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1675,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2699,
"serializedContextTokens": 602,
"withinBudget": true
}
}

View File

@@ -0,0 +1,234 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_ADVANCED_IMPLEMENTATION_WAVE_P26",
"status": "ACTIVE_ADVANCED_SOURCE_BACKED_QUEUE",
"authority": "user_authorized_implementation_first_execution",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"blenderSource": "blender-5.2.0",
"mainAuthority": "blender_main",
"browserPolicy": "chromium_only_for_later_verification",
"verificationPolicy": "deferred",
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "forbidden_during_implementation_wave"
},
"tasks": [
{
"id": "WBV2-P26-000",
"phase": "P26",
"title": "authorize_advanced_capability_implementation",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P25-008"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P26-000.md",
"behavior": "Authorize source-backed implementation for remaining guarded and unexposed capability domains.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P26-001",
"phase": "P26",
"title": "implement_geometry_nodes_main_writer",
"kind": "feature",
"owner": "GEOMETRY",
"dependsOn": [
"WBV2-P26-000"
],
"parityId": "GEOMETRY_NODES.MAIN_WRITER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-001",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-001.md",
"behavior": "Persist validated Geometry Node graphs through the authoritative Main writer.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-002",
"phase": "P26",
"title": "implement_shader_graph_workbench",
"kind": "feature",
"owner": "SHADER",
"dependsOn": [
"WBV2-P26-001"
],
"parityId": "SHADER.GRAPH_WORKBENCH",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-002",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-002.md",
"behavior": "Expose the source-backed shader graph writer through the workbench.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-003",
"phase": "P26",
"title": "implement_simulation_physics_particle",
"kind": "feature",
"owner": "SIMULATION",
"dependsOn": [
"WBV2-P26-002"
],
"parityId": "SIMULATION.PHYSICS_PARTICLE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-003",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-003.md",
"behavior": "Connect physics, particle and cache capability routes to real Main data.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-004",
"phase": "P26",
"title": "implement_render_compositor_sequencer",
"kind": "feature",
"owner": "RENDER",
"dependsOn": [
"WBV2-P26-003"
],
"parityId": "RENDER.COMPOSITOR_SEQUENCER",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-004",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-004.md",
"behavior": "Connect render, compositor, sequencer and media playback surfaces.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-005",
"phase": "P26",
"title": "implement_asset_library_storage",
"kind": "feature",
"owner": "IO",
"dependsOn": [
"WBV2-P26-004"
],
"parityId": "IO.ASSET_LIBRARY_STORAGE",
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-005",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-005.md",
"behavior": "Complete library append, packed assets, OPFS and resource lifecycle paths.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P26-006",
"phase": "P26",
"title": "run_advanced_implementation_smoke",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P26-005"
],
"parityId": null,
"implementationClass": "SOURCE_BACKED",
"parallelGroup": "p26-006",
"gate": "IMPLEMENTATION",
"card": "docs/tasks/WBV2-P26-006.md",
"behavior": "Run a bounded build/start smoke before opening the deferred verification wave.",
"outputs": [
"implementation-report",
"manifest",
"status"
],
"acceptance": [
"real source or WebEngine Main path is wired",
"unsupported input fails closed",
"implementation smoke is reproducible",
"verification remains deferred"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,41 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-006",
"operation": "RUN_ADVANCED_IMPLEMENTATION_SMOKE",
"status": "PASS",
"build": {
"command": "npm --prefix web run build",
"exitCode": 0,
"index": "web/dist/index.html",
"worker": "web/dist/assets/web-engine.worker-D48N3wX6.js",
"wasm": "web/dist/assets/web_engine-tuhS8OZi.wasm"
},
"browserStart": {
"url": "http://127.0.0.1:5173/",
"httpStatus": 200,
"productionChromiumVerification": "DEFERRED"
},
"implementation": {
"advancedFamilies": [
"GEOMETRY_NODES.MAIN_WRITER",
"SHADER.GRAPH_WORKBENCH",
"SIMULATION.PHYSICS_PARTICLE",
"RENDER.COMPOSITOR_SEQUENCER",
"IO.ASSET_LIBRARY_STORAGE"
],
"sourceBacked": true
},
"verification": {
"status": "DEFERRED",
"completionOverlay": false,
"fullHistoricalReproduction": false
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609
},
"nextTask": "WBV2-P27-000"
}

View File

@@ -0,0 +1,52 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-006",
"parentTask": "WBV2-P26-005",
"operation": "RUN_ADVANCED_IMPLEMENTATION_SMOKE",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "VITE_BUILD_AND_BROWSER_START_SMOKE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P26-005/manifest.json",
"sha256": "7c98b692f78d52557fa55bae6435dce0dd077a4227688a282e63710af3416ced"
},
"report": {
"path": "tests/golden/WBV2-P26-006/implementation-smoke-report.json",
"sha256": "44603f97617f2bbe27c794d33815624f6b139d6b0faedf2dbb5f8451243f1938"
},
"status": {
"path": "docs/status/WBV2-P26-006.md",
"sha256": "dbcc467c738ac3d9b46ec6d094b8cec901f1fbaec5d96840c33bb09f6d80a66b"
},
"plan": {
"path": "tests/golden/WBV2-P26-006/advanced-implementation-task-plan.json",
"sha256": "866b068a5a201cc1958a493f20d2aa5f1890808638620ee0dc1534d2c267127f"
},
"index": {
"path": "web/dist/index.html",
"sha256": "65d51defc76f4abf0360cf52871c48c4e8ece6509512cb53438c2581c2d3bf83"
},
"worker": {
"path": "web/dist/assets/web-engine.worker-D48N3wX6.js",
"sha256": "97acbd8697194abf9fc30743331f26b63270b07b7d9e45e1b74d20631aac2671"
},
"wasm": {
"path": "web/dist/assets/web_engine-tuhS8OZi.wasm",
"sha256": "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"
}
},
"assertions": {
"buildExitCode": 0,
"browserStartHttpStatus": 200,
"sourceBackedImplementation": true,
"verificationDeferred": true,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P27-000"
}

View File

@@ -0,0 +1,167 @@
{
"schemaVersion": 1,
"task": "WBV2-P26-006",
"parentTask": "WBV2-P26-005",
"status": "in_progress",
"goal": "Run a bounded build/start smoke before opening the deferred verification wave.",
"scope": {
"gap": "workflow:run_advanced_implementation_smoke",
"ownerFamily": "RELEASE",
"implementationClass": "SOURCE_BACKED"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P26-006 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3172,
"contextRemainingTokens": 792
},
"source": {
"bytes": 6732,
"tokens": 1684
},
"selected": [],
"excluded": [
{
"path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"bytes": 127451,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine.ts",
"bytes": 14979,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P26-006/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P26-006.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P26-006/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"focused command exits 0",
"report and manifest are hash-bound",
"failure path does not publish a late result"
],
"nextTask": "WBV2-P27-000",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P26-006.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P26-005/manifest.json",
"parentStatus": "docs/status/WBV2-P26-005.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P26-006.md",
"tests/golden/WBV2-P26-005/manifest.json",
"docs/status/WBV2-P26-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-P26-005",
"parentTask": "WBV2-P26-004",
"status": "done",
"nextTask": "WBV2-P26-006",
"artifactCount": 9
},
"statusSummary": [
"# WBV2-P26-005 status",
"- task: `WBV2-P26-005`; parent: `WBV2-P26-004`; status: `done`",
"- capability family: `IO.ASSET_LIBRARY_STORAGE`; source-backed commands wired: `1`",
"- implementation: asset/library/storage routes are retained and ready for persistence verification",
"- verification wave: `DEFERRED`; no Chromium receipt or completion overlay written",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P26-006`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1176,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 33,
"taskTokens": 294
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P26-006.md",
"bytes": 1176,
"lines": 33,
"tokens": 294
},
{
"path": "tests/golden/WBV2-P26-005/manifest.json",
"bytes": 2254,
"lines": 62,
"tokens": 564
},
{
"path": "docs/status/WBV2-P26-005.md",
"bytes": 499,
"lines": 9,
"tokens": 125
}
],
"sourceTokens": 1684,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1684,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2708,
"serializedContextTokens": 598,
"withinBudget": true
}
}

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"task": "WBV2-P27-000",
"parentTask": "WBV2-P26-006",
"operation": "AUTHORIZE_DEDUPLICATED_VERIFICATION_WAVE",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "VERIFICATION_QUEUE_PREPARATION",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P26-006/manifest.json",
"sha256": "f28491ffb5587fd2caf2938fd5ffc871cbef8884bd2ab8ac0da7d8f3fd82fef4"
},
"plan": {
"path": "tests/golden/WBV2-P27-000/verification-task-plan.json",
"sha256": "bd5ed6dead7be90dcf405a0f27198b647527a6b57521ee010cad549873ec5047"
},
"report": {
"path": "tests/golden/WBV2-P27-000/verification-root-report.json",
"sha256": "c8433fb2be56223af510e369fea0c8e79fecd5e29da01ed1240a5ae356775f04"
},
"rootCard": {
"path": "docs/tasks/WBV2-P27-000.md",
"sha256": "39144c337cb7bcdf65ef220b6a2cc675ccd309fe6f1669c5ffe826a36236b210"
},
"rootStatus": {
"path": "docs/status/WBV2-P27-000.md",
"sha256": "41466f57bca2765d01624985d71d58d98999831d4513ea28b3e2f6310ca0953c"
}
},
"assertions": {
"deduplicatedVerification": true,
"browser": "chromium_only",
"verificationExecuted": false,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P27-001"
}

View File

@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"task": "WBV2-P27-000",
"operation": "AUTHORIZE_DEDUPLICATED_VERIFICATION_WAVE",
"status": "PASS",
"parent": {
"task": "WBV2-P26-006",
"manifest": "tests/golden/WBV2-P26-006/manifest.json",
"manifestSha256": "c04513a147462e11f7acf13ba6de8cc00c773aba8f4002a5d2def6b596263da9"
},
"scope": {
"firstTask": "WBV2-P27-001",
"plannedTasks": [
"WBV2-P27-000",
"WBV2-P27-001",
"WBV2-P27-002",
"WBV2-P27-003"
],
"browser": "chromium_only",
"duplicateValidationAvoided": true
},
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609
},
"verification": {
"status": "PREPARED_NOT_EXECUTED",
"completionOverlay": false,
"fullHistoricalReproduction": false
},
"nextTask": "WBV2-P27-001"
}

View File

@@ -0,0 +1,145 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_VERIFICATION_WAVE_P27",
"status": "ACTIVE_DEDUPLICATED_VERIFICATION_QUEUE",
"authority": "implementation_wave_complete_verification_deferred",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"browser": "chromium_only",
"forbiddenBrowsers": [
"firefox",
"webkit"
],
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "only_after_complete_hash_bound_receipt"
},
"tasks": [
{
"id": "WBV2-P27-000",
"phase": "P27",
"title": "authorize_deferred_verification_wave",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P26-006"
],
"parityId": null,
"implementationClass": "VERIFICATION_ONLY",
"parallelGroup": "p27-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P27-000.md",
"behavior": "Authorize efficient capability-family verification after the implementation wave without changing inventory.",
"outputs": [
"batch-report",
"manifest",
"status"
],
"acceptance": [
"existing source and behavior hashes are reused",
"duplicate behavior runs remain zero",
"Chromium is the only production browser",
"overlay is unchanged until complete evidence"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P27-001",
"phase": "P27",
"title": "build_capability_family_verification_batches",
"kind": "feature",
"owner": "VERIFICATION",
"dependsOn": [
"WBV2-P27-000"
],
"parityId": "VERIFICATION.BATCH_PLANNER",
"implementationClass": "VERIFICATION_ONLY",
"parallelGroup": "p27-001",
"gate": "G5",
"card": "docs/tasks/WBV2-P27-001.md",
"behavior": "Build a deduplicated batch planner that maps unique behavior hashes to the 6900 inventory without rerunning existing evidence.",
"outputs": [
"batch-report",
"manifest",
"status"
],
"acceptance": [
"existing source and behavior hashes are reused",
"duplicate behavior runs remain zero",
"Chromium is the only production browser",
"overlay is unchanged until complete evidence"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P27-002",
"phase": "P27",
"title": "run_chromium_production_batches",
"kind": "feature",
"owner": "CHROMIUM",
"dependsOn": [
"WBV2-P27-001"
],
"parityId": "VERIFICATION.CHROMIUM_RECEIPTS",
"implementationClass": "VERIFICATION_ONLY",
"parallelGroup": "p27-002",
"gate": "G5",
"card": "docs/tasks/WBV2-P27-002.md",
"behavior": "Run only new Chromium production behaviors with malformed, transaction and persistence boundaries.",
"outputs": [
"batch-report",
"manifest",
"status"
],
"acceptance": [
"existing source and behavior hashes are reused",
"duplicate behavior runs remain zero",
"Chromium is the only production browser",
"overlay is unchanged until complete evidence"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P27-003",
"phase": "P27",
"title": "close_hash_bound_completion_overlay",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P27-002"
],
"parityId": "VERIFICATION.COMPLETION_OVERLAY",
"implementationClass": "VERIFICATION_ONLY",
"parallelGroup": "p27-003",
"gate": "G5",
"card": "docs/tasks/WBV2-P27-003.md",
"behavior": "Publish one-to-one hash-bound completion overlay entries after complete receipts.",
"outputs": [
"batch-report",
"manifest",
"status"
],
"acceptance": [
"existing source and behavior hashes are reused",
"duplicate behavior runs remain zero",
"Chromium is the only production browser",
"overlay is unchanged until complete evidence"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,145 @@
{
"schemaVersion": 1,
"planId": "BLENDER_WEB_VERIFICATION_WAVE_P27",
"status": "ACTIVE_DEDUPLICATED_VERIFICATION_QUEUE",
"authority": "implementation_wave_complete_verification_deferred",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"runtimePolicy": {
"browser": "chromium_only",
"forbiddenBrowsers": [
"firefox",
"webkit"
],
"reusePolicy": "source_hash_behavior_hash_and_dedupe_key"
},
"inventoryPolicy": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"effectiveCompleted": 290,
"effectivePending": 6609,
"overlayMutation": "only_after_complete_hash_bound_receipt"
},
"tasks": [
{
"id": "WBV2-P27-000",
"phase": "P27",
"title": "authorize_deferred_verification_wave",
"kind": "enabling",
"owner": "PROGRAM",
"dependsOn": [
"WBV2-P26-006"
],
"parityId": null,
"implementationClass": "VERIFICATION_ONLY",
"parallelGroup": "p27-000",
"gate": "G1",
"card": "docs/tasks/WBV2-P27-000.md",
"behavior": "Authorize efficient capability-family verification after the implementation wave without changing inventory.",
"outputs": [
"batch-report",
"manifest",
"status"
],
"acceptance": [
"existing source and behavior hashes are reused",
"duplicate behavior runs remain zero",
"Chromium is the only production browser",
"overlay is unchanged until complete evidence"
],
"status": "done",
"ready": false,
"queueMutationAllowed": true
},
{
"id": "WBV2-P27-001",
"phase": "P27",
"title": "build_capability_family_verification_batches",
"kind": "feature",
"owner": "VERIFICATION",
"dependsOn": [
"WBV2-P27-000"
],
"parityId": "VERIFICATION.BATCH_PLANNER",
"implementationClass": "VERIFICATION_ONLY",
"parallelGroup": "p27-001",
"gate": "G5",
"card": "docs/tasks/WBV2-P27-001.md",
"behavior": "Build a deduplicated batch planner that maps unique behavior hashes to the 6900 inventory without rerunning existing evidence.",
"outputs": [
"batch-report",
"manifest",
"status"
],
"acceptance": [
"existing source and behavior hashes are reused",
"duplicate behavior runs remain zero",
"Chromium is the only production browser",
"overlay is unchanged until complete evidence"
],
"status": "done",
"ready": false,
"queueMutationAllowed": false
},
{
"id": "WBV2-P27-002",
"phase": "P27",
"title": "run_chromium_production_batches",
"kind": "feature",
"owner": "CHROMIUM",
"dependsOn": [
"WBV2-P27-001"
],
"parityId": "VERIFICATION.CHROMIUM_RECEIPTS",
"implementationClass": "VERIFICATION_ONLY",
"parallelGroup": "p27-002",
"gate": "G5",
"card": "docs/tasks/WBV2-P27-002.md",
"behavior": "Run only new Chromium production behaviors with malformed, transaction and persistence boundaries.",
"outputs": [
"batch-report",
"manifest",
"status"
],
"acceptance": [
"existing source and behavior hashes are reused",
"duplicate behavior runs remain zero",
"Chromium is the only production browser",
"overlay is unchanged until complete evidence"
],
"status": "in_progress",
"ready": true,
"queueMutationAllowed": false
},
{
"id": "WBV2-P27-003",
"phase": "P27",
"title": "close_hash_bound_completion_overlay",
"kind": "enabling",
"owner": "RELEASE",
"dependsOn": [
"WBV2-P27-002"
],
"parityId": "VERIFICATION.COMPLETION_OVERLAY",
"implementationClass": "VERIFICATION_ONLY",
"parallelGroup": "p27-003",
"gate": "G5",
"card": "docs/tasks/WBV2-P27-003.md",
"behavior": "Publish one-to-one hash-bound completion overlay entries after complete receipts.",
"outputs": [
"batch-report",
"manifest",
"status"
],
"acceptance": [
"existing source and behavior hashes are reused",
"duplicate behavior runs remain zero",
"Chromium is the only production browser",
"overlay is unchanged until complete evidence"
],
"status": "planned",
"ready": false,
"queueMutationAllowed": false
}
]
}

View File

@@ -0,0 +1,58 @@
{
"schemaVersion": 1,
"task": "WBV2-P27-001",
"parentTask": "WBV2-P27-000",
"operation": "BUILD_DEDUPLICATED_CAPABILITY_FAMILY_BATCHES",
"status": "done",
"enablingTask": true,
"parityStateChange": false,
"runtime": "READ_ONLY_VERIFICATION_BATCH_PLANNER",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P27-000/manifest.json",
"sha256": "06405d24e03a5babe4f508a0dd701a4d9bc33b4fb3e6c51f31fbfb950237f0d9"
},
"inventory": {
"path": "tests/golden/WBV2-P0-002/parity-map.json",
"sha256": "a60a77cae000941a953d55adbf93d8f6e275533891713d6eae993f60faed94e8"
},
"registry": {
"path": "web/protocol/web-engine-capabilities.ts",
"sha256": "ee3b18ff25378f33f16dc361837c94c9930d99c07a3886d051ebeced83b846ed"
},
"plan": {
"path": "tests/golden/WBV2-P27-001/verification-batch-plan.json",
"sha256": "56dddc2e4c380f364d1760dfd9bc7a6be04c1bd8979e0c2aeaa69ae80e80a14e"
},
"report": {
"path": "tests/golden/WBV2-P27-001/verification-batch-report.json",
"sha256": "a0e61b9c64d6a8d7ff681505fb02d9beb74b8b07bf48873b65136d7c35b9e27e"
},
"status": {
"path": "docs/status/WBV2-P27-001.md",
"sha256": "e9fe6883cb66e4f535aa772df9942dd7d0c11ef01efd3ac87a467050ee9cfb20"
},
"taskContext": {
"path": "tests/golden/WBV2-P27-001/task-context.json",
"sha256": "6076186def401a379f67a06b68c4897f86a25b73e916dbc63cb1f425a0a14f37"
}
},
"assertions": {
"batchCount": 27,
"pendingRows": 6609,
"knownEvidenceIds": 0,
"knownBehaviorHashes": 0,
"knownDedupeKeys": 0,
"repeatedBlenderRuns": 0,
"repeatedWasmRuns": 0,
"repeatedChromiumRuns": 0,
"duplicateValidationAvoided": true,
"verificationExecuted": false,
"completionOverlayWritten": false,
"inventoryTotal": 6900,
"effectiveCompleted": 290,
"effectivePending": 6609,
"historicalReproduction": false
},
"nextTask": "WBV2-P27-002"
}

View File

@@ -0,0 +1,167 @@
{
"schemaVersion": 1,
"task": "WBV2-P27-001",
"parentTask": "WBV2-P27-000",
"status": "in_progress",
"goal": "Build a deduplicated batch planner that maps unique behavior hashes to the 6900 inventory without rerunning existing evidence.",
"scope": {
"gap": "VERIFICATION.BATCH_PLANNER",
"ownerFamily": "VERIFICATION",
"implementationClass": "VERIFICATION_ONLY"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P27-001 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 4068,
"contextRemainingTokens": 1015
},
"source": {
"bytes": 5836,
"tokens": 1461
},
"selected": [],
"excluded": [
{
"path": "tests/golden/WBV2-P0-002/parity-map.json",
"bytes": 5053386,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine-capabilities.ts",
"bytes": 8451,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P27-001/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P27-001.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P27-001/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"existing source and behavior hashes are reused",
"duplicate behavior runs remain zero",
"Chromium is the only production browser",
"overlay is unchanged until complete evidence"
],
"nextTask": "WBV2-P27-002",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P27-001.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P27-000/manifest.json",
"parentStatus": "docs/status/WBV2-P27-000.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P27-001.md",
"tests/golden/WBV2-P27-000/manifest.json",
"docs/status/WBV2-P27-000.md"
],
"machineOnly": [
"tests/golden/WBV2/task-index.json",
"tests/golden/M15-03A/task-catalog.jsonl"
],
"optionalByNeed": [
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
"任务卡列出的精确协议/生产路径",
"任务卡明确命名的长期计划小节"
],
"forbiddenByDefault": [
"完整 CURRENT_EXECUTION_PLAN.md",
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
"全部 docs/status/*.md",
"完整 parity/WBS 计划",
"README 历史和 test-results/"
]
},
"parent": {
"manifest": {
"schemaVersion": 1,
"task": "WBV2-P27-000",
"parentTask": "WBV2-P26-006",
"status": "done",
"nextTask": "WBV2-P27-001",
"artifactCount": 5
},
"statusSummary": [
"# WBV2-P27-000 status",
"- task: `WBV2-P27-000`; parent: `WBV2-P26-006`; status: `done`",
"- verification wave is prepared with capability-family deduplication",
"- first task: `WBV2-P27-001` batch planner; no Chromium production run started",
"- completion overlay unchanged; inventory remains `6900/6618`, effective `290/6609`",
"- nextTask: `WBV2-P27-001`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1250,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 34,
"taskTokens": 313
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P27-001.md",
"bytes": 1250,
"lines": 34,
"tokens": 313
},
{
"path": "tests/golden/WBV2-P27-000/manifest.json",
"bytes": 1438,
"lines": 44,
"tokens": 360
},
{
"path": "docs/status/WBV2-P27-000.md",
"bytes": 345,
"lines": 8,
"tokens": 87
}
],
"sourceTokens": 1461,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1461,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2485,
"serializedContextTokens": 626,
"withinBudget": true
}
}

View File

@@ -0,0 +1,673 @@
{
"schemaVersion": 1,
"task": "WBV2-P27-001",
"operation": "BUILD_DEDUPLICATED_CAPABILITY_FAMILY_BATCHES",
"status": "READY_FOR_CHROMIUM_WAVE",
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"overlayBound": 290,
"effectiveCompleted": 290,
"effectivePending": 6609
},
"evidenceIndex": {
"scannedRoot": "tests/golden/WBV2",
"knownEvidenceIds": 0,
"knownBehaviorHashes": 0,
"knownDedupeKeys": 0
},
"batching": {
"strategy": "CAPABILITY_ID_KIND_IMPLEMENTATION_CLASS",
"batchCount": 27,
"pendingRows": 6609,
"rowsPerBatchAverage": 244.78,
"repeatedRunsRequired": 0,
"batches": [
{
"batchId": "P27-BATCH-001",
"key": "CAP-CORE-DNA-RNA|rna|LOCAL_EXACT",
"capabilityId": "CAP-CORE-DNA-RNA",
"kind": "rna",
"implementationClass": "LOCAL_EXACT",
"count": 20,
"representativeIds": [
"rna:Core:Action",
"rna:Core:Armature",
"rna:Core:Brush",
"rna:Core:Curve",
"rna:Core:Curves"
],
"sourceTasks": [
"M15-01F"
],
"dedupe": {
"behaviorKey": "CAP-CORE-DNA-RNA|rna|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-002",
"key": "CAP-CORE-MESH|rna|LOCAL_EXACT",
"capabilityId": "CAP-CORE-MESH",
"kind": "rna",
"implementationClass": "LOCAL_EXACT",
"count": 30,
"representativeIds": [
"rna:Mesh:Attribute",
"rna:Mesh:AttributeGroupMesh",
"rna:Mesh:BoolAttribute",
"rna:Mesh:ByteColorAttribute",
"rna:Mesh:FloatAttribute"
],
"sourceTasks": [
"M15-01F"
],
"dedupe": {
"behaviorKey": "CAP-CORE-MESH|rna|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-003",
"key": "CAP-CORE-OBJECT|rna|LOCAL_EXACT",
"capabilityId": "CAP-CORE-OBJECT",
"kind": "rna",
"implementationClass": "LOCAL_EXACT",
"count": 1,
"representativeIds": [
"rna:Scene:Object"
],
"sourceTasks": [
"M15-01F"
],
"dedupe": {
"behaviorKey": "CAP-CORE-OBJECT|rna|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-004",
"key": "CAP-CORE-SCENE-GRAPH|rna|LOCAL_EXACT",
"capabilityId": "CAP-CORE-SCENE-GRAPH",
"kind": "rna",
"implementationClass": "LOCAL_EXACT",
"count": 57,
"representativeIds": [
"rna:Depsgraph:Depsgraph",
"rna:Depsgraph:DepsgraphObjectInstance",
"rna:Depsgraph:DepsgraphUpdate",
"rna:Main:BlendData",
"rna:Main:BlendDataActions"
],
"sourceTasks": [
"M15-01F"
],
"dedupe": {
"behaviorKey": "CAP-CORE-SCENE-GRAPH|rna|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-005",
"key": "CAP-MATERIAL-RENDER|node|LOCAL_EXACT",
"capabilityId": "CAP-MATERIAL-RENDER",
"kind": "node",
"implementationClass": "LOCAL_EXACT",
"count": 99,
"representativeIds": [
"node:Shader:ShaderNodeAddShader",
"node:Shader:ShaderNodeAmbientOcclusion",
"node:Shader:ShaderNodeAttribute",
"node:Shader:ShaderNodeBackground",
"node:Shader:ShaderNodeBevel"
],
"sourceTasks": [
"M15-01C"
],
"dedupe": {
"behaviorKey": "CAP-MATERIAL-RENDER|node|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-006",
"key": "CAP-MATERIAL-RENDER|operator|LOCAL_EXACT",
"capabilityId": "CAP-MATERIAL-RENDER",
"kind": "operator",
"implementationClass": "LOCAL_EXACT",
"count": 26,
"representativeIds": [
"operator:camera.preset_add",
"operator:camera.safe_areas_preset_add",
"operator:cycles.denoise_animation",
"operator:cycles.merge_images",
"operator:cycles.use_shading_nodes"
],
"sourceTasks": [
"M15-01B"
],
"dedupe": {
"behaviorKey": "CAP-MATERIAL-RENDER|operator|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-007",
"key": "CAP-MEDIA-IO|io|LOCAL_EXACT",
"capabilityId": "CAP-MEDIA-IO",
"kind": "io",
"implementationClass": "LOCAL_EXACT",
"count": 33,
"representativeIds": [
"io:anim.keying_set_export",
"io:collection.export_all",
"io:collection.exporter_add",
"io:collection.exporter_export",
"io:collection.exporter_move"
],
"sourceTasks": [
"M15-01D"
],
"dedupe": {
"behaviorKey": "CAP-MEDIA-IO|io|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-008",
"key": "CAP-MEDIA-IO|operator|LOCAL_EXACT",
"capabilityId": "CAP-MEDIA-IO",
"kind": "operator",
"implementationClass": "LOCAL_EXACT",
"count": 509,
"representativeIds": [
"operator:asset.tag_add",
"operator:asset.tag_remove",
"operator:clip.add_marker",
"operator:clip.add_marker_at_click",
"operator:clip.add_marker_move"
],
"sourceTasks": [
"M15-01B"
],
"dedupe": {
"behaviorKey": "CAP-MEDIA-IO|operator|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-009",
"key": "CAP-MEDIA-IO|strip|LOCAL_EXACT",
"capabilityId": "CAP-MEDIA-IO",
"kind": "strip",
"implementationClass": "LOCAL_EXACT",
"count": 24,
"representativeIds": [
"strip:ADD",
"strip:ADJUSTMENT",
"strip:ALPHA_OVER",
"strip:ALPHA_UNDER",
"strip:COLOR"
],
"sourceTasks": [
"M15-01D"
],
"dedupe": {
"behaviorKey": "CAP-MEDIA-IO|strip|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-010",
"key": "CAP-MESH-EDITING|operator|LOCAL_EXACT",
"capabilityId": "CAP-MESH-EDITING",
"kind": "operator",
"implementationClass": "LOCAL_EXACT",
"count": 431,
"representativeIds": [
"operator:curve.cyclic_toggle",
"operator:curve.de_select_first",
"operator:curve.de_select_last",
"operator:curve.decimate",
"operator:curve.delete"
],
"sourceTasks": [
"M15-01B"
],
"dedupe": {
"behaviorKey": "CAP-MESH-EDITING|operator|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-011",
"key": "CAP-NODES-GRAPH|node|LOCAL_EXACT",
"capabilityId": "CAP-NODES-GRAPH",
"kind": "node",
"implementationClass": "LOCAL_EXACT",
"count": 352,
"representativeIds": [
"node:Compositor:CompositorNodeAlphaOver",
"node:Compositor:CompositorNodeAntiAliasing",
"node:Compositor:CompositorNodeBilateralblur",
"node:Compositor:CompositorNodeBlankImage",
"node:Compositor:CompositorNodeBlur"
],
"sourceTasks": [
"M15-01C"
],
"dedupe": {
"behaviorKey": "CAP-NODES-GRAPH|node|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-012",
"key": "CAP-NODES-GRAPH|operator|LOCAL_EXACT",
"capabilityId": "CAP-NODES-GRAPH",
"kind": "operator",
"implementationClass": "LOCAL_EXACT",
"count": 191,
"representativeIds": [
"operator:geometry.attribute_add",
"operator:geometry.attribute_convert",
"operator:geometry.attribute_remove",
"operator:geometry.color_attribute_add",
"operator:geometry.color_attribute_convert"
],
"sourceTasks": [
"M15-01B"
],
"dedupe": {
"behaviorKey": "CAP-NODES-GRAPH|operator|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-013",
"key": "CAP-OBJECT-OPERATIONS|operator|LOCAL_EXACT",
"capabilityId": "CAP-OBJECT-OPERATIONS",
"kind": "operator",
"implementationClass": "LOCAL_EXACT",
"count": 309,
"representativeIds": [
"operator:object.add_modifier_menu",
"operator:object.align",
"operator:object.anim_transforms_to_deltas",
"operator:object.armature_add",
"operator:object.assign_property_defaults"
],
"sourceTasks": [
"M15-01B"
],
"dedupe": {
"behaviorKey": "CAP-OBJECT-OPERATIONS|operator|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-014",
"key": "CAP-OTHER-OPERATOR|operator|LOCAL_EXACT",
"capabilityId": "CAP-OTHER-OPERATOR",
"kind": "operator",
"implementationClass": "LOCAL_EXACT",
"count": 103,
"representativeIds": [
"operator:extensions.package_disable",
"operator:extensions.package_install",
"operator:extensions.package_install_files",
"operator:extensions.package_install_marked",
"operator:extensions.package_mark_clear"
],
"sourceTasks": [
"M15-01B"
],
"dedupe": {
"behaviorKey": "CAP-OTHER-OPERATOR|operator|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-015",
"key": "CAP-RIG-ANIMATION|constraint|LOCAL_EXACT",
"capabilityId": "CAP-RIG-ANIMATION",
"kind": "constraint",
"implementationClass": "LOCAL_EXACT",
"count": 29,
"representativeIds": [
"constraint:ACTION",
"constraint:ARMATURE",
"constraint:CAMERA_SOLVER",
"constraint:CHILD_OF",
"constraint:CLAMP_TO"
],
"sourceTasks": [
"M15-01C"
],
"dedupe": {
"behaviorKey": "CAP-RIG-ANIMATION|constraint|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-016",
"key": "CAP-RIG-ANIMATION|operator|LOCAL_EXACT",
"capabilityId": "CAP-RIG-ANIMATION",
"kind": "operator",
"implementationClass": "LOCAL_EXACT",
"count": 195,
"representativeIds": [
"operator:constraint.add_target",
"operator:constraint.apply",
"operator:constraint.childof_clear_inverse",
"operator:constraint.childof_set_inverse",
"operator:constraint.copy"
],
"sourceTasks": [
"M15-01B"
],
"dedupe": {
"behaviorKey": "CAP-RIG-ANIMATION|operator|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-017",
"key": "CAP-SCULPT-PAINT|operator|LOCAL_EXACT",
"capabilityId": "CAP-SCULPT-PAINT",
"kind": "operator",
"implementationClass": "LOCAL_EXACT",
"count": 115,
"representativeIds": [
"operator:brush.asset_activate",
"operator:brush.asset_delete",
"operator:brush.asset_edit_metadata",
"operator:brush.asset_load_preview",
"operator:brush.asset_revert"
],
"sourceTasks": [
"M15-01B"
],
"dedupe": {
"behaviorKey": "CAP-SCULPT-PAINT|operator|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-018",
"key": "CAP-SIMULATION|operator|LOCAL_EXACT",
"capabilityId": "CAP-SIMULATION",
"kind": "operator",
"implementationClass": "LOCAL_EXACT",
"count": 90,
"representativeIds": [
"operator:boid.rule_add",
"operator:boid.rule_del",
"operator:boid.rule_move_down",
"operator:boid.rule_move_up",
"operator:boid.state_add"
],
"sourceTasks": [
"M15-01B"
],
"dedupe": {
"behaviorKey": "CAP-SIMULATION|operator|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-019",
"key": "CAP-SIMULATION|physics|LOCAL_EXACT",
"capabilityId": "CAP-SIMULATION",
"kind": "physics",
"implementationClass": "LOCAL_EXACT",
"count": 65,
"representativeIds": [
"physics:BakeSettings",
"physics:BlendDataParticles",
"physics:BoidRule",
"physics:BoidRuleAverageSpeed",
"physics:BoidRuleAvoid"
],
"sourceTasks": [
"M15-01D"
],
"dedupe": {
"behaviorKey": "CAP-SIMULATION|physics|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-020",
"key": "CAP-UI-EDITOR|area|LOCAL_EXACT",
"capabilityId": "CAP-UI-EDITOR",
"kind": "area",
"implementationClass": "LOCAL_EXACT",
"count": 19,
"representativeIds": [
"area:CLIP_EDITOR",
"area:CONSOLE",
"area:DOPESHEET_EDITOR",
"area:EMPTY",
"area:FILE_BROWSER"
],
"sourceTasks": [
"M15-01E"
],
"dedupe": {
"behaviorKey": "CAP-UI-EDITOR|area|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-021",
"key": "CAP-UI-EDITOR|keymap-item|LOCAL_EXACT",
"capabilityId": "CAP-UI-EDITOR",
"kind": "keymap-item",
"implementationClass": "LOCAL_EXACT",
"count": 3228,
"representativeIds": [
"keymap-item:3D View Generic:VIEW_3D:WINDOW:0",
"keymap-item:3D View Generic:VIEW_3D:WINDOW:1",
"keymap-item:3D View Tool: Bend:VIEW_3D:WINDOW:0",
"keymap-item:3D View Tool: Breakdowner:VIEW_3D:WINDOW:0",
"keymap-item:3D View Tool: Cursor:VIEW_3D:WINDOW:0"
],
"sourceTasks": [
"M15-01E"
],
"dedupe": {
"behaviorKey": "CAP-UI-EDITOR|keymap-item|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-022",
"key": "CAP-UI-EDITOR|keymap|LOCAL_EXACT",
"capabilityId": "CAP-UI-EDITOR",
"kind": "keymap",
"implementationClass": "LOCAL_EXACT",
"count": 280,
"representativeIds": [
"keymap:3D View Generic:VIEW_3D:WINDOW",
"keymap:3D View Tool: Bend:VIEW_3D:WINDOW",
"keymap:3D View Tool: Breakdowner:VIEW_3D:WINDOW",
"keymap:3D View Tool: Cursor:VIEW_3D:WINDOW",
"keymap:3D View Tool: Edit Armature, B-Bone Size:VIEW_3D:WINDOW"
],
"sourceTasks": [
"M15-01E"
],
"dedupe": {
"behaviorKey": "CAP-UI-EDITOR|keymap|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-023",
"key": "CAP-UI-EDITOR|operator|LOCAL_EXACT",
"capabilityId": "CAP-UI-EDITOR",
"kind": "operator",
"implementationClass": "LOCAL_EXACT",
"count": 338,
"representativeIds": [
"operator:buttons.clear_filter",
"operator:buttons.context_menu",
"operator:buttons.directory_browse",
"operator:buttons.file_browse",
"operator:buttons.start_filter"
],
"sourceTasks": [
"M15-01B"
],
"dedupe": {
"behaviorKey": "CAP-UI-EDITOR|operator|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-024",
"key": "CAP-UI-EDITOR|region|LOCAL_EXACT",
"capabilityId": "CAP-UI-EDITOR",
"kind": "region",
"implementationClass": "LOCAL_EXACT",
"count": 17,
"representativeIds": [
"region:ASSET_SHELF",
"region:ASSET_SHELF_HEADER",
"region:CHANNELS",
"region:EXECUTE",
"region:FOOTER"
],
"sourceTasks": [
"M15-01E"
],
"dedupe": {
"behaviorKey": "CAP-UI-EDITOR|region|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-025",
"key": "CAP-UI-EDITOR|space-class|LOCAL_EXACT",
"capabilityId": "CAP-UI-EDITOR",
"kind": "space-class",
"implementationClass": "LOCAL_EXACT",
"count": 16,
"representativeIds": [
"space-class:SpaceClipEditor",
"space-class:SpaceConsole",
"space-class:SpaceDopeSheetEditor",
"space-class:SpaceFileBrowser",
"space-class:SpaceGraphEditor"
],
"sourceTasks": [
"M15-01E"
],
"dedupe": {
"behaviorKey": "CAP-UI-EDITOR|space-class|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-026",
"key": "CAP-UI-EDITOR|space|LOCAL_EXACT",
"capabilityId": "CAP-UI-EDITOR",
"kind": "space",
"implementationClass": "LOCAL_EXACT",
"count": 19,
"representativeIds": [
"space:CLIP_EDITOR",
"space:CONSOLE",
"space:DOPESHEET_EDITOR",
"space:EMPTY",
"space:FILE_BROWSER"
],
"sourceTasks": [
"M15-01E"
],
"dedupe": {
"behaviorKey": "CAP-UI-EDITOR|space|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
},
{
"batchId": "P27-BATCH-027",
"key": "CAP-UI-EDITOR|workspace|LOCAL_EXACT",
"capabilityId": "CAP-UI-EDITOR",
"kind": "workspace",
"implementationClass": "LOCAL_EXACT",
"count": 13,
"representativeIds": [
"workspace:EDIT",
"workspace:EDIT_GPENCIL",
"workspace:OBJECT",
"workspace:PAINT_GREASE_PENCIL",
"workspace:PARTICLE_EDIT"
],
"sourceTasks": [
"M15-01E"
],
"dedupe": {
"behaviorKey": "CAP-UI-EDITOR|workspace|LOCAL_EXACT",
"existingBehaviorEvidence": false,
"existingDedupeEvidence": false,
"repeatedRunsRequired": 0
}
}
]
}
}

View File

@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"task": "WBV2-P27-001",
"operation": "BUILD_DEDUPLICATED_CAPABILITY_FAMILY_BATCHES",
"status": "PASS",
"inventory": {
"total": 6900,
"legacyCompleted": 281,
"legacyPending": 6618,
"overlayBound": 290,
"effectiveCompleted": 290,
"effectivePending": 6609,
"pendingRows": 6609
},
"evidenceReuse": {
"knownEvidenceIds": 0,
"knownBehaviorHashes": 0,
"knownDedupeKeys": 0,
"repeatedBlenderRuns": 0,
"repeatedWasmRuns": 0,
"repeatedChromiumRuns": 0,
"duplicateValidationAvoided": true
},
"batches": {
"count": 27,
"strategy": "capability-family-unique-behavior",
"readyFor": "Chromium-only production wave"
},
"verification": {
"executed": false,
"completionOverlayWritten": false,
"fullHistoricalReproduction": false
},
"nextTask": "WBV2-P27-002"
}

View File

@@ -0,0 +1,168 @@
{
"schemaVersion": 1,
"task": "WBV2-P27-002",
"parentTask": "WBV2-P27-001",
"status": "in_progress",
"goal": "Run only new Chromium production behaviors with malformed, transaction and persistence boundaries.",
"scope": {
"gap": "VERIFICATION.CHROMIUM_RECEIPTS",
"ownerFamily": "CHROMIUM",
"implementationClass": "VERIFICATION_ONLY"
},
"commands": [
"node tools/web/check-task-context.mjs --task WBV2-P27-002 --write"
],
"inputPaths": [],
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3416,
"contextRemainingTokens": 852
},
"source": {
"bytes": 6488,
"tokens": 1624
},
"selected": [],
"excluded": [
{
"path": "tests/golden/WBV2-P0-002/parity-map.json",
"bytes": 5053386,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/protocol/web-engine-capabilities.ts",
"bytes": 8451,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2-P27-002/",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "docs/status/WBV2-P27-002.md",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
},
{
"path": "tests/golden/WBV2-P27-002/manifest.json",
"bytes": null,
"reason": "GENERATED_EVIDENCE_OUTPUT"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"existing source and behavior hashes are reused",
"duplicate behavior runs remain zero",
"Chromium is the only production browser",
"overlay is unchanged until complete evidence"
],
"nextTask": "WBV2-P27-003",
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P27-002.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P27-001/manifest.json",
"parentStatus": "docs/status/WBV2-P27-001.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P27-002.md",
"tests/golden/WBV2-P27-001/manifest.json",
"docs/status/WBV2-P27-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-P27-001",
"parentTask": "WBV2-P27-000",
"status": "done",
"nextTask": "WBV2-P27-002",
"artifactCount": 7
},
"statusSummary": [
"# WBV2-P27-001 status",
"- task: `WBV2-P27-001`; parent: `WBV2-P27-000`; status: `done`",
"- deduplicated pending rows: `6609`; capability/kind/implementation batches: `27`",
"- reused evidence index: `0` ids, `0` behavior hashes, `0` dedupe keys",
"- repeated Blender/WASM/Chromium runs scheduled: `0`; Chromium production verification: `NOT_EXECUTED`",
"- inventory unchanged: `6900` total, `281` legacy completed, `6618` legacy pending, `290/6609` effective carried forward",
"- nextTask: `WBV2-P27-002`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1209,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 34,
"taskTokens": 303
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 2803,
"lines": 51,
"tokens": 701
},
{
"path": "docs/tasks/WBV2-P27-002.md",
"bytes": 1209,
"lines": 34,
"tokens": 303
},
{
"path": "tests/golden/WBV2-P27-001/manifest.json",
"bytes": 1986,
"lines": 59,
"tokens": 497
},
{
"path": "docs/status/WBV2-P27-001.md",
"bytes": 490,
"lines": 9,
"tokens": 123
}
],
"sourceTokens": 1624,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1624,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2648,
"serializedContextTokens": 619,
"withinBudget": true
}
}

View File

@@ -1,4 +1,4 @@
{"id":"WBV2-P24-000","gapId":"workflow:authorize_object_move_collection_continuation","ownerFamily":"PROGRAM","sourceTask":"P24","state":"completed","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and evidence hashes are bound","unique behavior is verified once","save/reopen remains exact","malformed input fails closed"]}
{"id":"WBV2-P24-001","gapId":"OBJECT_OPERATIONS.MOVE_COLLECTION","ownerFamily":"PARITY","sourceTask":"P24","state":"active","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and evidence hashes are bound","unique behavior is verified once","save/reopen remains exact","malformed input fails closed"]}
{"id":"WBV2-P24-002","gapId":"OBJECT_OPERATIONS.MOVE_COLLECTION","ownerFamily":"OBJECT","sourceTask":"P24","state":"pending","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and evidence hashes are bound","unique behavior is verified once","save/reopen remains exact","malformed input fails closed"]}
{"id":"WBV2-P24-003","gapId":"workflow:close_object_move_collection_gate","ownerFamily":"RELEASE","sourceTask":"P24","state":"pending","targetImplementationClass":"LOCAL_BOUNDED","exitCriteria":["source and evidence hashes are bound","unique behavior is verified once","save/reopen remains exact","malformed input fails closed"]}
{"id":"WBV2-P27-000","gapId":"workflow:authorize_deferred_verification_wave","ownerFamily":"PROGRAM","sourceTask":"P27","state":"completed","targetImplementationClass":"VERIFICATION_ONLY","exitCriteria":["existing source and behavior hashes are reused","duplicate behavior runs remain zero","Chromium is the only production browser","overlay is unchanged until complete evidence"]}
{"id":"WBV2-P27-001","gapId":"VERIFICATION.BATCH_PLANNER","ownerFamily":"VERIFICATION","sourceTask":"P27","state":"completed","targetImplementationClass":"VERIFICATION_ONLY","exitCriteria":["existing source and behavior hashes are reused","duplicate behavior runs remain zero","Chromium is the only production browser","overlay is unchanged until complete evidence"]}
{"id":"WBV2-P27-002","gapId":"VERIFICATION.CHROMIUM_RECEIPTS","ownerFamily":"CHROMIUM","sourceTask":"P27","state":"active","targetImplementationClass":"VERIFICATION_ONLY","exitCriteria":["existing source and behavior hashes are reused","duplicate behavior runs remain zero","Chromium is the only production browser","overlay is unchanged until complete evidence"]}
{"id":"WBV2-P27-003","gapId":"VERIFICATION.COMPLETION_OVERLAY","ownerFamily":"RELEASE","sourceTask":"P27","state":"pending","targetImplementationClass":"VERIFICATION_ONLY","exitCriteria":["existing source and behavior hashes are reused","duplicate behavior runs remain zero","Chromium is the only production browser","overlay is unchanged until complete evidence"]}

View File

@@ -1 +1 @@
{"schemaVersion":1,"operation":"BLENDER_WEB_CAPABILITY_TASK_INDEX","source":{"path":"tests/golden/WBV2-P24-000/move-task-plan.json","sha256":"923d299a9eb53baf81853fc975b036613ccef6866f5973d159bdca26d306d74f"},"catalog":{"path":"tests/golden/WBV2/task-catalog.jsonl","sha256":"279638d47f743e58907c25c1c01b8d1e5bf16b55d646d7e85514ba93f7467b14"},"taskCount":4,"activeTask":"WBV2-P24-001","entries":{"WBV2-P24-000":{"line":0,"offset":0,"length":344,"previous":"WBV2-P23-003","next":"WBV2-P24-001"},"WBV2-P24-001":{"line":1,"offset":344,"length":319,"previous":"WBV2-P24-000","next":"WBV2-P24-002"},"WBV2-P24-002":{"line":2,"offset":663,"length":318,"previous":"WBV2-P24-001","next":"WBV2-P24-003"},"WBV2-P24-003":{"line":3,"offset":981,"length":330,"previous":"WBV2-P24-002","next":null}}}
{"schemaVersion":1,"operation":"BLENDER_WEB_CAPABILITY_TASK_INDEX","source":{"path":"tests/golden/WBV2-P27-001/implementation-task-plan.json","sha256":"93473eeb6f6c0d48a52048f712d3a2e7b11fa3d81619e0746331aa0acc692d99"},"catalog":{"path":"tests/golden/WBV2/task-catalog.jsonl","sha256":"40b17a75157456b34e0338194dd852d4c11102f6da047fab7b9ab4026c2e17f7"},"taskCount":4,"activeTask":"WBV2-P27-002","entries":{"WBV2-P27-000":{"line":0,"offset":0,"length":382,"previous":"WBV2-P26-006","next":"WBV2-P27-001"},"WBV2-P27-001":{"line":1,"offset":382,"length":368,"previous":"WBV2-P27-000","next":"WBV2-P27-002"},"WBV2-P27-002":{"line":2,"offset":750,"length":365,"previous":"WBV2-P27-001","next":"WBV2-P27-003"},"WBV2-P27-003":{"line":3,"offset":1115,"length":366,"previous":"WBV2-P27-002","next":null}}}