# M16-GAP-00019 Status status: done task: PointCloud data-block LOCAL_EXACT slice updated: 2026-08-19 America/New_York scope: Blender 5.2 PointCloud geometry with four deterministic points, position attributes and radii. evidence: - `tools/web/generated/M16-GAP-00019.py` generated a retained `WebGapPointCloud` through Blender's point-cloud conversion path with four deterministic points and radius values `[0.25, 0.5, 0.75, 1.0]`. - Desktop report reopened after save and matched exactly: four points and all control-point/radius values. - Existing PointCloud reader support exposed the same fixture in WASM/Main with `geometryStatus=available`; positions and radii matched desktop and save/reopen matched the full non-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-00019.py -- tests/files/web/generated/M16-GAP-00019-datablock-PointCloud.blend` exited 0. - `npm --prefix web run test:generated-gap -- --task M16-GAP-00019` exited 0. - `node tools/web/check-generated-gap.mjs --task M16-GAP-00019` exited 0. artifacts: `tests/golden/M16-GAP-00019/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:PointCloud` geometry-reader slice only. PointCloud editing operators, attribute mutation and all other generated gaps remain separate tasks. rollback: remove this task's fixture, generator, checker branch, reports, manifest, status and context; restore `M16-GAP-00018` as the queue tail without editing its successful evidence. nextTask: `M16-GAP-00020`