70 lines
3.7 KiB
Markdown
70 lines
3.7 KiB
Markdown
# Slice Lifecycle and Cooldown Repair
|
|
|
|
No automated tests, browser checks or acceptance ran. This is implementation and
|
|
build handoff; user validation remains deferred. Existing OCCT-backed slicing,
|
|
FreeCAD document classes, compiled dependencies and OPFS output were reused.
|
|
|
|
## Business Changes
|
|
|
|
- Added native-document read/update/reopen actions to PartSliceDocument.h.
|
|
- Updates Mode, Tolerance, Base, Tools and Label in a native transaction, rejects
|
|
dependency cycles and returns current native geometry, links and an FCStd snapshot.
|
|
- Uses desktop CompoundFilter creation to synchronize a simple exploded slice
|
|
when its piece count changes. Removal with external dependencies, custom filter
|
|
indexing or invalid recompute aborts instead of silently corrupting the graph.
|
|
- Reopens actual FCStd bytes with App.openDocument and the supplied proxy classes,
|
|
rejects open-document name collisions and cleans disposable input files. Native
|
|
failures are not converted to exposed status. Restored slices are recomputed.
|
|
- React supports reading an open document, editing properties, opening local FCStd
|
|
and choosing stored FCStd from OPFS/Part. Each result can be saved/downloaded again.
|
|
- Workbench-owned nativeDocuments retains PartBox object snapshots across module
|
|
changes. Shared navigation shows actual native names/labels, ownership and links,
|
|
updates selection and opens the Part task for that document. No handles are sent
|
|
into another module's runtime as though they belonged there.
|
|
|
|
This is not a complete all-module global tree: project-shell's separate document
|
|
store and other native owners are not unified. Editing is scoped to Slice properties,
|
|
not every FreeCAD property type. Cross-worker transfer and arbitrary custom filter
|
|
editing remain explicit work. Runtime reopen/update correctness is not yet verified.
|
|
|
|
## Cooldown Root Cause
|
|
|
|
Repeated attempts without changed outcomes trigger record/module cooldown; the
|
|
planner does search its other lanes before waiting. At this turn's start, cooldown
|
|
had expired and BIM was executing, so the scheduler had not stopped. Later BIM,
|
|
Web and Test cooled again after unsuccessful cycles.
|
|
|
|
A real defect kept recoveryLevel/cooldownRounds at their historic maximum even
|
|
after substantive progress. A later short failure streak therefore immediately
|
|
returned to the longest delay. scheduler_progress.py now resets those escalation
|
|
levels only on substantive progress, not mere evidence refresh or provider failure.
|
|
Existing failure history and current retry deadlines were not cleared.
|
|
|
|
The scheduler was gracefully reloaded while waiting with no child process. Its
|
|
existing watchdog restarted it as PID 2572390 (restart count 170). It was still
|
|
waiting for previously cooled records afterward. This is not proof of restored
|
|
throughput or elimination of external model latency.
|
|
|
|
## Timings
|
|
|
|
First native lifecycle build pipeline: 49.004 seconds, including 38.322 seconds
|
|
build. A subsequent filter-count synchronization change required a second native
|
|
build. Final receipt: part-slice-lifecycle-implementation-pipeline.json.
|
|
|
|
| Final Native Step | Seconds |
|
|
| --- | ---: |
|
|
| Module registry | 0.102 |
|
|
| Capability registry | 8.089 |
|
|
| Preflight | 0.044 |
|
|
| Build | 32.772 |
|
|
| Artifact sync | 2.264 |
|
|
| Completion metadata, not acceptance | 0.954 |
|
|
| Final pipeline | 44.225 |
|
|
| Frontend build | 5.642 |
|
|
| Public sync within frontend build | 3.655 |
|
|
|
|
Native dependencies were reused; no whole OCCT rebuild. After the final header-only
|
|
change the two changed PartBox runtime artifacts were synchronized to dist/kernel;
|
|
unchanged frontend bundles were not rebuilt. Timings are step wall times, not an
|
|
end-to-end throughput claim. Source decisions were updated in place for continuation.
|