Checkpoint web parity through Chromium input tasks
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-19 10:39:03 -04:00
parent 5a11045ca5
commit 380cbed4ff
634 changed files with 41862 additions and 212 deletions

View File

@@ -20,7 +20,7 @@
},
"errorContract": {
"path": "web/protocol/error.ts",
"sha256": "309ab84d5c755a69466ddb73e4b54e87caf62cbcac0f10f34d904e9f6f4a5f34"
"sha256": "751c70c898540fa7e82fb1b1a79254756ec8db8e4201a88b6d817d7c3d92103f"
},
"generator": {
"path": "tools/web/generate-asset-catalog-compatibility.mjs",

View File

@@ -21,7 +21,7 @@
"generatorSettingsSha256": "07ebc55d4b6cbb293badf0640874846912df3d23549997cf6f87f4c325280ca0",
"artifacts": {
"protocol": { "path": "web/protocol/asset-preview.ts", "sha256": "2a1d877af42424014097c669e9d44c21b27e3171be185320554693cbefcd7438" },
"errorContract": { "path": "web/protocol/error.ts", "sha256": "6aec7b8a9d6903d83ae67718db3ae775d709cabb207cf2a02968d4ff7c5f26c0" },
"errorContract": { "path": "web/protocol/error.ts", "sha256": "751c70c898540fa7e82fb1b1a79254756ec8db8e4201a88b6d817d7c3d92103f" },
"generator": { "path": "tools/web/generate-asset-preview-identity.py", "sha256": "753a26be90f7d97828737ebc3a4ab88275a7c655b4f9992406c7c35fba6535ce" },
"blender": { "path": "build_blender_5.2.0/bin/blender", "sha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82" },
"source": { "path": "tests/files/web/media/sequencer-frame.png", "sha256": "295b083db2299ab904947eb39c17173de70c211882b0d855537d8f3cc27698ed" },

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M12-03E",
"parentTask": "M12-03D",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_WASM_CHROMIUM",
"operation": "APPEND",
"canonicalComparison": "DESKTOP_REPORT_EXACT_AFTER_IMAGE_ROW_NORMALIZATION_AND_SCENEIR_COLORSPACE_DEFAULT",
"assertions": {
"transactionCount": 1,
"revisionDelta": 1,
"undoRemovesClosure": true,
"redoRestoresCanonical": true,
"saveReopenRestoresCanonical": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03C/manifest.json",
"sha256": "cbfbd8c919125108334dd24925b9ef8e69880983515e56841e6ead4a2b182aed"
},
"desktopReport": {
"path": "tests/golden/M12-03C/desktop-append-report.json",
"sha256": "b1d7b8b9e832d18d69081f63981062800e0f00f0c9aec025b18274510ed76e2a"
},
"test": {
"path": "web/tests/e2e/library-append-main.spec.ts",
"sha256": "101f67d35c2320da57459f08a59687d769234b910dbd9aaec5a668cee7e0f9f0"
},
"sourceBlend": {
"path": "tests/files/web/m12_library_append_v1/m12_append_source.blend",
"sha256": "5b60d02926efd588a6ca300ba31414cdf37dbc48786c17b383a70319057c0606"
},
"targetBlend": {
"path": "tests/files/web/empty.blend",
"sha256": "9b1ecbcc3d7f8079ee5469de64193ffcaa0a7b01e0f2ac340bbb18aa88734a63"
}
},
"nextTask": "M12-03F"
}

View File

@@ -0,0 +1,202 @@
{
"blenderVersion": "5.2.0",
"linkedGraph": {
"edges": [
{
"from": "Object/M12 Link Object",
"relation": "OBJECT_DATA",
"to": "Mesh/M12 Link Mesh"
},
{
"from": "Mesh/M12 Link Mesh",
"relation": "MATERIAL_SLOT[0]",
"to": "Material/M12 Link Material"
},
{
"from": "Material/M12 Link Material",
"relation": "NODE_IMAGE[M12 Link Image Node]",
"to": "Image/M12 Link Image"
}
],
"geometry": {
"edges": 4,
"loops": 4,
"materialSlots": [
"M12 Link Material"
],
"polygons": 1,
"uvLayers": [
"UVMap"
],
"vertices": 4
},
"ids": {
"IMAGE": {
"idType": "IMAGE",
"isLibraryOverride": false,
"library": "m12_link_source.blend",
"name": "M12 Link Image",
"nameFull": "M12 Link Image [m12_link_source.blend]"
},
"MATERIAL": {
"idType": "MATERIAL",
"isLibraryOverride": false,
"library": "m12_link_source.blend",
"name": "M12 Link Material",
"nameFull": "M12 Link Material [m12_link_source.blend]"
},
"MESH": {
"idType": "MESH",
"isLibraryOverride": false,
"library": "m12_link_source.blend",
"name": "M12 Link Mesh",
"nameFull": "M12 Link Mesh [m12_link_source.blend]"
},
"OBJECT": {
"idType": "OBJECT",
"isLibraryOverride": false,
"library": "m12_link_source.blend",
"name": "M12 Link Object",
"nameFull": "M12 Link Object [m12_link_source.blend]"
}
},
"image": {
"channels": 4,
"colorspace": "sRGB",
"packed": true,
"pixelFloat32Sha256": "6f0f8c231d65149e69e6ed12d370bcfa095ef90adc202065492ea8c8ef17e45a",
"size": [
2,
2
]
},
"root": {
"idType": "OBJECT",
"isLibraryOverride": false,
"library": "m12_link_source.blend",
"name": "M12 Link Object",
"nameFull": "M12 Link Object [m12_link_source.blend]"
},
"sourceMarker": "M12-03F"
},
"nextTask": "M12-03G",
"operation": "LINK",
"schemaVersion": 1,
"selectedRoots": [
"Object/M12 Link Object"
],
"source": {
"file": "m12_link_source.blend",
"sha256": "fae97569e9d2e2066fc92749672f86cc42717cd9b97b012faeb9eb92015d7fd1"
},
"sourceGraph": {
"edges": [
{
"from": "Object/M12 Link Object",
"relation": "OBJECT_DATA",
"to": "Mesh/M12 Link Mesh"
},
{
"from": "Mesh/M12 Link Mesh",
"relation": "MATERIAL_SLOT[0]",
"to": "Material/M12 Link Material"
},
{
"from": "Material/M12 Link Material",
"relation": "NODE_IMAGE[M12 Link Image Node]",
"to": "Image/M12 Link Image"
}
],
"geometry": {
"edges": 4,
"loops": 4,
"materialSlots": [
"M12 Link Material"
],
"polygons": 1,
"uvLayers": [
"UVMap"
],
"vertices": 4
},
"ids": {
"IMAGE": {
"idType": "IMAGE",
"isLibraryOverride": false,
"library": null,
"name": "M12 Link Image",
"nameFull": "M12 Link Image"
},
"MATERIAL": {
"idType": "MATERIAL",
"isLibraryOverride": false,
"library": null,
"name": "M12 Link Material",
"nameFull": "M12 Link Material"
},
"MESH": {
"idType": "MESH",
"isLibraryOverride": false,
"library": null,
"name": "M12 Link Mesh",
"nameFull": "M12 Link Mesh"
},
"OBJECT": {
"idType": "OBJECT",
"isLibraryOverride": false,
"library": null,
"name": "M12 Link Object",
"nameFull": "M12 Link Object"
}
},
"image": {
"channels": 4,
"colorspace": "sRGB",
"packed": true,
"pixelFloat32Sha256": "6f0f8c231d65149e69e6ed12d370bcfa095ef90adc202065492ea8c8ef17e45a",
"size": [
2,
2
]
},
"root": {
"idType": "OBJECT",
"isLibraryOverride": false,
"library": null,
"name": "M12 Link Object",
"nameFull": "M12 Link Object"
},
"sourceMarker": "M12-03F"
},
"stableMapping": [
{
"local": "Object/M12 Link Object",
"owner": "SOURCE_LIBRARY",
"readOnly": true,
"source": "Object/M12 Link Object"
},
{
"local": "Mesh/M12 Link Mesh",
"owner": "SOURCE_LIBRARY",
"readOnly": true,
"source": "Mesh/M12 Link Mesh"
},
{
"local": "Material/M12 Link Material",
"owner": "SOURCE_LIBRARY",
"readOnly": true,
"source": "Material/M12 Link Material"
},
{
"local": "Image/M12 Link Image",
"owner": "SOURCE_LIBRARY",
"readOnly": true,
"source": "Image/M12 Link Image"
}
],
"target": {
"file": "m12_link_target.blend",
"sha256": "acdaf0f297deb08c84e1a8beba30972e3414ef62e60e3b103fe0661199c438a1"
},
"task": "M12-03F"
}

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"task": "M12-03F",
"parentTask": "M12-03E",
"enablingTask": true,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP",
"operation": "LINK",
"assertions": {
"selectedRoots": 1,
"dependencyClosure": 4,
"linkedOwnership": "SOURCE_LIBRARY",
"readOnly": true,
"saveReopenStable": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03E/manifest.json",
"sha256": "beaa88ea0385225e712f9816072420bd8744c15da3229ddc352462abec407739"
},
"generator": {
"path": "tools/web/generate-library-link-fixture.py",
"sha256": "15a2e34c1c5b2a8ee63b10084dbb894e0f9677b9e1cf4adb7e2ddce6b4c965b1"
},
"checker": {
"path": "tools/web/check-library-link-fixture.mjs",
"sha256": "6a4c024bea227d7bc14f793467b91766b006459fe4d7717cc75dfee12f49f894"
},
"sourceBlend": {
"path": "tests/files/web/m12_library_link_v1/m12_link_source.blend",
"sha256": "fae97569e9d2e2066fc92749672f86cc42717cd9b97b012faeb9eb92015d7fd1"
},
"targetBlend": {
"path": "tests/files/web/m12_library_link_v1/m12_link_target.blend",
"sha256": "acdaf0f297deb08c84e1a8beba30972e3414ef62e60e3b103fe0661199c438a1"
},
"desktopReport": {
"path": "tests/golden/M12-03F/desktop-link-report.json",
"sha256": "b278d4c254eff63d41c8cb3ea1d5e0984192137d45b1695ba0672e16f95b58ea"
}
},
"nextTask": "M12-03G"
}

View File

@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"task": "M12-03G",
"parentTask": "M12-03F",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "LINK",
"assertions": {
"writerOperations": 6,
"linkedMutationCode": "LINKED_DATA_MUTATION_BLOCKED",
"staleRevisionCode": "REVISION_CONFLICT",
"mainMutation": false,
"recoverable": false
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03F/manifest.json",
"sha256": "8220a8f5d560d45a75a62cbed645b3febc1390fe37b07c3c48871fefc1a9b159"
},
"protocol": {
"path": "web/protocol/library-linked-mutation.ts",
"sha256": "f629e0e7e04dc1f5437b6e2ca62fbe35484fc238830fa47e8358bcab46b7e104"
},
"unit": {
"path": "web/tests/unit/library-linked-mutation.test.mjs",
"sha256": "f19d47cefe89daf6123062e045ec717e6ffe60977e8a4b20c996dd62e49da211"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-03H"
}

View File

@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"task": "M12-03H",
"parentTask": "M12-03G",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "LINK_RELOAD",
"assertions": {
"matchingGenerationOnly": true,
"replacementGenerationStep": 1,
"staleCode": "REVISION_CONFLICT",
"preservesUnrelatedSnapshots": true,
"readOnlyOwner": "SOURCE_LIBRARY"
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03G/manifest.json",
"sha256": "ce7aba32499dbd22bce3bc78c4b0322f830e5d2648a47ce2d25271adf284dddb"
},
"protocol": {
"path": "web/protocol/library-linked-reload.ts",
"sha256": "8be6f0b2abe36cd566ea7447d1b7de44c0e6a9a7351b863dfdd1372c1761060e"
},
"unit": {
"path": "web/tests/unit/library-linked-reload.test.mjs",
"sha256": "dff866291468cc01e775fe3b3b95c632f5c0742566f79b956a0193bfd8fd43d2"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-03I"
}

View File

@@ -0,0 +1,37 @@
{
"schemaVersion": 1,
"task": "M12-03I",
"parentTask": "M12-03H",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "LINK_MISSING",
"assertions": {
"missingStatus": "MISSING",
"placeholderKind": "MISSING_LIBRARY",
"preservesSourceLocator": true,
"preservesSourceSha256": true,
"preservesDataBlockIds": true,
"staleCode": "REVISION_CONFLICT",
"sourceDriftCode": "ASSET_SOURCE_HASH_MISMATCH"
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03H/manifest.json",
"sha256": "72d3cf9a22d8a2015a7b8fcbc0496425a354e09cec56fd85949561e6b3700009"
},
"protocol": {
"path": "web/protocol/library-linked-missing.ts",
"sha256": "5833e8c943ef6bd866a93a0e1666c9521fa6d3e8358861df57b628874b679ec2"
},
"unit": {
"path": "web/tests/unit/library-linked-missing.test.mjs",
"sha256": "4ab6d6ff4845b4ca963399e7eea214ceb412871dc1fdef5bac1ed0333596da4f"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-03J"
}

View File

@@ -0,0 +1,47 @@
{
"blenderVersion": "5.2.0",
"nextTask": "M12-03K",
"operation": "LIBRARY_OVERRIDE",
"overrideGraph": {
"local": {
"dataBlockId": "Object/M12 Override Object",
"hierarchyRootDataBlockId": "Object/M12 Override Object",
"idType": "OBJECT",
"isLibraryOverride": true,
"library": null,
"owner": "LOCAL_OVERRIDE",
"projectId": "m12-03j-project",
"readOnly": false,
"referenceSourceDataBlockId": "Object/M12 Override Object"
},
"propertyOverride": {
"index": 0,
"operationCount": 1,
"propertyCount": 1,
"rnaPath": "[\"m12_override_value\"]",
"value": 2.5
},
"reference": {
"dataBlockId": "Object/M12 Override Object",
"idType": "OBJECT",
"isLibraryOverride": false,
"library": "m12_override_source.blend",
"owner": "SOURCE_LIBRARY",
"readOnly": true
},
"sourceMarker": "M12-03J"
},
"schemaVersion": 1,
"selectedRoots": [
"Object/M12 Override Object"
],
"source": {
"file": "m12_override_source.blend",
"sha256": "d7f8d78e7e91481bf46ecc9a6bcb01e900a6a397839dd31ab80a53def7675601"
},
"target": {
"file": "m12_override_target.blend",
"sha256": "b008a1608ff1e8f679e1e1281bf7be0360f1137e815dd890cbd93e1e98675495"
},
"task": "M12-03J"
}

View File

@@ -0,0 +1,50 @@
{
"schemaVersion": 1,
"task": "M12-03J",
"parentTask": "M12-03I",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP",
"operation": "LIBRARY_OVERRIDE",
"assertions": {
"selectedRoots": 1,
"referenceOwner": "SOURCE_LIBRARY",
"referenceReadOnly": true,
"localOwner": "LOCAL_OVERRIDE",
"localReadOnly": false,
"propertyPath": "[\\\"m12_override_value\\\"]",
"propertyValue": 2.5,
"saveReopenStable": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03I/manifest.json",
"sha256": "f5fa606161b93e9ee42e7ca8144d2a83379acf601c5045eb8cc76732f8dba431"
},
"generator": {
"path": "tools/web/generate-library-override-fixture.py",
"sha256": "2cdbac04cac7240360a9d70919380fd90f9479e2cb41d8032fb51626ed4b4dd6"
},
"checker": {
"path": "tools/web/check-library-override-fixture.mjs",
"sha256": "afebb3c9b8715b9d2e0c9b17f463f038bd23e8747074137bccbf1c09c4bfb5ba"
},
"sourceBlend": {
"path": "tests/files/web/m12_library_override_v1/m12_override_source.blend",
"sha256": "d7f8d78e7e91481bf46ecc9a6bcb01e900a6a397839dd31ab80a53def7675601"
},
"targetBlend": {
"path": "tests/files/web/m12_library_override_v1/m12_override_target.blend",
"sha256": "b008a1608ff1e8f679e1e1281bf7be0360f1137e815dd890cbd93e1e98675495"
},
"report": {
"path": "tests/golden/M12-03J/desktop-override-report.json",
"sha256": "19cb13a3417b4b65a8497b622337c42c4697b3f3d48de26a1f70f2d4527ddde0"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-03K"
}

View File

@@ -0,0 +1,37 @@
{
"schemaVersion": 1,
"task": "M12-03K",
"parentTask": "M12-03J",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "LIBRARY_OVERRIDE_WRITER",
"assertions": {
"allowedOperation": "SET_M12_OVERRIDE_VALUE",
"allowedPropertyPath": "[\\\"m12_override_value\\\"]",
"allowedPropertyCount": 1,
"owner": "LOCAL_OVERRIDE",
"referenceReadOnly": true,
"staleCode": "REVISION_CONFLICT",
"linkedOwnerCode": "LINKED_DATA_MUTATION_BLOCKED"
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03J/manifest.json",
"sha256": "01d0f66bb3819eea3e92727d1b5bffbec935d24eeecc28d874b999df78d73fbf"
},
"protocol": {
"path": "web/protocol/library-override-writer.ts",
"sha256": "dd181c7e9946b98334a5d1c686887afecfe3fc11d732beec246e40bf11a155aa"
},
"unit": {
"path": "web/tests/unit/library-override-writer.test.mjs",
"sha256": "e41bd32eb4ce4d331a20ecb91f3325a27f461b9ae85e98940d5afd482ec21c4c"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-03L"
}

View File

@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"task": "M12-03L",
"parentTask": "M12-03K",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "LIBRARY_OVERRIDE_FRESHNESS",
"assertions": {
"matchingStatus": "READY",
"staleCode": "REVISION_CONFLICT",
"identityDriftCode": "ASSET_SOURCE_HASH_MISMATCH",
"linkedOwnerCode": "LINKED_DATA_MUTATION_BLOCKED",
"mainCommit": false
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03K/manifest.json",
"sha256": "9eeee93e4a806aa59b5c53a6485fe3a1b5e3972c1d2585cdc71b7cfc293afb70"
},
"protocol": {
"path": "web/protocol/library-override-freshness.ts",
"sha256": "2eff7ea7605b1579d7551336d87d4f30adb996b585596ff9eee67aea04ca7d22"
},
"unit": {
"path": "web/tests/unit/library-override-freshness.test.mjs",
"sha256": "d48344f31e1ba12e557ca30ece56643583efa633da556f5de3896a8e9175ef8f"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-03M"
}

View File

@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"task": "M12-03M",
"parentTask": "M12-03L",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "LIBRARY_NEGATIVE_CASES",
"assertions": {
"dependencyCycleCode": "LIBRARY_DEPENDENCY_CYCLE",
"crossLibraryCycleCode": "LIBRARY_DEPENDENCY_CYCLE",
"dataBlockCollisionCode": "TASK_VALIDATION_FAILED",
"duplicateReloadCode": "REVISION_CONFLICT",
"missingSourceCode": "ASSET_SOURCE_HASH_MISMATCH"
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03L/manifest.json",
"sha256": "237f3f168e037b67b805ba8d9c9455250c889a5e90c45cbb17d2d20d9fbdcc50"
},
"protocol": {
"path": "web/protocol/library-negative-cases.ts",
"sha256": "efc7cc810089eab6178fc5c2f2a45d641625a032ecfa5b2b4ef37694d0decc97"
},
"unit": {
"path": "web/tests/unit/library-negative-cases.test.mjs",
"sha256": "b7ae41b2c35b2fe1598bca4425dd434230bfe4bf342320c88214a060dcbb0a16"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-03N"
}

View File

@@ -0,0 +1,60 @@
{
"schemaVersion": 1,
"task": "M12-03N",
"parentTask": "M12-03M",
"enablingTask": false,
"parityStateChange": false,
"runtime": "DESKTOP_WASM_CHROMIUM",
"operation": "LIBRARY_OPERATION_COMMANDS",
"assertions": {
"operations": ["APPEND", "LINK", "LIBRARY_OVERRIDE"],
"lanes": ["DESKTOP", "WASM", "CHROMIUM"],
"independentCommands": 9,
"mainAppendChromiumTest": "web/tests/e2e/library-append-main.spec.ts",
"linkChromiumTest": "web/tests/e2e/library-link-chromium.spec.ts",
"overrideChromiumTest": "web/tests/e2e/library-override-chromium.spec.ts"
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03M/manifest.json",
"sha256": "693cbedfe8e29167283a753d119de5a9cfe5e20bc96aff7ba84d720ffde9148a"
},
"commandChecker": {
"path": "tools/web/check-library-operation-commands.mjs",
"sha256": "3564347393134d835fdf279b8b8f58558ee24fe0165c3b4527195d094a451e98"
},
"appendWasmProtocol": {
"path": "web/protocol/library-main-append.ts",
"sha256": "bfd98561cbe797d7b8f07c92c53a25460c839a64ab7222b7795cf58d54dff8d7"
},
"appendWasmUnit": {
"path": "web/tests/unit/library-append-wasm.test.mjs",
"sha256": "75fc2d626f7ca7e820e9cacf659a453886e15e790cde43348828c03bed752ec7"
},
"appendChromium": {
"path": "web/tests/e2e/library-append-main.spec.ts",
"sha256": "101f67d35c2320da57459f08a59687d769234b910dbd9aaec5a668cee7e0f9f0"
},
"linkChromium": {
"path": "web/tests/e2e/library-link-chromium.spec.ts",
"sha256": "814e3486522fb4f0ffdd59acd385a4fca9c5660cdb07e5a2acb1cadd70376bff"
},
"overrideChromium": {
"path": "web/tests/e2e/library-override-chromium.spec.ts",
"sha256": "1c12982b4eb4fb4b9a3c88907a842a1fc413b3a3a760a9f57b350f57060d007f"
},
"linkChromiumWrapper": {
"path": "web/app/src/library-link-chromium.ts",
"sha256": "096af8e594a6d475476dc3253e3d99069d9f84bc383b84c690a38d08f1f0137a"
},
"overrideChromiumWrapper": {
"path": "web/app/src/library-override-chromium.ts",
"sha256": "f3bb9c7d57c65a333ba6aa982a19956025c23e740e1771f741d161defc591f21"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-04A"
}

View File

@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"task": "M12-04A",
"parentTask": "M12-03N",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "LIBRARY_SOURCE_ORIGIN",
"assertions": {
"acceptedKinds": ["HTTPS_ORIGIN", "PROJECT_ASSET", "USER_SELECTED_FILE"],
"undeclaredHttpsCode": "IO_EXTERNAL_URI_BLOCKED",
"unsafeProjectPathCode": "IO_EXTERNAL_URI_BLOCKED",
"sourceHash": true,
"credentialFreeHttps": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-03N/manifest.json",
"sha256": "e4cccc8edc277b5047c3f8006ea40b26b119d28589fe2f3bd9bfa4cc3575c85a"
},
"protocol": {
"path": "web/protocol/library-source-origin.ts",
"sha256": "67a1808f225194a09a72987c5340c7494c5fa8d99dffde40664a11a779caedeb"
},
"unit": {
"path": "web/tests/unit/library-source-origin.test.mjs",
"sha256": "89b207c9cb13b4fb055a2dfed0237c0f8a00b13a39cc4175a378f5ef2abdb7ae"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-04B"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M12-04B",
"parentTask": "M12-04A",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "LIBRARY_PATH_NORMALIZATION",
"assertions": {
"canonicalSeparator": "/",
"dotSegmentsResolved": true,
"percentDecodePasses": 1,
"unicodeNormalization": "NFC",
"canonicalIdempotent": true,
"projectEscapeCode": "ASSET_PATH_OUTSIDE_PROJECT"
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-04A/manifest.json",
"sha256": "af80827d925ddd96d8541e446e0f70c956fd4c56e64ac984d187f5449df4cb0d"
},
"normalizer": {
"path": "web/protocol/asset-path.ts",
"sha256": "6109d05251fc7355ac32d4c0d8298f85ea8b731767c76c394577c4e44652a6bf"
},
"sourceAdmission": {
"path": "web/protocol/library-source-origin.ts",
"sha256": "67a1808f225194a09a72987c5340c7494c5fa8d99dffde40664a11a779caedeb"
},
"unit": {
"path": "web/tests/unit/library-path-normalization.test.mjs",
"sha256": "abde64c60397541e92a83dd9e4a24e65faf340a8d046650604c101a21037c777"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-04C"
}

View File

@@ -0,0 +1,41 @@
{
"schemaVersion": 1,
"task": "M12-04C",
"parentTask": "M12-04B",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "LIBRARY_PATH_SECURITY",
"assertions": {
"absolutePathCode": "ASSET_PATH_OUTSIDE_PROJECT",
"uncPathCode": "ASSET_PATH_OUTSIDE_PROJECT",
"drivePathCode": "ASSET_PATH_OUTSIDE_PROJECT",
"controlCharacterCode": "ASSET_PATH_OUTSIDE_PROJECT",
"originEscapeCode": "IO_EXTERNAL_URI_BLOCKED",
"declaredOriginPathRejected": true,
"encodedControlsRejected": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-04B/manifest.json",
"sha256": "8cd29c3f5281082584fc6aefe2ec385a2eedf8116e837a4db54c391391ff8f98"
},
"pathNormalizer": {
"path": "web/protocol/asset-path.ts",
"sha256": "6109d05251fc7355ac32d4c0d8298f85ea8b731767c76c394577c4e44652a6bf"
},
"sourceOrigin": {
"path": "web/protocol/library-source-origin.ts",
"sha256": "67a1808f225194a09a72987c5340c7494c5fa8d99dffde40664a11a779caedeb"
},
"unit": {
"path": "web/tests/unit/library-path-security.test.mjs",
"sha256": "ab302cacb24634a3225dda5cb8f5282cb80b3bd81ed5c8900ddf4ff18267b7e2"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-04D"
}

View File

@@ -0,0 +1,37 @@
{
"schemaVersion": 1,
"task": "M12-04D",
"parentTask": "M12-04C",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "ARCHIVE_LINK_SAFETY",
"assertions": {
"symlinkTargetBase": "link-parent",
"hardlinkTargetBase": "archive-root",
"resolvedWithinTemporaryRoot": true,
"missingTargetCode": "IO_ARCHIVE_UNSAFE",
"cycleCode": "IO_ARCHIVE_UNSAFE",
"outsideRootCode": "IO_ARCHIVE_UNSAFE",
"hardlinkDirectoryCode": "IO_ARCHIVE_UNSAFE"
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-04C/manifest.json",
"sha256": "a7f3a45eb7f68d022f38185a1c1409e1db1b27647fef587d66d2ffa52d78f98e"
},
"protocol": {
"path": "web/protocol/archive-link-safety.ts",
"sha256": "d55a4ba762898aed22bdcc7aa6493c713ee94f6bb1bf58754fdc459d0ddf70d1"
},
"unit": {
"path": "web/tests/unit/library-link-safety.test.mjs",
"sha256": "7739275be91222d7bfb61d2f5a1daf812c6860fe34d0aea27df8380a77322120"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-04E"
}

View File

@@ -0,0 +1,36 @@
{
"schemaVersion": 1,
"task": "M12-04E",
"parentTask": "M12-04D",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "ARCHIVE_METADATA_FIRST",
"assertions": {
"zipFirstRead": "CENTRAL_DIRECTORY",
"tarFirstRead": "MANIFEST",
"payloadReadsBeforeMetadata": false,
"wrongRangeCode": "IO_ARCHIVE_UNSAFE",
"duplicateMetadataCode": "IO_ARCHIVE_UNSAFE",
"metadataRangeBoundBytes": 67108864
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-04D/manifest.json",
"sha256": "1c09abd1f4bd5908d22ab3b22e3e71d050f694af0b82a7f78a351d7a1bf1e664"
},
"protocol": {
"path": "web/protocol/archive-metadata-first.ts",
"sha256": "869586b041e134c7d1cb2ebd7e13b35218b337223d401697a179f71cd1420f5b"
},
"unit": {
"path": "web/tests/unit/library-metadata-first.test.mjs",
"sha256": "2da649722acee9cace8db6f337b4a93500a9c775a0b0f086bf38dd2b3e7f9e91"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-04F"
}

View File

@@ -0,0 +1,24 @@
{
"schemaVersion": 1,
"task": "M12-04F",
"parentTask": "M12-04E",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "ARCHIVE_BUDGETS",
"assertions": {
"maxArchiveEntries": 100000,
"maxEntryBytes": 2147483648,
"maxArchiveBytes": 4294967296,
"maxPathDepth": 64,
"maxFileNameBytes": 255,
"budgetCode": "IO_ARCHIVE_UNSAFE"
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-04E/manifest.json", "sha256": "d935392fb23c2e6ad651fb6ad6cb67f8ead3d562e626bb230d2febd9d7f03b1c" },
"protocol": { "path": "web/protocol/asset-library-io.ts", "sha256": "e02efa79668f4ee10b1c28786709eba2c93691b28ccf1155c6213dda12f59a8f" },
"unit": { "path": "web/tests/unit/library-archive-budget.test.mjs", "sha256": "b0d8356c6fb348d98e28ce220052845a29439b34b3c976b21a4dbf370ea19593" },
"package": { "path": "web/package.json", "sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c" }
},
"nextTask": "M12-04G"
}

View File

@@ -0,0 +1,23 @@
{
"schemaVersion": 1,
"task": "M12-04G",
"parentTask": "M12-04F",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_UNIT",
"operation": "ARCHIVE_CONFLICTS",
"assertions": {
"compressionRatio": 100,
"overlapCode": "IO_ARCHIVE_UNSAFE",
"duplicatePathCode": "IO_ARCHIVE_UNSAFE",
"prefixConflictCode": "IO_ARCHIVE_UNSAFE",
"outOfRangeCode": "IO_ARCHIVE_UNSAFE"
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-04F/manifest.json", "sha256": "cda905b1e27b62d9ea3a05170f975015480ce6739c15bdf1f5a1f0b79f93ce06" },
"protocol": { "path": "web/protocol/archive-conflicts.ts", "sha256": "3bec372e4f67ec309f28534cebcbaf8b492144adfa82ff6c8603f88c3ba16254" },
"unit": { "path": "web/tests/unit/library-archive-conflicts.test.mjs", "sha256": "3f2d44dce33b1c17b3a48f58b04fdd821abc88d98ce3d3b5bb724859e0f0ab3c" },
"package": { "path": "web/package.json", "sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c" }
},
"nextTask": "M12-04H"
}

View File

@@ -0,0 +1,24 @@
{
"schemaVersion": 1,
"task": "M12-04H",
"parentTask": "M12-04G",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_REAL_FS_UNIT",
"operation": "ARCHIVE_EXTRACTION_CANCELLATION",
"assertions": {
"cancellationCode": "IO_ARCHIVE_CANCELLED",
"stagingEntriesAfter": 0,
"publishedProjects": 0,
"committedIdentityUnchanged": true,
"commitLinearization": "BEFORE_ATOMIC_COMMIT"
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-04G/manifest.json", "sha256": "c35e675e8f512e85b748f0b5578874fed8c99df7674a152e698236a67c9f4fa4" },
"protocol": { "path": "web/protocol/archive-extraction-transaction.ts", "sha256": "c40adc1449172014cc1820db567e155828314abb404b66e4de13c26ddee06e4b" },
"errorCodes": { "path": "web/protocol/error.ts", "sha256": "751c70c898540fa7e82fb1b1a79254756ec8db8e4201a88b6d817d7c3d92103f" },
"unit": { "path": "web/tests/unit/library-archive-cancellation.test.mjs", "sha256": "77e7d5bc64dd6b313006ebf523602601acdaf7949a1484da872ddcd046983786" },
"package": { "path": "web/package.json", "sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c" }
},
"nextTask": "M12-04I"
}

View File

@@ -0,0 +1,24 @@
{
"schemaVersion": 1,
"task": "M12-04I",
"parentTask": "M12-04H",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_REAL_FS_UNIT",
"operation": "ARCHIVE_QUOTA_OOM_RECOVERY",
"assertions": {
"faultCodes": ["STORAGE_QUOTA", "WASM_OUT_OF_MEMORY"],
"partialStagingEntriesAfter": 0,
"committedIdentityUnchangedAfterFault": true,
"recoverySession": "SAME_STORAGE_INSTANCE",
"smallArchiveCommitted": true
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-04H/manifest.json", "sha256": "7fce600a416aec5ade1a91a13d86caf4cb1f65b710054b59d525ff8b1d3c7409" },
"baseProtocol": { "path": "web/protocol/archive-extraction-transaction.ts", "sha256": "c40adc1449172014cc1820db567e155828314abb404b66e4de13c26ddee06e4b" },
"recoveryProtocol": { "path": "web/protocol/archive-extraction-recovery.ts", "sha256": "0ae9801ea151403b244c5f58f7f99231bba7a25abb1f61e3669879510b92dccf" },
"unit": { "path": "web/tests/unit/library-archive-recovery.test.mjs", "sha256": "a931edef8f3ca1243a80ec2b8e9ff5b8da1dfd339f3d8c162ad2ebd08d3db6a1" },
"package": { "path": "web/package.json", "sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c" }
},
"nextTask": "M12-04J"
}

View File

@@ -0,0 +1,27 @@
{
"schemaVersion": 1,
"task": "M12-04J",
"parentTask": "M12-04I",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_PROTOCOL_BINARY_FIXTURE_CHROMIUM",
"operation": "MALICIOUS_ZIP_TAR_REGRESSION",
"assertions": {
"fixtureCount": 6,
"zipFixtureCount": 3,
"tarFixtureCount": 3,
"metadataOnly": true,
"extractionAllowed": false,
"expectedCode": "IO_ARCHIVE_UNSAFE",
"deterministicRegeneration": true
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-04I/manifest.json", "sha256": "574afa68a787b9481d0e098d38b94cb810a9827fe185b0df796d62cc160ba7c5" },
"generator": { "path": "tools/web/generate-malicious-archive-fixtures.mjs", "sha256": "b372ea8cb2f97b035ffb2cc18666dae9167dcfb349131851ad9f1ff0fc40ba16" },
"checker": { "path": "tools/web/check-malicious-archive-fixtures.mjs", "sha256": "edda2f420f26e55f9990d24b755bb9b4f732ec32c2e072210144b3d0b6634d9b" },
"fixtureManifest": { "path": "tests/files/web/archive-security/manifest.json", "sha256": "a93834316f6a23b8a0e6c1f1f806ec584d6f03aa339c2680cae2ce8133a40e58" },
"chromium": { "path": "web/tests/e2e/archive-security-fixtures.spec.ts", "sha256": "f327500808dd67359a152ce28134b58d027aebd6758416b5535b659b9900bbfe" },
"package": { "path": "web/package.json", "sha256": "342f75fe285f99da301eba97590fd9fc76cef4938508177fd43e1827f0295076" }
},
"nextTask": "M12-05A"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,26 @@
{
"schemaVersion": 1,
"task": "M12-05A",
"parentTask": "M12-04J",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_RUNTIME",
"operation": "IO_FORMAT_RUNTIME_INVENTORY",
"assertions": {
"blenderVersion": "5.2.0 LTS",
"formatCount": 7,
"formats": ["GLTF", "GLB", "OBJ", "STL", "PLY", "USD", "ALEMBIC"],
"availableFormats": ["GLTF", "GLB", "OBJ", "STL", "PLY"],
"buildDisabledFormats": ["USD", "ALEMBIC"],
"runtimeReceipt": true,
"deterministicRegeneration": true
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-04J/manifest.json", "sha256": "989d417ab44e165849c7054f331f7038ec1d779349c39dd4f5b30050bbaecf56" },
"generator": { "path": "tools/web/generate-io-format-runtime-inventory.py", "sha256": "aa926397664240a5195f8864fc3ed5549bafcc963a03c513c7e37926b0559d7d" },
"checker": { "path": "tools/web/check-io-format-runtime-inventory.mjs", "sha256": "12853306ea5eb2698ab636c7dfc2f27ae140295641473c57b84f93fa13d4864e" },
"inventory": { "path": "tests/golden/M12-05A/format-inventory.json", "sha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4" },
"package": { "path": "web/package.json", "sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c" }
},
"nextTask": "M12-05B"
}

View File

@@ -0,0 +1,392 @@
{
"schemaVersion": 1,
"task": "M12-05B",
"runtimeInventorySha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4",
"formats": [
{
"format": "GLTF",
"runtimeImportStatus": "AVAILABLE",
"runtimeExportStatus": "AVAILABLE",
"operations": {
"IMPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
},
"EXPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
}
}
},
{
"format": "GLB",
"runtimeImportStatus": "AVAILABLE",
"runtimeExportStatus": "AVAILABLE",
"operations": {
"IMPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
},
"EXPORT": {
"local": {
"status": "READY",
"execution": "LOCAL",
"code": null
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "PARTIAL",
"evidence": "bounded GLB export gate exists; full format round-trip remains M12-06"
},
"material": {
"status": "PARTIAL",
"evidence": "bounded GLB export gate exists; full format round-trip remains M12-06"
},
"animation": {
"status": "PARTIAL",
"evidence": "bounded GLB export gate exists; full format round-trip remains M12-06"
}
}
}
},
{
"format": "OBJ",
"runtimeImportStatus": "AVAILABLE",
"runtimeExportStatus": "AVAILABLE",
"operations": {
"IMPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
},
"EXPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
}
}
},
{
"format": "STL",
"runtimeImportStatus": "AVAILABLE",
"runtimeExportStatus": "AVAILABLE",
"operations": {
"IMPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
},
"EXPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
}
}
},
{
"format": "PLY",
"runtimeImportStatus": "AVAILABLE",
"runtimeExportStatus": "AVAILABLE",
"operations": {
"IMPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
},
"EXPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
}
}
},
{
"format": "USD",
"runtimeImportStatus": "OPERATOR_UNREGISTERED",
"runtimeExportStatus": "OPERATOR_UNREGISTERED",
"operations": {
"IMPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
},
"EXPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
}
}
},
{
"format": "ALEMBIC",
"runtimeImportStatus": "OPERATOR_UNREGISTERED",
"runtimeExportStatus": "OPERATOR_UNREGISTERED",
"operations": {
"IMPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
},
"EXPORT": {
"local": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"server": {
"status": "BLOCKED",
"execution": "NONE",
"code": "IO_FORMAT_UNSUPPORTED"
},
"geometry": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"material": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
},
"animation": {
"status": "UNVERIFIED",
"evidence": "no verified Web executor for this format/operation"
}
}
}
}
]
}

