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.