Files
FreeCADWasmDev/docs/current/compound-restore-and-reuse-20260911.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

4.0 KiB

Compound Restore and Evidence Reuse

Verified Business Fix

Reused the provided Part::Compound, DocumentProbe, Part document facade, desktop adapter, Worker, React workspace, Three.js and OPFS implementations. No new geometry algorithm or OCCT build was introduced.

The existing compound case reproduced document_operation_failed: no native transaction is available after saving, reopening, creating another compound and undoing it. DocumentProbe.cpp passed delaySignal=true to restore() but no desktop restore coordinator runs in that Worker. Following the existing PartDesign fix, restoration now completes synchronously with delaySignal=false, which calls afterRestore() and clears Document::Restoring.

tools/part-compound-business-cases.mjs now also verifies the mounted React command, real document Worker, OPFS page reload, dependent source edits, post-restore undo/redo, unique creation, preserved selection and isolated documents. Desktop/mobile screenshots and pixel checks verify the restored compound's native mesh in the primary workspace. Only Part_Compound was added to the contract; Compound Tools explode/filter are not claimed complete.

Evidence: business-evidence/dea41f8c5b73edc24b3d2ea1-20260911T143037760068.json. The document and save/reopen regression also passed: business-evidence/8fd107d037f0584d4950544a-20260911T142538744791.json. Historical evidence is a test result at its recorded fingerprint, not permanent acceptance of subsequently changed source.

Measured Time

Step Seconds Result
Document target incremental build 38.484 Passed; existing libraries reused
Artifact synchronization 2.716 3 files copied, 95 skipped
Compound TypeScript transpilation 0.859 Passed
Compound WASM load 0.432 Existing published runtime
Native compound workflow 1.860 Passed
Browser, OPFS and desktop/mobile rendering 6.610 Passed
Complete compound acceptance 10.253 14 cases passed
Same acceptance after progress-note update 0.073 Same evidence reused, no case execution
Compound + document + save/reopen regression 16.193 3 business IDs passed

The two reuse measurements are the same business and artifacts. They are not a claimed speedup for the entire migration.

Repeated Validation Fix

The acceptance runner previously hashed the full contract text, including scope and remainingBoundaries. Updating progress notes therefore reran unchanged cases. It now hashes parsed execution configuration, excluding only those two documented descriptive fields. All other fields, including unknown future settings, remain tracked. Command, case script, dependency, source, artifact, issue and build-override checks remain enabled. Old raw contract hashes conservatively require one fresh run; no old proof is silently promoted.

Tests verify that note-only edits preserve the exact evidence and ledger, while executable configuration, coverage declarations, unknown options, source, case and artifact changes still invalidate reuse. The targeted regression suite passed 68 tests. tsc --noEmit and npm run check:geometry-boundary passed; the geometry check is static ownership verification, not proof of a single runtime instance for all modules.

Progress Boundaries

At 2026-09-11 14:32:17 UTC, a fresh ledger query returned 93/1504 effective acceptances; 59 previously passed records had changed source/artifact fingerprints. Part_Compound was currently valid. The scheduler was executing BIM. Earlier values such as 138 are not current once their fingerprints change; the decrease is not merely display lag. New compound delivery is one business ID; old evidence refresh is counted separately.

Continue with module-scoped edits and the existing deterministic pipeline. Do not edit shared dispatchers for module-only behavior, do not repeat identical failed inputs before their owning code changes, and do not replace acceptance with route counts, process liveness or historical high-water marks. The project is not complete and zero idle work has not been established.