View File

@@ -0,0 +1,27 @@
{
"schemaVersion": 1,
"task": "M12-05B",
"parentTask": "M12-05A",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_CAPABILITY_MATRIX_PROTOCOL",
"operation": "IO_FORMAT_CAPABILITY_MATRIX",
"assertions": {
"formatCount": 7,
"localGlbExportReady": true,
"blockedImportRoutes": 7,
"blockedServerRoutes": 14,
"unverifiedUnimplementedFeatures": true,
"runtimeBinding": true
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-05A/manifest.json", "sha256": "202b144c91f8e2c39477e257aeb26f9bd0b1b05b459ff8a246668024e94deec7" },
"protocol": { "path": "web/protocol/io-format-capability-matrix.ts", "sha256": "3063ae5e45f5b1642d329aa554187d121998d816a5a6740a2b9662f00c3c5738" },
"generator": { "path": "tools/web/generate-io-format-capability-matrix.mjs", "sha256": "746078caaf29fa5aa2281b901b9ea5fc66f9a935eb3f6e282d4fbfb018d4c390" },
"checker": { "path": "tools/web/check-io-format-capability-matrix.mjs", "sha256": "4a8b35cd7f87238c13627a00c3bb0b34c130fc34d597773574efac7d8909b804" },
"unit": { "path": "web/tests/unit/io-format-capability-matrix.test.mjs", "sha256": "0cc4d8f1df1ecdab20d8100cf5f12b44cb2a68bca4384ef7964a032b2f74b36e" },
"matrix": { "path": "tests/golden/M12-05B/capability-matrix.json", "sha256": "139c9d764736da176b32414ecda840c07eb0ba5f3864da2dc08ce04bae161366" },
"package": { "path": "web/package.json", "sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c" }
},
"nextTask": "M12-05C"
}

View File

@@ -0,0 +1,29 @@
{
"schemaVersion": 1,
"task": "M12-05C",
"parentTask": "M12-05B",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_IO_FORMAT_UI_CAPABILITY_GATE",
"operation": "IO_FORMAT_UI_GATE",
"assertions": {
"matrixBound": true,
"projectFileAccept": ".blend,application/octet-stream",
"importRoutes": 0,
"localExportRoutes": 1,
"blockedRoutesHidden": true,
"operatorSearchUsesRegistry": true,
"unsupportedSelectionFailClosed": true
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-05B/manifest.json", "sha256": "8cc9517c9f25138c351bc5a79efe3b1ce6d9f6663d3b7c14397c5e4e8f11181a" },
"protocol": { "path": "web/protocol/io-format-ui-gate.ts", "sha256": "fc397ceb947d4ede6c34c1d51438253a6b59244fc40f5eb77ce155bf1c477476" },
"generator": { "path": "tools/web/generate-io-format-ui-gate.mjs", "sha256": "1ef4ae8a3e8d2f73101a87cba1c42ea99a065e1f6846f6a591841b97c0c39e6f" },
"checker": { "path": "tools/web/check-io-format-ui-gate.mjs", "sha256": "81d6f27df26aab7b633fbe61c6d7b37519668aff41e43314924dceaacb3affde" },
"unit": { "path": "web/tests/unit/io-format-ui-gate.test.mjs", "sha256": "84ca8fb6022da9f167daa104c44489a6c7d9f059699e57ce621b8d7f64f19082" },
"chromium": { "path": "web/tests/e2e/io-format-ui-gate.spec.ts", "sha256": "eda2cdb9ede3bcbd717800c9c6fdb28d8cebef96f0296a2ee847a05e60cd0eed" },
"registry": { "path": "web/app/src/capabilities/io-format-ui-registry.json", "sha256": "6b410bc6f2cad032af55bf13e1c8ddd841b01e9913ffc0ba381da8b7204285fd" },
"package": { "path": "web/package.json", "sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c" }
},
"nextTask": "M12-05D"
}

View File

@@ -0,0 +1,30 @@
{
"schemaVersion": 1,
"task": "M12-05D",
"parentTask": "M12-05C",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_RUNTIME_RECEIPT_GATE",
"operation": "IO_FORMAT_RUNTIME_RECEIPT",
"assertions": {
"inventoryBound": true,
"formatCount": 7,
"receiptCount": 14,
"glbExport": "READY",
"usdExport": "BLOCKED",
"extensionIndependent": true,
"uiExecutorBound": true
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-05C/manifest.json", "sha256": "f46fd394e2144255d8b4304e8ce4fe60aad4302a80e991fd83d50cd915235ee3" },
"protocol": { "path": "web/protocol/io-format-runtime-receipt.ts", "sha256": "461a84557fa368c29dbc6707959b689faae7c8f7050dccc4d3f12e358b61bb22" },
"generator": { "path": "tools/web/generate-io-format-runtime-receipts.mjs", "sha256": "796cd641e86d8242c13317f771ae237cbf1692ff675a53bbdb689615edb5f372" },
"checker": { "path": "tools/web/check-io-format-runtime-receipts.mjs", "sha256": "aaf9862041f155f96f50ea8481ff765089255bc59ecd8944f12362b81b8c1f1a" },
"unit": { "path": "web/tests/unit/io-format-runtime-receipt.test.mjs", "sha256": "a5f09277f5dcdacd25c44191f7407d6cee944f8022b1c467c2a69e172fc2ac6b" },
"runtimeReceipts": { "path": "tests/golden/M12-05D/runtime-receipts.json", "sha256": "f2c9a77e2cfad0ef3574b804fc06fb22972c07f55c72b0e6db2e359c4d95f57b" },
"appReceipts": { "path": "web/app/src/capabilities/io-format-runtime-receipts.json", "sha256": "f2c9a77e2cfad0ef3574b804fc06fb22972c07f55c72b0e6db2e359c4d95f57b" },
"app": { "path": "web/app/src/app/App.tsx", "sha256": "74216aac70992f8d879e983237ca324b998008582f0cd4658e90994cf9fae0a8" },
"package": { "path": "web/package.json", "sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c" }
},
"nextTask": "M12-05E"
}

View File

@@ -0,0 +1,282 @@
{
"schemaVersion": 1,
"task": "M12-05D",
"inventorySha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4",
"runtime": {
"binarySha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82",
"blenderVersion": "5.2.0 LTS",
"buildBranch": "unknown",
"buildCommitTimestamp": 0,
"buildDate": "2026-07-24",
"buildHash": "unknown",
"buildOptions": {
"alembic": false,
"io_ply": true,
"io_stl": true,
"io_wavefront_obj": true,
"usd": false
},
"buildPlatform": "Linux",
"buildTime": "08:03:47",
"buildType": "Release",
"versionTuple": [
5,
2,
0
]
},
"receipts": [
{
"format": "GLTF",
"family": "GLTF",
"operation": "IMPORT",
"operator": "import_scene.gltf",
"registered": true,
"rnaIdentifier": "IMPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLTF_SEPARATE"
],
"extensions": [
".gltf"
]
},
{
"format": "GLTF",
"family": "GLTF",
"operation": "EXPORT",
"operator": "export_scene.gltf",
"registered": true,
"rnaIdentifier": "EXPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLTF_SEPARATE"
],
"extensions": [
".gltf"
]
},
{
"format": "GLB",
"family": "GLTF",
"operation": "IMPORT",
"operator": "import_scene.gltf",
"registered": true,
"rnaIdentifier": "IMPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLB"
],
"extensions": [
".glb"
]
},
{
"format": "GLB",
"family": "GLTF",
"operation": "EXPORT",
"operator": "export_scene.gltf",
"registered": true,
"rnaIdentifier": "EXPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLB"
],
"extensions": [
".glb"
]
},
{
"format": "OBJ",
"family": "OBJ",
"operation": "IMPORT",
"operator": "wm.obj_import",
"registered": true,
"rnaIdentifier": "WM_OT_obj_import",
"buildOption": "io_wavefront_obj",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"OBJ"
],
"extensions": [
".obj"
]
},
{
"format": "OBJ",
"family": "OBJ",
"operation": "EXPORT",
"operator": "wm.obj_export",
"registered": true,
"rnaIdentifier": "WM_OT_obj_export",
"buildOption": "io_wavefront_obj",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"OBJ"
],
"extensions": [
".obj"
]
},
{
"format": "STL",
"family": "STL",
"operation": "IMPORT",
"operator": "wm.stl_import",
"registered": true,
"rnaIdentifier": "WM_OT_stl_import",
"buildOption": "io_stl",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"STL_BINARY",
"STL_ASCII"
],
"extensions": [
".stl"
]
},
{
"format": "STL",
"family": "STL",
"operation": "EXPORT",
"operator": "wm.stl_export",
"registered": true,
"rnaIdentifier": "WM_OT_stl_export",
"buildOption": "io_stl",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"STL_BINARY",
"STL_ASCII"
],
"extensions": [
".stl"
]
},
{
"format": "PLY",
"family": "PLY",
"operation": "IMPORT",
"operator": "wm.ply_import",
"registered": true,
"rnaIdentifier": "WM_OT_ply_import",
"buildOption": "io_ply",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"PLY"
],
"extensions": [
".ply"
]
},
{
"format": "PLY",
"family": "PLY",
"operation": "EXPORT",
"operator": "wm.ply_export",
"registered": true,
"rnaIdentifier": "WM_OT_ply_export",
"buildOption": "io_ply",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"PLY"
],
"extensions": [
".ply"
]
},
{
"format": "USD",
"family": "USD",
"operation": "IMPORT",
"operator": "wm.usd_import",
"registered": false,
"rnaIdentifier": null,
"buildOption": "usd",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"USD",
"USDA",
"USDC",
"USDZ"
],
"extensions": [
".usd",
".usda",
".usdc",
".usdz"
]
},
{
"format": "USD",
"family": "USD",
"operation": "EXPORT",
"operator": "wm.usd_export",
"registered": false,
"rnaIdentifier": null,
"buildOption": "usd",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"USD",
"USDA",
"USDC",
"USDZ"
],
"extensions": [
".usd",
".usda",
".usdc",
".usdz"
]
},
{
"format": "ALEMBIC",
"family": "ALEMBIC",
"operation": "IMPORT",
"operator": "wm.alembic_import",
"registered": false,
"rnaIdentifier": null,
"buildOption": "alembic",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"ALEMBIC"
],
"extensions": [
".abc"
]
},
{
"format": "ALEMBIC",
"family": "ALEMBIC",
"operation": "EXPORT",
"operator": "wm.alembic_export",
"registered": false,
"rnaIdentifier": null,
"buildOption": "alembic",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"ALEMBIC"
],
"extensions": [
".abc"
]
}
]
}

View File

@@ -0,0 +1,325 @@
{
"schemaVersion": 1,
"task": "M12-05E",
"parentReceiptSetSha256": "f2c9a77e2cfad0ef3574b804fc06fb22972c07f55c72b0e6db2e359c4d95f57b",
"inventorySha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4",
"runtime": {
"binarySha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82",
"blenderVersion": "5.2.0 LTS",
"buildBranch": "unknown",
"buildCommitTimestamp": 0,
"buildDate": "2026-07-24",
"buildHash": "unknown",
"buildOptions": {
"alembic": false,
"io_ply": true,
"io_stl": true,
"io_wavefront_obj": true,
"usd": false
},
"buildPlatform": "Linux",
"buildTime": "08:03:47",
"buildType": "Release",
"versionTuple": [
5,
2,
0
]
},
"receipts": [
{
"format": "GLTF",
"family": "GLTF",
"operation": "IMPORT",
"operator": "import_scene.gltf",
"registered": true,
"rnaIdentifier": "IMPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLTF_SEPARATE"
],
"extensions": [
".gltf"
],
"sourceSha256": "843c7eb040189ccd7fcccfb697c4ecfd35d405add50008967b7ca5a89e4dcde7",
"settingsSha256": "01a5fbe96ab7af4bf38c35a3723a7619233299086e400ff5064dbd91e9d586e8",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "GLTF",
"family": "GLTF",
"operation": "EXPORT",
"operator": "export_scene.gltf",
"registered": true,
"rnaIdentifier": "EXPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLTF_SEPARATE"
],
"extensions": [
".gltf"
],
"sourceSha256": "a1c2dea067898071d6d4f0fc4f83e81df920bc572a9250ed01229d618ef15a37",
"settingsSha256": "df7db92e5ea9a4d52a81dc8092f48ca9dfda80594e500b05f3787352891962f9",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "GLB",
"family": "GLTF",
"operation": "IMPORT",
"operator": "import_scene.gltf",
"registered": true,
"rnaIdentifier": "IMPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLB"
],
"extensions": [
".glb"
],
"sourceSha256": "d78e336432dc578727992b8ca53368e3ac49ffdafeb1c16847fe48c54e35a079",
"settingsSha256": "b909a16f4103dfad49997c597c80ad3e71a932989f8a4594eb4f019223bd56e6",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "GLB",
"family": "GLTF",
"operation": "EXPORT",
"operator": "export_scene.gltf",
"registered": true,
"rnaIdentifier": "EXPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLB"
],
"extensions": [
".glb"
],
"sourceSha256": "0c2820eb9d7b82a1cd1cb208f75f263a527c58576952d4bd934cf0f7eb29ee3e",
"settingsSha256": "3b375dcb889e594e61da9d8e912037d8fa0220ea876e7465e6c37da4f5b21cee",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "OBJ",
"family": "OBJ",
"operation": "IMPORT",
"operator": "wm.obj_import",
"registered": true,
"rnaIdentifier": "WM_OT_obj_import",
"buildOption": "io_wavefront_obj",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"OBJ"
],
"extensions": [
".obj"
],
"sourceSha256": "42f9e3b35f753e43100aaea618ed306f1bf062fb7bb44af841a2e2d599449fbd",
"settingsSha256": "4e879a3018ffcf529c28fb54e09efe5f3829b501a2b001da86f9a9b4b303bccb",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "OBJ",
"family": "OBJ",
"operation": "EXPORT",
"operator": "wm.obj_export",
"registered": true,
"rnaIdentifier": "WM_OT_obj_export",
"buildOption": "io_wavefront_obj",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"OBJ"
],
"extensions": [
".obj"
],
"sourceSha256": "b4328f82639bdfefb016aec15629135ebd080e0a5696759dd670ab85168b7c60",
"settingsSha256": "f7660d5742890d2f05e8da803f5d8616233570a4f06960b85a2142efd9396d2f",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "STL",
"family": "STL",
"operation": "IMPORT",
"operator": "wm.stl_import",
"registered": true,
"rnaIdentifier": "WM_OT_stl_import",
"buildOption": "io_stl",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"STL_BINARY",
"STL_ASCII"
],
"extensions": [
".stl"
],
"sourceSha256": "f6bb7a058c246914f5f077665aab1f3d45c60b176f917b15a54522d12164c703",
"settingsSha256": "b01bd0b819aa72cf1de817b3e9bca2df03b9ceac41f639f738176973fea9accb",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "STL",
"family": "STL",
"operation": "EXPORT",
"operator": "wm.stl_export",
"registered": true,
"rnaIdentifier": "WM_OT_stl_export",
"buildOption": "io_stl",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"STL_BINARY",
"STL_ASCII"
],
"extensions": [
".stl"
],
"sourceSha256": "8be11ddd9bd68dcddc676529d30abcc236289f25ece32e137fd79bcd5ff3286d",
"settingsSha256": "5f1797ab8291fb3d84a8c1a892aa692a120a7db4ef84c9d3a9b1e78d5a6d92b7",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "PLY",
"family": "PLY",
"operation": "IMPORT",
"operator": "wm.ply_import",
"registered": true,
"rnaIdentifier": "WM_OT_ply_import",
"buildOption": "io_ply",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"PLY"
],
"extensions": [
".ply"
],
"sourceSha256": "2c8483351e293c5e0450f55902c24e3346bf95d53243ebf194fccc1efc1caa80",
"settingsSha256": "390cbc8a4843d88bd567a7f7d51b9e0d5853992bfc7a66c4a2fd335ed33d25a3",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "PLY",
"family": "PLY",
"operation": "EXPORT",
"operator": "wm.ply_export",
"registered": true,
"rnaIdentifier": "WM_OT_ply_export",
"buildOption": "io_ply",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"PLY"
],
"extensions": [
".ply"
],
"sourceSha256": "2f6cf92d5a813083b206b9c38a4442f82685b1c5740f313b90a0a7b60604a2b5",
"settingsSha256": "cd4bf21d72086001a02377cdc5c7f22856cbd1e04b261e37484260f3fc2ea6ae",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "USD",
"family": "USD",
"operation": "IMPORT",
"operator": "wm.usd_import",
"registered": false,
"rnaIdentifier": null,
"buildOption": "usd",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"USD",
"USDA",
"USDC",
"USDZ"
],
"extensions": [
".usd",
".usda",
".usdc",
".usdz"
],
"sourceSha256": "a8f79c9243ffa9ba0ba8e3e948c198fdffa727bac578269d8ec041f56cad1c5d",
"settingsSha256": "5a396eb68ddd5943df9834996b1e6b993ad7e66b019308aa318517980b518390",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "USD",
"family": "USD",
"operation": "EXPORT",
"operator": "wm.usd_export",
"registered": false,
"rnaIdentifier": null,
"buildOption": "usd",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"USD",
"USDA",
"USDC",
"USDZ"
],
"extensions": [
".usd",
".usda",
".usdc",
".usdz"
],
"sourceSha256": "cf6a9737773c27faf82cd8b3d4df84a9b671e1c873cd5041f12d70926ec62abf",
"settingsSha256": "5a396eb68ddd5943df9834996b1e6b993ad7e66b019308aa318517980b518390",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "ALEMBIC",
"family": "ALEMBIC",
"operation": "IMPORT",
"operator": "wm.alembic_import",
"registered": false,
"rnaIdentifier": null,
"buildOption": "alembic",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"ALEMBIC"
],
"extensions": [
".abc"
],
"sourceSha256": "7471c261ab8520df718399e69f6f8d73be11fb76f1717eac9a407964fc2f7ee3",
"settingsSha256": "fa2669dd3c464f8312581faf665690709dc503fdfb5662642a6e635bd2e91e55",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "ALEMBIC",
"family": "ALEMBIC",
"operation": "EXPORT",
"operator": "wm.alembic_export",
"registered": false,
"rnaIdentifier": null,
"buildOption": "alembic",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"ALEMBIC"
],
"extensions": [
".abc"
],
"sourceSha256": "8d983f6f8c5bb722d2b12c47c56115ae4bdff0a173a9fb9f4d93f083bea8e513",
"settingsSha256": "fa2669dd3c464f8312581faf665690709dc503fdfb5662642a6e635bd2e91e55",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
}
]
}

View File

@@ -0,0 +1,28 @@
{
"schemaVersion": 1,
"task": "M12-05E",
"parentTask": "M12-05D",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_BOUND_RUNTIME_RECEIPT",
"operation": "IO_FORMAT_RECEIPT_BINDING",
"assertions": {
"receiptCount": 14,
"sourceHashBound": true,
"settingsHashBound": true,
"runtimeHashBound": true,
"parentInventoryBound": true,
"deterministic": true,
"packageHashPreserved": true
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-05D/manifest.json", "sha256": "3d0049a7b0331f01bb71df043270c18d1a5c9ce6dc74353c49c8ce591761df1b" },
"protocol": { "path": "web/protocol/io-format-receipt-binding.ts", "sha256": "681e719ab2b18eb85d056547fb70b461dd73b3a7fb4fdbe6295b8e49d5649e49" },
"generator": { "path": "tools/web/generate-io-format-receipt-bindings.mjs", "sha256": "eb7b5c499f141c1788bc37e53585662eedff3f2dabff870f4ad166f4a619796f" },
"checker": { "path": "tools/web/check-io-format-receipt-bindings.mjs", "sha256": "ec2b22b468809ecc25ab2d4983065680a66ad3be6705d1827b44bf45ac622e26" },
"unit": { "path": "web/tests/unit/io-format-receipt-binding.test.mjs", "sha256": "e9ae3e360ad41c32da3634a4efa915654853e79a35df36728c1ddf586a0bf7b5" },
"boundReceipts": { "path": "tests/golden/M12-05E/bound-runtime-receipts.json", "sha256": "7f765bf16b62466f579b3de00751a0e012fef1c788f229c8e9675a57caa18aad" },
"package": { "path": "web/package.json", "sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c" }
},
"nextTask": "M12-05F"
}

View File

