# M16-GAP-00014 Status status: done task: Mesh data-block LOCAL_EXACT slice updated: 2026-08-19 America/New_York scope: Blender 5.2 Mesh geometry metadata for one quad: counts, triangulated indices, positions, UV layer identity and UV values. evidence: - `tools/web/generated/M16-GAP-00014.py` generated a retained `WebGapMesh` quad with four vertices, one face and one `WebGapUV` layer. - Desktop report reopened after save and matched exactly: 4 vertices, 4 edges, 1 face, 4 corners, 2 triangles, deterministic positions/indices and UV values. - WASM/Main opened the same fixture with `geometryStatus=available`, matched counts, positions, indices and UV layer, and save/reopen matched the complete mesh snapshot exactly. - A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged. - `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00014.py -- tests/files/web/generated/M16-GAP-00014-datablock-Mesh.blend` exited 0. - `npm --prefix web run test:generated-gap -- --task M16-GAP-00014` exited 0. - `node tools/web/check-generated-gap.mjs --task M16-GAP-00014` exited 0. artifacts: `tests/golden/M16-GAP-00014/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports. knownRisk: This closes one `datablock:Mesh` geometry-reader slice only. Mesh edit operators, modifiers, shape keys, skinning, paint attributes and all other generated gaps remain separate tasks. rollback: remove this task's fixture, checker, reports, manifest, status and context; restore `M16-GAP-00013` as the queue tail without editing its successful evidence. nextTask: `M16-GAP-00015`