{ "schemaVersion": 2, "matrixId": "BLENDER_WASM_CAPABILITY_MATRIX", "status": "TEMPLATE", "sourceOfTruth": "corrective capability evidence; legacy M16-GAP records remain immutable", "queuePolicy": { "mode": "SHADOW_ONLY", "writesLegacyQueue": false, "requiresGate": "G5", "migrationPlan": "docs/BLENDER_WASM_CORRECTIVE_MIGRATION_PLAN.md" }, "allowedParityLevels": ["L0", "L1", "L2", "L3", "L4", "L5"], "allowedCompletionClasses": [ "FEATURE_PARITY", "READ_COMPATIBILITY", "NEGATIVE_BOUNDARY", "METADATA_ONLY", "UNSUPPORTED_DECLARED", "BLOCKED", "PLANNED" ], "allowedLifecycleStatuses": ["planned", "in_progress", "blocked", "done"], "allowedEvidenceStatuses": ["PASS", "FAIL", "BLOCKED", "NOT_RUN"], "allowedProvenanceStates": ["VERIFIED", "DRIFT", "MISSING", "RESTORED", "BLOCKED_SOURCE_LOST"], "fieldContracts": { "capabilityId": "^CAP-[A-Z0-9]+(?:-[A-Z0-9]+)*$", "family": "stable capability family, not a legacy task name", "parityLevel": "highest level fully proven by the evidence, never the target level", "targetParityLevel": "planned level; never used as completion evidence", "completionClass": "must agree with evidence and lifecycleStatus", "sourceGaps": "zero or more immutable M16-GAP IDs; references only", "productionEntrypoints": "files that changed or were explicitly checked", "evidence": "all required receipts, reports, hashes, and focused commands", "provenanceState": "artifact provenance; observed hash never replaces original hash", "migration": "shadow mapping; no queue write before C6-003" }, "requiredFields": [ "capabilityId", "lifecycleStatus", "family", "primaryBehavior", "parityLevel", "targetParityLevel", "completionClass", "sourceGaps", "desktopOracle", "wasmCommand", "productionEntrypoints", "positiveCases", "negativeCases", "persistenceCases", "undoRedoCases", "resourceCases", "owner", "dependencies", "gate" ,"evidence" ,"expectedMutation" ,"migration" ], "entryTemplate": { "capabilityId": "CAP-REPLACE-ME", "lifecycleStatus": "planned", "family": "REPLACE_ME", "primaryBehavior": "REPLACE_ME", "parityLevel": "L0", "targetParityLevel": "L2", "completionClass": "PLANNED", "sourceGaps": [], "desktopOracle": { "fixture": "tests/files/web/corrective/REPLACE_ME.blend", "command": "REPLACE_ME", "positiveRequired": false, "negativeRequired": ["malformed", "invalid_context"] }, "wasmCommand": { "type": "REPLACE_ME", "schemaVersion": 1, "status": "PLANNED", "requires": ["baseRevision", "context"] }, "productionEntrypoints": [], "positiveCases": [], "negativeCases": [], "persistenceCases": [], "undoRedoCases": [], "resourceCases": [], "expectedMutation": { "positiveStatus": "FINISHED", "mainMutation": "CHANGED", "revisionDelta": 1, "failureRevisionDelta": 0 }, "evidence": { "status": "NOT_RUN", "provenanceState": "MISSING", "required": ["desktopReport", "wasmReport", "focusedCommands", "artifactHashes"], "desktopReport": null, "wasmReport": null, "focusedCommands": [], "artifactHashes": [], "chromiumTest": null }, "migration": { "state": "UNMAPPED", "primaryLegacyGaps": [], "coverageCases": [], "supersedes": [], "legacyCompletionPreserved": true, "reviewRequired": true }, "owner": "REPLACE_ME", "dependencies": [], "gate": "G1" }, "entries": [ { "capabilityId": "CAP-ASSET-CATALOG-MUTATION", "lifecycleStatus": "planned", "family": "ASSET_CATALOG", "primaryBehavior": "create_or_update_catalog_and_save", "parityLevel": "L0", "targetParityLevel": "L4", "completionClass": "PLANNED", "sourceGaps": [ "operator:asset.catalog_new", "operator:asset.catalog_delete", "operator:asset.catalogs_save", "operator:asset.catalog_undo", "operator:asset.catalog_redo" ], "desktopOracle": { "operatorIds": [ "ASSET_OT_catalog_new", "ASSET_OT_catalog_delete", "ASSET_OT_catalogs_save" ], "positiveRequired": true, "negativeRequired": ["no_context", "read_only_library", "missing_resource"] }, "wasmCommand": { "type": "assetCatalogMutation", "status": "PLANNED", "requires": ["activeAssetLibrary", "baseRevision", "resourceProvider"] }, "productionEntrypoints": [ "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_api.h", "web/engine/web_engine_main_state.cpp" ], "positiveCases": ["create", "rename", "delete", "save"], "negativeCases": ["malformed", "unsupported", "revision_conflict"], "persistenceCases": ["save_reopen_catalog_and_main"], "undoRedoCases": ["catalog_undo", "catalog_redo"], "resourceCases": ["external_required", "packed", "path_rejection"], "owner": "WEB_ENGINE_AND_ASSET_WORKFLOW", "dependencies": ["C2-001", "C2-002", "C2-003"], "gate": "G3" ,"expectedMutation": {"positiveStatus": "FINISHED", "mainMutation": "CHANGED", "revisionDelta": 1, "failureRevisionDelta": 0} ,"evidence": {"status": "NOT_RUN", "provenanceState": "MISSING", "required": ["desktopReport", "wasmReport", "focusedCommands", "artifactHashes", "chromiumTest"], "desktopReport": null, "wasmReport": null, "focusedCommands": [], "artifactHashes": [], "chromiumTest": null} ,"migration": {"state": "UNMAPPED", "primaryLegacyGaps": ["operator:asset.catalog_new", "operator:asset.catalog_delete", "operator:asset.catalogs_save", "operator:asset.catalog_undo", "operator:asset.catalog_redo"], "coverageCases": [], "supersedes": [], "legacyCompletionPreserved": true, "reviewRequired": true} }, { "capabilityId": "CAP-MODIFIER-STATE-MUTATION", "lifecycleStatus": "planned", "family": "MODIFIER", "primaryBehavior": "toggle_modifier_state_and_persist", "parityLevel": "L0", "targetParityLevel": "L3", "completionClass": "PLANNED", "sourceGaps": ["modifier:state", "operator:object.modifier_toggle"], "desktopOracle": {"positiveRequired": true, "negativeRequired": ["missing_modifier", "invalid_context"]}, "wasmCommand": {"type": "setModifierEnabled", "status": "EXISTING", "requires": ["meshId", "modifierUuid", "baseRevision"]}, "productionEntrypoints": ["blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp"], "positiveCases": ["enable", "disable", "save_reopen"], "negativeCases": ["invalid_uuid", "revision_conflict", "malformed"], "persistenceCases": ["save_reopen_modifier_state"], "undoRedoCases": ["undo", "redo"], "resourceCases": [], "owner": "WEB_ENGINE_MAIN", "dependencies": ["C2-001", "C2-002", "C2-003"], "gate": "G4" ,"expectedMutation": {"positiveStatus": "FINISHED", "mainMutation": "CHANGED", "revisionDelta": 1, "failureRevisionDelta": 0} ,"evidence": {"status": "NOT_RUN", "provenanceState": "MISSING", "required": ["desktopReport", "wasmReport", "focusedCommands", "artifactHashes", "chromiumTest"], "desktopReport": null, "wasmReport": null, "focusedCommands": [], "artifactHashes": [], "chromiumTest": null} ,"migration": {"state": "UNMAPPED", "primaryLegacyGaps": ["modifier:state", "operator:object.modifier_toggle"], "coverageCases": [], "supersedes": [], "legacyCompletionPreserved": true, "reviewRequired": true} }, { "capabilityId": "CAP-MESH-POSITIVE-EDIT", "lifecycleStatus": "planned", "family": "MESH", "primaryBehavior": "perform_one_atomic_mesh_edit", "parityLevel": "L0", "targetParityLevel": "L3", "completionClass": "PLANNED", "sourceGaps": ["mesh:edit", "operator:mesh.edit"], "desktopOracle": {"positiveRequired": true, "negativeRequired": ["invalid_selection", "unsupported_topology"]}, "wasmCommand": {"type": "meshEdit", "status": "PLANNED", "requires": ["meshId", "baseRevision", "selection"]}, "productionEntrypoints": ["blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "web/engine/web_engine_main_state.cpp"], "positiveCases": ["edit", "delta", "save_reopen"], "negativeCases": ["invalid_selection", "revision_conflict", "malformed"], "persistenceCases": ["save_reopen_geometry"], "undoRedoCases": ["undo", "redo"], "resourceCases": [], "owner": "WEB_ENGINE_MAIN", "dependencies": ["C2-001", "C2-002", "C2-003"], "gate": "G4" ,"expectedMutation": {"positiveStatus": "FINISHED", "mainMutation": "CHANGED", "revisionDelta": 1, "failureRevisionDelta": 0} ,"evidence": {"status": "NOT_RUN", "provenanceState": "MISSING", "required": ["desktopReport", "wasmReport", "focusedCommands", "artifactHashes", "chromiumTest"], "desktopReport": null, "wasmReport": null, "focusedCommands": [], "artifactHashes": [], "chromiumTest": null} ,"migration": {"state": "UNMAPPED", "primaryLegacyGaps": ["mesh:edit", "operator:mesh.edit"], "coverageCases": [], "supersedes": [], "legacyCompletionPreserved": true, "reviewRequired": true} } ] }