Files
FreeCADWasmDev/docs/current/part-split-source-placeholder-removal-20260912.md
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

74 lines
3.6 KiB
Markdown

# Part Split Source Reuse
Scope: replace two incomplete native BREP operations with supplied desktop
implementations. No automated runtime tests, browser validation or acceptance.
This does not claim that all project placeholders are resolved.
## Removed Limitations
- Part_XOR previously rejected surfaces and wires, then approximated solid
fragment membership using repeated common-volume calculations. It now invokes
BOPTools.SplitAPI.xor from the supplied embedded source, including aggregate
handling, general-fuse source correspondence and odd-membership selection.
- Part_BooleanFragments previously rejected every mode except Standard. It now
invokes BOPTools.SplitAPI.booleanFragments for Standard, Split and CompSolid.
Source errors, invalid inputs and the no-solids CompSolid error remain errors.
No new geometry engine or handwritten replacement algorithm was introduced.
The original BOPTools code calls native Part/OCCT. Existing input BREP and output
BREP/validity/volume/edge-count contracts are retained; no fixture input is added.
## Required Runtime Connection
The former part.worker.ts route sent all desktop commands to the small
PartDesktopCommandProbe, which does not contain the embedded FreeCAD/BOPTools
runtime. part-source-commands.json now identifies these two commands; their
requests use the already existing PartBox runtime. Other desktop commands keep
their prior target. PartBox initializes its native Python types and existing
Part package path before invoking the source algorithm.
The implementation packet uses the same command table to select the actual
PartBox build, retains the helper/header and embedded BOPTools source inputs,
and reuses existing dependencies. The active scheduler manifest is not replaced.
## Remaining Scope
This batch repairs the native shape operations, not the entire parametric
FeatureXOR/BooleanFragments document editing workflow. Desktop feature Links,
property editing and complete UI ownership still need their own source-backed
integration. A compiled BREP command is not proof that those behaviors exist.
Source decisions and fingerprints are retained in native-semantic-decisions.json
so the repaired algorithms are not implemented again in subsequent turns.
## Work Accounting
The initial native pipeline took 79.696 seconds, including 67.991 seconds of
build and 3.136 seconds of artifact sync. A follow-on source correction added the
existing Part Python path initializer before first use; this required another
incremental build. The final native timings are recorded in
part-split-source-implementation-pipeline.json, not combined with the initial
attempt or presented as all engineering time.
Frontend publication must use FREECAD_WEB_FAST_LINK=ON. Do not repeat the full
public-asset copy from the previous turn. No full OCCT rebuild is needed.
Final publication completed:
| Step | Seconds |
| --- | ---: |
| Module registry | 0.100 |
| Capability registry | 7.503 |
| Preflight | 0.045 |
| Final native build, including 7.918 seconds waiting for build lock | 73.784 |
| Native artifact sync | 3.081 |
| Completion metadata, not runtime acceptance | 0.913 |
| Final native pipeline total | 85.426 |
| Frontend build total | 8.820 |
| Public asset sync within frontend build | 6.766 |
Both final commands exited 0. The frontend used the existing incremental mode.
The source inventory reused 478 unchanged files and rescanned eight changed files
in 0.173 seconds; it reports 615 candidate locations, not 615 proven placeholders.
The two command routes already existed before this batch, so route counts are
not an appropriate measure of these native implementation improvements.