@@ -0,0 +1,332 @@
{
"schemaVersion": 1,
"task": "M12-05F",
"parentBindingSha256": "7f765bf16b62466f579b3de00751a0e012fef1c788f229c8e9675a57caa18aad",
"boundReceiptSetSha256": "2015d719a2046f76dda3daf7c8ae7a3fc5183a499489ef06a0c33f166c6ea0b9",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6",
"bound": {
"schemaVersion": 1,
"task": "M12-05E",
"parentReceiptSetSha256": "f2c9a77e2cfad0ef3574b804fc06fb22972c07f55c72b0e6db2e359c4d95f57b",
"inventorySha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4",
"runtime": {
"binarySha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82",
"blenderVersion": "5.2.0 LTS",
"buildBranch": "unknown",
"buildCommitTimestamp": 0,
"buildDate": "2026-07-24",
"buildHash": "unknown",
"buildOptions": {
"alembic": false,
"io_ply": true,
"io_stl": true,
"io_wavefront_obj": true,
"usd": false
},
"buildPlatform": "Linux",
"buildTime": "08:03:47",
"buildType": "Release",
"versionTuple": [
5,
2,
0
]
},
"receipts": [
{
"format": "GLTF",
"family": "GLTF",
"operation": "IMPORT",
"operator": "import_scene.gltf",
"registered": true,
"rnaIdentifier": "IMPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLTF_SEPARATE"
],
"extensions": [
".gltf"
],
"sourceSha256": "843c7eb040189ccd7fcccfb697c4ecfd35d405add50008967b7ca5a89e4dcde7",
"settingsSha256": "01a5fbe96ab7af4bf38c35a3723a7619233299086e400ff5064dbd91e9d586e8",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "GLTF",
"family": "GLTF",
"operation": "EXPORT",
"operator": "export_scene.gltf",
"registered": true,
"rnaIdentifier": "EXPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLTF_SEPARATE"
],
"extensions": [
".gltf"
],
"sourceSha256": "a1c2dea067898071d6d4f0fc4f83e81df920bc572a9250ed01229d618ef15a37",
"settingsSha256": "df7db92e5ea9a4d52a81dc8092f48ca9dfda80594e500b05f3787352891962f9",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "GLB",
"family": "GLTF",
"operation": "IMPORT",
"operator": "import_scene.gltf",
"registered": true,
"rnaIdentifier": "IMPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLB"
],
"extensions": [
".glb"
],
"sourceSha256": "d78e336432dc578727992b8ca53368e3ac49ffdafeb1c16847fe48c54e35a079",
"settingsSha256": "b909a16f4103dfad49997c597c80ad3e71a932989f8a4594eb4f019223bd56e6",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "GLB",
"family": "GLTF",
"operation": "EXPORT",
"operator": "export_scene.gltf",
"registered": true,
"rnaIdentifier": "EXPORT_SCENE_OT_gltf",
"buildOption": null,
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"GLB"
],
"extensions": [
".glb"
],
"sourceSha256": "0c2820eb9d7b82a1cd1cb208f75f263a527c58576952d4bd934cf0f7eb29ee3e",
"settingsSha256": "3b375dcb889e594e61da9d8e912037d8fa0220ea876e7465e6c37da4f5b21cee",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "OBJ",
"family": "OBJ",
"operation": "IMPORT",
"operator": "wm.obj_import",
"registered": true,
"rnaIdentifier": "WM_OT_obj_import",
"buildOption": "io_wavefront_obj",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"OBJ"
],
"extensions": [
".obj"
],
"sourceSha256": "42f9e3b35f753e43100aaea618ed306f1bf062fb7bb44af841a2e2d599449fbd",
"settingsSha256": "4e879a3018ffcf529c28fb54e09efe5f3829b501a2b001da86f9a9b4b303bccb",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "OBJ",
"family": "OBJ",
"operation": "EXPORT",
"operator": "wm.obj_export",
"registered": true,
"rnaIdentifier": "WM_OT_obj_export",
"buildOption": "io_wavefront_obj",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"OBJ"
],
"extensions": [
".obj"
],
"sourceSha256": "b4328f82639bdfefb016aec15629135ebd080e0a5696759dd670ab85168b7c60",
"settingsSha256": "f7660d5742890d2f05e8da803f5d8616233570a4f06960b85a2142efd9396d2f",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "STL",
"family": "STL",
"operation": "IMPORT",
"operator": "wm.stl_import",
"registered": true,
"rnaIdentifier": "WM_OT_stl_import",
"buildOption": "io_stl",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"STL_BINARY",
"STL_ASCII"
],
"extensions": [
".stl"
],
"sourceSha256": "f6bb7a058c246914f5f077665aab1f3d45c60b176f917b15a54522d12164c703",
"settingsSha256": "b01bd0b819aa72cf1de817b3e9bca2df03b9ceac41f639f738176973fea9accb",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "STL",
"family": "STL",
"operation": "EXPORT",
"operator": "wm.stl_export",
"registered": true,
"rnaIdentifier": "WM_OT_stl_export",
"buildOption": "io_stl",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"STL_BINARY",
"STL_ASCII"
],
"extensions": [
".stl"
],
"sourceSha256": "8be11ddd9bd68dcddc676529d30abcc236289f25ece32e137fd79bcd5ff3286d",
"settingsSha256": "5f1797ab8291fb3d84a8c1a892aa692a120a7db4ef84c9d3a9b1e78d5a6d92b7",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "PLY",
"family": "PLY",
"operation": "IMPORT",
"operator": "wm.ply_import",
"registered": true,
"rnaIdentifier": "WM_OT_ply_import",
"buildOption": "io_ply",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"PLY"
],
"extensions": [
".ply"
],
"sourceSha256": "2c8483351e293c5e0450f55902c24e3346bf95d53243ebf194fccc1efc1caa80",
"settingsSha256": "390cbc8a4843d88bd567a7f7d51b9e0d5853992bfc7a66c4a2fd335ed33d25a3",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "PLY",
"family": "PLY",
"operation": "EXPORT",
"operator": "wm.ply_export",
"registered": true,
"rnaIdentifier": "WM_OT_ply_export",
"buildOption": "io_ply",
"buildOptionEnabled": true,
"runtimeStatus": "AVAILABLE",
"variants": [
"PLY"
],
"extensions": [
".ply"
],
"sourceSha256": "2f6cf92d5a813083b206b9c38a4442f82685b1c5740f313b90a0a7b60604a2b5",
"settingsSha256": "cd4bf21d72086001a02377cdc5c7f22856cbd1e04b261e37484260f3fc2ea6ae",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "USD",
"family": "USD",
"operation": "IMPORT",
"operator": "wm.usd_import",
"registered": false,
"rnaIdentifier": null,
"buildOption": "usd",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"USD",
"USDA",
"USDC",
"USDZ"
],
"extensions": [
".usd",
".usda",
".usdc",
".usdz"
],
"sourceSha256": "a8f79c9243ffa9ba0ba8e3e948c198fdffa727bac578269d8ec041f56cad1c5d",
"settingsSha256": "5a396eb68ddd5943df9834996b1e6b993ad7e66b019308aa318517980b518390",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "USD",
"family": "USD",
"operation": "EXPORT",
"operator": "wm.usd_export",
"registered": false,
"rnaIdentifier": null,
"buildOption": "usd",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"USD",
"USDA",
"USDC",
"USDZ"
],
"extensions": [
".usd",
".usda",
".usdc",
".usdz"
],
"sourceSha256": "cf6a9737773c27faf82cd8b3d4df84a9b671e1c873cd5041f12d70926ec62abf",
"settingsSha256": "5a396eb68ddd5943df9834996b1e6b993ad7e66b019308aa318517980b518390",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "ALEMBIC",
"family": "ALEMBIC",
"operation": "IMPORT",
"operator": "wm.alembic_import",
"registered": false,
"rnaIdentifier": null,
"buildOption": "alembic",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"ALEMBIC"
],
"extensions": [
".abc"
],
"sourceSha256": "7471c261ab8520df718399e69f6f8d73be11fb76f1717eac9a407964fc2f7ee3",
"settingsSha256": "fa2669dd3c464f8312581faf665690709dc503fdfb5662642a6e635bd2e91e55",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
},
{
"format": "ALEMBIC",
"family": "ALEMBIC",
"operation": "EXPORT",
"operator": "wm.alembic_export",
"registered": false,
"rnaIdentifier": null,
"buildOption": "alembic",
"buildOptionEnabled": null,
"runtimeStatus": "OPERATOR_UNREGISTERED",
"variants": [
"ALEMBIC"
],
"extensions": [
".abc"
],
"sourceSha256": "8d983f6f8c5bb722d2b12c47c56115ae4bdff0a173a9fb9f4d93f083bea8e513",
"settingsSha256": "fa2669dd3c464f8312581faf665690709dc503fdfb5662642a6e635bd2e91e55",
"runtimeSha256": "729b46fdfea424feb258ee42ad0f3360aa433abaf31831eeb8e4f6203fa298b6"
}
]
}
}

View File

@@ -0,0 +1,34 @@
{
"schemaVersion": 1,
"task": "M12-05F",
"parentTask": "M12-05E",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_RUNTIME_RECEIPT_FRESHNESS",
"operation": "IO_FORMAT_RECEIPT_FRESHNESS_GATE",
"assertions": {
"receiptCount": 14,
"parentBindingBound": true,
"canonicalReceiptSetHash": true,
"runtimeIdentityHash": true,
"forgedReceiptBlocked": true,
"staleReceiptBlocked": true,
"crossVersionReceiptBlocked": true,
"appRouteBound": true,
"deterministic": true,
"packageHashPreserved": true
},
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-05E/manifest.json", "sha256": "2fbaaf39c6acd9f55fbdbadccc0b027e9e7763bf069c954a96ca49b193648990" },
"protocol": { "path": "web/protocol/io-format-receipt-freshness.ts", "sha256": "111a630c7beccd31989dc4f78932b7d7b741fb6bef03e45cb39a8139f774d235" },
"generator": { "path": "tools/web/generate-io-format-receipt-freshness.mjs", "sha256": "6a1e798ce46e1d14d833091d4d7ae452dccb13efe583594277785465eb725bbf" },
"checker": { "path": "tools/web/check-io-format-receipt-freshness.mjs", "sha256": "7a8fe69ea1aa2c1e121be008a9fb60fc236f7ef776d2088a7b00b14f46fe3fba" },
"unit": { "path": "web/tests/unit/io-format-receipt-freshness.test.mjs", "sha256": "cd1c2adca81653f98f9a1c6c7d104ad0e3052283213fb7166dac827c956928fe" },
"freshnessReceipts": { "path": "tests/golden/M12-05F/fresh-runtime-receipts.json", "sha256": "0187ad0d9ea05fc4b152b7abd4945191dbe9ec24dfde4ca7dbe4aadfd1230efe" },
"appFreshnessReceipts": { "path": "web/app/src/capabilities/io-format-runtime-receipts-freshness.json", "sha256": "0187ad0d9ea05fc4b152b7abd4945191dbe9ec24dfde4ca7dbe4aadfd1230efe" },
"appExpected": { "path": "web/app/src/capabilities/io-format-runtime-receipts-freshness-expected.json", "sha256": "8d65f78aa774ff252871cb1cc09e69b4ff04fbb45e61200eaf67534c9d2651b2" },
"app": { "path": "web/app/src/app/App.tsx", "sha256": "043ff3a2f39ef3a1303791081b80851b427e7db5dfd9af2161926dd6f1ea9ca4" },
"package": { "path": "web/package.json", "sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c" }
},
"nextTask": "M12-06A"
}

View File

@@ -0,0 +1,697 @@
{
"fixtureCount": 5,
"fixtures": [
{
"byteLength": 1236,
"file": "mesh.glb",
"id": "mesh",
"semantic": {
"animations": [],
"asset": {
"generator": "Khronos glTF Blender I/O v5.2.39",
"version": "2.0"
},
"extensionsRequired": [],
"extensionsUsed": [],
"images": [],
"materials": [
{
"alphaMode": "OPAQUE",
"doubleSided": true,
"emissiveFactor": null,
"name": "M12 Mesh Material",
"normalTexture": null,
"pbr": {
"baseColorFactor": null,
"baseColorTexture": null,
"metallicFactor": 0.15000000596046448,
"roughnessFactor": 0.550000011920929
}
}
],
"meshes": [
{
"name": "M12 Mesh Fixture Mesh",
"primitives": [
{
"attributes": {
"COLOR_0": {
"componentType": 5126,
"count": 4,
"max": null,
"min": null,
"normalized": false,
"type": "VEC3"
},
"NORMAL": {
"componentType": 5126,
"count": 4,
"max": null,
"min": null,
"normalized": false,
"type": "VEC3"
},
"POSITION": {
"componentType": 5126,
"count": 4,
"max": [
1,
0,
1
],
"min": [
-1,
0,
-1
],
"normalized": false,
"type": "VEC3"
}
},
"indices": {
"componentType": 5123,
"count": 6,
"max": null,
"min": null,
"normalized": false,
"type": "SCALAR"
},
"material": 0,
"mode": 4,
"targets": []
}
]
}
],
"nodeNames": [
"M12 Mesh Fixture"
],
"nodes": [
{
"children": [],
"mesh": 0,
"name": "M12 Mesh Fixture",
"rotation": null,
"scale": null,
"skin": null,
"translation": null
}
],
"samplers": [],
"scene": 0,
"skins": [],
"textures": []
},
"sha256": "e52b9268b6524744fb498691f976000635e544ba3b47e9f8ff22b03bcdf17a94"
},
{
"byteLength": 1208,
"file": "pbr.glb",
"id": "pbr",
"semantic": {
"animations": [],
"asset": {
"generator": "Khronos glTF Blender I/O v5.2.39",
"version": "2.0"
},
"extensionsRequired": [],
"extensionsUsed": [],
"images": [],
"materials": [
{
"alphaMode": "OPAQUE",
"doubleSided": true,
"emissiveFactor": [
0.029999999329447746,
0.05999999865889549,
0.11999999731779099
],
"name": "M12 PBR Material",
"normalTexture": null,
"pbr": {
"baseColorFactor": [
0.3100000023841858,
0.5699999928474426,
0.9100000262260437,
1
],
"baseColorTexture": null,
"metallicFactor": 0.7200000286102295,
"roughnessFactor": 0.2800000011920929
}
}
],
"meshes": [
{
"name": "M12 PBR Fixture Mesh",
"primitives": [
{
"attributes": {
"NORMAL": {
"componentType": 5126,
"count": 4,
"max": null,
"min": null,
"normalized": false,
"type": "VEC3"
},
"POSITION": {
"componentType": 5126,
"count": 4,
"max": [
1,
0,
1
],
"min": [
-1,
0,
-1
],
"normalized": false,
"type": "VEC3"
}
},
"indices": {
"componentType": 5123,
"count": 6,
"max": null,
"min": null,
"normalized": false,
"type": "SCALAR"
},
"material": 0,
"mode": 4,
"targets": []
}
]
}
],
"nodeNames": [
"M12 PBR Fixture"
],
"nodes": [
{
"children": [],
"mesh": 0,
"name": "M12 PBR Fixture",
"rotation": null,
"scale": null,
"skin": null,
"translation": null
}
],
"samplers": [],
"scene": 0,
"skins": [],
"textures": []
},
"sha256": "244cc8a992c5a70692b8bbc8333533718b3bac7022110715ce3b23d2e4c0b361"
},
{
"byteLength": 1704,
"file": "uv.glb",
"id": "uv",
"semantic": {
"animations": [],
"asset": {
"generator": "Khronos glTF Blender I/O v5.2.39",
"version": "2.0"
},
"extensionsRequired": [],
"extensionsUsed": [],
"images": [
{
"bufferView": 4,
"mimeType": "image/png",
"name": "M12 UV Texture"
}
],
"materials": [
{
"alphaMode": "OPAQUE",
"doubleSided": true,
"emissiveFactor": null,
"name": "M12 UV Material",
"normalTexture": null,
"pbr": {
"baseColorFactor": null,
"baseColorTexture": {
"index": 0
},
"metallicFactor": 0,
"roughnessFactor": 0.44999998807907104
}
}
],
"meshes": [
{
"name": "M12 UV Fixture Mesh",
"primitives": [
{
"attributes": {
"NORMAL": {
"componentType": 5126,
"count": 4,
"max": null,
"min": null,
"normalized": false,
"type": "VEC3"
},
"POSITION": {
"componentType": 5126,
"count": 4,
"max": [
1,
0,
1
],
"min": [
-1,
0,
-1
],
"normalized": false,
"type": "VEC3"
},
"TEXCOORD_0": {
"componentType": 5126,
"count": 4,
"max": null,
"min": null,
"normalized": false,
"type": "VEC2"
}
},
"indices": {
"componentType": 5123,
"count": 6,
"max": null,
"min": null,
"normalized": false,
"type": "SCALAR"
},
"material": 0,
"mode": 4,
"targets": []
}
]
}
],
"nodeNames": [
"M12 UV Fixture"
],
"nodes": [
{
"children": [],
"mesh": 0,
"name": "M12 UV Fixture",
"rotation": null,
"scale": null,
"skin": null,
"translation": null
}
],
"samplers": [
{
"magFilter": 9728,
"minFilter": 9984
}
],
"scene": 0,
"skins": [],
"textures": [
{
"sampler": 0,
"source": 0
}
]
},
"sha256": "1e0397d2b69d8261b3252451b50ab4aba6525b94713719f35069a9a9d96fcfa2"
},
{
"byteLength": 1912,
"file": "skin.glb",
"id": "skin",
"semantic": {
"animations": [],
"asset": {
"generator": "Khronos glTF Blender I/O v5.2.39",
"version": "2.0"
},
"extensionsRequired": [],
"extensionsUsed": [],
"images": [],
"materials": [
{
"alphaMode": "OPAQUE",
"doubleSided": true,
"emissiveFactor": null,
"name": "M12 Skin Material",
"normalTexture": null,
"pbr": {
"baseColorFactor": [
0.7599999904632568,
0.23999999463558197,
0.18000000715255737,
1
],
"baseColorTexture": null,
"metallicFactor": 0.05000000074505806,
"roughnessFactor": 0.5
}
}
],
"meshes": [
{
"name": "M12 Skin Fixture Mesh",
"primitives": [
{
"attributes": {
"JOINTS_0": {
"componentType": 5121,
"count": 4,
"max": null,
"min": null,
"normalized": false,
"type": "VEC4"
},
"NORMAL": {
"componentType": 5126,
"count": 4,
"max": null,
"min": null,
"normalized": false,
"type": "VEC3"
},
"POSITION": {
"componentType": 5126,
"count": 4,
"max": [
1,
0,
0.5
],
"min": [
-1,
0,
-0.5
],
"normalized": false,
"type": "VEC3"
},
"WEIGHTS_0": {
"componentType": 5126,
"count": 4,
"max": null,
"min": null,
"normalized": false,
"type": "VEC4"
}
},
"indices": {
"componentType": 5123,
"count": 6,
"max": null,
"min": null,
"normalized": false,
"type": "SCALAR"
},
"material": 0,
"mode": 4,
"targets": []
}
]
}
],
"nodeNames": [
"Tip",
"Root",
"M12 Skin Fixture",
"M12 Skin Armature"
],
"nodes": [
{
"children": [],
"mesh": null,
"name": "Tip",
"rotation": null,
"scale": null,
"skin": null,
"translation": [
0,
1,
0
]
},
{
"children": [
0
],
"mesh": null,
"name": "Root",
"rotation": null,
"scale": null,
"skin": null,
"translation": null
},
{
"children": [],
"mesh": 0,
"name": "M12 Skin Fixture",
"rotation": null,
"scale": null,
"skin": 0,
"translation": null
},
{
"children": [
2,
1
],
"mesh": null,
"name": "M12 Skin Armature",
"rotation": null,
"scale": null,
"skin": null,
"translation": null
}
],
"samplers": [],
"scene": 0,
"skins": [
{
"inverseBindMatrices": {
"componentType": 5126,
"count": 2,
"max": null,
"min": null,
"normalized": false,
"type": "MAT4"
},
"joints": [
1,
0
],
"name": "M12 Skin Armature",
"skeleton": null
}
],
"textures": []
},
"sha256": "4086ee4c8873aa03090338b676575b7a5335fb7c9384fec6ccb36108e71929f6"
},
{
"byteLength": 2616,
"file": "animation.glb",
"id": "animation",
"semantic": {
"animations": [
{
"channels": [
{
"sampler": 0,
"target": {
"node": 0,
"path": "translation"
}
},
{
"sampler": 1,
"target": {
"node": 0,
"path": "rotation"
}
}
],
"name": "M12 Animation Action",
"samplers": [
{
"input": {
"componentType": 5126,
"count": 25,
"max": [
1.0416666666666667
],
"min": [
0.041666666666666664
],
"normalized": false,
"type": "SCALAR"
},
"interpolation": "LINEAR",
"output": {
"componentType": 5126,
"count": 25,
"max": null,
"min": null,
"normalized": false,
"type": "VEC3"
}
},
{
"input": {
"componentType": 5126,
"count": 25,
"max": [
1.0416666666666667
],
"min": [
0.041666666666666664
],
"normalized": false,
"type": "SCALAR"
},
"interpolation": "LINEAR",
"output": {
"componentType": 5126,
"count": 25,
"max": null,
"min": null,
"normalized": false,
"type": "VEC4"
}
}
]
}
],
"asset": {
"generator": "Khronos glTF Blender I/O v5.2.39",
"version": "2.0"
},
"extensionsRequired": [],
"extensionsUsed": [],
"images": [],
"materials": [
{
"alphaMode": "OPAQUE",
"doubleSided": true,
"emissiveFactor": null,
"name": "M12 Animation Material",
"normalTexture": null,
"pbr": {
"baseColorFactor": [
0.1599999964237213,
0.7200000286102295,
0.3799999952316284,
1
],
"baseColorTexture": null,
"metallicFactor": 0.10000000149011612,
"roughnessFactor": 0.4000000059604645
}
}
],
"meshes": [
{
"name": "M12 Animation Fixture Mesh",
"primitives": [
{
"attributes": {
"NORMAL": {
"componentType": 5126,
"count": 3,
"max": null,
"min": null,
"normalized": false,
"type": "VEC3"
},
"POSITION": {
"componentType": 5126,
"count": 3,
"max": [
0.75,
0,
0.75
],
"min": [
-0.75,
0,
-0.75
],
"normalized": false,
"type": "VEC3"
}
},
"indices": {
"componentType": 5123,
"count": 3,
"max": null,
"min": null,
"normalized": false,
"type": "SCALAR"
},
"material": 0,
"mode": 4,
"targets": []
}
]
}
],
"nodeNames": [
"M12 Animation Fixture"
],
"nodes": [
{
"children": [],
"mesh": 0,
"name": "M12 Animation Fixture",
"rotation": null,
"scale": null,
"skin": null,
"translation": [
-1,
0,
0
]
}
],
"samplers": [],
"scene": 0,
"skins": [],
"textures": []
},
"sha256": "44f6cc47961a146dc97ea337ae31a8b64bb4ab213b716f81ec22129db704f1fb"
}
],
"maxFixtureBytes": 524288,
"nextTask": "M12-06B",
"operation": "DESKTOP_GLB_FIXTURE_GENERATION",
"runtime": {
"binarySha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82",
"blenderVersion": "5.2.0 LTS",
"buildBranch": "unknown",
"buildDate": "2026-07-24",
"buildHash": "unknown",
"buildPlatform": "Linux",
"buildTime": "08:03:47",
"buildType": "Release",
"versionTuple": [
5,
2,
0
]
},
"schemaVersion": 1,
"task": "M12-06A"
}

View File

@@ -0,0 +1,57 @@
{
"schemaVersion": 1,
"task": "M12-06A",
"parentTask": "M12-05F",
"enablingTask": true,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP",
"operation": "DESKTOP_GLB_FIXTURE_GENERATION",
"fixtureIds": [
"mesh",
"pbr",
"uv",
"skin",
"animation"
],
"fixtureCount": 5,
"maxFixtureBytes": 524288,
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-05F/manifest.json",
"sha256": "63e1506801ddee2f1eaf64cad68a9d5c918405f642ca237c6a1ec249ff297623"
},
"generator": {
"path": "tools/web/generate-glb-desktop-fixtures.py",
"sha256": "0247dd2405a68b42d99c2b005546ad2aa99b46416e3fe9489832467f6ea4eb4d"
},
"checker": {
"path": "tools/web/check-glb-desktop-fixtures.mjs",
"sha256": "211ebdb66bf2e2d349455d5303e889a4a1ae3323639a89dd78b3bda574dd820b"
},
"desktopReport": {
"path": "tests/golden/M12-06A/desktop-fixtures.json",
"sha256": "dea31cc861622166dc502b333bc177b70b66b54d9c62aaccc6522745dab5ae13"
},
"meshFixture": {
"path": "tests/files/web/m12_glb_desktop_v1/mesh.glb",
"sha256": "e52b9268b6524744fb498691f976000635e544ba3b47e9f8ff22b03bcdf17a94"
},
"pbrFixture": {
"path": "tests/files/web/m12_glb_desktop_v1/pbr.glb",
"sha256": "244cc8a992c5a70692b8bbc8333533718b3bac7022110715ce3b23d2e4c0b361"
},
"uvFixture": {
"path": "tests/files/web/m12_glb_desktop_v1/uv.glb",
"sha256": "1e0397d2b69d8261b3252451b50ab4aba6525b94713719f35069a9a9d96fcfa2"
},
"skinFixture": {
"path": "tests/files/web/m12_glb_desktop_v1/skin.glb",
"sha256": "4086ee4c8873aa03090338b676575b7a5335fb7c9384fec6ccb36108e71929f6"
},
"animationFixture": {
"path": "tests/files/web/m12_glb_desktop_v1/animation.glb",
"sha256": "44f6cc47961a146dc97ea337ae31a8b64bb4ab213b716f81ec22129db704f1fb"
}
},
"nextTask": "M12-06B"
}

View File

@@ -0,0 +1,63 @@
{
"schemaVersion": 1,
"task": "M12-06B",
"parentTask": "M12-06A",
"enablingTask": true,
"parityStateChange": false,
"runtime": "WEB_TYPESCRIPT_CHROMIUM_WORKER",
"operation": "WEB_GLB_IMPORT_SEMANTIC_COMPARISON",
"fixtureIds": [
"mesh",
"pbr",
"uv",
"skin",
"animation"
],
"comparedDomains": [
"topology",
"attributes",
"materials",
"nodes",
"animations"
],
"routeState": "BLOCKED_UNTIL_MAIN_PERSISTENCE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-06A/manifest.json",
"sha256": "e3554a1e739cbe3f217f6169130532365538b0c0eafbb97afc58d4d56c4287cb"
},
"protocol": {
"path": "web/protocol/glb-import.ts",
"sha256": "45d9a7912c4a59a552789a8ea0dfaff5f1849f8d213f14d238de024b77acdb0d"
},
"generator": {
"path": "tools/web/generate-glb-desktop-import-report.mjs",
"sha256": "6f97527b7da04c7b4f9b09c48b9f367d1270db9f7820498d33832a80754436c2"
},
"checker": {
"path": "tools/web/check-glb-desktop-import.mjs",
"sha256": "804a4b5545d95d7ab1ba265469a981d0a10b71dab36f0c96283eb73b401443d2"
},
"unit": {
"path": "web/tests/unit/glb-desktop-import.test.mjs",
"sha256": "6bf2a96b3e43e5fae93589ea5dcf98e7a69b10266378e442988198925286a8d8"
},
"worker": {
"path": "web/app/src/workers/glb-desktop-import-test.worker.ts",
"sha256": "eb32049631113270fb62acb7ae9379e8ff9a03e38086db2fa309c6891cd707bf"
},
"chromium": {
"path": "web/tests/e2e/glb-desktop-import.spec.ts",
"sha256": "fa3e06419c918406f24b5a4260523bd94cfe729a84786e9434517fdfed624d45"
},
"webImportReport": {
"path": "tests/golden/M12-06B/web-import-report.json",
"sha256": "79933888cc5aa2d1e3639ec349ca4c31d028fe89f751ebb8d4342f06d15ecfc2"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-06C"
}

View File

