4.2 KiB
Part datums group completion
Date: 2026-09-17 (Asia/Shanghai)
Requirement: Part:desktop:Part_Datums
Functional Gap
The four native datum commands and their editor were already available, but the desktop Datums group had no current-document dispatch or mounted type selector. The group now routes to the existing datum implementation using the exact desktop registration order: Coordinate System, Plane, Line, Point. The default is index 0, as in Gui::GroupCommand.
Selectors may use a numeric iMsg, an explicit childCommand, or both when they agree. Unknown children, invalid indices and conflicting selectors reject before a native call. The real child implementation retains document validation, type checks, attachment references, support recomputation, transactions and persistence.
The new group task supplies a type menu and reuses PartDatumTask. Switching type keeps the current document, resets the child editor state and reuses the same router/Worker. The document input remains stable while typing. Only the group opts into reserved scene-toolbar space; other datum entry points retain their defaults.
Files: part-datums-group.ts, part-datums-group-task.tsx, part-desktop-adapter.ts, optional integration props in part-datum-task.tsx, and workbench-shell.tsx.
First Acceptance
Command: python3 tools/run_business_acceptance.py --module Part --ids Part:desktop:Part_Datums --reuse
Result: 1 requirement passed, 20 scenario records, 16.904 seconds.
The group suite loaded one DocumentProbe instance and one browser workflow. No native compilation or new WASM runtime was needed. It invoked only the new group requirement; existing datum requirements were not separately rerun or counted as additional completions.
Checks include the default child, all four selectors, exactly one native request per valid creation, rejection before dispatch for invalid selectors, distinct native types and identity, document isolation, undo/redo, support-driven line/point recompute through the group, wrong-type and cyclic-link rejection, cancellation, native FCStd restoration and further editing.
Mounted browser cases use the group menu to create all four types, preserve the document when switching, edit existing datums, exercise history, save actual FCStd bytes to OPFS, reload, reopen and edit a different child type. Playwright checked nonblank geometry, rotation, horizontal overflow and desktop/mobile viewports at 1440x900 and 390x844. Screenshots were visually inspected.
An initial attempt compared an edit response to a snapshot including an unrelated attachmentEditing envelope field. Comparisons now use the same document objects and undo/redo state. Geometry and history assertions remain exact. Both attempts are retained. TypeScript checking and production build passed.
Continuation
Coverage snapshot: 216/1508 requirements declare executable cases; 1292 remain uncovered. This is coverage, not a count of currently fresh whole-project acceptance. The group is one requirement, not four newly completed children.
This evidence covers routing and reuse of the documented child workflows. It does not certify every native attachment mode, CAD document type or application-wide shortcut preference. Preserve all original requirements and defer previously passed validation.
Before this work, the scheduler had recorded passing evidence for Explode Compound and Join Connect/Cutout/Embed. It was handling Primitives and Projection on Surface. Shared edits and evidence writes were serialized against that existing scheduler to avoid source-fingerprint churn; no additional scheduler was created.
Handoff: the service was thawed and verified active/unfrozen. Cycle 9327 started with a live child process (643471) and an agent message, selecting WizardShaft and its callback. Continue unattended without repeating the completed group suite.