Files
FreeCADWasmDev/docs/current/EFFICIENCY_ACCEPTANCE_RECOVERY.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

3.2 KiB

Acceptance Efficiency Repair v19

Measured Steps

The fixed 20-cycle baseline is in efficiency-next-baseline.json and .md. It includes older provider failures; those are not evidence of a new transport regression after v18. The largest observed phases were:

Step Total seconds Interpretation
After source-read events 534.7 Observed model/service interval, not disk read time
First response wait 329.5 Includes historical failed requests
Editing 204.6 Model editing interval
Provider backoff 196.7 Includes historical retry sleep
Other decisions 190.9 Between-event interval
Failure recovery 174.1 Between-event interval after errors
Builds, all stages 117.5 Pre-turn, post-turn and direct builds
Actual source-read commands 1.5 Recorded command execution

The 110.14-second Vite command in this sample measures a test server's lifetime, not a 110-second startup. It is not justification for killing the test server earlier or treating that interval as CPU work.

Confirmed Waste

A Part acceptance batch selected 11 business IDs, but the existing contract covered only Part:part.createRecompute and Part:part.importExport. The recorded failed attempt spent 23.295 seconds building, 1.128 seconds syncing and 1.270 seconds running cases before reporting all 11 as unimplemented.

Missing-case acceptance turns could also fall through to desktop native marker instructions on resume. Their case and contract excerpts competed with native sources for the packet budget, prompting additional source reads.

Implemented Fix

  • Check the actual acceptance contract, script and selected-ID coverage before building or running cases. Return an explicit missing-ID diagnosis.
  • Keep build caches, pending builds, receipts and unfinished business records.
  • Put acceptance case files first in the support excerpt allocation and include selected, covered and missing IDs in the packet.
  • Route missing-case acceptance turns, including resumes, to case-authoring recovery with prior context retained. Native changes remain appropriate only when an actual implementation gap is found.
  • Never infer business completion from a coveredIds entry or native marker. Covered batches still use the real build/sync/acceptance pipeline.

Verification

An isolated replay used the real 11 IDs from business-evidence/1a7a0ee6a2d3e5addb505477-20260908T104625913994.json and the current Part contract. The in-process preflight reported all 11 missing in 0.001681 seconds, with zero build or acceptance subprocesses. Both the contract and existing case script were retained in the generated editable packet.

Replay data: acceptance-preflight-replay.json. The live batch and build cache were not modified by the replay. The historical build timing and the isolated preflight are different execution states, not a whole-project speedup ratio.

Regression coverage verifies the early stop, cache preservation, routing to business rather than compiler recovery, and fresh/resumed case context.

The combined regression run passed 131 tests. Scheduler PID 1814354 loaded v19 with a matching source fingerprint and continued through cycle 5017 using the existing HTTP/1.1 model transport.