@@ -0,0 +1,220 @@
{
"schemaVersion": 1,
"task": "M12-06B",
"operation": "WEB_GLB_IMPORT_SEMANTIC_COMPARISON",
"parentManifestSha256": "e3554a1e739cbe3f217f6169130532365538b0c0eafbb97afc58d4d56c4287cb",
"fixtureReportSha256": "dea31cc861622166dc502b333bc177b70b66b54d9c62aaccc6522745dab5ae13",
"fixtureCount": 5,
"comparedDomains": [
"topology",
"attributes",
"materials",
"nodes",
"animations"
],
"allCompatible": true,
"comparisons": [
{
"id": "mesh",
"file": "mesh.glb",
"sourceSha256": "e52b9268b6524744fb498691f976000635e544ba3b47e9f8ff22b03bcdf17a94",
"byteLength": 1236,
"desktopSemanticSha256": "8f9e9049e7d45c6ab0665853efacfd549548b972b12d99b9cf7c5046341c0040",
"webSemanticSha256": "8f9e9049e7d45c6ab0665853efacfd549548b972b12d99b9cf7c5046341c0040",
"compatible": true,
"mismatchCount": 0,
"topology": {
"meshCount": 1,
"primitiveCount": 1,
"indexCount": 6,
"modes": [
4
]
},
"attributes": [
"COLOR_0",
"NORMAL",
"POSITION"
],
"materials": {
"count": 1,
"pbrCount": 1,
"texturedCount": 0
},
"nodes": {
"count": 1,
"namedCount": 1,
"hierarchyEdges": 0,
"skinnedCount": 0
},
"animations": {
"count": 0,
"channelPaths": [],
"sampleCounts": []
}
},
{
"id": "pbr",
"file": "pbr.glb",
"sourceSha256": "244cc8a992c5a70692b8bbc8333533718b3bac7022110715ce3b23d2e4c0b361",
"byteLength": 1208,
"desktopSemanticSha256": "6a44faf6de63ed31261f30a494921c18427779f04c01e3923b2cb92b43e29ad2",
"webSemanticSha256": "6a44faf6de63ed31261f30a494921c18427779f04c01e3923b2cb92b43e29ad2",
"compatible": true,
"mismatchCount": 0,
"topology": {
"meshCount": 1,
"primitiveCount": 1,
"indexCount": 6,
"modes": [
4
]
},
"attributes": [
"NORMAL",
"POSITION"
],
"materials": {
"count": 1,
"pbrCount": 1,
"texturedCount": 0
},
"nodes": {
"count": 1,
"namedCount": 1,
"hierarchyEdges": 0,
"skinnedCount": 0
},
"animations": {
"count": 0,
"channelPaths": [],
"sampleCounts": []
}
},
{
"id": "uv",
"file": "uv.glb",
"sourceSha256": "1e0397d2b69d8261b3252451b50ab4aba6525b94713719f35069a9a9d96fcfa2",
"byteLength": 1704,
"desktopSemanticSha256": "c98257548ff7bf7e83f5a975a7a8988736452ffe39f68f1f48da17297c6ba9a4",
"webSemanticSha256": "c98257548ff7bf7e83f5a975a7a8988736452ffe39f68f1f48da17297c6ba9a4",
"compatible": true,
"mismatchCount": 0,
"topology": {
"meshCount": 1,
"primitiveCount": 1,
"indexCount": 6,
"modes": [
4
]
},
"attributes": [
"NORMAL",
"POSITION",
"TEXCOORD_0"
],
"materials": {
"count": 1,
"pbrCount": 1,
"texturedCount": 1
},
"nodes": {
"count": 1,
"namedCount": 1,
"hierarchyEdges": 0,
"skinnedCount": 0
},
"animations": {
"count": 0,
"channelPaths": [],
"sampleCounts": []
}
},
{
"id": "skin",
"file": "skin.glb",
"sourceSha256": "4086ee4c8873aa03090338b676575b7a5335fb7c9384fec6ccb36108e71929f6",
"byteLength": 1912,
"desktopSemanticSha256": "f1be7ed4b7cf41dfc8a76cd291fa9deb8143c9ed85b2b189408d699447cb1241",
"webSemanticSha256": "f1be7ed4b7cf41dfc8a76cd291fa9deb8143c9ed85b2b189408d699447cb1241",
"compatible": true,
"mismatchCount": 0,
"topology": {
"meshCount": 1,
"primitiveCount": 1,
"indexCount": 6,
"modes": [
4
]
},
"attributes": [
"JOINTS_0",
"NORMAL",
"POSITION",
"WEIGHTS_0"
],
"materials": {
"count": 1,
"pbrCount": 1,
"texturedCount": 0
},
"nodes": {
"count": 4,
"namedCount": 4,
"hierarchyEdges": 3,
"skinnedCount": 1
},
"animations": {
"count": 0,
"channelPaths": [],
"sampleCounts": []
}
},
{
"id": "animation",
"file": "animation.glb",
"sourceSha256": "44f6cc47961a146dc97ea337ae31a8b64bb4ab213b716f81ec22129db704f1fb",
"byteLength": 2616,
"desktopSemanticSha256": "51e28284353b913f01ba43947350fd24000712260886d67fc619dd0d24b1e46e",
"webSemanticSha256": "51e28284353b913f01ba43947350fd24000712260886d67fc619dd0d24b1e46e",
"compatible": true,
"mismatchCount": 0,
"topology": {
"meshCount": 1,
"primitiveCount": 1,
"indexCount": 3,
"modes": [
4
]
},
"attributes": [
"NORMAL",
"POSITION"
],
"materials": {
"count": 1,
"pbrCount": 1,
"texturedCount": 0
},
"nodes": {
"count": 1,
"namedCount": 1,
"hierarchyEdges": 0,
"skinnedCount": 0
},
"animations": {
"count": 1,
"channelPaths": [
"rotation",
"translation"
],
"sampleCounts": [
25,
25
]
}
}
],
"routeState": "BLOCKED_UNTIL_MAIN_PERSISTENCE",
"nextTask": "M12-06C"
}

View File

@@ -0,0 +1,451 @@
{
"blenderVersion": "5.2.0 LTS",
"fixtureCount": 5,
"fixtures": [
{
"blend": {
"byteLength": 88625,
"file": "mesh.blend",
"sha256": "66e29adc016f07e220019b6f24eb7e5016c684dca4b3102b20c8e836968d422d"
},
"glb": {
"file": "mesh.glb",
"sha256": "e52b9268b6524744fb498691f976000635e544ba3b47e9f8ff22b03bcdf17a94"
},
"graph": {
"actions": [],
"armatures": [],
"images": [],
"materials": [
{
"name": "M12 Mesh Material",
"nodeNames": [
"Color Attribute",
"Material Output",
"Principled BSDF"
]
}
],
"meshes": [
{
"materials": [
"M12 Mesh Material"
],
"name": "M12 Mesh Fixture Mesh",
"polygonCount": 2,
"triangleCount": 2,
"uvLayers": [],
"vertexCount": 4
}
],
"objects": [
{
"children": [],
"data": "M12 Mesh Fixture Mesh",
"location": [
0.0,
0.0,
0.0
],
"name": "M12 Mesh Fixture",
"parent": null,
"type": "MESH"
}
],
"stableIds": {
"actions": [],
"armatures": [],
"images": [],
"materials": [
"material:M12 Mesh Material"
],
"meshes": [
"mesh:M12 Mesh Fixture Mesh"
],
"objects": [
"object:M12 Mesh Fixture"
]
}
},
"id": "mesh"
},
{
"blend": {
"byteLength": 88389,
"file": "pbr.blend",
"sha256": "ba08aeb2876d82ddf731abe81d3a42041a1be36617d0b6324c870d5bcd4cc771"
},
"glb": {
"file": "pbr.glb",
"sha256": "244cc8a992c5a70692b8bbc8333533718b3bac7022110715ce3b23d2e4c0b361"
},
"graph": {
"actions": [],
"armatures": [],
"images": [],
"materials": [
{
"name": "M12 PBR Material",
"nodeNames": [
"Material Output",
"Principled BSDF"
]
}
],
"meshes": [
{
"materials": [
"M12 PBR Material"
],
"name": "M12 PBR Fixture Mesh",
"polygonCount": 2,
"triangleCount": 2,
"uvLayers": [],
"vertexCount": 4
}
],
"objects": [
{
"children": [],
"data": "M12 PBR Fixture Mesh",
"location": [
0.0,
0.0,
0.0
],
"name": "M12 PBR Fixture",
"parent": null,
"type": "MESH"
}
],
"stableIds": {
"actions": [],
"armatures": [],
"images": [],
"materials": [
"material:M12 PBR Material"
],
"meshes": [
"mesh:M12 PBR Fixture Mesh"
],
"objects": [
"object:M12 PBR Fixture"
]
}
},
"id": "pbr"
},
{
"blend": {
"byteLength": 89127,
"file": "uv.blend",
"sha256": "1270cb452d34d2fd7a19181a2b20f70b7a028bdd2db7cf1bba4e1003f7de0f48"
},
"glb": {
"file": "uv.glb",
"sha256": "1e0397d2b69d8261b3252451b50ab4aba6525b94713719f35069a9a9d96fcfa2"
},
"graph": {
"actions": [],
"armatures": [],
"images": [
{
"mimeType": "PNG",
"name": "M12 UV Texture",
"packed": true,
"size": [
2,
2
]
}
],
"materials": [
{
"name": "M12 UV Material",
"nodeNames": [
"Image Texture",
"Material Output",
"Principled BSDF"
]
}
],
"meshes": [
{
"materials": [
"M12 UV Material"
],
"name": "M12 UV Fixture Mesh",
"polygonCount": 2,
"triangleCount": 2,
"uvLayers": [
"UVMap"
],
"vertexCount": 4
}
],
"objects": [
{
"children": [],
"data": "M12 UV Fixture Mesh",
"location": [
0.0,
0.0,
0.0
],
"name": "M12 UV Fixture",
"parent": null,
"type": "MESH"
}
],
"stableIds": {
"actions": [],
"armatures": [],
"images": [
"image:M12 UV Texture"
],
"materials": [
"material:M12 UV Material"
],
"meshes": [
"mesh:M12 UV Fixture Mesh"
],
"objects": [
"object:M12 UV Fixture"
]
}
},
"id": "uv"
},
{
"blend": {
"byteLength": 91781,
"file": "skin.blend",
"sha256": "23f175e44ec588c75db99d3f9134863fc3d7d1f192bbd815d5d1c4e3218bce0c"
},
"glb": {
"file": "skin.glb",
"sha256": "4086ee4c8873aa03090338b676575b7a5335fb7c9384fec6ccb36108e71929f6"
},
"graph": {
"actions": [],
"armatures": [
{
"bones": [
{
"name": "Root",
"parent": null
},
{
"name": "Tip",
"parent": "Root"
}
],
"name": "M12 Skin Armature"
}
],
"images": [],
"materials": [
{
"name": "M12 Skin Material",
"nodeNames": [
"Material Output",
"Principled BSDF"
]
}
],
"meshes": [
{
"materials": [],
"name": "Icosphere",
"polygonCount": 80,
"triangleCount": 80,
"uvLayers": [
"UVMap"
],
"vertexCount": 42
},
{
"materials": [
"M12 Skin Material"
],
"name": "M12 Skin Fixture Mesh",
"polygonCount": 2,
"triangleCount": 2,
"uvLayers": [],
"vertexCount": 4
}
],
"objects": [
{
"children": [],
"data": "Icosphere",
"location": [
0.0,
0.0,
0.0
],
"name": "Icosphere",
"parent": null,
"type": "MESH"
},
{
"children": [
"M12 Skin Fixture"
],
"data": "M12 Skin Armature",
"location": [
0.0,
0.0,
0.0
],
"name": "M12 Skin Armature",
"parent": null,
"type": "ARMATURE"
},
{
"children": [],
"data": "M12 Skin Fixture Mesh",
"location": [
0.0,
0.0,
0.0
],
"name": "M12 Skin Fixture",
"parent": "M12 Skin Armature",
"type": "MESH"
}
],
"stableIds": {
"actions": [],
"armatures": [
"armature:M12 Skin Armature"
],
"images": [],
"materials": [
"material:M12 Skin Material"
],
"meshes": [
"mesh:Icosphere",
"mesh:M12 Skin Fixture Mesh"
],
"objects": [
"object:Icosphere",
"object:M12 Skin Armature",
"object:M12 Skin Fixture"
]
}
},
"id": "skin"
},
{
"blend": {
"byteLength": 91107,
"file": "animation.blend",
"sha256": "fa6baf3a67ff11fe3d2922210089a7c508e4ee28bfaabe4cf628ba6addee1ff5"
},
"glb": {
"file": "animation.glb",
"sha256": "44f6cc47961a146dc97ea337ae31a8b64bb4ab213b716f81ec22129db704f1fb"
},
"graph": {
"actions": [
{
"fcurves": [
[
"location",
0
],
[
"location",
1
],
[
"location",
2
],
[
"rotation_quaternion",
0
],
[
"rotation_quaternion",
1
],
[
"rotation_quaternion",
2
],
[
"rotation_quaternion",
3
]
],
"frameRange": [
1.0,
25.0
],
"name": "M12 Animation Action"
}
],
"armatures": [],
"images": [],
"materials": [
{
"name": "M12 Animation Material",
"nodeNames": [
"Material Output",
"Principled BSDF"
]
}
],
"meshes": [
{
"materials": [
"M12 Animation Material"
],
"name": "M12 Animation Fixture Mesh",
"polygonCount": 1,
"triangleCount": 1,
"uvLayers": [],
"vertexCount": 3
}
],
"objects": [
{
"children": [],
"data": "M12 Animation Fixture Mesh",
"location": [
-1.0,
-0.0,
0.0
],
"name": "M12 Animation Fixture",
"parent": null,
"type": "MESH"
}
],
"stableIds": {
"actions": [
"action:M12 Animation Action:object:M12 Animation Fixture"
],
"armatures": [],
"images": [],
"materials": [
"material:M12 Animation Material"
],
"meshes": [
"mesh:M12 Animation Fixture Mesh"
],
"objects": [
"object:M12 Animation Fixture"
]
}
},
"id": "animation"
}
],
"nextTask": "M12-06D",
"operation": "DESKTOP_GLB_IMPORT_MAIN_PERSISTENCE_BASELINE",
"schemaVersion": 1,
"task": "M12-06C"
}

View File

@@ -0,0 +1,64 @@
{
"schemaVersion": 1,
"task": "M12-06C",
"parentTask": "M12-06B",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP_WASM_CHROMIUM",
"operation": "GLB_IMPORT_MAIN_SAVE_REOPEN",
"assertions": {
"fixtureCount": 5,
"desktopImportSaveReopen": true,
"webMainAuthority": true,
"oneVisibilityTransaction": true,
"stableIdsPreserved": true,
"resourceCountersZeroAfterOpen": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-06B/manifest.json",
"sha256": "5275310394b34726a05b30ab67658e1381662dddf9163a97cb02f47f646a8fa4"
},
"generator": {
"path": "tools/web/generate-glb-main-persistence-fixtures.py",
"sha256": "8989d6ce4196f140a7bfb44b863dc530a6aa462ca4a57fa7b77c468e06ab61ad"
},
"checker": {
"path": "tools/web/check-glb-main-persistence.mjs",
"sha256": "5bbbbeaf2d20ff9bbdeb74c8dd10fa6ffc421d1d59f86540e95f29c2cfd10903"
},
"desktopReport": {
"path": "tests/golden/M12-06C/desktop-main-report.json",
"sha256": "76b000454a9073ef762d25fa546d5c65a004659a93eb6ec82fad1e679b2e81be"
},
"chromium": {
"path": "web/tests/e2e/glb-main-persistence.spec.ts",
"sha256": "7c97877f1cbbfd0166e106c80faee53f474f78816cca68ea924df5aa3c47776d"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
},
"meshBlend": {
"path": "tests/files/web/m12_glb_main_v1/mesh.blend",
"sha256": "66e29adc016f07e220019b6f24eb7e5016c684dca4b3102b20c8e836968d422d"
},
"pbrBlend": {
"path": "tests/files/web/m12_glb_main_v1/pbr.blend",
"sha256": "ba08aeb2876d82ddf731abe81d3a42041a1be36617d0b6324c870d5bcd4cc771"
},
"uvBlend": {
"path": "tests/files/web/m12_glb_main_v1/uv.blend",
"sha256": "1270cb452d34d2fd7a19181a2b20f70b7a028bdd2db7cf1bba4e1003f7de0f48"
},
"skinBlend": {
"path": "tests/files/web/m12_glb_main_v1/skin.blend",
"sha256": "23f175e44ec588c75db99d3f9134863fc3d7d1f192bbd815d5d1c4e3218bce0c"
},
"animationBlend": {
"path": "tests/files/web/m12_glb_main_v1/animation.blend",
"sha256": "fa6baf3a67ff11fe3d2922210089a7c508e4ee28bfaabe4cf628ba6addee1ff5"
}
},
"nextTask": "M12-06D"
}

View File

