# Points OBJ cleanup recovery Batch: `8f64f608624b040ed5c3f935` Selected business ID: `business-format:Points:export:.obj` The reported first error was an unavailable `kernel.FS.analyzePath` call in `tools/points-business-cases.mjs:150`. Cleanup now calls `FS.unlink` directly, ignores only missing files, attempts every tracked path, and retains an earlier export failure alongside unexpected cleanup failures. Existing native export, facade dispatch, and assertions inspecting actual OBJ vertices remain in use. No native behavior or business result is replaced. The next outer run exposed the original export failure as well as a cleanup failure. Local `AppPointsPy.cpp:323` confirms that `Points.export` accepts only ASC, PLY and PCD, and throws for OBJ. The Web native export handler now writes OBJ vertices from selected current native point clouds with their global placements, validates all selected types before opening the file, and commits the output atomically. An explicit document argument resolves that document. Other formats continue through the existing desktop exporter. Cleanup now uses the native `fc_web_points_remove_export` entry, avoiding unavailable JS filesystem methods. Only successful removal or native ENOENT is tolerated, and earlier business failures remain visible. Remaining boundary: the outer pipeline must incrementally build and sync `FreeCADWebPointsRuntimeProbe`, run the selected business case, and record its actual result. Build and business acceptance have not been run in this turn; no issue or historical failure is claimed resolved without that evidence.