Files
FreeCADWasmDev/docs/current/part-direct-split-checkpoint-20260917.md

5.1 KiB

Direct Split Commands Checkpoint

Requested implementation batch: 9cfe6f62a79dbbf631fcb5e4. Selected IDs: Part:desktop:Part_BooleanFragments, Part:desktop:Part_Slice, Part:desktop:Part_SliceApart, Part:desktop:Part_XOR.

Implementation

  • web/src/part-desktop-adapter.ts routes direct commands without BREP/resultScope arguments through the existing grouped Split document implementation. It enforces matching operation/index and defaults direct BooleanFragments to Standard, as in supplied SplitFeatures.py. Existing explicit BREP and native-document file routes remain available.
  • web/src/part-split-document-task.tsx supports a fixed operation for direct commands; the operation control is disabled. The existing native links, selection, tolerance, mode, save/open and history workflows are reused.
  • web/src/workbench-shell.tsx mounts this task for all four direct commands. The previous Slice file/property task remains accessible under an expandable Slice files and properties section, mounted when expanded to prevent duplicate default controls.
  • tools/part-business-cases.mjs runs the supplied native lifecycle cases through all four direct adapters and all four mounted command panels. The shared run is attributed to the four selected IDs and fingerprints its application/native/WASM inputs. The unsupported-command fallback excludes these implemented case IDs. No acceptance contract, verifier, proof requirement, or runner was edited; no covers tags were added.
  • Reused the existing DocumentProbe WASM for native document semantics and supplied OCCT geometry. No C++ rebuild, deployment, push, or message to others was performed.

Executed Evidence

Command:

python3 tools/run_business_acceptance.py --module Part --ids Part:desktop:Part_BooleanFragments Part:desktop:Part_Slice Part:desktop:Part_SliceApart Part:desktop:Part_XOR

At 2026-09-17T08:22:56Z the runner reported passed: 4, remaining: [], executedCount: 4, exit code 0, total 69.674 seconds. Its generated evidence batch ID is 0b9c3adf3f51932c48f14156, distinct from the implementation packet ID above.

Evidence: docs/current/business-evidence/0b9c3adf3f51932c48f14156-20260917T082256988002.json. Screenshots: docs/current/part-split-document-business/2026-09-17T08-21-47-878Z/.

All four direct native operations asserted linked Python features, valid measured shapes, expected volume/solid count, source visibility, output selection, dependency recompute, undo/redo, editable FCStd restoration and isolation from another document. Invalid selections/options and cancellation preserved the document. Single-compound Fragments/XOR inputs were exercised. Browser cases used each direct command panel, checked Standard as the BooleanFragments default, created linked outputs, exercised SliceApart undo/redo, saved OPFS bytes, reloaded and reopened the file, and checked desktop/mobile geometry pixels and panel width.

Native load completed in 2.556 seconds. Individual native lifecycle stages completed for Slice, SliceApart, Fragments and XOR. Native cleanup completed at 08:22:36.882Z; browser completed at 08:22:56.771Z; final cleanup completed at 08:22:56.850Z. No validation sessions remain running. The existing server is http://127.0.0.1:5180/workbench.html?module=Part&command=Part_BooleanFragments.

Pending Verification

Visual inspection after the passing run found a small mobile toolbar/geometry overlap. Two subsequent changes are NOT covered by that passing fingerprint:

  1. Enabled the existing reserveControlsSpace option on the Split geometry viewer. Shared renderer source is unchanged.
  2. Added executable desktop/mobile assertions that the canvas starts below the toolbar and that an orbit drag changes captured pixels.

The same focused acceptance command after those changes exited 78 with previous_validation_deferred, all four IDs in deferredIds, and executedCount: 0. The runner's stated reason was User paused repeat validation; select only newly completed gaps. Historical proof is not promoted to current acceptance. Its deferral mechanism and statuses were not changed. The earlier pass must not be represented as current verification of these final two edits.

Next action: when the runner permits fresh execution for this follow-up, rerun the exact focused command above, inspect the new desktop/mobile screenshots and complete any first failing assertion. Reuse the native implementation; do not recreate split geometry or the document lifecycle. No full-parity/API gate is needed.

Preserved Boundaries

This evidence concerns the four selected direct commands and the stated fixtures. It does not establish arbitrary filter editing, global runtime/document ownership across workers, every aggregate mode/shape combination, or a new Fragments/XOR property editor. The existing Slice file/property path remains a separate runtime path and was not newly validated in this run. Original and supplemental requirements remain in force. IFC semantic export still requires docs/current/IFC_SEMANTIC_EXPORT_CONTRACT.md; this Part batch makes no IFC acceptance claim and changes no IFC contract or verifier.