@@ -0,0 +1,55 @@
{
"schemaVersion": 1,
"task": "M12-06D",
"parentTask": "M12-06C",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_WASM_CHROMIUM",
"operation": "GLB_EXPORT_LOSS_REPORT",
"assertions": {
"fixtureCount": 5,
"machineReport": true,
"unsupportedShaderFailsClosed": true,
"exportableFixtureOutputsHashed": true,
"warningOrderDeterministic": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-06C/manifest.json",
"sha256": "e3a57636a47591e3b02dff5a07e8a0aec5e0dc43bf6b4829bffc811035dbbb31"
},
"exportProtocol": {
"path": "web/protocol/glb-export.ts",
"sha256": "a5d342827860a9e55b49a3bb3a196a01b1e53546325d6e594778afb9360c3125"
},
"lossReportProtocol": {
"path": "web/protocol/glb-loss-report.ts",
"sha256": "dce9c790b2f52d46efe0908ecb044d63d21b3c6c3f7d77ddb5e697b29a7a2d6e"
},
"worker": {
"path": "web/app/src/workers/glb-loss-report-test.worker.ts",
"sha256": "6f6294d26fe7b717416a5dd25fe834fb4b9a2ecbe8b011395c9559a26701ec77"
},
"chromium": {
"path": "web/tests/e2e/glb-export-loss-report.spec.ts",
"sha256": "ce334b6bb5d82c133d317e916c03711029fba1c19c634dec06c06da9eddbd776"
},
"checker": {
"path": "tools/web/check-glb-loss-report.mjs",
"sha256": "a23346860fa26405b2cd24591b0ab36fea29cb561ec8c2991ecfeabcffc17ee1"
},
"unit": {
"path": "web/tests/unit/glb-loss-report.test.mjs",
"sha256": "dfcc2d968e4e0c0cef4496bc304cb481f10d1f0dc4c76a40ea1d6e2f11b6b708"
},
"webLossReport": {
"path": "tests/golden/M12-06D/web-loss-report.json",
"sha256": "c6db52234d867985ef5fbcdc7c62298ec9aaa013028b5a54e2b9a16aa4133397"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-06E"
}

View File

@@ -0,0 +1,163 @@
{
"schemaVersion": 1,
"task": "M12-06D",
"operation": "WEB_GLB_EXPORT_LOSS_REPORT",
"fixtureCount": 5,
"fixtures": [
{
"fixtureId": "mesh",
"sourceBlendSha256": "66e29adc016f07e220019b6f24eb7e5016c684dca4b3102b20c8e836968d422d",
"lossReport": {
"schemaVersion": 1,
"operation": "GLB_EXPORT_LOSS_REPORT",
"sceneId": "scene:Scene",
"sourceRevision": 1,
"canExport": false,
"errorCount": 1,
"warningCount": 1,
"losses": [
{
"code": "LINKED_MATERIAL_INPUT_UNEVALUATED",
"severity": "warning",
"message": "Material M12 Mesh Material contains unevaluated linked inputs",
"id": "material:M12 Mesh Material"
},
{
"code": "SHADER_GRAPH_UNMAPPABLE",
"severity": "error",
"message": "Material M12 Mesh Material: Shader node UNSUPPORTED cannot be represented by glTF PBR",
"id": "material:M12 Mesh Material"
}
],
"surface": {
"nodeCount": 1,
"meshCount": 1,
"materialCount": 1,
"imageCount": 0,
"animationCount": 0,
"nonMeshCount": 0
}
},
"output": null
},
{
"fixtureId": "pbr",
"sourceBlendSha256": "ba08aeb2876d82ddf731abe81d3a42041a1be36617d0b6324c870d5bcd4cc771",
"lossReport": {
"schemaVersion": 1,
"operation": "GLB_EXPORT_LOSS_REPORT",
"sceneId": "scene:Scene",
"sourceRevision": 1,
"canExport": true,
"errorCount": 0,
"warningCount": 0,
"losses": [],
"surface": {
"nodeCount": 1,
"meshCount": 1,
"materialCount": 1,
"imageCount": 0,
"animationCount": 0,
"nonMeshCount": 0
}
},
"output": {
"byteLength": 1840,
"sha256": "1ab7936fae6e0c28e1b90e8a6ae24b3893c075c9fc58ac8896f780fdefb8277e"
}
},
{
"fixtureId": "uv",
"sourceBlendSha256": "1270cb452d34d2fd7a19181a2b20f70b7a028bdd2db7cf1bba4e1003f7de0f48",
"lossReport": {
"schemaVersion": 1,
"operation": "GLB_EXPORT_LOSS_REPORT",
"sceneId": "scene:Scene",
"sourceRevision": 1,
"canExport": true,
"errorCount": 0,
"warningCount": 1,
"losses": [
{
"code": "LINKED_MATERIAL_INPUT_UNEVALUATED",
"severity": "warning",
"message": "Material M12 UV Material contains unevaluated linked inputs",
"id": "material:M12 UV Material"
}
],
"surface": {
"nodeCount": 1,
"meshCount": 1,
"materialCount": 1,
"imageCount": 1,
"animationCount": 0,
"nonMeshCount": 0
}
},
"output": {
"byteLength": 2756,
"sha256": "8bd045388527ddad7cf886c0c7a2a45b6e7d6db603568a10a959bc6d423ae145"
}
},
{
"fixtureId": "skin",
"sourceBlendSha256": "23f175e44ec588c75db99d3f9134863fc3d7d1f192bbd815d5d1c4e3218bce0c",
"lossReport": {
"schemaVersion": 1,
"operation": "GLB_EXPORT_LOSS_REPORT",
"sceneId": "scene:Scene",
"sourceRevision": 1,
"canExport": true,
"errorCount": 0,
"warningCount": 1,
"losses": [
{
"code": "MODIFIER_STACK_NOT_BAKED",
"severity": "warning",
"message": "Mesh M12 Skin Fixture Mesh has enabled modifiers that are not baked for export",
"id": "mesh:M12 Skin Fixture Mesh"
}
],
"surface": {
"nodeCount": 3,
"meshCount": 2,
"materialCount": 1,
"imageCount": 0,
"animationCount": 0,
"nonMeshCount": 0
}
},
"output": {
"byteLength": 14264,
"sha256": "4a45d00dfa23638682bb61a4f74b283bcd986126da4890d068902e3c85efc332"
}
},
{
"fixtureId": "animation",
"sourceBlendSha256": "fa6baf3a67ff11fe3d2922210089a7c508e4ee28bfaabe4cf628ba6addee1ff5",
"lossReport": {
"schemaVersion": 1,
"operation": "GLB_EXPORT_LOSS_REPORT",
"sceneId": "scene:Scene",
"sourceRevision": 1,
"canExport": true,
"errorCount": 0,
"warningCount": 0,
"losses": [],
"surface": {
"nodeCount": 1,
"meshCount": 1,
"materialCount": 1,
"imageCount": 0,
"animationCount": 1,
"nonMeshCount": 0
}
},
"output": {
"byteLength": 3708,
"sha256": "b83de103df3f5a49487868f3ede3046875c90b0d084bbd998511c3a7c987a4fa"
}
}
],
"nextTask": "M12-06E"
}

View File

@@ -0,0 +1,393 @@
{
"blenderVersion": "5.2.0 LTS",
"fixtureCount": 4,
"fixtures": [
{
"glb": {
"byteLength": 1840,
"file": "pbr.glb",
"sha256": "1ab7936fae6e0c28e1b90e8a6ae24b3893c075c9fc58ac8896f780fdefb8277e"
},
"graph": {
"actions": [],
"armatures": [],
"images": [],
"materials": [
{
"name": "M12 PBR Material",
"nodeNames": [
"Material Output",
"Principled BSDF"
]
}
],
"meshes": [
{
"materials": [
"M12 PBR Material"
],
"name": "M12 PBR Fixture Mesh",
"polygonCount": 2,
"triangleCount": 2,
"uvLayers": [],
"vertexCount": 4
}
],
"objects": [
{
"children": [],
"data": "M12 PBR Fixture Mesh",
"location": [
0.0,
0.0,
0.0
],
"name": "M12 PBR Fixture",
"parent": null,
"type": "MESH"
}
],
"stableIds": {
"actions": [],
"armatures": [],
"images": [],
"materials": [
"material:M12 PBR Material"
],
"meshes": [
"mesh:M12 PBR Fixture Mesh"
],
"objects": [
"object:M12 PBR Fixture"
]
}
},
"id": "pbr"
},
{
"glb": {
"byteLength": 2756,
"file": "uv.glb",
"sha256": "8bd045388527ddad7cf886c0c7a2a45b6e7d6db603568a10a959bc6d423ae145"
},
"graph": {
"actions": [],
"armatures": [],
"images": [
{
"mimeType": "PNG",
"name": "M12 UV Texture",
"packed": true,
"size": [
2,
2
]
}
],
"materials": [
{
"name": "M12 UV Material",
"nodeNames": [
"Image Texture",
"Material Output",
"Mix",
"Principled BSDF"
]
}
],
"meshes": [
{
"materials": [
"M12 UV Material"
],
"name": "M12 UV Fixture Mesh",
"polygonCount": 2,
"triangleCount": 2,
"uvLayers": [
"UVMap"
],
"vertexCount": 6
}
],
"objects": [
{
"children": [],
"data": "M12 UV Fixture Mesh",
"location": [
0.0,
0.0,
0.0
],
"name": "M12 UV Fixture",
"parent": null,
"type": "MESH"
}
],
"stableIds": {
"actions": [],
"armatures": [],
"images": [
"image:M12 UV Texture"
],
"materials": [
"material:M12 UV Material"
],
"meshes": [
"mesh:M12 UV Fixture Mesh"
],
"objects": [
"object:M12 UV Fixture"
]
}
},
"id": "uv"
},
{
"glb": {
"byteLength": 14264,
"file": "skin.glb",
"sha256": "4a45d00dfa23638682bb61a4f74b283bcd986126da4890d068902e3c85efc332"
},
"graph": {
"actions": [],
"armatures": [
{
"bones": [
{
"name": "Root",
"parent": null
},
{
"name": "Tip",
"parent": "Root"
}
],
"name": "M12 Skin Armature"
}
],
"images": [],
"materials": [
{
"name": "M12 Skin Material",
"nodeNames": [
"Material Output",
"Principled BSDF"
]
}
],
"meshes": [
{
"materials": [],
"name": "Icosphere",
"polygonCount": 80,
"triangleCount": 80,
"uvLayers": [
"UVMap"
],
"vertexCount": 240
},
{
"materials": [],
"name": "Icosphere.001",
"polygonCount": 80,
"triangleCount": 80,
"uvLayers": [
"UVMap"
],
"vertexCount": 42
},
{
"materials": [
"M12 Skin Material"
],
"name": "M12 Skin Fixture Mesh",
"polygonCount": 2,
"triangleCount": 2,
"uvLayers": [],
"vertexCount": 4
}
],
"objects": [
{
"children": [],
"data": "Icosphere",
"location": [
0.0,
0.0,
0.0
],
"name": "Icosphere",
"parent": null,
"type": "MESH"
},
{
"children": [],
"data": "Icosphere.001",
"location": [
0.0,
0.0,
0.0
],
"name": "Icosphere.001",
"parent": null,
"type": "MESH"
},
{
"children": [
"M12 Skin Fixture"
],
"data": "M12 Skin Armature",
"location": [
0.0,
0.0,
0.0
],
"name": "M12 Skin Armature",
"parent": null,
"type": "ARMATURE"
},
{
"children": [],
"data": "M12 Skin Fixture Mesh",
"location": [
0.0,
0.0,
0.0
],
"name": "M12 Skin Fixture",
"parent": "M12 Skin Armature",
"type": "MESH"
}
],
"stableIds": {
"actions": [],
"armatures": [
"armature:M12 Skin Armature"
],
"images": [],
"materials": [
"material:M12 Skin Material"
],
"meshes": [
"mesh:Icosphere",
"mesh:Icosphere.001",
"mesh:M12 Skin Fixture Mesh"
],
"objects": [
"object:Icosphere",
"object:Icosphere.001",
"object:M12 Skin Armature",
"object:M12 Skin Fixture"
]
}
},
"id": "skin"
},
{
"glb": {
"byteLength": 3708,
"file": "animation.glb",
"sha256": "b83de103df3f5a49487868f3ede3046875c90b0d084bbd998511c3a7c987a4fa"
},
"graph": {
"actions": [
{
"fcurves": [
[
"location",
0
],
[
"location",
1
],
[
"location",
2
],
[
"rotation_quaternion",
0
],
[
"rotation_quaternion",
1
],
[
"rotation_quaternion",
2
],
[
"rotation_quaternion",
3
]
],
"frameRange": [
1.0,
25.0
],
"name": "M12 Animation Action"
}
],
"armatures": [],
"images": [],
"materials": [
{
"name": "M12 Animation Material",
"nodeNames": [
"Material Output",
"Principled BSDF"
]
}
],
"meshes": [
{
"materials": [
"M12 Animation Material"
],
"name": "M12 Animation Fixture Mesh",
"polygonCount": 1,
"triangleCount": 1,
"uvLayers": [],
"vertexCount": 3
}
],
"objects": [
{
"children": [],
"data": "M12 Animation Fixture Mesh",
"location": [
-1.0,
-0.0,
0.0
],
"name": "M12 Animation Fixture",
"parent": null,
"type": "MESH"
}
],
"stableIds": {
"actions": [
"action:M12 Animation Action:object:M12 Animation Fixture"
],
"armatures": [],
"images": [],
"materials": [
"material:M12 Animation Material"
],
"meshes": [
"mesh:M12 Animation Fixture Mesh"
],
"objects": [
"object:M12 Animation Fixture"
]
}
},
"id": "animation"
}
],
"nextTask": "M12-06F",
"operation": "DESKTOP_REIMPORT_WEB_GLB_CANONICAL_REPORT",
"schemaVersion": 1,
"task": "M12-06E"
}

View File

@@ -0,0 +1,60 @@
{
"schemaVersion": 1,
"task": "M12-06E",
"parentTask": "M12-06D",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP",
"operation": "DESKTOP_REIMPORT_WEB_GLB_CANONICAL_REPORT",
"assertions": {
"fixtureCount": 4,
"desktopReimportSaveReopen": true,
"exactFixtures": ["pbr", "animation"],
"knownMismatchedFixtures": ["uv", "skin"],
"mismatchesReported": true,
"deterministicReport": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-06D/manifest.json",
"sha256": "c01c5861d493e1f177e8cde3038bc5283a7671fa39bf84484662d307623325a2"
},
"generator": {
"path": "tools/web/generate-glb-web-reimport-report.py",
"sha256": "3ae1ba45e15cae5d0308fc3fcb3766764cd374c096e27eaaddba9228a3d75004"
},
"checker": {
"path": "tools/web/check-glb-web-reimport.mjs",
"sha256": "c21b45a975ec70586da1b9e50b8cf4ccf74644300b4f381c3fee0ad735cfcdb9"
},
"desktopReport": {
"path": "tests/golden/M12-06E/desktop-reimport-report.json",
"sha256": "e4d03d25cfac3c4beff4d0af0769b1c39b058670c679c12f4a11ae30d2d91f3c"
},
"webExportTest": {
"path": "web/tests/e2e/glb-export-loss-report.spec.ts",
"sha256": "ce334b6bb5d82c133d317e916c03711029fba1c19c634dec06c06da9eddbd776"
},
"pbrGLB": {
"path": "tests/files/web/m12_glb_web_v1/pbr.glb",
"sha256": "1ab7936fae6e0c28e1b90e8a6ae24b3893c075c9fc58ac8896f780fdefb8277e"
},
"uvGLB": {
"path": "tests/files/web/m12_glb_web_v1/uv.glb",
"sha256": "8bd045388527ddad7cf886c0c7a2a45b6e7d6db603568a10a959bc6d423ae145"
},
"skinGLB": {
"path": "tests/files/web/m12_glb_web_v1/skin.glb",
"sha256": "4a45d00dfa23638682bb61a4f74b283bcd986126da4890d068902e3c85efc332"
},
"animationGLB": {
"path": "tests/files/web/m12_glb_web_v1/animation.glb",
"sha256": "b83de103df3f5a49487868f3ede3046875c90b0d084bbd998511c3a7c987a4fa"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-06F"
}

View File

@@ -0,0 +1,51 @@
{
"schemaVersion": 1,
"task": "M12-06F",
"parentTask": "M12-06E",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_TYPESCRIPT_CHROMIUM_WORKER",
"operation": "GLB_IMPORT_NEGATIVE_CASES",
"assertions": {
"sparseAccessor": "GLB_SPARSE_ACCESSOR_UNSUPPORTED",
"extensions": "GLB_EXTENSION_UNSUPPORTED",
"externalUri": "GLB_EXTERNAL_URI_BLOCKED",
"overBudget": "GLB_IMPORT_BUDGET_EXCEEDED",
"browserWorker": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-06E/manifest.json",
"sha256": "3d3b13fd54a314fd6f6907fc2d314e66ef74e8ca770a8accd823370d272737fc"
},
"protocol": {
"path": "web/protocol/glb-import.ts",
"sha256": "0b6329c08e6f3cd9af6f27ef7c463b037a7cab94192afb4538d3d6c4cfcbc147"
},
"unit": {
"path": "web/tests/unit/glb-negative-cases.test.mjs",
"sha256": "9af1c155143a0c685a62f569f705afd9fcc3bb49e0d724ebf3ad2c6356d63d6d"
},
"worker": {
"path": "web/app/src/workers/glb-negative-cases-test.worker.ts",
"sha256": "d84a6b884ce1bfedd598b2602d803493bf10f6ad62fdfac49d64fca3f30f3931"
},
"chromium": {
"path": "web/tests/e2e/glb-negative-cases.spec.ts",
"sha256": "c6694689ce04ff2faea2c20be648f438a9f7eb25cdfd2f714b94c1f556ea1510"
},
"checker": {
"path": "tools/web/check-glb-negative-cases.mjs",
"sha256": "08377c306fd7d1082f7fd734e37809960c9798d29d626681fe9ad3f94cb7a29e"
},
"report": {
"path": "tests/golden/M12-06F/negative-report.json",
"sha256": "7367a624b562a9613b4b908c894ab04c731ae0a348a3b58689075f4a9decd90c"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-06G"
}

View File

@@ -0,0 +1,18 @@
{
"schemaVersion": 1,
"task": "M12-06F",
"operation": "GLB_IMPORT_NEGATIVE_CASES",
"budget": {
"maxBytes": 524288,
"maxJsonBytes": 262144,
"maxBufferViews": 4096,
"maxAccessors": 8192
},
"cases": [
{ "id": "sparse", "code": "GLB_SPARSE_ACCESSOR_UNSUPPORTED" },
{ "id": "extension", "code": "GLB_EXTENSION_UNSUPPORTED" },
{ "id": "external-uri", "code": "GLB_EXTERNAL_URI_BLOCKED" },
{ "id": "over-budget", "code": "GLB_IMPORT_BUDGET_EXCEEDED" }
],
"nextTask": "M12-06G"
}

View File

@@ -0,0 +1,69 @@
{
"schemaVersion": 1,
"task": "M12-06G",
"parentTask": "M12-06F",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_TYPESCRIPT_CHROMIUM_WORKER_OPFS",
"operation": "GLB_IMPORT_EXPORT_RECOVERY",
"assertions": {
"importCancellation": "GLB_OPERATION_CANCELLED",
"exportCancellation": "GLB_OPERATION_CANCELLED",
"workerRestart": "GLB_WORKER_RESTARTED",
"opfsQuota": "GLB_OPFS_QUOTA",
"temporaryResourcesAfterCancel": 0,
"committedAssetPreserved": true,
"smallAssetRecovery": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-06F/manifest.json",
"sha256": "27b42da0683dab11a884553440088c30cf58d51364268fdaac86668786aaedd4"
},
"protocol": {
"path": "web/protocol/glb-recovery.ts",
"sha256": "da4e2a546d7598e80798cfebd105e52b7522c896acb545710c78bb8a5c3705aa"
},
"storageProtocol": {
"path": "web/protocol/storage.ts",
"sha256": "2c8ce9e32fcae973e9262a024fd849221680104bcd427ec308f99ef25112d951"
},
"storageClient": {
"path": "web/app/src/storage/StorageClient.ts",
"sha256": "00cd35e4632479e4cd153314113e201c822fd209ae6c8e9fbeff5f1399728565"
},
"storageWorker": {
"path": "web/app/src/workers/storage.worker.ts",
"sha256": "80bf4d2ac59cbf7998c2a72c8961ae38abe43685b60df564d0746e1a45e9e1bc"
},
"operationWorker": {
"path": "web/app/src/workers/glb-recovery-test.worker.ts",
"sha256": "947c4a768422725ff2f689b2eefa8068bee51bb7ff342af17e8d4a4d0a4a7ca2"
},
"browserAdapter": {
"path": "web/app/src/testing/glb-recovery.ts",
"sha256": "2c753a04c153471c2bf7691073b836d968a1a1300e3da038f493983b46738cdf"
},
"unit": {
"path": "web/tests/unit/glb-recovery.test.mjs",
"sha256": "6dd48f62a85c5aaf3a04b6e572a47a7986b23cbec84a099ea510af81e8dd3a3a"
},
"chromium": {
"path": "web/tests/e2e/glb-recovery.spec.ts",
"sha256": "7d95e992f44fb913f70c104f0d6b23bd76f47d48db4a21899e35ae1d188e2093"
},
"checker": {
"path": "tools/web/check-glb-recovery.mjs",
"sha256": "b185248fdcd6b3cee84252bd68fcb6921bb6385bfa4a00486e93c58e94755cce"
},
"report": {
"path": "tests/golden/M12-06G/recovery-report.json",
"sha256": "1a008a76590573468446ca6e5cbdfe0ea5a8b27493291590d937b90db90d6e42"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-07A"
}

View File

@@ -0,0 +1,41 @@
{
"schemaVersion": 1,
"task": "M12-06G",
"operation": "GLB_IMPORT_EXPORT_RECOVERY",
"cancellation": [
{
"operation": "IMPORT",
"status": "CANCELLED",
"code": "GLB_OPERATION_CANCELLED",
"committed": false,
"temporaryBytes": 0,
"liveRequests": 0
},
{
"operation": "EXPORT",
"status": "CANCELLED",
"code": "GLB_OPERATION_CANCELLED",
"committed": false,
"temporaryBytes": 0,
"liveRequests": 0
}
],
"workerRestart": {
"operation": "IMPORT",
"generationBefore": 1,
"generationAfter": 2,
"status": "RECOVERED",
"code": "GLB_WORKER_RESTARTED",
"resultHash": "EXACT"
},
"opfsQuota": {
"operation": "EXPORT_ASSET_COMMIT",
"status": "BLOCKED",
"code": "GLB_OPFS_QUOTA",
"backend": "OPFS",
"committedAssetPreserved": true,
"workerRestart": true,
"smallAssetRecovery": true
},
"nextTask": "M12-07A"
}

View File

@@ -0,0 +1,223 @@
{
"files": [
{
"byteLength": 465,
"name": "single-mesh.obj",
"sha256": "a56694d1ee28735c68381ff18c3a52581612feebac0101a53e502956c27d144f"
},
{
"byteLength": 426,
"name": "single-mesh.mtl",
"sha256": "392f1b10ff5a0b142d520a9443b4c96191985f15d4244c79b36fdeda0f153715"
}
],
"nextTask": "M12-07B",
"operation": "DESKTOP_OBJ_SINGLE_MESH_FIXTURE",
"operator": "wm.obj_export",
"runtime": {
"binarySha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82",
"blenderVersion": "5.2.0 LTS",
"buildBranch": "unknown",
"buildDate": "2026-07-24",
"buildHash": "unknown",
"buildPlatform": "Linux",
"buildTime": "08:03:47",
"buildType": "Release",
"versionTuple": [
5,
2,
0
]
},
"schemaVersion": 1,
"semantic": {
"faces": [
{
"groups": [
"M12_OBJ_Single_Mesh_M12_OBJ_Red"
],
"material": "M12_OBJ_Red",
"vertices": [
{
"normal": 1,
"position": 1,
"texcoord": 1
},
{
"normal": 1,
"position": 2,
"texcoord": 2
},
{
"normal": 1,
"position": 3,
"texcoord": 3
}
]
},
{
"groups": [
"M12_OBJ_Single_Mesh_M12_OBJ_Blue"
],
"material": "M12_OBJ_Blue",
"vertices": [
{
"normal": 1,
"position": 1,
"texcoord": 1
},
{
"normal": 1,
"position": 3,
"texcoord": 3
},
{
"normal": 1,
"position": 4,
"texcoord": 4
}
]
}
],
"materialLibraries": [
"single-mesh.mtl"
],
"materials": [
{
"name": "M12_OBJ_Blue",
"properties": {
"Ka": [
1.0,
1.0,
1.0
],
"Kd": [
0.8,
0.8,
0.8
],
"Ke": [
0.0,
0.0,
0.0
],
"Ks": [
0.5,
0.5,
0.5
],
"Ni": [
1.5
],
"Ns": [
250.0
],
"d": [
1.0
],
"illum": [
2.0
]
}
},
{
"name": "M12_OBJ_Red",
"properties": {
"Ka": [
1.0,
1.0,
1.0
],
"Kd": [
0.8,
0.8,
0.8
],
"Ke": [
0.0,
0.0,
0.0
],
"Ks": [
0.5,
0.5,
0.5
],
"Ni": [
1.5
],
"Ns": [
250.0
],
"d": [
1.0
],
"illum": [
2.0
]
}
}
],
"normals": [
[
0.0,
1.0,
0.0
]
],
"objects": [
"M12_OBJ_Single_Mesh"
],
"positions": [
[
-1.0,
0.0,
1.0
],
[
1.0,
0.0,
1.0
],
[
1.0,
0.0,
-1.0
],
[
-1.0,
0.0,
-1.0
]
],
"texcoords": [
[
0.0,
0.0
],
[
1.0,
0.0
],
[
1.0,
1.0
],
[
0.0,
1.0
]
]
},
"settings": {
"exportMaterialGroups": true,
"exportMaterials": true,
"exportNormals": true,
"exportUV": true,
"forwardAxis": "NEGATIVE_Z",
"globalScale": 1.0,
"upAxis": "Y"
},
"sourceAnchor": "blender-5.2.0/source/blender/io/wavefront_obj",
"task": "M12-07A"
}

View File

@@ -0,0 +1,56 @@
{
"schemaVersion": 1,
"task": "M12-07A",
"parentTask": "M12-06G",
"enablingTask": true,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP",
"operation": "DESKTOP_OBJ_SINGLE_MESH_FIXTURE",
"assertions": {
"sourceAnchor": "blender-5.2.0/source/blender/io/wavefront_obj",
"operator": "wm.obj_export",
"objectCount": 1,
"positionCount": 4,
"normalCount": 1,
"uvCount": 4,
"faceCount": 2,
"materialCount": 2,
"materialGroupCount": 2,
"deterministicRegeneration": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-06G/manifest.json",
"sha256": "1c732b8d9f1a0bdb502f44e2e843e91efea12e93483a35658f8a9c70a69a2430"
},
"generator": {
"path": "tools/web/generate-obj-single-mesh-fixture.py",
"sha256": "604c3006f194c7c64a487b8f760693b66830f3cfa602928b46769955e7d4f358"
},
"checker": {
"path": "tools/web/check-obj-single-mesh-fixture.mjs",
"sha256": "3d0208f61a86d4d29796d8284756f53931c90864b15b7dfe4fcc84d7f65a8040"
},
"desktopReport": {
"path": "tests/golden/M12-07A/desktop-fixture.json",
"sha256": "6c560a8eecf84973c2b05f9fd50d33bd45515e97c4f7970f1502de406c39f6a5"
},
"objFixture": {
"path": "tests/files/web/m12_obj_desktop_v1/single-mesh.obj",
"sha256": "a56694d1ee28735c68381ff18c3a52581612feebac0101a53e502956c27d144f"
},
"mtlFixture": {
"path": "tests/files/web/m12_obj_desktop_v1/single-mesh.mtl",
"sha256": "392f1b10ff5a0b142d520a9443b4c96191985f15d4244c79b36fdeda0f153715"
},
"runtimeInventory": {
"path": "tests/golden/M12-05A/format-inventory.json",
"sha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-07B"
}

View File

@@ -0,0 +1,223 @@
{
"files": [
{
"byteLength": 670,
"name": "multi-object.obj",
"sha256": "4ed3dced8445b03754cd3916ae2e8cf0dff85e6a5882f1c6f0a4a4e4c5251f6a"
},
{
"byteLength": 440,
"name": "multi-object.mtl",
"sha256": "80338f569c67a8b1616515ba878ffc72b26e93ef2e8c361131023fb14f132f5f"
},
{
"byteLength": 261,
"name": "m12_obj_texture.png",
"sha256": "44e4fd08bdda8403908349e2a62dcf103ce2d0851099fc61cd868d65ddbef78c"
},
{
"byteLength": 688,
"name": "negative-index.obj",
"sha256": "9457954284cac1d68e23627e3ff734c0c591b3a24086ce5aa3d0dbbfc22f01bc"
},
{
"byteLength": 664,
"name": "malformed-face.obj",
"sha256": "6dd508b5ba944c2d15e2889c9ad9a3693845145c3bf6c9bf7df992081c915864"
}
],
"malformedFace": {
"expectedCode": "OBJ_FACE_ARITY_INVALID",
"file": "malformed-face.obj"
},
"negativeIndex": {
"expectedStatus": "ACCEPT_WITH_NEGATIVE_INDICES",
"faceCount": 2,
"file": "negative-index.obj"
},
"nextTask": "M12-07C",
"operation": "DESKTOP_OBJ_MULTI_OBJECT_AND_NEGATIVE_FIXTURES",
"operator": "wm.obj_export",
"runtime": {
"binarySha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82",
"blenderVersion": "5.2.0 LTS",
"buildBranch": "unknown",
"buildDate": "2026-07-24",
"buildHash": "unknown",
"buildPlatform": "Linux",
"buildTime": "08:03:47",
"buildType": "Release",
"versionTuple": [
5,
2,
0
]
},
"schemaVersion": 1,
"semantic": {
"faces": [
{
"groups": [
"M12_OBJ_Left_M12_OBJ_Left_Material"
],
"material": "M12_OBJ_Left_Material",
"object": "M12_OBJ_Left_M12_OBJ_Left_Mesh",
"vertices": [
{
"normal": 1,
"position": 1,
"texcoord": 1
},
{
"normal": 1,
"position": 2,
"texcoord": 2
},
{
"normal": 1,
"position": 3,
"texcoord": 3
}
]
},
{
"groups": [
"M12_OBJ_Right_M12_OBJ_Right_Material"
],
"material": "M12_OBJ_Right_Material",
"object": "M12_OBJ_Right_M12_OBJ_Right_Mesh",
"vertices": [
{
"normal": 2,
"position": 4,
"texcoord": 4
},
{
"normal": 2,
"position": 5,
"texcoord": 5
},
{
"normal": 2,
"position": 6,
"texcoord": 6
}
]
}
],
"groups": [
"M12_OBJ_Left_M12_OBJ_Left_Mesh",
"M12_OBJ_Left_M12_OBJ_Left_Material",
"M12_OBJ_Right_M12_OBJ_Right_Mesh",
"M12_OBJ_Right_M12_OBJ_Right_Material"
],
"materialLibraries": [
"multi-object.mtl"
],
"materials": [
{
"mapKd": "m12_obj_texture.png",
"name": "M12_OBJ_Left_Material"
},
{
"mapKd": "m12_obj_texture.png",
"name": "M12_OBJ_Right_Material"
}
],
"normals": [
[
-0.0,
1.0,
-0.0
],
[
-0.0,
1.0,
-0.0
]
],
"objects": [
"M12_OBJ_Left_M12_OBJ_Left_Mesh",
"M12_OBJ_Right_M12_OBJ_Right_Mesh"
],
"positions": [
[
-1.75,
0.0,
0.75
],
[
-0.25,
0.0,
0.75
],
[
-1.0,
0.0,
-0.75
],
[
0.25,
0.0,
0.75
],
[
1.75,
0.0,
0.75
],
[
1.0,
0.0,
-0.75
]
],
"texcoords": [
[
0.0,
0.0
],
[
1.0,
0.0
],
[
0.5,
1.0
],
[
0.0,
0.0
],
[
1.0,
0.0
],
[
0.5,
1.0
]
]
},
"settings": {
"exportMaterialGroups": true,
"exportMaterials": true,
"exportNormals": true,
"exportObjectGroups": true,
"exportUV": true,
"forwardAxis": "NEGATIVE_Z",
"globalScale": 1.0,
"pathMode": "RELATIVE",
"upAxis": "Y"
},
"sourceAnchor": "blender-5.2.0/source/blender/io/wavefront_obj",
"task": "M12-07B",
"textureOrigin": {
"mtlMapKd": [
"m12_obj_texture.png",
"m12_obj_texture.png"
],
"relative": true,
"textureFile": "m12_obj_texture.png"
}
}

View File

@@ -0,0 +1,68 @@
{
"schemaVersion": 1,
"task": "M12-07B",
"parentTask": "M12-07A",
"enablingTask": true,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP_AND_OBJ_NEGATIVE_FIXTURES",
"operation": "DESKTOP_OBJ_MULTI_OBJECT_AND_NEGATIVE_FIXTURES",
"assertions": {
"objectCount": 2,
"positionCount": 6,
"uvCount": 6,
"normalCount": 2,
"faceCount": 2,
"materialCount": 2,
"relativeTextureOrigin": true,
"negativeIndices": "ACCEPT_WITH_NEGATIVE_INDICES",
"malformedFace": "OBJ_FACE_ARITY_INVALID",
"deterministicRegeneration": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-07A/manifest.json",
"sha256": "d80b74502202effa7be15640c945dc7e04af703b58e7a15c3fe7babc43c17b46"
},
"generator": {
"path": "tools/web/generate-obj-multi-negative-fixtures.py",
"sha256": "8d4faed82cba76e46bf639e5031b30568e8b9a15240cbddb1c22ee7ad11d697b"
},
"checker": {
"path": "tools/web/check-obj-multi-negative-fixtures.mjs",
"sha256": "61188d67efd6133e714f2d55c7c8516b9d04896de068f994523a3c398eebdd2f"
},
"desktopReport": {
"path": "tests/golden/M12-07B/desktop-fixtures.json",
"sha256": "b60ff785676c0f0168588605ad442a650615191ac00770b7e5a308cc4ade83ce"
},
"objFixture": {
"path": "tests/files/web/m12_obj_multi_v1/multi-object.obj",
"sha256": "4ed3dced8445b03754cd3916ae2e8cf0dff85e6a5882f1c6f0a4a4e4c5251f6a"
},
"mtlFixture": {
"path": "tests/files/web/m12_obj_multi_v1/multi-object.mtl",
"sha256": "80338f569c67a8b1616515ba878ffc72b26e93ef2e8c361131023fb14f132f5f"
},
"textureFixture": {
"path": "tests/files/web/m12_obj_multi_v1/m12_obj_texture.png",
"sha256": "44e4fd08bdda8403908349e2a62dcf103ce2d0851099fc61cd868d65ddbef78c"
},
"negativeIndexFixture": {
"path": "tests/files/web/m12_obj_multi_v1/negative-index.obj",
"sha256": "9457954284cac1d68e23627e3ff734c0c591b3a24086ce5aa3d0dbbfc22f01bc"
},
"malformedFixture": {
"path": "tests/files/web/m12_obj_multi_v1/malformed-face.obj",
"sha256": "6dd508b5ba944c2d15e2889c9ad9a3693845145c3bf6c9bf7df992081c915864"
},
"runtimeInventory": {
"path": "tests/golden/M12-05A/format-inventory.json",
"sha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-07C"
}

View File

@@ -0,0 +1,70 @@
{
"schemaVersion": 1,
"task": "M12-07C",
"parentTask": "M12-07B",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_TYPESCRIPT_CHROMIUM_WORKER_AND_BLENDER_5_2",
"operation": "WEB_OBJ_TO_DESKTOP_ROUNDTRIP",
"assertions": {
"browserObjectCount": 2,
"desktopObjectCount": 2,
"triangleCountExact": true,
"uvLayerPresent": true,
"materialPresent": true,
"boundTextureLossWarnings": 0,
"missingTextureLossWarnings": 2,
"desktopExact": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-07B/manifest.json",
"sha256": "785f593271058098704498cb0a7c948305087f1a83bf8f29b6e6fb9fe9341926"
},
"protocol": {
"path": "web/protocol/obj-import.ts",
"sha256": "e7240af65e0d90f3ee690a4e3f391416fe4744ac6c46edc8ac0d72386857cab9"
},
"worker": {
"path": "web/app/src/workers/obj-roundtrip-test.worker.ts",
"sha256": "bf1fcc60ec318cf6c2747d44f4af741b46f284cf5f5307e142f0ab6d50b14302"
},
"desktopImporter": {
"path": "tools/web/check-obj-web-roundtrip.py",
"sha256": "9f1eb4ab679255a0f1f596696e8befc33a4e30c0cbe6ea423e2aaa0314cec22d"
},
"unit": {
"path": "web/tests/unit/obj-import.test.mjs",
"sha256": "485a669be5de8e370e9b5a3239357b028ba61ca5c4076819cd46aed52a5c210a"
},
"chromium": {
"path": "web/tests/e2e/obj-web-roundtrip.spec.ts",
"sha256": "93785b4017ba14b007926b0f82442f8ae5968f242a2a762e5f5dc77d36110f5b"
},
"checker": {
"path": "tools/web/check-obj-web-roundtrip.mjs",
"sha256": "9d53014f4b89f786c516ebe8d300030c2728e4a36a86a5ef136b2769a12ac96b"
},
"report": {
"path": "tests/golden/M12-07C/web-roundtrip-report.json",
"sha256": "45eaffc9c2e50c84b557d13ebbe9f4f53b63e19e00bc69b272491ef6366dff81"
},
"objFixture": {
"path": "tests/files/web/m12_obj_multi_v1/multi-object.obj",
"sha256": "4ed3dced8445b03754cd3916ae2e8cf0dff85e6a5882f1c6f0a4a4e4c5251f6a"
},
"mtlFixture": {
"path": "tests/files/web/m12_obj_multi_v1/multi-object.mtl",
"sha256": "80338f569c67a8b1616515ba878ffc72b26e93ef2e8c361131023fb14f132f5f"
},
"textureFixture": {
"path": "tests/files/web/m12_obj_multi_v1/m12_obj_texture.png",
"sha256": "44e4fd08bdda8403908349e2a62dcf103ce2d0851099fc61cd868d65ddbef78c"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-07D"
}

View File

@@ -0,0 +1,95 @@
{
"schemaVersion": 1,
"task": "M12-07C",
"operation": "WEB_OBJ_TO_DESKTOP_ROUNDTRIP",
"source": {
"objSha256": "4ed3dced8445b03754cd3916ae2e8cf0dff85e6a5882f1c6f0a4a4e4c5251f6a",
"mtlSha256": "80338f569c67a8b1616515ba878ffc72b26e93ef2e8c361131023fb14f132f5f",
"textureSha256": "44e4fd08bdda8403908349e2a62dcf103ce2d0851099fc61cd868d65ddbef78c"
},
"browser": {
"imported": {
"schemaVersion": 1,
"objectCount": 2,
"positionCount": 6,
"texcoordCount": 6,
"normalCount": 2,
"faceCount": 2,
"materialCount": 2
},
"outputObjSha256": "64d419bea9738bd584e61214b34aa67e5ed2204a0e2e1db6ed334f8561d63276",
"outputMtlSha256": "4e00c589ed29d99994119cfa12ae9f4ef7cc13c33fdd6ee8ce2eb97e6cf61c29",
"lossReport": {
"schemaVersion": 1,
"operation": "OBJ_EXPORT_LOSS_REPORT",
"canRoundTrip": true,
"warningCount": 0,
"warnings": []
},
"missingTextureLoss": {
"schemaVersion": 1,
"operation": "OBJ_EXPORT_LOSS_REPORT",
"canRoundTrip": true,
"warningCount": 2,
"warnings": [
{
"code": "OBJ_TEXTURE_ORIGIN_UNRESOLVED",
"severity": "warning",
"message": "OBJ texture m12_obj_texture.png is not bound to a supplied asset",
"path": "m12_obj_texture.png"
},
{
"code": "OBJ_TEXTURE_ORIGIN_UNRESOLVED",
"severity": "warning",
"message": "OBJ texture m12_obj_texture.png is not bound to a supplied asset",
"path": "m12_obj_texture.png"
}
]
}
},
"desktop": {
"meshCount": 2,
"objectCount": 2,
"objects": [
{
"materials": [
"M12_OBJ_Left_Material"
],
"name": "M12_OBJ_Left_M12_OBJ_Left_Material",
"normalCount": 3,
"polygonCount": 1,
"triangleCount": 1,
"uvLayers": [
"UVMap"
],
"uvLoopCount": 3,
"vertexCount": 3
},
{
"materials": [
"M12_OBJ_Right_Material"
],
"name": "M12_OBJ_Right_M12_OBJ_Right_Material",
"normalCount": 3,
"polygonCount": 1,
"triangleCount": 1,
"uvLayers": [
"UVMap"
],
"uvLoopCount": 3,
"vertexCount": 3
}
],
"operation": "DESKTOP_IMPORT_WEB_OBJ",
"schemaVersion": 1,
"sourceObjBytes": 518,
"sourceObjSha256": "64d419bea9738bd584e61214b34aa67e5ed2204a0e2e1db6ed334f8561d63276"
},
"comparisons": {
"objectCountExact": true,
"triangleCountExact": true,
"uvLayerPresent": true,
"materialPresent": true
},
"nextTask": "M12-07D"
}

View File

@@ -0,0 +1,68 @@
{
"files": [
{
"byteLength": 184,
"name": "capability-binary.stl",
"sha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca"
},
{
"byteLength": 213,
"name": "capability-ascii.stl",
"sha256": "a463a5add8be070fb67b34f00ef6e7b46025aed31fa429d4a033d75a11cf0113"
}
],
"nextTask": "M12-07E",
"operation": "DESKTOP_STL_BINARY_ASCII_CAPABILITY",
"operator": "wm.stl_export",
"runtime": {
"binarySha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82",
"blenderVersion": "5.2.0 LTS",
"buildBranch": "unknown",
"buildDate": "2026-07-24",
"buildHash": "unknown",
"buildPlatform": "Linux",
"buildTime": "08:03:47",
"buildType": "Release",
"versionTuple": [
5,
2,
0
]
},
"schemaVersion": 1,
"settings": {
"evaluationMode": "DAG_EVAL_VIEWPORT",
"exportSelectedObjects": true,
"forwardAxis": "NEGATIVE_Z",
"globalScale": 1.0,
"upAxis": "Y",
"useSceneUnit": false
},
"sourceAnchor": "blender-5.2.0/source/blender/io/stl",
"task": "M12-07D",
"variants": [
{
"asciiFormat": false,
"file": "capability-binary.stl",
"id": "STL_BINARY",
"semantic": {
"byteLength": 184,
"format": "STL_BINARY",
"header": "",
"triangleCount": 2
}
},
{
"asciiFormat": true,
"file": "capability-ascii.stl",
"id": "STL_ASCII",
"semantic": {
"byteLength": 213,
"facetCount": 2,
"format": "STL_ASCII",
"solid": "",
"vertexCount": 6
}
}
]
}

View File

@@ -0,0 +1,54 @@
{
"schemaVersion": 1,
"task": "M12-07D",
"parentTask": "M12-07C",
"enablingTask": true,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP",
"operation": "DESKTOP_STL_BINARY_ASCII_CAPABILITY",
"assertions": {
"operator": "wm.stl_export",
"binaryVariant": "STL_BINARY",
"asciiVariant": "STL_ASCII",
"binaryTriangleCount": 2,
"asciiFacetCount": 2,
"asciiVertexCount": 6,
"binaryByteLength": 184,
"deterministicRegeneration": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-07C/manifest.json",
"sha256": "0c639954900b1fcc3b8285d0f4c0ecfa5807df6cde6d1f2cd3b59c4636d71674"
},
"generator": {
"path": "tools/web/generate-stl-capability-fixtures.py",
"sha256": "8310104e66f246b32ac7cb4619e7f4da109baf2ece39ea670cbb6d33bd88c8b8"
},
"checker": {
"path": "tools/web/check-stl-capability-fixtures.mjs",
"sha256": "b2ad901eaa9701436cf7bcc8aa4e40d1b2d6eda7c6c44a0af830347a37cc9ca8"
},
"desktopReport": {
"path": "tests/golden/M12-07D/capability-report.json",
"sha256": "29c7d2a6e6764440c99eec25bb5760c7e0880839691757fb3e607ed4f5050013"
},
"binaryFixture": {
"path": "tests/files/web/m12_stl_capability_v1/capability-binary.stl",
"sha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca"
},
"asciiFixture": {
"path": "tests/files/web/m12_stl_capability_v1/capability-ascii.stl",
"sha256": "a463a5add8be070fb67b34f00ef6e7b46025aed31fa429d4a033d75a11cf0113"
},
"runtimeInventory": {
"path": "tests/golden/M12-05A/format-inventory.json",
"sha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-07E"
}

View File

@@ -0,0 +1,144 @@
{
"cases": [
{
"byteLength": 184,
"file": "capability-binary.stl",
"globalScale": 1.0,
"id": "BINARY_UNIT_1",
"result": {
"bounds": {
"max": [
1.0,
1.0,
7.549790126404332e-08
],
"min": [
-1.0,
-1.0,
-7.549790126404332e-08
]
},
"objectCount": 1,
"polygonCount": 2,
"polygonNormals": [
[
0.0,
1.0,
-0.0
],
[
0.0,
1.0,
-0.0
]
],
"status": "ACCEPTED",
"triangleCount": 2,
"vertexCount": 4
},
"sha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca"
},
{
"byteLength": 184,
"file": "capability-binary.stl",
"globalScale": 0.001,
"id": "BINARY_UNIT_001",
"result": {
"bounds": {
"max": [
0.0010000000474974513,
0.0010000000474974513,
7.549790653760269e-11
],
"min": [
-0.0010000000474974513,
-0.0010000000474974513,
-7.549790653760269e-11
]
},
"objectCount": 1,
"polygonCount": 2,
"polygonNormals": [
[
0.0,
1.0,
-0.0
],
[
0.0,
1.0,
-0.0
]
],
"status": "ACCEPTED",
"triangleCount": 2,
"vertexCount": 4
},
"sha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca"
},
{
"byteLength": 184,
"file": "degenerate-binary.stl",
"globalScale": 1.0,
"id": "DEGENERATE_TRIANGLE",
"result": {
"bounds": {
"max": [
1.0,
1.0,
7.549790126404332e-08
],
"min": [
-1.0,
-1.0,
-7.549790126404332e-08
]
},
"objectCount": 1,
"polygonCount": 1,
"polygonNormals": [
[
0.0,
1.0,
-0.0
]
],
"status": "ACCEPTED",
"triangleCount": 1,
"vertexCount": 3
},
"sha256": "c120bb0f218819eb89a3607c0b4f8fafd9afb599402e3b21deaa3b2be143e7d0"
},
{
"byteLength": 188,
"file": "trailing-binary.stl",
"globalScale": 1.0,
"id": "TRAILING_BYTES",
"result": {
"bounds": {
"max": [
0.0,
0.0,
0.0
],
"min": [
0.0,
0.0,
0.0
]
},
"objectCount": 1,
"polygonCount": 0,
"polygonNormals": [],
"status": "ACCEPTED",
"triangleCount": 0,
"vertexCount": 0
},
"sha256": "0a30aab6db1588722067000e2a08c3c6206a8ed5b7531caa0b082723700a3681"
}
],
"nextTask": "M12-07F",
"operation": "BLENDER_STL_EDGE_PROBE",
"schemaVersion": 1,
"task": "M12-07E"
}

View File

@@ -0,0 +1,27 @@
{
"schemaVersion": 1,
"task": "M12-07E",
"operation": "STL_EDGE_FIXTURE_GENERATION",
"parent": {
"path": "tests/files/web/m12_stl_capability_v1/capability-binary.stl",
"byteLength": 184,
"sha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca"
},
"fixtures": [
{
"id": "DEGENERATE_TRIANGLE",
"file": "degenerate-binary.stl",
"byteLength": 184,
"sha256": "c120bb0f218819eb89a3607c0b4f8fafd9afb599402e3b21deaa3b2be143e7d0",
"expectedCode": "STL_DEGENERATE_TRIANGLE"
},
{
"id": "TRAILING_BYTES",
"file": "trailing-binary.stl",
"byteLength": 188,
"sha256": "0a30aab6db1588722067000e2a08c3c6206a8ed5b7531caa0b082723700a3681",
"expectedCode": "STL_TRAILING_BYTES"
}
],
"nextTask": "M12-07F"
}

View File

@@ -0,0 +1,78 @@
{
"schemaVersion": 1,
"task": "M12-07E",
"parentTask": "M12-07D",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_TYPESCRIPT_CHROMIUM_WORKER_AND_BLENDER_5_2",
"operation": "STL_NORMAL_UNIT_EDGE_PARITY",
"assertions": {
"binaryAsciiNormalExact": true,
"desktopNormalExact": true,
"unitRatioExactWithinFloat32": true,
"degenerateTriangleExact": true,
"removedDegenerateTriangles": 1,
"trailingWeb": "BLOCKED/STL_TRAILING_BYTES",
"trailingDesktop": "ACCEPTED_EMPTY",
"trailingParity": "STRICTER_WEB_BLOCK"
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-07D/manifest.json",
"sha256": "bbc78e47f389562e7d648bf49c9b3bf8a08aaa36e914589a6eab0a1f6e72748d"
},
"fixtureGenerator": {
"path": "tools/web/generate-stl-edge-fixtures.mjs",
"sha256": "018013347642603c21237ebb023bdc7a4e338f5a3f875fea536a996eb121e716"
},
"desktopProbe": {
"path": "tools/web/probe-stl-edge-fixtures.py",
"sha256": "b3d6ea197ef77b5a14f60f5e6b43d4392e943ff5d56acf73915507fc9a4161b7"
},
"protocol": {
"path": "web/protocol/stl-import.ts",
"sha256": "87eec72e2b8aa7ad0b168ca0ee8c4016c941f56f5f1ac53aa5fe71d0832f1dd8"
},
"worker": {
"path": "web/app/src/workers/stl-edge-test.worker.ts",
"sha256": "d714f1f3a218a2226dd349aea81c6c54efa6246de1c4fe51aaa9f5c352ef44fc"
},
"unit": {
"path": "web/tests/unit/stl-import.test.mjs",
"sha256": "4af52833486421c017f3af2b833b0776e60a6ab57ed66fea2161cf9674f4b243"
},
"chromium": {
"path": "web/tests/e2e/stl-edge-parity.spec.ts",
"sha256": "121d348250e26d29ad966f7427bbef9da77de2098e2e305827b11aae52002c5c"
},
"checker": {
"path": "tools/web/check-stl-edge-parity.mjs",
"sha256": "b5ed7fbb41bb46fba982d5726cb8c3eaecf360b772a01d6337c309b1c4a4f535"
},
"fixtureReport": {
"path": "tests/golden/M12-07E/edge-fixtures.json",
"sha256": "545463a984356d6635cbaae3865d13fe95bd2d841c394ac9ddff496c95d46f18"
},
"desktopReport": {
"path": "tests/golden/M12-07E/desktop-edge-report.json",
"sha256": "2d3028a3b7d97f39654cff5fcef1d0c1c71e9f2d08e3e29c2e926651ed3860f1"
},
"webReport": {
"path": "tests/golden/M12-07E/web-edge-report.json",
"sha256": "e0686cc9be3b68e564651207443e0ebf3e3b0eb3d07a32915b03f44b1908357b"
},
"degenerateFixture": {
"path": "tests/files/web/m12_stl_edges_v1/degenerate-binary.stl",
"sha256": "c120bb0f218819eb89a3607c0b4f8fafd9afb599402e3b21deaa3b2be143e7d0"
},
"trailingFixture": {
"path": "tests/files/web/m12_stl_edges_v1/trailing-binary.stl",
"sha256": "0a30aab6db1588722067000e2a08c3c6206a8ed5b7531caa0b082723700a3681"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-07F"
}

View File

@@ -0,0 +1,436 @@
{
"schemaVersion": 1,
"task": "M12-07E",
"operation": "STL_NORMAL_UNIT_EDGE_PARITY",
"browser": [
{
"id": "BINARY_UNIT_1",
"status": "ACCEPTED",
"result": {
"schemaVersion": 1,
"variant": "STL_BINARY",
"unitScale": 1,
"declaredTriangleCount": 2,
"triangleCount": 2,
"removedDegenerateTriangles": 0,
"normals": [
[
0,
1,
0
],
[
0,
1,
0
]
],
"vertices": [
[
[
-1,
0,
1
],
[
1,
0,
1
],
[
1,
0,
-1
]
],
[
[
-1,
0,
1
],
[
1,
0,
-1
],
[
-1,
0,
-1
]
]
],
"bounds": {
"min": [
-1,
0,
-1
],
"max": [
1,
0,
1
]
}
}
},
{
"id": "BINARY_UNIT_001",
"status": "ACCEPTED",
"result": {
"schemaVersion": 1,
"variant": "STL_BINARY",
"unitScale": 0.001,
"declaredTriangleCount": 2,
"triangleCount": 2,
"removedDegenerateTriangles": 0,
"normals": [
[
0,
1,
0
],
[
0,
1,
0
]
],
"vertices": [
[
[
-0.001,
0,
0.001
],
[
0.001,
0,
0.001
],
[
0.001,
0,
-0.001
]
],
[
[
-0.001,
0,
0.001
],
[
0.001,
0,
-0.001
],
[
-0.001,
0,
-0.001
]
]
],
"bounds": {
"min": [
-0.001,
0,
-0.001
],
"max": [
0.001,
0,
0.001
]
}
}
},
{
"id": "ASCII_UNIT_1",
"status": "ACCEPTED",
"result": {
"schemaVersion": 1,
"variant": "STL_ASCII",
"unitScale": 1,
"declaredTriangleCount": 2,
"triangleCount": 2,
"removedDegenerateTriangles": 0,
"normals": [
[
0,
1,
0
],
[
0,
1,
0
]
],
"vertices": [
[
[
-1,
0,
1
],
[
1,
0,
1
],
[
1,
0,
-1
]
],
[
[
-1,
0,
1
],
[
1,
0,
-1
],
[
-1,
0,
-1
]
]
],
"bounds": {
"min": [
-1,
0,
-1
],
"max": [
1,
0,
1
]
}
}
},
{
"id": "DEGENERATE_TRIANGLE",
"status": "ACCEPTED",
"result": {
"schemaVersion": 1,
"variant": "STL_BINARY",
"unitScale": 1,
"declaredTriangleCount": 2,
"triangleCount": 1,
"removedDegenerateTriangles": 1,
"normals": [
[
0,
1,
0
]
],
"vertices": [
[
[
-1,
0,
1
],
[
1,
0,
-1
],
[
-1,
0,
-1
]
]
],
"bounds": {
"min": [
-1,
0,
-1
],
"max": [
1,
0,
1
]
}
}
},
{
"id": "TRAILING_BYTES",
"status": "BLOCKED",
"code": "STL_TRAILING_BYTES"
}
],
"desktop": {
"cases": [
{
"byteLength": 184,
"file": "capability-binary.stl",
"globalScale": 1,
"id": "BINARY_UNIT_1",
"result": {
"bounds": {
"max": [
1,
1,
7.549790126404332e-8
],
"min": [
-1,
-1,
-7.549790126404332e-8
]
},
"objectCount": 1,
"polygonCount": 2,
"polygonNormals": [
[
0,
1,
0
],
[
0,
1,
0
]
],
"status": "ACCEPTED",
"triangleCount": 2,
"vertexCount": 4
},
"sha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca"
},
{
"byteLength": 184,
"file": "capability-binary.stl",
"globalScale": 0.001,
"id": "BINARY_UNIT_001",
"result": {
"bounds": {
"max": [
0.0010000000474974513,
0.0010000000474974513,
7.549790653760269e-11
],
"min": [
-0.0010000000474974513,
-0.0010000000474974513,
-7.549790653760269e-11
]
},
"objectCount": 1,
"polygonCount": 2,
"polygonNormals": [
[
0,
1,
0
],
[
0,
1,
0
]
],
"status": "ACCEPTED",
"triangleCount": 2,
"vertexCount": 4
},
"sha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca"
},
{
"byteLength": 184,
"file": "degenerate-binary.stl",
"globalScale": 1,
"id": "DEGENERATE_TRIANGLE",
"result": {
"bounds": {
"max": [
1,
1,
7.549790126404332e-8
],
"min": [
-1,
-1,
-7.549790126404332e-8
]
},
"objectCount": 1,
"polygonCount": 1,
"polygonNormals": [
[
0,
1,
0
]
],
"status": "ACCEPTED",
"triangleCount": 1,
"vertexCount": 3
},
"sha256": "c120bb0f218819eb89a3607c0b4f8fafd9afb599402e3b21deaa3b2be143e7d0"
},
{
"byteLength": 188,
"file": "trailing-binary.stl",
"globalScale": 1,
"id": "TRAILING_BYTES",
"result": {
"bounds": {
"max": [
0,
0,
0
],
"min": [
0,
0,
0
]
},
"objectCount": 1,
"polygonCount": 0,
"polygonNormals": [],
"status": "ACCEPTED",
"triangleCount": 0,
"vertexCount": 0
},
"sha256": "0a30aab6db1588722067000e2a08c3c6206a8ed5b7531caa0b082723700a3681"
}
],
"nextTask": "M12-07F",
"operation": "BLENDER_STL_EDGE_PROBE",
"schemaVersion": 1,
"task": "M12-07E"
},
"comparisons": {
"binaryAsciiNormalExact": true,
"desktopNormalExact": true,
"webUnitRatio": 1000,
"desktopUnitRatio": 999.999952502551,
"unitRatioExactWithinFloat32": true,
"degenerateTriangleExact": true,
"trailingBytes": {
"web": "BLOCKED/STL_TRAILING_BYTES",
"desktop": "ACCEPTED_EMPTY",
"parity": "STRICTER_WEB_BLOCK"
}
},
"nextTask": "M12-07F"
}

View File

@@ -0,0 +1,59 @@
{
"schemaVersion": 1,
"task": "M12-07F",
"parentTask": "M12-07E",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WEB_TYPESCRIPT_CHROMIUM_WORKER_AND_BLENDER_5_2",
"operation": "WEB_STL_TO_DESKTOP_ROUNDTRIP",
"assertions": {
"browserTriangles": 2,
"desktopTriangles": 2,
"normalExact": true,
"materialLossCode": "STL_MATERIAL_UNSUPPORTED",
"desktopExact": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-07E/manifest.json",
"sha256": "19a9f460d1b939c9504dadd364cb87dab3b1769b0599035e2d2b51b47091e034"
},
"protocol": {
"path": "web/protocol/stl-export.ts",
"sha256": "3b9c409de9fb3eaea34f82c1ddd466670d2b478845d8ff6af3c4e44cb4e04a52"
},
"worker": {
"path": "web/app/src/workers/stl-roundtrip-test.worker.ts",
"sha256": "1da8b8281cf8ebf9ccf5fd2f42da8ed5886001ab83daba8d9fcd88980257af87"
},
"desktopImporter": {
"path": "tools/web/check-stl-web-roundtrip.py",
"sha256": "c4cbff52ff2e7cecba7aeab47e865975955da23a0e1e8ff885ece56b894558d5"
},
"unit": {
"path": "web/tests/unit/stl-export.test.mjs",
"sha256": "f06af242df80ec26d06e92b749449cfebaf909476198ff825207cdd4b9484102"
},
"chromium": {
"path": "web/tests/e2e/stl-web-roundtrip.spec.ts",
"sha256": "2e979dcd030f5316fcbe28e2c19b1c99fe5d111e849d3fc1d2ea316d2159032b"
},
"checker": {
"path": "tools/web/check-stl-web-roundtrip.mjs",
"sha256": "093de04bf80b0909eee56ea590e04e7aa4749168e2e49615c62ab39ddc0d16cf"
},
"report": {
"path": "tests/golden/M12-07F/web-roundtrip-report.json",
"sha256": "0495c645b4280f6e7821f0ba02010e25d4accbc552e3cd7c58e052607799040e"
},
"sourceFixture": {
"path": "tests/files/web/m12_stl_capability_v1/capability-binary.stl",
"sha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-07G"
}

View File

@@ -0,0 +1,122 @@
{
"schemaVersion": 1,
"task": "M12-07F",
"operation": "WEB_STL_TO_DESKTOP_ROUNDTRIP",
"source": {
"sha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca",
"bytes": 184
},
"browser": {
"imported": {
"schemaVersion": 1,
"variant": "STL_BINARY",
"unitScale": 1,
"declaredTriangleCount": 2,
"triangleCount": 2,
"removedDegenerateTriangles": 0,
"normals": [
[
0,
1,
0
],
[
0,
1,
0
]
],
"vertices": [
[
[
-1,
0,
1
],
[
1,
0,
1
],
[
1,
0,
-1
]
],
[
[
-1,
0,
1
],
[
1,
0,
-1
],
[
-1,
0,
-1
]
]
],
"bounds": {
"min": [
-1,
0,
-1
],
"max": [
1,
0,
1
]
}
},
"outputSha256": "689d060c125c41a79d98f4ff241ebe10d9e0f1faebe6e66e507efa962dce1b2d",
"outputBytes": 184,
"lossReport": {
"schemaVersion": 1,
"operation": "STL_EXPORT_LOSS_REPORT",
"canRoundTrip": true,
"warningCount": 1,
"warnings": [
{
"code": "STL_MATERIAL_UNSUPPORTED",
"severity": "warning",
"message": "STL has no material slots; 2 source material assignments are omitted"
}
]
}
},
"desktop": {
"objectCount": 1,
"operation": "DESKTOP_IMPORT_WEB_STL",
"polygonCount": 2,
"polygonNormals": [
[
0,
1,
0
],
[
0,
1,
0
]
],
"schemaVersion": 1,
"sourceBytes": 184,
"sourceSha256": "689d060c125c41a79d98f4ff241ebe10d9e0f1faebe6e66e507efa962dce1b2d",
"triangleCount": 2,
"vertexCount": 4
},
"comparison": {
"triangleCountExact": true,
"normalExact": true,
"materialLossExplicit": true
},
"nextTask": "M12-07G"
}

View File

@@ -0,0 +1,87 @@
{
"files": [
{
"byteLength": 322,
"name": "capability-ascii.ply",
"sha256": "63646cab9bf6ccecb23092e5e24d04df1e0a690c866127c72a35791e99262331"
},
{
"byteLength": 391,
"name": "capability-binary-le.ply",
"sha256": "e40fbb494b8b147c555a0fc06eb191415406bb9a6c061acf6befd8464c8c41a5"
}
],
"nextTask": "M12-07H",
"operation": "DESKTOP_PLY_ASCII_BINARY_LE_CAPABILITY",
"operator": "wm.ply_export",
"runtime": {
"binarySha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82",
"blenderVersion": "5.2.0 LTS",
"buildBranch": "unknown",
"buildDate": "2026-07-24",
"buildHash": "unknown",
"buildPlatform": "Linux",
"buildTime": "08:03:47",
"buildType": "Release",
"versionTuple": [
5,
2,
0
]
},
"schemaVersion": 1,
"settings": {
"exportColors": "NONE",
"exportNormals": true,
"exportSelectedObjects": true,
"exportTriangulatedMesh": true,
"exportUV": false,
"forwardAxis": "NEGATIVE_Z",
"globalScale": 1.0,
"upAxis": "Y"
},
"sourceAnchor": "blender-5.2.0/source/blender/io/ply",
"task": "M12-07G",
"variants": [
{
"asciiFormat": true,
"file": "capability-ascii.ply",
"id": "PLY_ASCII",
"semantic": {
"byteLength": 322,
"elements": [
{
"count": 4,
"name": "vertex"
},
{
"count": 2,
"name": "face"
}
],
"format": "ascii",
"headerBytes": 254
}
},
{
"asciiFormat": false,
"file": "capability-binary-le.ply",
"id": "PLY_BINARY_LITTLE_ENDIAN",
"semantic": {
"byteLength": 391,
"elements": [
{
"count": 4,
"name": "vertex"
},
{
"count": 2,
"name": "face"
}
],
"format": "binary_little_endian",
"headerBytes": 269
}
}
]
}

View File

@@ -0,0 +1,52 @@
{
"schemaVersion": 1,
"task": "M12-07G",
"parentTask": "M12-07F",
"enablingTask": true,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP",
"operation": "DESKTOP_PLY_ASCII_BINARY_LE_CAPABILITY",
"assertions": {
"asciiVariant": "ascii",
"binaryVariant": "binary_little_endian",
"vertexCount": 4,
"faceCount": 2,
"binaryLittleEndian": true,
"deterministicRegeneration": true
},
"artifacts": {
"parentManifest": {
"path": "tests/golden/M12-07F/manifest.json",
"sha256": "3cbbcb541ee123da0ef8916ac2ca8805680d539bbf8db3b4a8d331aec418148c"
},
"generator": {
"path": "tools/web/generate-ply-capability-fixtures.py",
"sha256": "581cd84057357e3a87997cf9c07d5d5633209648ac11e44611782eb254a38ebd"
},
"checker": {
"path": "tools/web/check-ply-capability-fixtures.mjs",
"sha256": "5280d6e57b7a722ea881e27b792c6082c5113c1577ac0e87f87cc87fdf59516c"
},
"desktopReport": {
"path": "tests/golden/M12-07G/capability-report.json",
"sha256": "26b1ce83334b41778cef5ce2a1f2c4d34254f63d7c7573cb3fb550f93ddeabb2"
},
"asciiFixture": {
"path": "tests/files/web/m12_ply_capability_v1/capability-ascii.ply",
"sha256": "63646cab9bf6ccecb23092e5e24d04df1e0a690c866127c72a35791e99262331"
},
"binaryFixture": {
"path": "tests/files/web/m12_ply_capability_v1/capability-binary-le.ply",
"sha256": "e40fbb494b8b147c555a0fc06eb191415406bb9a6c061acf6befd8464c8c41a5"
},
"runtimeInventory": {
"path": "tests/golden/M12-05A/format-inventory.json",
"sha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4"
},
"package": {
"path": "web/package.json",
"sha256": "cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c"
}
},
"nextTask": "M12-07H"
}

View File

@@ -0,0 +1,27 @@
{
"schemaVersion": 1,
"task": "M12-07H",
"parentTask": "M12-07G",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP_AND_CHROMIUM",
"operation": "PLY_VERTEX_FACE_COLOR_CUSTOM_MAPPING",
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-07G/manifest.json", "sha256": "87df9c12f9c6eacf63051b70e9bb2eb43ebd1e5c4487b3512c45adb94cbb82ea" },
"generator": { "path": "tools/web/generate-ply-mapping-fixtures.py", "sha256": "ffc051eccfc6973ee00cc791cdbd641fcce308b4083741e3e6ae82291d9347b7" },
"fixtureChecker": { "path": "tools/web/check-ply-mapping-fixtures.mjs", "sha256": "2b055dbc705830848efdf4d8db8543a3ccc684de1f258732bcafefa86cf65c3a" },
"desktopImporter": { "path": "tools/web/check-ply-web-roundtrip.py", "sha256": "6edbc6e401a1a902dcfd11c4d767e8c8620d694e40eb4ca29dd8479f9c55ef37" },
"protocol": { "path": "web/protocol/ply-import.ts", "sha256": "058a3263fde553637840a4e9ad4e8e9d923eb52c250f8000317c7f43a228881d" },
"worker": { "path": "web/app/src/workers/ply-roundtrip-test.worker.ts", "sha256": "f6bf5e39e83286d7b257bbdce88f4d7fa027c64651da9765567788b5cf298c71" },
"unitTest": { "path": "web/tests/unit/ply-import.test.mjs", "sha256": "b03a5f4b4b2a974fa26e653763470b92d1433c5d352ae09ab5492b841e6e5e1f" },
"e2eTest": { "path": "web/tests/e2e/ply-web-roundtrip.spec.ts", "sha256": "2cadebc89057655d78e9b520bb6adf9debb27c6d783cd002efee08d269636fb9" },
"mappingReport": { "path": "tests/golden/M12-07H/mapping-report.json", "sha256": "8a02fc9e364ed79e50ef00897affa9ab63808d3cb3cdabd00fdb8ee4c26ec18a" },
"webRoundtripReport": { "path": "tests/golden/M12-07H/web-roundtrip-report.json", "sha256": "1ca9d3b7870fcc8c9e3c9bbbd90ef48bd13bbc9ae0462312c9482f24f05f13ec" },
"asciiFixture": { "path": "tests/files/web/m12_ply_mapping_v1/mapping-ascii.ply", "sha256": "acaa369c17252d4d089a2e3064d0c1fcdfdb2d066759ed160adf7869d3e859d5" },
"binaryFixture": { "path": "tests/files/web/m12_ply_mapping_v1/mapping-binary-le.ply", "sha256": "d0fc195fd1a101c42ac984a2382bccdddb7d0bf60dd618e9f637c964f1b30b9e" },
"unknownFixture": { "path": "tests/files/web/m12_ply_mapping_v1/unknown-property-ascii.ply", "sha256": "a994c7126f235d0067ce4af35f8b0c6699cc83073e2a37e982edd45ece459f33" },
"runtimeInventory": { "path": "tests/golden/M12-05A/format-inventory.json", "sha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4" },
"package": { "path": "web/package.json", "sha256": "c56c653effb38f9ac9c53aa19a531ca0cdab04d4457212f286349091d5b65c22" }
},
"nextTask": "M12-07I"
}

View File

@@ -0,0 +1,292 @@
{
"files": [
{
"byteLength": 521,
"name": "mapping-ascii.ply",
"sha256": "acaa369c17252d4d089a2e3064d0c1fcdfdb2d066759ed160adf7869d3e859d5"
},
{
"byteLength": 568,
"name": "mapping-binary-le.ply",
"sha256": "d0fc195fd1a101c42ac984a2382bccdddb7d0bf60dd618e9f637c964f1b30b9e"
},
{
"byteLength": 586,
"name": "unknown-property-ascii.ply",
"sha256": "a994c7126f235d0067ce4af35f8b0c6699cc83073e2a37e982edd45ece459f33"
}
],
"nextTask": "M12-07I",
"operation": "PLY_VERTEX_FACE_COLOR_CUSTOM_MAPPING",
"operator": "wm.ply_export",
"runtime": {
"binarySha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82",
"blenderVersion": "5.2.0 LTS",
"buildBranch": "unknown",
"buildDate": "2026-07-24",
"buildHash": "unknown",
"buildPlatform": "Linux",
"buildTime": "08:03:47",
"buildType": "Release",
"versionTuple": [
5,
2,
0
]
},
"schemaVersion": 1,
"settings": {
"exportAttributes": true,
"exportColors": "SRGB",
"exportNormals": true,
"exportSelectedObjects": true,
"exportTriangulatedMesh": true,
"exportUV": false,
"forwardAxis": "NEGATIVE_Z",
"globalScale": 1.0,
"upAxis": "Y"
},
"sourceAnchor": "blender-5.2.0/source/blender/io/ply",
"task": "M12-07H",
"unknownProperty": {
"expectedCode": "PLY_UNKNOWN_PROPERTY",
"file": "unknown-property-ascii.ply",
"property": "unknown_values"
},
"variants": [
{
"file": "mapping-ascii.ply",
"id": "PLY_ASCII_MAPPING",
"semantic": {
"faceCount": 2,
"faces": [
{
"customProperties": {},
"indices": [
0,
1,
2
]
},
{
"customProperties": {},
"indices": [
0,
2,
3
]
}
],
"format": "ascii",
"vertexCount": 4,
"vertices": [
{
"color": [
254,
0,
0,
255
],
"customProperties": {
"label": 1.0,
"temperature": 10.0
},
"normal": [
0.0,
1.0,
0.0
],
"position": [
-1.0,
0.0,
1.0
]
},
{
"color": [
0,
254,
0,
255
],
"customProperties": {
"label": 2.0,
"temperature": 20.0
},
"normal": [
0.0,
1.0,
0.0
],
"position": [
1.0,
0.0,
1.0
]
},
{
"color": [
0,
0,
254,
255
],
"customProperties": {
"label": 3.0,
"temperature": 30.0
},
"normal": [
0.0,
1.0,
0.0
],
"position": [
1.0,
0.0,
-1.0
]
},
{
"color": [
254,
254,
0,
255
],
"customProperties": {
"label": 4.0,
"temperature": 40.0
},
"normal": [
0.0,
1.0,
0.0
],
"position": [
-1.0,
0.0,
-1.0
]
}
]
}
},
{
"file": "mapping-binary-le.ply",
"id": "PLY_BINARY_LITTLE_ENDIAN_MAPPING",
"semantic": {
"faceCount": 2,
"faces": [
{
"customProperties": {},
"indices": [
0,
1,
2
]
},
{
"customProperties": {},
"indices": [
0,
2,
3
]
}
],
"format": "binary_little_endian",
"vertexCount": 4,
"vertices": [
{
"color": [
254,
0,
0,
255
],
"customProperties": {
"label": 1.0,
"temperature": 10.0
},
"normal": [
0.0,
1.0,
0.0
],
"position": [
-1.0,
0.0,
1.0
]
},
{
"color": [
0,
254,
0,
255
],
"customProperties": {
"label": 2.0,
"temperature": 20.0
},
"normal": [
0.0,
1.0,
0.0
],
"position": [
1.0,
0.0,
1.0
]
},
{
"color": [
0,
0,
254,
255
],
"customProperties": {
"label": 3.0,
"temperature": 30.0
},
"normal": [
0.0,
1.0,
0.0
],
"position": [
1.0,
0.0,
-1.0
]
},
{
"color": [
254,
254,
0,
255
],
"customProperties": {
"label": 4.0,
"temperature": 40.0
},
"normal": [
0.0,
1.0,
0.0
],
"position": [
-1.0,
0.0,
-1.0
]
}
]
}
}
]
}

View File

@@ -0,0 +1,179 @@
{
"schemaVersion": 1,
"task": "M12-07H",
"operation": "PLY_VERTEX_FACE_COLOR_CUSTOM_MAPPING",
"source": {
"asciiSha256": "acaa369c17252d4d089a2e3064d0c1fcdfdb2d066759ed160adf7869d3e859d5",
"binarySha256": "d0fc195fd1a101c42ac984a2382bccdddb7d0bf60dd618e9f637c964f1b30b9e",
"unknownSha256": "a994c7126f235d0067ce4af35f8b0c6699cc83073e2a37e982edd45ece459f33"
},
"browser": {
"format": "ascii",
"vertexCount": 4,
"faceCount": 2,
"colors": [
[
0.996078431372549,
0,
0,
1
],
[
0,
0.996078431372549,
0,
1
],
[
0,
0,
0.996078431372549,
1
],
[
0.996078431372549,
0.996078431372549,
0,
1
]
],
"customProperties": [
{
"temperature": 10,
"label": 1
},
{
"temperature": 20,
"label": 2
},
{
"temperature": 30,
"label": 3
},
{
"temperature": 40,
"label": 4
}
],
"outputSha256": "399a06c8f593dcdeda9ce9f4c6be74fa83b9fc905ae22a01f4af414284585cf5",
"outputBytes": 509,
"lossReport": {
"schemaVersion": 1,
"operation": "PLY_IMPORT_LOSS_REPORT",
"canImport": true,
"warningCount": 0,
"warnings": []
},
"binarySemanticEqual": true,
"unknownPropertyLoss": {
"schemaVersion": 1,
"operation": "PLY_IMPORT_LOSS_REPORT",
"canImport": true,
"warningCount": 1,
"warnings": [
{
"code": "PLY_UNKNOWN_PROPERTY",
"severity": "warning",
"element": "vertex",
"property": "unknown_values",
"message": "vertex list property unknown_values is not mapped"
}
]
}
},
"desktop": {
"attributes": [
{
"dataType": "FLOAT_COLOR",
"domain": "POINT",
"name": "Col",
"values": [
[
0.9911020398139954,
0,
0,
1
],
[
0,
0.9911020398139954,
0,
1
],
[
0,
0,
0.9911020398139954,
1
],
[
0.9911020398139954,
0.9911020398139954,
0,
1
]
]
},
{
"dataType": "FLOAT",
"domain": "POINT",
"name": "label",
"values": [
1,
2,
3,
4
]
},
{
"dataType": "FLOAT",
"domain": "POINT",
"name": "temperature",
"values": [
10,
20,
30,
40
]
}
],
"objectCount": 1,
"operation": "DESKTOP_IMPORT_WEB_PLY",
"polygonCount": 2,
"positions": [
[
-1,
0,
1
],
[
1,
0,
1
],
[
1,
0,
-1
],
[
-1,
0,
-1
]
],
"schemaVersion": 1,
"sourceBytes": 509,
"sourceSha256": "399a06c8f593dcdeda9ce9f4c6be74fa83b9fc905ae22a01f4af414284585cf5",
"triangleCount": 2,
"vertexCount": 4
},
"comparisons": {
"vertexCountExact": true,
"faceCountExact": true,
"positionExact": true,
"customPropertiesPresent": true,
"colorMapped": true
},
"nextTask": "M12-07I"
}

View File

@@ -0,0 +1,22 @@
{
"schemaVersion": 1,
"task": "M12-07I",
"parentTask": "M12-07H",
"enablingTask": false,
"parityStateChange": false,
"runtime": "CHROMIUM_WORKER",
"operation": "PLY_NEGATIVE_FORMAT_LIST_COUNT",
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-07H/manifest.json", "sha256": "0665f7c8278cad182f9af0be6af80838fb204e8e1160e5a0cdeb58e052f3b878" },
"protocol": { "path": "web/protocol/ply-import.ts", "sha256": "058a3263fde553637840a4e9ad4e8e9d923eb52c250f8000317c7f43a228881d" },
"generator": { "path": "tools/web/generate-ply-negative-fixtures.mjs", "sha256": "9c09707bdfe73ba467bbfbf61ed3846fb59fd33ab5563a3a62c8032722ff6938" },
"checker": { "path": "tools/web/check-ply-negative-fixtures.mjs", "sha256": "b1d047d4cb1fa15dff7821687e7028ad073fdc62d4c76f60a2656732c0ec5e2b" },
"unitTest": { "path": "web/tests/unit/ply-negative.test.mjs", "sha256": "60439f9e6bc221df8866956bf926816a347e85828b5a93deb26ee23015cf449a" },
"e2eTest": { "path": "web/tests/e2e/ply-negative.spec.ts", "sha256": "6509a29d6842f3423d4dfcc40dbd52a959a5efa7ee1121143dce06e5bbc4a460" },
"negativeReport": { "path": "tests/golden/M12-07I/negative-report.json", "sha256": "fbe2830d1b19294ea98eea66c3e00125bc0809a4bb8a750612939cbe1f5acca9" },
"bigEndianFixture": { "path": "tests/files/web/m12_ply_negative_v1/big-endian.ply", "sha256": "cda92943a3690529fbb3463d328b6796ac0d07e19139450556f7411fc1f031e3" },
"malformedListFixture": { "path": "tests/files/web/m12_ply_negative_v1/malformed-list-ascii.ply", "sha256": "a6a576b7a04d919b540520a6f43a89c089f0d706a17fd8b390711fff6b8b03df" },
"oversizedCountFixture": { "path": "tests/files/web/m12_ply_negative_v1/oversized-count-ascii.ply", "sha256": "fcd99e0838025429420a47466251cfef80e638d2b5816ad14d5aa696364525bb" }
},
"nextTask": "M12-07J"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M12-07I",
"operation": "PLY_NEGATIVE_FORMAT_LIST_COUNT",
"cases": [
{
"id": "big-endian",
"file": "big-endian.ply",
"expectedCode": "PLY_FORMAT_UNSUPPORTED"
},
{
"id": "malformed-list",
"file": "malformed-list-ascii.ply",
"expectedCode": "PLY_DATA_TRUNCATED"
},
{
"id": "oversized-count",
"file": "oversized-count-ascii.ply",
"expectedCode": "PLY_IMPORT_BUDGET_EXCEEDED: vertex"
}
],
"files": [
{
"name": "big-endian.ply",
"byteLength": 179,
"sha256": "cda92943a3690529fbb3463d328b6796ac0d07e19139450556f7411fc1f031e3"
},
{
"name": "malformed-list-ascii.ply",
"byteLength": 179,
"sha256": "a6a576b7a04d919b540520a6f43a89c089f0d706a17fd8b390711fff6b8b03df"
},
{
"name": "oversized-count-ascii.ply",
"byteLength": 159,
"sha256": "fcd99e0838025429420a47466251cfef80e638d2b5816ad14d5aa696364525bb"
}
],
"nextTask": "M12-07J"
}

View File

@@ -0,0 +1,376 @@
{
"schemaVersion": 1,
"task": "M12-07J",
"operation": "IO_FORMAT_THREE_WAY_RECOVERY",
"formats": {
"OBJ": {
"sourceSha256": "4ed3dced8445b03754cd3916ae2e8cf0dff85e6a5882f1c6f0a4a4e4c5251f6a",
"cancel": {
"schemaVersion": 1,
"operationId": "obj-cancel-1",
"format": "OBJ",
"operation": "IMPORT",
"status": "CANCELLED",
"workerGeneration": 1,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 670,
"inputSha256": "4ed3dced8445b03754cd3916ae2e8cf0dff85e6a5882f1c6f0a4a4e4c5251f6a",
"outputBytes": 0,
"outputSha256": null,
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 0,
"committed": false,
"errorCode": "IO_FORMAT_OPERATION_CANCELLED"
},
"oom": {
"schemaVersion": 1,
"operationId": "obj-oom-1",
"format": "OBJ",
"operation": "IMPORT",
"status": "BLOCKED",
"workerGeneration": 1,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 524289,
"inputSha256": "42b47b7a78c2a45c3ab9694e86574825450221fe25d23bf505b97af4ca20283b",
"outputBytes": 0,
"outputSha256": null,
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 0,
"committed": false,
"errorCode": "IO_FORMAT_OOM"
},
"first": {
"schemaVersion": 1,
"operationId": "obj-first-1",
"format": "OBJ",
"operation": "IMPORT",
"status": "COMMITTED",
"workerGeneration": 1,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 670,
"inputSha256": "4ed3dced8445b03754cd3916ae2e8cf0dff85e6a5882f1c6f0a4a4e4c5251f6a",
"outputBytes": 530,
"outputSha256": "caa36e17111d6dbc9369581b9a52ecb4ff81a951eb11ff3094f80ac273c4c53d",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true
},
"second": {
"schemaVersion": 1,
"operationId": "obj-second-2",
"format": "OBJ",
"operation": "IMPORT",
"status": "COMMITTED",
"workerGeneration": 2,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 670,
"inputSha256": "4ed3dced8445b03754cd3916ae2e8cf0dff85e6a5882f1c6f0a4a4e4c5251f6a",
"outputBytes": 530,
"outputSha256": "caa36e17111d6dbc9369581b9a52ecb4ff81a951eb11ff3094f80ac273c4c53d",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true
},
"recovered": {
"schemaVersion": 1,
"operationId": "obj-first-1",
"format": "OBJ",
"operation": "IMPORT",
"status": "RECOVERED",
"workerGeneration": 2,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 670,
"inputSha256": "4ed3dced8445b03754cd3916ae2e8cf0dff85e6a5882f1c6f0a4a4e4c5251f6a",
"outputBytes": 530,
"outputSha256": "caa36e17111d6dbc9369581b9a52ecb4ff81a951eb11ff3094f80ac273c4c53d",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true,
"errorCode": "IO_FORMAT_WORKER_RESTARTED"
},
"small": {
"schemaVersion": 1,
"operationId": "obj-small-3",
"format": "OBJ",
"operation": "IMPORT",
"status": "COMMITTED",
"workerGeneration": 3,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 670,
"inputSha256": "4ed3dced8445b03754cd3916ae2e8cf0dff85e6a5882f1c6f0a4a4e4c5251f6a",
"outputBytes": 530,
"outputSha256": "caa36e17111d6dbc9369581b9a52ecb4ff81a951eb11ff3094f80ac273c4c53d",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true
},
"hashes": {
"first": "caa36e17111d6dbc9369581b9a52ecb4ff81a951eb11ff3094f80ac273c4c53d",
"second": "caa36e17111d6dbc9369581b9a52ecb4ff81a951eb11ff3094f80ac273c4c53d",
"small": "caa36e17111d6dbc9369581b9a52ecb4ff81a951eb11ff3094f80ac273c4c53d"
}
},
"STL": {
"sourceSha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca",
"cancel": {
"schemaVersion": 1,
"operationId": "stl-cancel-1",
"format": "STL",
"operation": "IMPORT",
"status": "CANCELLED",
"workerGeneration": 1,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 184,
"inputSha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca",
"outputBytes": 0,
"outputSha256": null,
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 0,
"committed": false,
"errorCode": "IO_FORMAT_OPERATION_CANCELLED"
},
"oom": {
"schemaVersion": 1,
"operationId": "stl-oom-1",
"format": "STL",
"operation": "IMPORT",
"status": "BLOCKED",
"workerGeneration": 1,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 524289,
"inputSha256": "42b47b7a78c2a45c3ab9694e86574825450221fe25d23bf505b97af4ca20283b",
"outputBytes": 0,
"outputSha256": null,
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 0,
"committed": false,
"errorCode": "IO_FORMAT_OOM"
},
"first": {
"schemaVersion": 1,
"operationId": "stl-first-1",
"format": "STL",
"operation": "IMPORT",
"status": "COMMITTED",
"workerGeneration": 1,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 184,
"inputSha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca",
"outputBytes": 184,
"outputSha256": "689d060c125c41a79d98f4ff241ebe10d9e0f1faebe6e66e507efa962dce1b2d",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true
},
"second": {
"schemaVersion": 1,
"operationId": "stl-second-2",
"format": "STL",
"operation": "IMPORT",
"status": "COMMITTED",
"workerGeneration": 2,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 184,
"inputSha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca",
"outputBytes": 184,
"outputSha256": "689d060c125c41a79d98f4ff241ebe10d9e0f1faebe6e66e507efa962dce1b2d",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true
},
"recovered": {
"schemaVersion": 1,
"operationId": "stl-first-1",
"format": "STL",
"operation": "IMPORT",
"status": "RECOVERED",
"workerGeneration": 2,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 184,
"inputSha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca",
"outputBytes": 184,
"outputSha256": "689d060c125c41a79d98f4ff241ebe10d9e0f1faebe6e66e507efa962dce1b2d",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true,
"errorCode": "IO_FORMAT_WORKER_RESTARTED"
},
"small": {
"schemaVersion": 1,
"operationId": "stl-small-3",
"format": "STL",
"operation": "IMPORT",
"status": "COMMITTED",
"workerGeneration": 3,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 184,
"inputSha256": "50161172cd12e4240067064db6f80e74b2df69c475e3e34154e9d0523928c1ca",
"outputBytes": 184,
"outputSha256": "689d060c125c41a79d98f4ff241ebe10d9e0f1faebe6e66e507efa962dce1b2d",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true
},
"hashes": {
"first": "689d060c125c41a79d98f4ff241ebe10d9e0f1faebe6e66e507efa962dce1b2d",
"second": "689d060c125c41a79d98f4ff241ebe10d9e0f1faebe6e66e507efa962dce1b2d",
"small": "689d060c125c41a79d98f4ff241ebe10d9e0f1faebe6e66e507efa962dce1b2d"
}
},
"PLY": {
"sourceSha256": "acaa369c17252d4d089a2e3064d0c1fcdfdb2d066759ed160adf7869d3e859d5",
"cancel": {
"schemaVersion": 1,
"operationId": "ply-cancel-1",
"format": "PLY",
"operation": "IMPORT",
"status": "CANCELLED",
"workerGeneration": 1,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 521,
"inputSha256": "acaa369c17252d4d089a2e3064d0c1fcdfdb2d066759ed160adf7869d3e859d5",
"outputBytes": 0,
"outputSha256": null,
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 0,
"committed": false,
"errorCode": "IO_FORMAT_OPERATION_CANCELLED"
},
"oom": {
"schemaVersion": 1,
"operationId": "ply-oom-1",
"format": "PLY",
"operation": "IMPORT",
"status": "BLOCKED",
"workerGeneration": 1,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 524289,
"inputSha256": "42b47b7a78c2a45c3ab9694e86574825450221fe25d23bf505b97af4ca20283b",
"outputBytes": 0,
"outputSha256": null,
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 0,
"committed": false,
"errorCode": "IO_FORMAT_OOM"
},
"first": {
"schemaVersion": 1,
"operationId": "ply-first-1",
"format": "PLY",
"operation": "IMPORT",
"status": "COMMITTED",
"workerGeneration": 1,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 521,
"inputSha256": "acaa369c17252d4d089a2e3064d0c1fcdfdb2d066759ed160adf7869d3e859d5",
"outputBytes": 509,
"outputSha256": "399a06c8f593dcdeda9ce9f4c6be74fa83b9fc905ae22a01f4af414284585cf5",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true
},
"second": {
"schemaVersion": 1,
"operationId": "ply-second-2",
"format": "PLY",
"operation": "IMPORT",
"status": "COMMITTED",
"workerGeneration": 2,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 521,
"inputSha256": "acaa369c17252d4d089a2e3064d0c1fcdfdb2d066759ed160adf7869d3e859d5",
"outputBytes": 509,
"outputSha256": "399a06c8f593dcdeda9ce9f4c6be74fa83b9fc905ae22a01f4af414284585cf5",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true
},
"recovered": {
"schemaVersion": 1,
"operationId": "ply-first-1",
"format": "PLY",
"operation": "IMPORT",
"status": "RECOVERED",
"workerGeneration": 2,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 521,
"inputSha256": "acaa369c17252d4d089a2e3064d0c1fcdfdb2d066759ed160adf7869d3e859d5",
"outputBytes": 509,
"outputSha256": "399a06c8f593dcdeda9ce9f4c6be74fa83b9fc905ae22a01f4af414284585cf5",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true,
"errorCode": "IO_FORMAT_WORKER_RESTARTED"
},
"small": {
"schemaVersion": 1,
"operationId": "ply-small-3",
"format": "PLY",
"operation": "IMPORT",
"status": "COMMITTED",
"workerGeneration": 3,
"baseRevision": 4,
"candidateRevision": 5,
"inputBytes": 521,
"inputSha256": "acaa369c17252d4d089a2e3064d0c1fcdfdb2d066759ed160adf7869d3e859d5",
"outputBytes": 509,
"outputSha256": "399a06c8f593dcdeda9ce9f4c6be74fa83b9fc905ae22a01f4af414284585cf5",
"temporaryBytes": 0,
"liveRequests": 0,
"publishedResults": 1,
"committed": true
},
"hashes": {
"first": "399a06c8f593dcdeda9ce9f4c6be74fa83b9fc905ae22a01f4af414284585cf5",
"second": "399a06c8f593dcdeda9ce9f4c6be74fa83b9fc905ae22a01f4af414284585cf5",
"small": "399a06c8f593dcdeda9ce9f4c6be74fa83b9fc905ae22a01f4af414284585cf5"
}
}
},
"assertions": {
"formats": [
"OBJ",
"STL",
"PLY"
],
"cancellationUnpublished": true,
"oomUnpublished": true,
"restartHashStable": true,
"smallRecoveryStable": true
},
"nextTask": "M13-01A"
}

View File

@@ -0,0 +1,20 @@
{
"schemaVersion": 1,
"task": "M12-07J",
"parentTask": "M12-07I",
"enablingTask": false,
"parityStateChange": false,
"runtime": "CHROMIUM_WORKER",
"operation": "IO_FORMAT_THREE_WAY_RECOVERY",
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-07I/manifest.json", "sha256": "02be4b2e2cabecf4a239ba52be385b926a70e794c6f8c745d89dada568e6d674" },
"protocol": { "path": "web/protocol/io-format-recovery.ts", "sha256": "7e352539e3300969c7409c34d6056eb6ad31055431ffce84b1b0a459c335480a" },
"worker": { "path": "web/app/src/workers/io-format-recovery-test.worker.ts", "sha256": "63b78fbf25132cad28147ef68731f2cd212a26c96b464fdec349a13ebaa1174f" },
"testingAdapter": { "path": "web/app/src/testing/io-format-recovery.ts", "sha256": "cfcebb6ec38936a66983957b0dede716871cfbfbea3cb53cddc16f3e24fb19b0" },
"unitTest": { "path": "web/tests/unit/io-format-recovery.test.mjs", "sha256": "aaed1f2abe4789b084c8a6a60bcce8595d38220d7e6678a93924cd05c5716b4f" },
"e2eTest": { "path": "web/tests/e2e/io-format-recovery.spec.ts", "sha256": "5c1750fa408e1297fc43f2e5749be3e9ac08a16b86265d22f0f06053f52b3bd7" },
"checker": { "path": "tools/web/check-io-format-recovery.mjs", "sha256": "6ef6bc4a168f8675a4933a06c296f61076b9ea64cec25b295e961a9b610ab1a2" },
"report": { "path": "tests/golden/M12-07J/io-format-recovery-report.json", "sha256": "35d4fe10d8a4fa84d6e05a85f20ca50975d93a86df41e73c7bbc5875edc4fc70" }
},
"nextTask": "M13-01A"
}

View File

@@ -0,0 +1,156 @@
{
"executionPolicy": {
"addon": "DENY",
"autorun": "DENY",
"driverExpression": "DENY",
"handler": "DENY",
"pythonConsole": "DENY",
"text": "READ_METADATA_ONLY"
},
"fixture": {
"byteLength": 497845,
"name": "script-entry-inventory.blend",
"sha256": "bd6375d02908bfcc57ff7cdeec3f9827bfc4336d1e46e165c5fbbf4d04f19645"
},
"inventory": {
"addons": {
"defaultExecution": "DENY",
"enabledAddons": [
"bl_pkg",
"cycles",
"io_anim_bvh",
"io_curve_svg",
"io_mesh_uv_layout",
"io_scene_fbx",
"io_scene_gltf2",
"pose_library"
],
"operatorIds": [
"preferences.addon_install",
"preferences.addon_enable",
"preferences.addon_disable",
"preferences.addon_remove"
]
},
"autorun": {
"defaultExecution": "DENY",
"moduleTextNames": [
"ModuleAutorun.py"
]
},
"driverExpressions": {
"count": 1,
"defaultExecution": "DENY",
"entries": [
{
"arrayIndex": 0,
"dataPath": "location",
"expression": "var * 2",
"object": "M13 Script Inventory Object",
"variableCount": 1
}
]
},
"handlers": {
"defaultExecution": "DENY",
"groups": [
"animation_playback_post",
"animation_playback_pre",
"annotation_post",
"annotation_pre",
"blend_import_post",
"blend_import_pre",
"composite_cancel",
"composite_post",
"composite_pre",
"depsgraph_update_post",
"depsgraph_update_pre",
"exit_pre",
"frame_change_post",
"frame_change_pre",
"load_factory_preferences_post",
"load_factory_startup_post",
"load_post",
"load_post_fail",
"load_pre",
"object_bake_cancel",
"object_bake_complete",
"object_bake_pre",
"redo_post",
"redo_pre",
"render_cancel",
"render_complete",
"render_init",
"render_post",
"render_pre",
"render_stats",
"render_write",
"save_post",
"save_post_fail",
"save_pre",
"translation_update_post",
"undo_post",
"undo_pre",
"version_update",
"xr_session_start_pre"
]
},
"pythonConsole": {
"available": true,
"operatorIds": [
"console.execute",
"console.history_append",
"console.scrollback_append"
]
},
"text": {
"count": 3,
"entries": [
{
"byteLength": 29,
"filepath": "//scripts/external_project.py",
"internal": false,
"lineCount": 2,
"name": "ExternalProject.py",
"useModule": false
},
{
"byteLength": 23,
"filepath": "",
"internal": true,
"lineCount": 3,
"name": "InternalSafe.py",
"useModule": false
},
{
"byteLength": 37,
"filepath": "",
"internal": true,
"lineCount": 3,
"name": "ModuleAutorun.py",
"useModule": true
}
]
}
},
"nextTask": "M13-01B",
"operation": "BLENDER_SCRIPT_ENTRY_INVENTORY",
"runtime": {
"binarySha256": "d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82",
"blenderVersion": "5.2.0 LTS",
"buildBranch": "unknown",
"buildDate": "2026-07-24",
"buildHash": "unknown",
"buildPlatform": "Linux",
"buildTime": "08:03:47",
"buildType": "Release",
"versionTuple": [
5,
2,
0
]
},
"schemaVersion": 1,
"sourceAnchor": "blender-5.2.0/source/blender/python",
"task": "M13-01A"
}

View File

@@ -0,0 +1,18 @@
{
"schemaVersion": 1,
"task": "M13-01A",
"parentTask": "M12-07J",
"enablingTask": true,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP",
"operation": "BLENDER_SCRIPT_ENTRY_INVENTORY",
"artifacts": {
"parentManifest": { "path": "tests/golden/M12-07J/manifest.json", "sha256": "a1c4cf9c2cc300ace388e6c430bd1aa991511a7d1c5482c638fb298bb362cd02" },
"generator": { "path": "tools/web/generate-script-entry-inventory.py", "sha256": "b72667493cfe9957161ef3fb9814180e0cfad5f8aaa1c60c9b6f132e915f3d6f" },
"checker": { "path": "tools/web/check-script-entry-inventory.mjs", "sha256": "68478f15de4d63ed175e6b580761fd478b1fe9bccbfcaeee82218d13063dfa51" },
"report": { "path": "tests/golden/M13-01A/entry-inventory.json", "sha256": "e024995c53f01beaf725f281f74a6e5ec6018a53435da61a66f5e58a9e50973c" },
"fixture": { "path": "tests/files/web/m13_script_entry_v1/script-entry-inventory.blend", "sha256": "bd6375d02908bfcc57ff7cdeec3f9827bfc4336d1e46e165c5fbbf4d04f19645" },
"runtimeInventory": { "path": "tests/golden/M12-05A/format-inventory.json", "sha256": "0d660b0fd8b647ebbf4e91afebd5006bd100973ab8e2507a5bfe759f477b33b4" }
},
"nextTask": "M13-01B"
}

View File

@@ -0,0 +1,17 @@
{
"schemaVersion": 1,
"task": "M13-01B",
"parentTask": "M13-01A",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_WASM_MAIN_AND_CHROMIUM",
"operation": "BLEND_OPEN_SCRIPT_METADATA_ONLY",
"artifacts": {
"parentManifest": { "path": "tests/golden/M13-01A/manifest.json", "sha256": "d4a305033343ef5fb1ffc073617b59d9012f64b80ecb233e743fb0789a8b4893" },
"checker": { "path": "tools/web/check-script-open-metadata.mjs", "sha256": "66396d5c9a5294021ae077bb162278c74d46de8b52ac8a444a5de4f6d84cfe05" },
"e2eTest": { "path": "web/tests/e2e/script-open-metadata.spec.ts", "sha256": "df6412cda113c830996e08c3d66a035dc1ac309e392f5946a762d11121b1926c" },
"report": { "path": "tests/golden/M13-01B/open-metadata-report.json", "sha256": "f92470e57c048452134664f7f6208e50b6f087dbcbc33369e6b882c51813990c" },
"fixture": { "path": "tests/files/web/script_scene.blend", "sha256": "2b8fbdb05419e1e61d64777998d6a3b2562f726c17f548cd1852efc723e1a037" }
},
"nextTask": "M13-01C"
}

View File

@@ -0,0 +1,31 @@
{
"schemaVersion": 1,
"task": "M13-01B",
"operation": "BLEND_OPEN_SCRIPT_METADATA_ONLY",
"fixture": {
"path": "tests/files/web/script_scene.blend",
"byteLength": 490191,
"sha256": "2b8fbdb05419e1e61d64777998d6a3b2562f726c17f548cd1852efc723e1a037"
},
"sources": [
{
"name": "ExternalProject.py",
"executionStatus": "BLOCKED",
"readOnly": true
},
{
"name": "InternalSafe.py",
"executionStatus": "BLOCKED",
"readOnly": true
},
{
"name": "ModuleAutorun.py",
"executionStatus": "BLOCKED",
"readOnly": true,
"moduleAutorunRequested": true,
"errorCode": "SCRIPT_POLICY_DENIED"
}
],
"execution": "DENY",
"nextTask": "M13-01C"
}

View File

@@ -0,0 +1,16 @@
{
"schemaVersion": 1,
"task": "M13-01C",
"parentTask": "M13-01B",
"enablingTask": false,
"parityStateChange": false,
"runtime": "WASM_PROTOCOL_NODE",
"operation": "SCRIPT_DEFAULT_DENY_POLICY_CODES",
"artifacts": {
"parentManifest": { "path": "tests/golden/M13-01B/manifest.json", "sha256": "0bb0abdb9f4d250a15c3889a4fb5c2630b8c416f4eb5c6523aa30097c8e45fd3" },
"checker": { "path": "tools/web/check-script-policy-codes.mjs", "sha256": "22588c2198bc8c425ab8e104e8559f0053654ae778aaea3783ec7d54822bc8f4" },
"unitTest": { "path": "web/tests/unit/script-policy-codes.test.mjs", "sha256": "b5a52b8e707963545f1cd71f1a148fa9c9b9d1e4b4c5f51c87d33f8bf3777430" },
"report": { "path": "tests/golden/M13-01C/policy-codes-report.json", "sha256": "956db548ee71688a4b89c9a993259d3e57129cd4abe9efd1b9397b3e30b1bf84" }
},
"nextTask": "M13-01D"
}

View File

@@ -0,0 +1,21 @@
{
"schemaVersion": 1,
"task": "M13-01C",
"operation": "SCRIPT_DEFAULT_DENY_POLICY_CODES",
"deniedEntries": [
{
"entry": "autorun",
"code": "SCRIPT_POLICY_DENIED"
},
{
"entry": "driverExpressions",
"code": "DRIVER_EXECUTION_BLOCKED"
},
{
"entry": "addonInstall",
"code": "ADDON_INSTALL_BLOCKED"
}
],
"approvedKeySandboxCode": "SCRIPT_SANDBOX_UNAVAILABLE",
"nextTask": "M13-01D"
}

View File

@@ -0,0 +1,15 @@
{
"schemaVersion": 1,
"task": "M13-01D",
"parentTask": "M13-01C",
"enablingTask": false,
"parityStateChange": false,
"runtime": "STATIC_PRODUCTION_SOURCE",
"operation": "SCRIPT_UI_DIRECT_EVAL_BYPASS_SCAN",
"artifacts": {
"parentManifest": { "path": "tests/golden/M13-01C/manifest.json", "sha256": "b35728fcd8e6267a3e5ee925d45abde019597b20eeb4c4c8e0a373ca99907d9b" },
"checker": { "path": "tools/web/check-script-ui-bypass.mjs", "sha256": "f34cb64891c2b22bc3da353f6b864ba3e558d3c286cf716bcb778d9a542cb3d9" },
"report": { "path": "tests/golden/M13-01D/ui-bypass-report.json", "sha256": "6b050092088508ebd5d769d95a2e66f0cd4020c97f3407724a19b9707f51f6dd" }
},
"nextTask": "M13-01E"
}

View File

@@ -0,0 +1,19 @@
{
"schemaVersion": 1,
"task": "M13-01D",
"operation": "SCRIPT_UI_DIRECT_EVAL_BYPASS_SCAN",
"roots": [
"web/app/src/app",
"web/app/src/workers",
"web/protocol"
],
"scannedFiles": 176,
"violations": [],
"policyEntrypoints": [
"gateScriptExecution",
"gateServerScriptJob",
"parseScriptSourceInventory"
],
"execution": "DENY",
"nextTask": "M13-01E"
}

View File

@@ -0,0 +1,17 @@
{
"schemaVersion": 1,
"task": "M13-01E",
"parentTask": "M13-01D",
"enablingTask": false,
"parityStateChange": false,
"runtime": "CHROMIUM_WEB_ENGINE",
"operation": "SCRIPT_TEXT_SAVE_REOPEN",
"artifacts": {
"parentManifest": { "path": "tests/golden/M13-01D/manifest.json", "sha256": "6b28688b3ebcce5629bcfc437d4ca903d0b1e053b32a796690ee4e021726c75b" },
"checker": { "path": "tools/web/check-script-save-reopen.mjs", "sha256": "7fc9a370cb472636e2699565cb21a1450e3cc8a2c90ffdcdff96533b344afa7c" },
"e2eTest": { "path": "web/tests/e2e/script-save-reopen.spec.ts", "sha256": "481f78f3a0cce923b67ab14436cc23cbcd2ce66725de29dc874fea4fb5801227" },
"report": { "path": "tests/golden/M13-01E/script-save-reopen-report.json", "sha256": "0f6869a8ec8342ed87649312d2872ab2c172cbf12d6be81bb0b770ebcbe8a398" },
"fixture": { "path": "tests/files/web/script_scene.blend", "sha256": "2b8fbdb05419e1e61d64777998d6a3b2562f726c17f548cd1852efc723e1a037" }
},
"nextTask": "M13-01F"
}

View File

@@ -0,0 +1,102 @@
{
"schemaVersion": 1,
"task": "M13-01E",
"operation": "SCRIPT_TEXT_SAVE_REOPEN",
"source": {
"fixtureSha256": "2b8fbdb05419e1e61d64777998d6a3b2562f726c17f548cd1852efc723e1a037",
"fixtureBytes": 490191
},
"before": {
"schemaVersion": 1,
"sources": [
{
"byteLength": 29,
"errorCode": "SCRIPT_SANDBOX_UNAVAILABLE",
"executionStatus": "BLOCKED",
"id": "text:ExternalProject.py",
"internal": false,
"lineCount": 2,
"moduleAutorunRequested": false,
"name": "ExternalProject.py",
"readOnly": true,
"source": "message = 'project relative'\n",
"sourcePath": "//scripts/external_project.py",
"sourceSha256": "1332a556fa4a8c0d55c6661931bcc7c3cd79a193bab5e34c8b060cf97fec6a96"
},
{
"byteLength": 23,
"errorCode": "SCRIPT_SANDBOX_UNAVAILABLE",
"executionStatus": "BLOCKED",
"id": "text:InternalSafe.py",
"internal": true,
"lineCount": 3,
"moduleAutorunRequested": false,
"name": "InternalSafe.py",
"readOnly": true,
"source": "value = 7\nprint(value)\n",
"sourceSha256": "1676bea86b7d12f595d531c32286e26ad0ac7a249d1bd40744b01634977ae582"
},
{
"byteLength": 37,
"errorCode": "SCRIPT_POLICY_DENIED",
"executionStatus": "BLOCKED",
"id": "text:ModuleAutorun.py",
"internal": true,
"lineCount": 3,
"moduleAutorunRequested": true,
"name": "ModuleAutorun.py",
"readOnly": true,
"source": "def register():\n return 'blocked'\n",
"sourceSha256": "4b1d1ffa97bf18cd834d1a2472cab16f24f1439143964d09d283b6cc043e17bd"
}
]
},
"after": {
"schemaVersion": 1,
"sources": [
{
"byteLength": 29,
"errorCode": "SCRIPT_SANDBOX_UNAVAILABLE",
"executionStatus": "BLOCKED",
"id": "text:ExternalProject.py",
"internal": false,
"lineCount": 2,
"moduleAutorunRequested": false,
"name": "ExternalProject.py",
"readOnly": true,
"source": "message = 'project relative'\n",
"sourcePath": "//scripts/external_project.py",
"sourceSha256": "1332a556fa4a8c0d55c6661931bcc7c3cd79a193bab5e34c8b060cf97fec6a96"
},
{
"byteLength": 23,
"errorCode": "SCRIPT_SANDBOX_UNAVAILABLE",
"executionStatus": "BLOCKED",
"id": "text:InternalSafe.py",
"internal": true,
"lineCount": 3,
"moduleAutorunRequested": false,
"name": "InternalSafe.py",
"readOnly": true,
"source": "value = 7\nprint(value)\n",
"sourceSha256": "1676bea86b7d12f595d531c32286e26ad0ac7a249d1bd40744b01634977ae582"
},
{
"byteLength": 37,
"errorCode": "SCRIPT_POLICY_DENIED",
"executionStatus": "BLOCKED",
"id": "text:ModuleAutorun.py",
"internal": true,
"lineCount": 3,
"moduleAutorunRequested": true,
"name": "ModuleAutorun.py",
"readOnly": true,
"source": "def register():\n return 'blocked'\n",
"sourceSha256": "4b1d1ffa97bf18cd834d1a2472cab16f24f1439143964d09d283b6cc043e17bd"
}
]
},
"savedBytes": 490191,
"exact": true,
"nextTask": "M13-01F"
}

View File

@@ -0,0 +1,37 @@
{
"fixture": {
"byteLength": 491160,
"name": "malicious-script.blend",
"sha256": "7b1921931afc5bb74a2b73e90b175017c583ea878cdbb66f131718b2d8cd23b5"
},
"nextTask": "M13-02A",
"operation": "MALICIOUS_SCRIPT_FIXTURE",
"schemaVersion": 1,
"sources": [
{
"expectedExecution": "BLOCKED",
"name": "DriverExploit.py",
"sourceSha256": "065c9f659ba12657ad0d5cc513aea1f589c6ed69feabb0f56dd786d2002b691d",
"useModule": false
},
{
"expectedExecution": "BLOCKED",
"name": "EmbeddedModule.py",
"sourceSha256": "7bc119a7cbfb129a2fa48e3636b9e05e03326f73711942594f6a8ee28f8bbd3f",
"useModule": true
},
{
"expectedExecution": "BLOCKED",
"name": "HandlerExploit.py",
"sourceSha256": "bc028c5143813ecc35384e0f366dcd4f42f7531f1e748713626f9710f5147373",
"useModule": false
},
{
"expectedExecution": "BLOCKED",
"name": "MaliciousText.py",
"sourceSha256": "c852d3e669074d4951900312aed2625fdb5d9e106328257607a1e4cad43172eb",
"useModule": false
}
],
"task": "M13-01F"
}

View File

@@ -0,0 +1,18 @@
{
"schemaVersion": 1,
"task": "M13-01F",
"parentTask": "M13-01E",
"enablingTask": false,
"parityStateChange": false,
"runtime": "BLENDER_5_2_DESKTOP_AND_CHROMIUM",
"operation": "MALICIOUS_SCRIPT_FIXTURE",
"artifacts": {
"parentManifest": { "path": "tests/golden/M13-01E/manifest.json", "sha256": "889a4e06f7e8c0ea55b3ca4baa9fe85dccbe97053e497a45e3d364ce2b70a7c6" },
"generator": { "path": "tools/web/generate-malicious-script-fixture.py", "sha256": "013285befeb59de21a887cefd377adf8cf53ff1c785b28a9c87d29f76f092731" },
"checker": { "path": "tools/web/check-malicious-script-fixture.mjs", "sha256": "36608da893ae59e2e03856a62866ea6e7c349ec4a63200f042b2329e5f61caa9" },
"e2eTest": { "path": "web/tests/e2e/malicious-script.spec.ts", "sha256": "98fbde6728ddf55cce5262522197a5b4db1dfce618e52259bf0b0c9e0e9165f2" },
"report": { "path": "tests/golden/M13-01F/malicious-report.json", "sha256": "a628b73411d6f9a761f659ae28867ea9b0c0df30d47668353278b70d4b44180c" },
"fixture": { "path": "tests/files/web/m13_malicious_script_v1/malicious-script.blend", "sha256": "7b1921931afc5bb74a2b73e90b175017c583ea878cdbb66f131718b2d8cd23b5" }
},
"nextTask": "M13-02A"
}

View File

@@ -0,0 +1,45 @@
{
"schemaVersion": 1,
"task": "M13-02A",
"operation": "SCRIPT_MANIFEST_BUDGETS",
"accepted": {
"scriptCount": 2,
"canonicalEntryPath": "scripts/base.py",
"canonicalDependencyPath": "deps/base.py",
"totalSourceBytes": 256,
"module": false
},
"denied": {
"count": {
"status": "BLOCKED",
"code": "SCRIPT_BUDGET_EXCEEDED"
},
"totalBytes": {
"status": "BLOCKED",
"code": "SCRIPT_BUDGET_EXCEEDED"
},
"module": {
"status": "BLOCKED",
"code": "SCRIPT_POLICY_DENIED"
},
"path": {
"status": "BLOCKED",
"code": "SCRIPT_MANIFEST_INVALID"
},
"dependency": {
"status": "BLOCKED",
"code": "SCRIPT_MANIFEST_INVALID"
},
"permission": {
"status": "BLOCKED",
"code": "SCRIPT_POLICY_DENIED"
}
},
"budgets": {
"maxScripts": 1024,
"maxSourceBytes": 1048576,
"maxDependencies": 128,
"maxPermissions": 64
},
"nextTask": "M13-02B"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M13-02A",
"parentTask": "M13-01F",
"enablingTask": false,
"parityStateChange": false,
"runtime": "PRODUCTION_PROTOCOL_AND_CHROMIUM_WORKER",
"operation": "SCRIPT_MANIFEST_BUDGETS",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M13-01F/manifest.json",
"sha256": "9a0b7c4097b3755365a9fb92b4848e6ac2ddd36ee2c7e9df3cb8808ce247cf3d"
},
"protocol": {
"path": "web/protocol/scripting-platform.ts",
"sha256": "6699fc0a19e0736823f164e707a420655803e36019cf0071f7ff9c760d25e9f2"
},
"worker": {
"path": "web/app/src/workers/scripting-manifest-budget-test.worker.ts",
"sha256": "8d8eae67fa6915f0337850e15247baf01f0abde0b3362fbb120f0b448f1a4cf5"
},
"checker": {
"path": "tools/web/check-script-manifest-budgets.mjs",
"sha256": "b3457324d72ab233cd17a142ea19fac6a0d024dd95de7b8fb5d26810437fb0d2"
},
"unit": {
"path": "web/tests/unit/script-manifest-budgets.test.mjs",
"sha256": "6ce7847a0b745ba4081e4332d012e0b7f86e4906c71c95bdeda8c39977a630ee"
},
"e2e": {
"path": "web/tests/e2e/script-manifest-budgets.spec.ts",
"sha256": "1ef4fd4caaeb1fa3d832fc8881823d5284755372575eab186c751f408dc9314c"
},
"report": {
"path": "tests/golden/M13-02A/manifest-budget-report.json",
"sha256": "860672fe844b7969ca376d4b2708771189d1767efa819f7b97667d8a26438d3a"
}
},
"nextTask": "M13-02B"
}

View File

@@ -0,0 +1,30 @@
{
"schemaVersion": 1,
"task": "M13-02B",
"operation": "SCRIPT_MANIFEST_CANONICAL_SERIALIZATION",
"equalOrderVariants": true,
"canonical": {
"scriptOrder": [
"alpha",
"beta",
"zeta"
],
"alphaPermissions": [
"READ_ASSET",
"SUBMIT_SERVER_JOB"
],
"zetaDependencies": [
"alpha",
"beta"
],
"unknownFieldsDropped": true
},
"signatureInput": {
"schemaVersion": 1,
"byteLength": 1923,
"sha256": "8dcb1c31e9ff0066f2a4e225af49f84daeb8b0d0e713e4525228ee015846480a",
"sourceByteLengthMutationChangesInput": true,
"schemaMutationRejected": true
},
"nextTask": "M13-02C"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M13-02B",
"parentTask": "M13-02A",
"enablingTask": false,
"parityStateChange": false,
"runtime": "PRODUCTION_PROTOCOL_AND_CHROMIUM_WORKER",
"operation": "SCRIPT_MANIFEST_CANONICAL_SERIALIZATION",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M13-02A/manifest.json",
"sha256": "7148e0387dadffdb55e94e80dc30cfd5cdd40ebe990d06378e90c376d36ebd51"
},
"protocol": {
"path": "web/protocol/scripting-platform.ts",
"sha256": "6699fc0a19e0736823f164e707a420655803e36019cf0071f7ff9c760d25e9f2"
},
"worker": {
"path": "web/app/src/workers/scripting-manifest-canonical-test.worker.ts",
"sha256": "de27fdcd6d16e27a07806ac609f908edfdb7a93d653676174cdd5e06ffa394af"
},
"checker": {
"path": "tools/web/check-script-manifest-canonical.mjs",
"sha256": "5ed344cab6428ae5538a450171ba40c73ff738666515492298e30aaed1394f56"
},
"unit": {
"path": "web/tests/unit/script-manifest-canonical.test.mjs",
"sha256": "33eae0f3ad2ae7243c9ce2835ab8e42186f65f574ab682099766f1d0f4c481f6"
},
"e2e": {
"path": "web/tests/e2e/script-manifest-canonical.spec.ts",
"sha256": "5342301165ae82a01b46f5fed0cc0ec34b9813a6ecbc8032900d90b89628e064"
},
"report": {
"path": "tests/golden/M13-02B/manifest-canonical-report.json",
"sha256": "5f4bc0b098ea65de47f1255d30130376d74260e2b912bcd0e28354171fbd07df"
}
},
"nextTask": "M13-02C"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M13-02C",
"parentTask": "M13-02B",
"enablingTask": false,
"parityStateChange": false,
"runtime": "PRODUCTION_PROTOCOL_AND_CHROMIUM_WORKER",
"operation": "SCRIPT_TRUST_POLICY",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M13-02B/manifest.json",
"sha256": "605c656780a206a0d3b81d06b0294108b488a62d2b709e886884a2973c6cb091"
},
"protocol": {
"path": "web/protocol/scripting-platform.ts",
"sha256": "6699fc0a19e0736823f164e707a420655803e36019cf0071f7ff9c760d25e9f2"
},
"worker": {
"path": "web/app/src/workers/script-trust-policy-test.worker.ts",
"sha256": "c6e206b29e7cacc3e23e2ac12a3d523a9c0b16ff29759126dab13c8665547421"
},
"checker": {
"path": "tools/web/check-script-trust-policy.mjs",
"sha256": "0e55ce20d142f2bcbc5ce9c6fb955ef2771d284dff636c79da3f59a33b8b0aeb"
},
"unit": {
"path": "web/tests/unit/script-trust-policy.test.mjs",
"sha256": "aac3ff0a1c7ae27e35112614bedabc02bb248882ec9b0b52d65f9794d06830d8"
},
"e2e": {
"path": "web/tests/e2e/script-trust-policy.spec.ts",
"sha256": "614091bda15367090bc78a6f465fb10d02d0aa08775b5088699b12e2490034d2"
},
"report": {
"path": "tests/golden/M13-02C/trust-policy-report.json",
"sha256": "0f59f733920edbbe5cb799e5f50ff31d19e55ced98e7a890828f6337a237e4bd"
}
},
"nextTask": "M13-02D"
}

View File

@@ -0,0 +1,26 @@
{
"schemaVersion": 1,
"task": "M13-02C",
"operation": "SCRIPT_TRUST_POLICY",
"identity": {
"algorithm": "ED25519",
"publisher": "Team",
"activeKey": "key:new",
"predecessor": "key:old",
"predecessorStatus": "REVOKED"
},
"timestampPolicy": {
"issuedAt": "2026-01-01T00:00:00.000Z",
"expiresAt": "2027-01-01T00:00:00.000Z",
"maxClockSkewMs": 300000
},
"decisions": {
"eligible": "ELIGIBLE",
"cryptographicVerification": "REQUIRED",
"revoked": "REVOKED",
"crossPublisher": "SCRIPT_POLICY_DENIED",
"policyExpired": "POLICY_EXPIRED"
},
"policySha256": "6c272f0b6662656194fff46c71faf69a87e0eafa31091ec474bf96eb76948323",
"nextTask": "M13-02D"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M13-02D",
"parentTask": "M13-02C",
"enablingTask": false,
"parityStateChange": false,
"runtime": "PRODUCTION_PROTOCOL_AND_CHROMIUM_WORKER",
"operation": "SCRIPT_SIGNATURE_VERIFICATION",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M13-02C/manifest.json",
"sha256": "89745daca88371335f4bd56982791266461082066c6c1345056fbc697bb7e6a2"
},
"protocol": {
"path": "web/protocol/scripting-platform.ts",
"sha256": "6699fc0a19e0736823f164e707a420655803e36019cf0071f7ff9c760d25e9f2"
},
"worker": {
"path": "web/app/src/workers/script-signature-test.worker.ts",
"sha256": "f4e8ff45d06efcfa9e634ef28e654241d70554ed05dfe9c3fecd9f6eef166ce0"
},
"checker": {
"path": "tools/web/check-script-signature.mjs",
"sha256": "2d6e7b403dd6d401eb1a41978016b40bd1fb86120464e09f185de4445c177fa4"
},
"unit": {
"path": "web/tests/unit/script-trust-policy.test.mjs",
"sha256": "aac3ff0a1c7ae27e35112614bedabc02bb248882ec9b0b52d65f9794d06830d8"
},
"e2e": {
"path": "web/tests/e2e/script-signature.spec.ts",
"sha256": "8a882fc8fa2c0c4e2eab3660810cec0f60d2f7475f62a1bb406fc3b2bdf60882"
},
"report": {
"path": "tests/golden/M13-02D/signature-report.json",
"sha256": "957daf8e5899714cc5ce253b1f0fb2b258f1cc966238fff31e2626f8f56feb3a"
}
},
"nextTask": "M13-02E"
}

