3.6 KiB
M12-07H Status
status: done
task: PLY vertex/face/color/custom property mapping and unknown property loss report
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
Scope
The production ply-import protocol now accepts explicitly declared ASCII and binary
little-endian PLY. Vertex position, normal, RGBA color, numeric custom properties, face
indices, and numeric face properties are mapped into a bounded canonical document. Unsupported
vertex/face list properties and unknown elements are skipped with deterministic
PLY_UNKNOWN_PROPERTY/PLY_UNKNOWN_ELEMENT loss warnings; mapped fields remain available.
The worker serializes the canonical document to bounded ASCII PLY for desktop validation.
This task does not expose a general PLY file-picker route or claim full PLY attribute parity.
Evidence
build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generate-ply-mapping-fixtures.py -- tests/files/web/m12_ply_mapping_v1 tests/golden/M12-07H/mapping-report.jsongenerated deterministic ASCII and binary little-endian fixtures containing four vertices, two faces, RGBA colors, and two numeric custom vertex attributes. A derived ASCII fixture contains an unsupported list property.node tools/web/check-ply-mapping-fixtures.mjsmatched pinned Blender 5.2 runtime identity, artifact hashes, field counts and a fresh byte-for-byte regeneration:ply-mapping-fixtures-ok vertices=4 faces=2 colors=rgba custom=2 unknown=PLY_UNKNOWN_PROPERTY deterministic=true next=M12-07I.node --test web/tests/unit/ply-import.test.mjspassed 3/3. It covers both encodings, mapped values, unknown-property loss, serialization/reopen, and format mismatch blocking.UPDATE_PLY_MAPPING_REPORT=1 CHROME_PATH=/usr/bin/google-chrome-stable WEB_TEST_PORT=5472 node_modules/.bin/playwright test --config playwright.config.ts --workers=1 tests/e2e/ply-web-roundtrip.spec.tspassed 1/1. Production Chromium Worker parsed both encodings, reported unknown loss, serialized ASCII, and pinned Blender 5.2 re-imported the result with exact vertex/face/position counts and mapped custom/color attributes.npm --prefix web run typecheck,node --check tools/web/check-ply-mapping-fixtures.mjs, and Python compile checks passed.
Artifact Hashes
- protocol:
058a3263fde553637840a4e9ad4e8e9d923eb52c250f8000317c7f43a228881d - worker:
f6bf5e39e83286d7b257bbdce88f4d7fa027c64651da9765567788b5cf298c71 - generator:
ffc051eccfc6973ee00cc791cdbd641fcce308b4083741e3e6ae82291d9347b7 - checker:
2b055dbc705830848efdf4d8db8543a3ccc684de1f258732bcafefa86cf65c3a - desktop importer:
6edbc6e401a1a902dcfd11c4d767e8c8620d694e40eb4ca29dd8479f9c55ef37 - unit/e2e:
b03a5f4b4b2a974fa26e653763470b92d1433c5d352ae09ab5492b841e6e5e1f/2cadebc89057655d78e9b520bb6adf9debb27c6d783cd002efee08d269636fb9 - desktop mapping report:
8a02fc9e364ed79e50ef00897affa9ab63808d3cb3cdabd00fdb8ee4c26ec18a - Chromium/desktop round-trip report:
1ca9d3b7870fcc8c9e3c9bbbd90ef48bd13bbc9ae0462312c9482f24f05f13ec - ASCII/binary/unknown fixtures:
acaa369c17252d4d089a2e3064d0c1fcdfdb2d066759ed160adf7869d3e859d5/d0fc195fd1a101c42ac984a2382bccdddb7d0bf60dd618e9f637c964f1b30b9e/a994c7126f235d0067ce4af35f8b0c6699cc83073e2a37e982edd45ece459f33
Next Task
M12-07I: PLY big-endian, malformed list, and oversized count stable blocking.
Rollback
Remove the PLY mapping protocol, worker, fixture generator/checker, fixtures, reports, tests, package script, and this status entry. Restore M12-07G as the queue tail and move the machine queue back to M12-07H. No parity ledger rollback is required.