80 lines
4.7 KiB
Markdown
80 lines
4.7 KiB
Markdown
# 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.cpp` has a `createSection` action using the existing native
|
|
`Part::Section` feature 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.ts` routes `Part_Section` through `part.document`, checks
|
|
document/selection ownership and the returned feature links, and preserves
|
|
desktop selection. `part-document-facade.ts` admits and validates this action.
|
|
- `PartMakeFaceTask` has a mounted Section mode in `workbench-shell.tsx` with
|
|
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.mjs` is 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-boundary` passed with no findings. This
|
|
is a static boundary check, not proof of all runtime paths.
|
|
- Focused TypeScript checking of `part-make-face-task.tsx` passed.
|
|
- 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
|
|
|
|
1. 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.
|
|
2. 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.
|
|
3. Implement Scale using `freecad-source/src/Mod/Part/Gui/DlgScale.cpp`, especially
|
|
its apply/accept/reject paths and `writeParametersToFeature` near line 340.
|
|
It writes Base, Uniform, UniformScale, XScale, YScale, ZScale to a native scale
|
|
feature. `TaskScale.cpp` does not exist; do not repeat that guessed path.
|
|
4. Implement Section Cut's dock workflow from
|
|
`freecad-source/src/Mod/Part/Gui/SectionCutting.cpp` (`makeDockWidget` near 1455).
|
|
`SectionCut.cpp` does not exist. Command activation only opens a singleton
|
|
dock; a generic section result is not sufficient for its workflow.
|
|
5. Shape Info's `CmdShapeInfo::activated` in `Command.cpp:2154` is 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.
|