View File

@@ -0,0 +1,24 @@
{
"schemaVersion": 1,
"task": "M13-02D",
"operation": "SCRIPT_SIGNATURE_VERIFICATION",
"signer": {
"algorithm": "ED25519",
"keyId": "key:new",
"publisher": "Team",
"cryptographicVerification": "REQUIRED"
},
"decisions": {
"verified": "SCRIPT_SIGNATURE_VERIFIED",
"sourceHashChanged": "SCRIPT_SIGNATURE_INVALID",
"signatureChanged": "SCRIPT_SIGNATURE_INVALID",
"revoked": "SCRIPT_POLICY_DENIED"
},
"input": {
"verifiedSha256": "978efe254fc421028bc1c62e7fee809f7b08b60ea2928501d0b2cfb71bf59cd2",
"changedSha256": "5e7aed5aea6b3dcc635f8d1ba99099e7e27ddb3110f12afc7d40995986ba8cfb",
"sourceHashMutationChangesInput": true,
"signatureExcludedFromInput": true
},
"nextTask": "M13-02E"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M13-02E",
"parentTask": "M13-02D",
"enablingTask": false,
"parityStateChange": false,
"runtime": "PRODUCTION_PROTOCOL_AND_CHROMIUM_WORKER",
"operation": "SCRIPT_PERMISSION_MINIMIZATION",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M13-02D/manifest.json",
"sha256": "c6b79a77e4b7ffe5f4a9ba785a30305f9cf6e86caf89b38a4b303a86ab662a31"
},
"protocol": {
"path": "web/protocol/scripting-platform.ts",
"sha256": "6699fc0a19e0736823f164e707a420655803e36019cf0071f7ff9c760d25e9f2"
},
"worker": {
"path": "web/app/src/workers/script-permission-policy-test.worker.ts",
"sha256": "5df074e676542475009a4980fecaf3fdde009d149de84b9ca146647fb6aa1c02"
},
"checker": {
"path": "tools/web/check-script-permission-policy.mjs",
"sha256": "169ab096295e08c5a630ef09d814da6ce742efd7a7143ff9a17984b4ca20593a"
},
"unit": {
"path": "web/tests/unit/script-permission-policy.test.mjs",
"sha256": "43bb6796616f3f92d71b51ef2a119a4e263864121a03356764e4b9c9241c4043"
},
"e2e": {
"path": "web/tests/e2e/script-permission-policy.spec.ts",
"sha256": "dc13412a44f277bbe68315da0d38a2c4aa520d7489c81e7c908f9768c0547b7e"
},
"report": {
"path": "tests/golden/M13-02E/permission-policy-report.json",
"sha256": "8dc41e75620ba5bcb08d0edc52c3994e4f4dbc37ad3633757634bf10fe97b252"
}
},
"nextTask": "M13-02F"
}

