87 lines
4.8 KiB
Markdown
87 lines
4.8 KiB
Markdown
# 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.
|