Files
FreeCADWasmDev/docs/current/cross-workbench-document-editing-checkpoint-87d3691ca57ddbf994740d84.json

71 lines
5.0 KiB
JSON

{
"schema": "freecad-web-implementation-checkpoint/v1",
"batchId": "87d3691ca57ddbf994740d84",
"recordIds": [
"product:cross-workbench-document-editing"
],
"savedAt": "2026-09-17T21:10:10.161674+00:00",
"status": "incomplete",
"implemented": [
"Extracted the existing native PartDesign workspace into exported PartDesignWorkspace in web/src/partdesign-workspace-component.tsx. Importing this module no longer mounts a React root.",
"Preserved web/src/partdesign-workspace.tsx as the standalone entry that mounts the same workspace. No document or geometry behavior intentionally changed."
],
"validation": {
"build": {
"command": "npm --prefix web run build",
"exitCode": 0,
"includes": [
"geometry-boundary audit: no findings",
"asset and runtime manifest sync",
"tsc --noEmit",
"vite build"
],
"limitations": [
"Build is not browser/native workflow proof.",
"Asset sync reported 14 missing artifacts; existing supplied WASM was reused."
]
},
"acceptance": {
"command": "python3 tools/run_business_acceptance.py --module Web --ids product:cross-workbench-document-editing --reuse",
"exitCode": 1,
"status": "acceptance_incomplete",
"reason": "business route not implemented",
"passed": 0,
"evidencePath": "docs/current/business-evidence/49541ff602063d0030bc9fd7-20260917T210918167664.json"
}
},
"findings": [
"Primary entry web/src/project-shell.tsx owns a Part document through nativeRequest and applyNativeDocument, with native document ID normalization in nativeName (around lines 120-131).",
"PartDesignWorkspace already owns real Sketcher and PartDesign objects through PARTDESIGN_DOCUMENT_COMMAND, uses executePartDesignDesktop for Sketcher_EditSketch, updates dependent geometry, and supports FCStd save/open via OPFS.",
"The existing project editSliceInWorkbench around lines 409-422 saves a real FCStd snapshot but navigates to another page and different native document name; do not treat this as completed same-document workbench integration.",
"New component retains the original workspace body, including all feature forms, renderer lifecycle, native owner, selection, history and file controls. It has no initial-document or parent-session props yet."
],
"remaining": [
"Read the exact original and supplemental proof-area requirements for the selected record before defining executable cases; no proof areas or coverage tags were changed.",
"Mount PartDesignWorkspace in the primary React application and connect it to the active document, native owner, selection, render bridge and persistence. Preserve existing Part document objects; avoid stale duplicate native owners and unsaved data loss.",
"Add workbench switching for Sketcher and PartDesign on the same current document, with relevant toolbar/task controls and accept/cancel semantics. Current standalone page still exposes all existing forms.",
"Implement executable browser/native cases for actual constrained sketch creation/editing, PartDesign feature/profile/body links and recomputed shape/volume, selection continuity, cancel/undo/redo as required, and FCStd save/reopen with semantic persistence.",
"Run only the isolated first failure through the acceptance runner, then affected cases after source changes. Do not replay unchanged passing scenarios merely to renew timestamps."
],
"nextSourceAnchors": [
"web/src/partdesign-workspace-component.tsx:11 (exported component; original workspace line numbers shifted by one)",
"web/src/partdesign-workspace-component.tsx:169 (native request and mutation helpers)",
"web/src/partdesign-workspace-component.tsx:283 (sketch/feature controls; detailed lines still need a bounded window)",
"web/src/project-shell.tsx:120 (native owner)",
"web/src/project-shell.tsx:370 (open FCStd)",
"web/src/project-shell.tsx:470 (primary menus/toolbars)",
"tools/web-acceptance-cases.mjs:14 (ID routing)"
],
"sourceBoundary": "Reader returned IMPLEMENTATION_SOURCE_WINDOW_REJECTED: Supplemental source budget reached (16 windows / 48000 bytes). Some smaller windows succeeded before the final rejection. Business source exists; unread anchors are not absent functionality. Continue with a fresh authorized packet including the new component; do not bypass the reader limits.",
"preservedConstraints": [
"Use existing local source and supplied OCCT WASM as geometry backend.",
"Never alter contracts, verifier, proof-area requirements, acceptance machinery or passing statuses to obtain a pass.",
"IFC exports, if touched later, must satisfy docs/current/IFC_SEMANTIC_EXPORT_CONTRACT.md; proxy geometry is insufficient.",
"No full-parity/API gates, deployments, pushes or external messages."
],
"sourceSha256": {
"web/src/partdesign-workspace.tsx": "9f6481f132009c01a4b2134282955a838b35a48bdb66be9aa0615afdc8c6f9c3",
"web/src/partdesign-workspace-component.tsx": "5aa5deb09ac522c5141a9efac2ee6c9376fee310ddaec45ec179514d8f727930"
}
}