View File

@@ -0,0 +1,21 @@
{
"schemaVersion": 1,
"task": "M13-02E",
"operation": "SCRIPT_PERMISSION_MINIMIZATION",
"decisions": {
"defaultGrant": "ALLOWED",
"declaredGrant": "ALLOWED",
"escalation": "SCRIPT_POLICY_DENIED",
"unknownRequest": "SCRIPT_POLICY_DENIED",
"duplicateRequest": "SCRIPT_POLICY_DENIED",
"unknownDeclaration": "SCRIPT_POLICY_DENIED"
},
"invariant": {
"undeclaredNeverGranted": true,
"defaultGrantedCount": 0,
"declaredGranted": [
"READ_MAIN"
]
},
"nextTask": "M13-02F"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M13-02F",
"parentTask": "M13-02E",
"enablingTask": false,
"parityStateChange": false,
"runtime": "PRODUCTION_PROTOCOL_AND_CHROMIUM_WORKER",
"operation": "SCRIPT_SIGNATURE_NEGATIVE_CASES",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M13-02E/manifest.json",
"sha256": "691376d3cd33d3cd339b7195034abaf89cc02fba7e740c40ff051c4496400eef"
},
"protocol": {
"path": "web/protocol/scripting-platform.ts",
"sha256": "6699fc0a19e0736823f164e707a420655803e36019cf0071f7ff9c760d25e9f2"
},
"worker": {
"path": "web/app/src/workers/script-signature-negative-test.worker.ts",
"sha256": "49b289110a6533fcd1a29ad78be00792fd3c0d251c6027bae0440f5daba929a1"
},
"checker": {
"path": "tools/web/check-script-signature-negative.mjs",
"sha256": "35f2e6727aef5e6ea2e2623e2effa6ea0356faaf66d417976db7f5bbe671a38c"
},
"unit": {
"path": "web/tests/unit/script-signature-negative.test.mjs",
"sha256": "8b9c8d63c97fce07299622b9ad261791a97bb91a6ed340e72c24c55e685978bd"
},
"e2e": {
"path": "web/tests/e2e/script-signature-negative.spec.ts",
"sha256": "26c52ef67d6b1ea2994d92637826994e98e5234e042049f8d69a905f5cdb3309"
},
"report": {
"path": "tests/golden/M13-02F/signature-negative-report.json",
"sha256": "d23a2ae5613b2442ad79420aa344ebfe3767d10ac19b3ea30a62afcccd3a167c"
}
},
"nextTask": "M13-03A"
}

