# Part Selected Commands Checkpoint Batch: `703925e8a0a32a52bb21cf17`. Checkpoint date: 2026-09-17 (Asia/Shanghai). Selected IDs: `Part:desktop:Part_PickCurveNet`, `Part:desktop:Part_Primitives`, `Part:desktop:Part_ProjectionOnSurface`, `Part:desktop:Part_Revolve`. ## Completed This Continuation `Part_PickCurveNet` now follows the supplied desktop command source: `freecad-source/src/Mod/Part/Gui/Command.cpp:95` has an empty `CmdPartPickCurveNet::activated(int)` body. The existing Part adapter returns an explicit no-op receipt without calling a kernel or a selection callback. It also works without an active document. This is source parity for this specific empty command, not an implemented curve-network modeling tool. The existing `DesktopCommandDispatcher` invokes this adapter before the generic geometry route. No shared dispatcher change was required. The old low-level `PartDesktopCommands.cpp:1436` PickCurveNet branch still constructs a compound; the desktop application path now bypasses it. Direct geometry-endpoint parity is outside the evidence from this continuation and remains an explicit boundary. Executable cases were added directly to `tools/part-business-cases.mjs`, wired into its selected-ID dispatcher, and excluded from its unimplemented fallback. They compile the adapter, exercise native document snapshots around the action, preserve a populated redo branch, compare a second document, use the actual browser dispatcher and Worker-owned document, and click the mounted desktop and mobile run buttons with no BREP input. Assertion failures remain failures. Volume assertions use a 1e-9 absolute tolerance for the small fixture solids. ## Attributable Verification Command: ```sh python3 tools/run_business_acceptance.py --module Part --ids Part:desktop:Part_PickCurveNet --reuse ``` The final invocation returned `status: passed`, `passed: 1`, `remaining: []`, `executedCount: 1`, `totalSeconds: 5.391`. Evidence: `docs/current/business-evidence/0a519b3c830d4fa109b4d216-20260916T235444483442.json`. Screenshots and timed case report: `docs/current/part-pick-curve-net-business/2026-09-16T23-54-39-358Z/`. The mobile screenshot was visually inspected. The browser origin already available during the run was `http://127.0.0.1:5180`. The earlier run failed on exact equality of native volume 23.999999999999996 versus 24; evidence remains at `docs/current/business-evidence/0a519b3c830d4fa109b4d216-20260916T235408429144.json`. Only the fixture's numerical comparison was corrected before rerunning. No acceptance contract, verifier, proof requirement, or acceptance machinery was changed. No coverage tags were added. No WASM rebuild was needed. ## Remaining Selected Work - `Part_Primitives`: the mounted `PartPrimitivesTask` and document adapter exist. The adapter currently accepts Cylinder, Cone, Sphere and Torus through `setPrimitive`, with accept/edit/read/cancel actions. Inspect the actual desktop TaskPrimitives options before claiming full command scope; Box and other primitive types are not accepted by this adapter. No selected-command native/browser acceptance case has been supplied in this continuation. - `Part_Revolve`: the mounted `PartRevolveTask`, adapter and native document actions exist. The adapter accepts one whole profile, preserves the source dependency, and expects a valid `Part::Revolution`. Native entry points are `createRevolution` and `editRevolution` in `DocumentProbe.cpp`, using `PartRevolveDocument.h`. Add focused geometry, dependency/recompute, history, persistence, rejection/cancel and mounted UI assertions before acceptance. - `Part_ProjectionOnSurface`: desktop source at `Command.cpp:2450` opens `TaskProjectOnSurface` and requires an active document and no active dialog. The current geometry fallback at `PartDesktopCommands.cpp:1506` shares `BRepAlgoAPI_Section` with Section; intersection is not proof of surface projection. No dedicated Part adapter or mounted projection task was found in the inspected call sites. Read the supplied task/feature implementation, reuse the provided OCCT backend, and implement persistent document semantics plus actual projection assertions. Do not certify this via section output. Recommended next action: reuse the PickCurveNet evidence, then add the first isolated Revolve native/browser case against the existing document runtime. Fix its first concrete failure before broadening to the remaining selected work. Do not resume unrelated Join work from the older recovery note. Preserve all original and supplemental requirements, including the unchanged IFC semantic export contract. No IFC work or regression was run here. No full-parity/API gate, deployment, push, or external message was performed. Files under this workspace include pre-existing untracked implementation; do not treat a blank git diff as evidence of no changes or revert that work.