4.7 KiB
Part Section Batch Checkpoint
Batch: af93355ab923901e87e33808. Selected requirements remain
Part_Scale, Part_Section, Part_SectionCut, and Part_ShapeInfo.
This note is not acceptance evidence. Do not modify contracts, proof-area
requirements, verifiers, or acceptance machinery to promote these commands.
Implemented In This Turn
DocumentProbe.cpphas acreateSectionaction using the existing nativePart::Sectionfeature and OCCT section operation. It groups selected subelements by document object, retains Base/Tool links, creates a unique native name, hides sources and copies stored display color in one transaction. Native recompute, rollback, undo/redo, FCStd, and edge serialization use the existing document owner. Geometry stays in the supplied OCCT/FreeCAD WASM.part-desktop-adapter.tsroutesPart_Sectionthroughpart.document, checks document/selection ownership and the returned feature links, and preserves desktop selection.part-document-facade.tsadmits and validates this action.PartMakeFaceTaskhas a mounted Section mode inworkbench-shell.tsxwith source selection, native edge display, result table, history, FCStd open, and OPFS save. The existing renderer respects stored Section color and visibility.tools/part-section-business-cases.mjsis registered in the existing Part case entrypoint. It asserts native intersection lengths/topology, linked recomputation, empty intersections, invalid inputs, document isolation, selection preservation, unique names, history, FCStd, and primary browser controls with desktop/mobile canvas checks. It fingerprints its source and artifacts and records durable stage timestamps. Assertions are executable; this description does not establish that they passed.
First Attributable Failure And Repair
Command:
python3 tools/run_business_acceptance.py --module Part --ids Part:desktop:Part_Section --reuse
The first run timed out after 180 seconds. Last completed stages were adapter
compilation and native WASM load/fixture initialization; last entered stage was
native-section-enter. No browser work was entered and no success was recorded.
Its case directory is docs/current/part-section-business/2026-09-17T00-08-25-380Z.
FCBRepAlgoAPI_Section enabled OCCT parallel execution in its constructors and
inherited Build without the synchronous WASM guard already present in
FCBRepAlgoAPI_BooleanOperation. A shared Build override now forces
SetRunParallel(Standard_False) under __EMSCRIPTEN__ and delegates to OCCT.
Desktop builds preserve parallel execution. The affected target is
FreeCADWebDocumentProbe, not the packet's generic PartBox target.
Verification At Checkpoint Creation
- Initial focused document build passed and its JS/WASM/worker were synced.
npm --prefix web run check:geometry-boundarypassed with no findings. This is a static boundary check, not proof of all runtime paths.- Focused TypeScript checking of
part-make-face-task.tsxpassed. - The second document build, containing the Section threading repair, compiled affected Part sources and is linking. Sync and rerun status is recorded below.
Remaining Work
- Finish/sync the repaired document artifact and rerun only Section's changed acceptance case. Fix its next concrete failure. Inspect screenshots if the browser cases complete. Retain any required proof areas still absent.
- Complete Section coverage for transformed links, stored appearance, and transaction failure after mutation. Current code copies stored WebDisplayColor; full desktop ShapeAppearance-to-LineMaterial semantics are not yet established.
- Implement Scale using
freecad-source/src/Mod/Part/Gui/DlgScale.cpp, especially its apply/accept/reject paths andwriteParametersToFeaturenear line 340. It writes Base, Uniform, UniformScale, XScale, YScale, ZScale to a native scale feature.TaskScale.cppdoes not exist; do not repeat that guessed path. - Implement Section Cut's dock workflow from
freecad-source/src/Mod/Part/Gui/SectionCutting.cpp(makeDockWidgetnear 1455).SectionCut.cppdoes not exist. Command activation only opens a singleton dock; a generic section result is not sufficient for its workflow. - Shape Info's
CmdShapeInfo::activatedinCommand.cpp:2154is empty. Its enabled state requires a document containing Part features and a non-editing 3D view. Preserve this distinction when implementing its cases.
The bounded source reader reached 48 windows / 144000 bytes. All source already read is retained in the turn; this is a read-budget boundary, not absent source. No full-parity/API gates, deployment, pushes, external messages, IFC reruns, contract edits, or manual acceptance status edits were performed.