View File

@@ -0,0 +1,21 @@
{
"schemaVersion": 1,
"task": "M13-02F",
"operation": "SCRIPT_SIGNATURE_NEGATIVE_CASES",
"decisions": {
"missing": "SCRIPT_POLICY_DENIED",
"expired": "SCRIPT_POLICY_DENIED",
"notYetValid": "SCRIPT_POLICY_DENIED",
"publisherMismatch": "SCRIPT_POLICY_DENIED",
"swapped": "SCRIPT_SIGNATURE_INVALID"
},
"invariants": {
"missingKeyDenied": true,
"expiredKeyDenied": true,
"notYetValidKeyDenied": true,
"publisherConfusionDenied": true,
"swappedSignatureDenied": true,
"noExecution": true
},
"nextTask": "M13-03A"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M13-03A",
"parentTask": "M13-02F",
"enablingTask": false,
"parityStateChange": false,
"runtime": "PRODUCTION_PROTOCOL_AND_CHROMIUM_WORKER",
"operation": "SCRIPT_SANDBOX_SCOPE",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M13-02F/manifest.json",
"sha256": "283673b21e6c9b89dc6ecb7007f3cecf28d53a84ec84f3f8b52373c055538a74"
},
"protocol": {
"path": "web/protocol/scripting-platform.ts",
"sha256": "6699fc0a19e0736823f164e707a420655803e36019cf0071f7ff9c760d25e9f2"
},
"worker": {
"path": "web/app/src/workers/script-sandbox-scope-test.worker.ts",
"sha256": "27058fbb602791cbe6691fa14b3bc9c3d6cdea79641ba9c72fe18b6226d2a651"
},
"checker": {
"path": "tools/web/check-script-sandbox-scope.mjs",
"sha256": "ad26ea3b078e480ba8f99cbf8dbd0d9b135c7605f4a3958d24845b7f5f8b0f43"
},
"unit": {
"path": "web/tests/unit/script-sandbox-scope.test.mjs",
"sha256": "a15da2e645d2d681c7e9ac1380f6b224d196d1d2e78d20f1bacad01e138753d4"
},
"e2e": {
"path": "web/tests/e2e/script-sandbox-scope.spec.ts",
"sha256": "49930747e6663f79b61093706318b72e59388d79e3e1cc105bc1571693326667"
},
"report": {
"path": "tests/golden/M13-03A/sandbox-scope-report.json",
"sha256": "ba5784c751d5a347f38aa522ffcbed270d38fb474f0f10a2d06ea501d0234021"
}
},
"nextTask": "M13-03B"
}

View File

@@ -0,0 +1,29 @@
{
"schemaVersion": 1,
"task": "M13-03A",
"operation": "SCRIPT_SANDBOX_SCOPE",
"accepted": {
"schemaVersion": 1,
"dom": false,
"hostWorker": false,
"opfs": false,
"indexedDB": false,
"network": false
},
"blocked": {
"dom": "SCRIPT_POLICY_DENIED",
"hostWorker": "SCRIPT_POLICY_DENIED",
"opfs": "SCRIPT_POLICY_DENIED",
"indexedDB": "SCRIPT_POLICY_DENIED",
"network": "SCRIPT_POLICY_DENIED"
},
"execution": "DISABLED",
"invariants": {
"noDom": true,
"noHostWorker": true,
"noOPFS": true,
"noIndexedDB": true,
"noNetwork": true
},
"nextTask": "M13-03B"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "M13-03B",
"parentTask": "M13-03A",
"enablingTask": false,
"parityStateChange": false,
"runtime": "PRODUCTION_PROTOCOL_AND_CHROMIUM_WORKER",
"operation": "SCRIPT_SANDBOX_BUDGET",
"artifacts": {
"parentManifest": {
"path": "tests/golden/M13-03A/manifest.json",
"sha256": "76a7ce0fd3a38fb770c9cedccbd05ed566b931caa1782fdae898d3b66c3a20bf"
},
"protocol": {
"path": "web/protocol/scripting-platform.ts",
"sha256": "6699fc0a19e0736823f164e707a420655803e36019cf0071f7ff9c760d25e9f2"
},
"worker": {
"path": "web/app/src/workers/script-sandbox-budget-test.worker.ts",
"sha256": "ed836a032b33f54154fdd36f9f6e99ee43ca1755ea0dd8326474a13300ec965e"
},
"checker": {
"path": "tools/web/check-script-sandbox-budget.mjs",
"sha256": "ab10d1d32c20022c848be4b33e1be846168a9ca4cf22ac932ea000001e9e2391"
},
"unit": {
"path": "web/tests/unit/script-sandbox-budget.test.mjs",
"sha256": "caa40fc58a73aa4d433285c94009e5436a29fbcb6b4e18b74b27c49fd0b07490"
},
"e2e": {
"path": "web/tests/e2e/script-sandbox-budget.spec.ts",
"sha256": "8be77fd55e76149bfe2e0e449d81a62707ebfa430514936808ec4805fc96e07c"
},
"report": {
"path": "tests/golden/M13-03B/sandbox-budget-report.json",
"sha256": "4355710e07e95cbb0f96a82fdefca3607f363d3aea9ba89c332e8a4708b7bed2"
}
},
"nextTask": "M13-03C"
}

View File

@@ -0,0 +1,29 @@
{
"schemaVersion": 1,
"task": "M13-03B",
"operation": "SCRIPT_SANDBOX_BUDGET",
"accepted": {
"schemaVersion": 1,
"cpuMs": 1000,
"wallMs": 5000,
"memoryBytes": 1048576,
"maxMessageBytes": 4096,
"maxOutputBytes": 8192
},
"blocked": {
"cpuMs": "SCRIPT_BUDGET_EXCEEDED",
"wallMs": "SCRIPT_BUDGET_EXCEEDED",
"memoryBytes": "SCRIPT_BUDGET_EXCEEDED",
"maxMessageBytes": "SCRIPT_BUDGET_EXCEEDED",
"maxOutputBytes": "SCRIPT_BUDGET_EXCEEDED"
},
"execution": "DISABLED",
"invariants": {
"cpuBounded": true,
"wallBounded": true,
"memoryBounded": true,
"messageBounded": true,
"outputBounded": true
},
"nextTask": "M13-03C"
}

Some files were not shown because too many files have changed in this diff Show More