{ "schema": "freecad-web-native-semantic-decisions/v1", "scope": "Source findings only; no runtime verification and no removal of required functionality.", "groups": [ { "sourceDigests": { "freecad-source/src/Gui/CommandStructure.cpp": "62e2142f2946b881c12cad917c283b5a9466200fcb36db2d288c61535f7298c3", "freecad-source/src/WebAssembly/FreeCADCoreProbe/WebGroupCommand.h": "9cc3777634cc7295ac6f3f81b9aec06792416c2f28581992d3ead5dfc44842a8", "freecad-source/src/WebAssembly/FreeCADCoreProbe/NativeDocumentView.h": "9d2992bd0b3f78d124c50768e6d10ce0ca477f6dbf7b1b7ffa56598fce88a434", "web/src/web-group-task.tsx": "f8ac4b60c4bcbc2a1e7571499ff872eec4b5eb0eb636233e62740fd558c8e4e3", "web/src/web-group-adapter.ts": "c278d85d747d2e4d94c0a8f7d9ff9c2f9bbcb07d1a15835e43beccdb5417a487", "web/src/web-group-contract.ts": "4c63ad76614cba8398e28a868ca8ab7db3c5e3ef67efff3fd4edffe99a44dfe8" }, "records": { "Web:desktop:Std_Group": { "classification": "native-group-workflow-implemented", "finding": "Supplied CommandStructure semantics implemented in the existing live-document owners: real Group object, Tip, active container allowObject, transaction and structured group tree. Workbench and Project task mounted; Project refresh/save/undo reuse existing native chain.", "nextAction": "Reuse web-group-pipeline.json and WebGroupCommand.h. User verification deferred; do not invent a separate Group worker or claim other structure commands complete.", "receipt": "docs/current/web-group-pipeline.json" } } }, { "sourceDigests": { "web/src/document-view-routes.json": "3411b427eaaa598704652333d481b8c45104170d7f3e56bc3b350e48bcabcbba", "web/src/web-website-adapter.ts": "2da45f4cba24e026b39f2895d8f0ba3c5e528226dfa3989d9e86ac9fc54ba7ce", "web/src/web-website-task.tsx": "0e49a638b28c752b69940bf7afe43a52fd8215a60639f891278438ef6b795547", "freecad-source/src/WebAssembly/FreeCADCoreProbe/WebViewCommands.h": "5bfaefa2c5b59967feb95a7df3d741a3f42ac179f533eed099ff903fd991c7aa" }, "records": { "Web:desktop:Std_DevHandbook": { "classification": "website-owner-route-implemented", "finding": "Native Websites preferences and local desktop semantics reused through the existing owner endpoint. Early executeWebsite dispatch and mounted response-bound link replace the previously unreachable browser-action fallback.", "nextAction": "Reuse web-website-owner-pipeline.json. Do not reinstate browserCommands blanket discovery or native-marker-only repairs. Browser interaction is deferred to user validation.", "receipt": "docs/current/web-website-owner-pipeline.json" }, "Web:desktop:Std_FreeCADDonation": { "classification": "website-owner-route-implemented", "finding": "Native Websites preferences and local desktop semantics reused through the existing owner endpoint. Early executeWebsite dispatch and mounted response-bound link replace the previously unreachable browser-action fallback.", "nextAction": "Reuse web-website-owner-pipeline.json. Do not reinstate browserCommands blanket discovery or native-marker-only repairs. Browser interaction is deferred to user validation.", "receipt": "docs/current/web-website-owner-pipeline.json" }, "Web:desktop:Std_FreeCADForum": { "classification": "website-owner-route-implemented", "finding": "Native Websites preferences and local desktop semantics reused through the existing owner endpoint. Early executeWebsite dispatch and mounted response-bound link replace the previously unreachable browser-action fallback.", "nextAction": "Reuse web-website-owner-pipeline.json. Do not reinstate browserCommands blanket discovery or native-marker-only repairs. Browser interaction is deferred to user validation.", "receipt": "docs/current/web-website-owner-pipeline.json" }, "Web:desktop:Std_FreeCADUserHub": { "classification": "website-owner-route-implemented", "finding": "Native Websites preferences and local desktop semantics reused through the existing owner endpoint. Early executeWebsite dispatch and mounted response-bound link replace the previously unreachable browser-action fallback.", "nextAction": "Reuse web-website-owner-pipeline.json. Do not reinstate browserCommands blanket discovery or native-marker-only repairs. Browser interaction is deferred to user validation.", "receipt": "docs/current/web-website-owner-pipeline.json" }, "Web:desktop:Std_FreeCADWebsite": { "classification": "website-owner-route-implemented", "finding": "Native Websites preferences and local desktop semantics reused through the existing owner endpoint. Early executeWebsite dispatch and mounted response-bound link replace the previously unreachable browser-action fallback.", "nextAction": "Reuse web-website-owner-pipeline.json. Do not reinstate browserCommands blanket discovery or native-marker-only repairs. Browser interaction is deferred to user validation.", "receipt": "docs/current/web-website-owner-pipeline.json" }, "Web:desktop:Std_OnlineHelp": { "classification": "website-owner-route-implemented", "finding": "Native Websites preferences and local desktop semantics reused through the existing owner endpoint. Early executeWebsite dispatch and mounted response-bound link replace the previously unreachable browser-action fallback.", "nextAction": "Reuse web-website-owner-pipeline.json. Do not reinstate browserCommands blanket discovery or native-marker-only repairs. Browser interaction is deferred to user validation.", "receipt": "docs/current/web-website-owner-pipeline.json" }, "Web:desktop:Std_OnlineHelpWebsite": { "classification": "website-owner-route-implemented", "finding": "Native Websites preferences and local desktop semantics reused through the existing owner endpoint. Early executeWebsite dispatch and mounted response-bound link replace the previously unreachable browser-action fallback.", "nextAction": "Reuse web-website-owner-pipeline.json. Do not reinstate browserCommands blanket discovery or native-marker-only repairs. Browser interaction is deferred to user validation.", "receipt": "docs/current/web-website-owner-pipeline.json" }, "Web:desktop:Std_ReportBug": { "classification": "website-owner-route-implemented", "finding": "Native Websites preferences and local desktop semantics reused through the existing owner endpoint. Early executeWebsite dispatch and mounted response-bound link replace the previously unreachable browser-action fallback.", "nextAction": "Reuse web-website-owner-pipeline.json. Do not reinstate browserCommands blanket discovery or native-marker-only repairs. Browser interaction is deferred to user validation.", "receipt": "docs/current/web-website-owner-pipeline.json" } } }, { "sourceDigests": { "web/src/document-view-routes.json": "ba6e0838bf914eccb08ae02f94e3b0a4d9e5dc893d2fa5161bd8ff606a76fb86", "web/src/web-owner-standard-adapter.ts": "a814b1ed1d4e31b6a9daf402d28b9f23b8c51027d8216c301226836eb78e625e", "web/src/web-standard-task.tsx": "08246ea6d3c90dbe8a7752e1af9ade816931829ab237b27f70e01aaaec83a484", "freecad-source/src/WebAssembly/FreeCADCoreProbe/WebViewCommands.h": "33f311368c35bc880a1b4a4a5ec9b20f4e7da29dba58ed3025f921e3ba490fde", "freecad-source/src/WebAssembly/FreeCADCoreProbe/NativeDocumentView.h": "995be984483827a84c4b0d5b847029d3dbb0923a8c0fe4b4b31799d3942ff488" }, "records": { "Web:desktop:Std_About": { "classification": "owner-standard-envelope-implemented", "finding": "Existing native command reused through the actual PartBox/DocumentProbe endpoint. Dedicated early adapter returns the owner-bound batch envelope required by the mounted task; standardCommands catalog drives runtime dispatch and route discovery. Annotation refresh uses read-only DrawStyle and does not add a transaction.", "nextAction": "Reuse web-owner-standard-pipeline.json and web-owner-standard-adapter.ts. Do not duplicate old web.standardCommand aliases or native markers. Console and remaining Std workflows are not covered.", "receipt": "docs/current/web-owner-standard-pipeline.json" }, "Web:desktop:Std_AboutQt": { "classification": "owner-standard-envelope-implemented", "finding": "Existing native command reused through the actual PartBox/DocumentProbe endpoint. Dedicated early adapter returns the owner-bound batch envelope required by the mounted task; standardCommands catalog drives runtime dispatch and route discovery. Annotation refresh uses read-only DrawStyle and does not add a transaction.", "nextAction": "Reuse web-owner-standard-pipeline.json and web-owner-standard-adapter.ts. Do not duplicate old web.standardCommand aliases or native markers. Console and remaining Std workflows are not covered.", "receipt": "docs/current/web-owner-standard-pipeline.json" }, "Web:desktop:Std_AnnotationLabel": { "classification": "owner-standard-envelope-implemented", "finding": "Existing native command reused through the actual PartBox/DocumentProbe endpoint. Dedicated early adapter returns the owner-bound batch envelope required by the mounted task; standardCommands catalog drives runtime dispatch and route discovery. Annotation refresh uses read-only DrawStyle and does not add a transaction.", "nextAction": "Reuse web-owner-standard-pipeline.json and web-owner-standard-adapter.ts. Do not duplicate old web.standardCommand aliases or native markers. Console and remaining Std workflows are not covered.", "receipt": "docs/current/web-owner-standard-pipeline.json" } } }, { "sourceDigests": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/BIMDesktopCommandRegistry.h": "5bfb65cf5e73753234dd2cbb7070483638de4262bd2520641eeaf6445576dfc2", "freecad-source/src/WebAssembly/FreeCADCoreProbe/BIMDesktopCommands.h": "83218ccd3680d39f35c1fd3c3a323102d1ad58a24cf536bb305d0c8a6a698841", "freecad-source/src/WebAssembly/FreeCADCoreProbe/BimRuntimeProbe.cpp": "7e7a3335f0c190825acd955cc1e8ef9cd771b69ce61e78c769e29706edc9e8e8", "web/src/bim-desktop-adapter.ts": "8053582d02fdb9593739f220cb93c06fb3f2124d7458cba4bca7ae654afb3211", "web/src/workbench-shell.tsx": "7b82c2cb8948d1f4375c8a30cf020024c8cccff6c5845aa1c3f1f24b7b0466a2" }, "records": { "BIM:desktop:BIM_Help": { "classification": "executable-url-table-connected", "finding": "Existing native script imports the supplied desktop command and calls getUrl. The executable registry is consumed by the native dispatcher. Discovery now recognizes this URL-only route; the mounted link is derived from the matching current response, not a shared stale event.", "nextAction": "Reuse the native artifact and bim-external-url-pipeline.json. Do not add duplicate native markers or recreate URL scripts. Other Document registry rows require separate business implementation.", "receipt": "docs/current/bim-external-url-pipeline.json" }, "BIM:desktop:BIM_Examples": { "classification": "executable-url-table-connected", "finding": "Existing native script imports the supplied desktop command and calls getUrl. The executable registry is consumed by the native dispatcher. Discovery now recognizes this URL-only route; the mounted link is derived from the matching current response, not a shared stale event.", "nextAction": "Reuse the native artifact and bim-external-url-pipeline.json. Do not add duplicate native markers or recreate URL scripts. Other Document registry rows require separate business implementation.", "receipt": "docs/current/bim-external-url-pipeline.json" } } }, { "sourceDigests": { "freecad-source/src/Gui/Camera.cpp": "fe213ecca57f8021770ecc4a61dc8b84fdbde36e617f298331811265be388c79", "freecad-source/src/Gui/View3DPy.cpp": "1f8362d4cc6623df0d5301b0beb98293936abdc4e929ef85f691ca03ca7cad5a", "freecad-source/src/Gui/Navigation/NavigationStyle.cpp": "41127020dca6f681b787826f92537aae444582c44fa0602fb967f4f95d4ed660", "web/src/scene-camera-commands.ts": "fc65d9dc5cd9c7d905e188b67ce9f7c5688150cffe5062190be380d3350e9aba", "web/src/scene-command-host.ts": "a2c532eb39de3136981a19f71121a6e5c5f9f51ee235411741b6d1f8690a8037", "web/src/scene-display-commands.json": "01ef6d2aacae5d5be5c191d3dbe34b1d3c1854b807b9c6ab3a3ae724159d7a17", "web/src/import-render-bridge.ts": "7b62cd05907f69aae6538b504104ef7c7b1b759d303ddcfb0df924cd58e7d0f8", "web/src/openscad-desktop-view.tsx": "f8c0f750602d1eb5c0637f637ecb5ac5e5daf42f3ac5eb94352a0609c9108c1a" }, "records": { "Web:desktop:Std_ViewTop": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewBottom": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewFront": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewRear": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewLeft": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewRight": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewIsometric": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewDimetric": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewTrimetric": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewZoomIn": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewZoomOut": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewFitAll": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewRotateLeft": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_ViewRotateRight": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_StoreWorkingView": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." }, "Web:desktop:Std_RecallWorkingView": { "classification": "browser-camera-host-implemented", "finding": "Display-only command implemented against the mounted document camera. Reuses desktop Camera.cpp orientations and NavigationStyle zoom semantics; no geometry algorithm, native marker or fixture transport. Existing Three.js host handles controls, visible-object bounds and temporary working-view state.", "nextAction": "Reuse shared host and published frontend. User verification is deferred. Do not route this command to Web stateful WASM or duplicate its native registration.", "receipt": "docs/current/web-camera-host-pipeline.json", "scope": "Existing ImportRenderBridge and OpenScadDesktopView hosts; stored working view lasts for mounted host lifetime. Not all desktop view/projection workflows." } } }, { "sourceDigests": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/TestRuntimeProbe.cpp": "b95e3b60f1a9e80498213098814c0d841d0f50c62fbd97f721353b09cb867fa4", "web/src/test-desktop-routes.json": "b10bf2e5219e00eec6466a6cd82328ec168e3e88fd74070041548c55246d89aa", "web/src/test-desktop-adapter.ts": "27973d53c45d07c7bc4a172313302252a7cefeb464656dd05505c304fc726f41" }, "records": { "Test:desktop:Std_MDITest1": {"classification": "existing-host-transport-discovery-fixed", "finding": "Existing TestMdiViewHost applies remove-window and confirms host completion through TestRequest/test.inspectRegistry. Native registration was already present; discovery ignored this real transport. Catalog now drives actual dispatcher and discovery. Pthread closure and missing initializer declaration were repaired and built.", "nextAction": "Reuse test-transport-handoff-pipeline.json and existing host/worker; do not add more native markers. User validation remains deferred.", "receipt": "docs/current/test-transport-handoff-pipeline.json"}, "Test:desktop:Std_MDITest2": {"classification": "existing-host-transport-discovery-fixed", "finding": "Existing remove-subwindow host behavior and confirmation are wired through TestRequest/test.inspectRegistry. A missing matching Worker/Facade route in static discovery, not missing native markers, blocked construction.", "nextAction": "Reuse real Test catalog, host and published build. No test execution was performed.", "receipt": "docs/current/test-transport-handoff-pipeline.json"}, "Test:desktop:Std_MDITest3": {"classification": "existing-host-transport-discovery-fixed", "finding": "Existing reparent-window browser host is mounted and invokes native confirmation through TestRequest. Actual endpoint catalog is now shared with discovery; no dummy DesktopRequest alias needed.", "nextAction": "Reuse published transport/host. Do not repeat native registration changes.", "receipt": "docs/current/test-transport-handoff-pipeline.json"}, "Test:desktop:Std_TestConsoleOutput": {"classification": "existing-native-transport-and-build-fixed", "finding": "Existing native console observer emits and captures actual console messages. Missing transport discovery blocked building. Test target now matches pthread dependencies with five prestarted workers for five simultaneous console threads, and forward-declares its initializer.", "nextAction": "Reuse published build and native console path; no console or test command was executed in this implementation turn.", "receipt": "docs/current/test-transport-handoff-pipeline.json"} } }, { "sourceDigests": { "web/src/web-desktop-adapter.ts": "1c3783b0bf96080b39b4dfbbf6531f2a0697f0de1b591f4934ec2d7f82e3e9d1", "web/src/part-view-facade.ts": "82d0723dc6a901b027eccd4332e004628708fb21e4581d9cb6b9235f4f820d25", "web/src/document-view-routes.json": "1d126d8b92096cb09353de18082b557c669a8f631395689bb4c1e0d341bba3a8", "freecad-source/src/WebAssembly/FreeCADCoreProbe/NativeDocumentView.h": "60151922b1fdc51ab142386393cd6a8137e612589f7e9c9f0bbae7046d20f17e", "freecad-source/src/WebAssembly/FreeCADCoreProbe/WebViewCommands.h": "3e0ec669ece3ca8ff399683142a5327f07f2821a8baf381651b8d4eab02630ca" }, "records": { "Web:desktop:Std_AlignToSelection": { "classification": "typed-owner-bound-view-route-implemented", "finding": "View commands now use part.viewCommand/part.documentViewCommand on existing PartBox/DocumentProbe Workers, with explicit owner/document identity. Both native dispatchers call shared WebViewCommands on live documents. Legacy stateful fixture rejects Web desktop records before mutation. Typed requests/results, mounted host and registry/build ownership are connected.", "nextAction": "Reuse published document-view endpoints. Workbench defaults to PartBox with explicit owner choice; Project fixes DocumentProbe. Missing documents and other owners remain errors, never fake documents. Other GUI commands need dedicated hosts. User validation is deferred; no full desktop view parity or all-module unified memory is claimed.", "previousFinding": "Web adapter sends web.statefulFamilyBatch but omits record.module required by isStatefulFamilyRequest. Adding the field alone would reach DocumentProbe's legacy document fixture, not WebViewCommands. The latter belongs to a separate Web runtime with no shared active Part document. Native markers already exist; this is not a registration omission.", "receipt": "docs/current/web-document-view-handoff-pipeline.json" }, "Web:desktop:Std_BoxElementSelection": { "classification": "typed-owner-bound-view-route-implemented", "finding": "View commands now use part.viewCommand/part.documentViewCommand on existing PartBox/DocumentProbe Workers, with explicit owner/document identity. Both native dispatchers call shared WebViewCommands on live documents. Legacy stateful fixture rejects Web desktop records before mutation. Typed requests/results, mounted host and registry/build ownership are connected.", "nextAction": "Reuse published document-view endpoints. Workbench defaults to PartBox with explicit owner choice; Project fixes DocumentProbe. Missing documents and other owners remain errors, never fake documents. Other GUI commands need dedicated hosts. User validation is deferred; no full desktop view parity or all-module unified memory is claimed.", "previousFinding": "The declared web.statefulFamilyBatch route loads DocumentProbe, not the WebViewCommands implementation. Current request fails the record.module guard; even a syntactically valid request would target a legacy fixture. Face/edge selection cannot be proven by native registration text.", "receipt": "docs/current/web-document-view-handoff-pipeline.json" }, "Web:desktop:Std_BoxSelection": { "classification": "typed-owner-bound-view-route-implemented", "finding": "View commands now use part.viewCommand/part.documentViewCommand on existing PartBox/DocumentProbe Workers, with explicit owner/document identity. Both native dispatchers call shared WebViewCommands on live documents. Legacy stateful fixture rejects Web desktop records before mutation. Typed requests/results, mounted host and registry/build ownership are connected.", "nextAction": "Reuse published document-view endpoints. Workbench defaults to PartBox with explicit owner choice; Project fixes DocumentProbe. Missing documents and other owners remain errors, never fake documents. Other GUI commands need dedicated hosts. User validation is deferred; no full desktop view parity or all-module unified memory is claimed.", "previousFinding": "Request and typed stateful facade disagree, and the facade's Worker loads the unrelated DocumentProbe stateful fixture rather than the implemented view-command function. Repeated marker changes leave this unchanged.", "receipt": "docs/current/web-document-view-handoff-pipeline.json" }, "Web:desktop:Std_DrawStyle": { "classification": "typed-owner-bound-view-route-implemented", "finding": "View commands now use part.viewCommand/part.documentViewCommand on existing PartBox/DocumentProbe Workers, with explicit owner/document identity. Both native dispatchers call shared WebViewCommands on live documents. Legacy stateful fixture rejects Web desktop records before mutation. Typed requests/results, mounted host and registry/build ownership are connected.", "nextAction": "Reuse published document-view endpoints. Workbench defaults to PartBox with explicit owner choice; Project fixes DocumentProbe. Missing documents and other owners remain errors, never fake documents. Other GUI commands need dedicated hosts. User validation is deferred; no full desktop view parity or all-module unified memory is claimed.", "previousFinding": "Existing view task can display returned native meshes, but its Web adapter targets the generic stateful fixture transport and lacks record.module. Changing style requires a mounted real view, not creation of a document fixture.", "receipt": "docs/current/web-document-view-handoff-pipeline.json" } } }, { "sourceDigests": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/PartSplitSource.h": "a3a979b4b4a84d9f2d91f5a527732834e5d7de809c31163ec1afde8acd7d3f5d", "freecad-source/src/WebAssembly/FreeCADCoreProbe/PartDesktopCommands.cpp": "c1c0a051ed81d4d7c757d43b7ea4d5ec77b0cb90cd5b77a6d5e69756745f042d", "freecad-source/src/WebAssembly/FreeCADCoreProbe/PartSliceDocument.h": "c72b64c975aa675868fa1a8b040f8cc275482b5b3fe1c5ee243e7a7653f62a69", "freecad-source/src/Mod/Part/BOPTools/SplitFeatures.py": "ba08911a9e2ce188abc8553cc0e40650e73201ce4cabd4a1819fe9837774627b", "freecad-source/src/Mod/Part/CompoundTools/Explode.py": "75c4be5bc64eb3dc88655f17b04ffb832af5560edde51c9c2eb21d0e47bb53a6", "freecad-source/src/Mod/Part/CompoundTools/CompoundFilter.py": "9bf787d025b7c9309f0590078950d290157f173ff9fdac41a0336d3ff9438f47", "freecad-source/src/WebAssembly/FreeCADCoreProbe/PartBoxProbe.cpp": "2bad551870114eedf3fb97b3269538e212350bd860dd7854f688e07267098f80", "freecad-source/src/Mod/Part/BOPTools/SplitAPI.py": "ce1d44bf33af3f8532cbd64edd87b45a6f857fa48cefdaf4730e9d6115f009ba", "web/src/part-source-commands.json": "4f67a020261fd868bfdaf4ed9fab79da2cf3dacd2e7157705d29347716e6f5fe", "web/src/part-slice-task.tsx": "cfcb76b74bf495591d659f92dbb7ef82f200f6fb996d1ebdd415f4402718e649", "web/src/project-shell.tsx": "6e92cc0f510d673f77585fc6ae038877ab0ead9883ad4abbe3a8f1002a59eb58", "web/src/project-slice-properties.tsx": "f1bcebd9bab2df7d2cab92a35e706405648ff41f7a9abc3b7c8a281c4bdd707f", "web/src/part-document-facade.ts": "7cc8ac395a8b682ecbbb0b51c9ec128cdd0a9e21545313aa8a97a4e58c7c0490", "freecad-source/src/WebAssembly/FreeCADCoreProbe/DocumentProbe.cpp": "0dec55a5179f537be87896fd4a7d50cd6de194bfb06761c4797ea79545723733", "web/src/native-document-tree.tsx": "9d012551c81f66e21b83fd519b8969dd8eb56aed43e3041a58ba25c86bb3b9d9", "web/src/part-python-family-facade.ts": "c307d0e924075056d6966dab89f74f714a2cccaf7af9274e7f37dca872f7b5c6" }, "records": { "Part:desktop:Part_Slice": { "classification": "solid-only-slice-replaced-with-existing-occt-source-path", "finding": "Removed solid-base restriction and solid-only piece extraction. Calls supplied BOPTools.SplitAPI.slice through the existing PartBox WASM and PartSplitSource helper. Source uses Part.generalFuse -> TopoShape.makeElementGeneralFuse -> OCCT BRepAlgoAPI_BuilderAlgo and native source-piece mapping. Supports Standard/Split/CompSolid; tools do not contribute independent output pieces. Mounted BREP input task returns native result/piece files through OPFS.", "nextAction": "Reuse native-document accept/read/update/reopen. Mode/Tolerance/Base/Tools/Label update via a transaction and dependency-cycle checks; FCStd bytes reopen through App.openDocument, preserving supplied Python proxy classes. React supports local and OPFS FCStd reopening and property editing. Shared workbench document navigation now retains these PartBox snapshots across module switches. Other modules' document owners and project-shell integration are not unified. Do not repeat this lifecycle implementation; users validate during use.", "receipt": "docs/current/part-slice-lifecycle-implementation-pipeline.json", "projectHandoff": "project-native-slice-edit-20260912.md: Project DocumentProbe directly updates Slice properties through the existing helper under its outer native transaction. Project tree/mesh/history refresh through the existing editNative path. FCStd copy transfer remains available; editing no longer requires leaving Project. This is not global shared-runtime ownership or runtime validation.", "previousReceipt": "docs/current/part-slice-implementation-pipeline.json" }, "Part:desktop:Part_SliceApart": { "classification": "solid-only-slice-replaced-with-existing-occt-source-path", "finding": "Uses the same source-backed Split-mode slice and returns actual BREP pieces without dropping faces, wires or aggregates. Compound output is exposed as immediate child pieces; a single non-compound output remains one piece. This is geometric slice output, not the desktop CompoundFilter feature-creation workflow.", "nextAction": "Reuse native-document read/update/reopen and workbench tree. Updates synchronize the simple one-filter-per-piece layout; removing a piece with external dependents or custom filter selections is rejected transactionally. No headless ViewObject is fabricated. Reopened Slice/CompoundFilter proxies are native; runtime correctness remains for user validation. Cross-worker unification, arbitrary filters and project-shell integration are separate scope.", "receipt": "docs/current/part-slice-lifecycle-implementation-pipeline.json", "projectHandoff": "project-native-slice-edit-20260912.md: Project updates Slice Base/Tools/Mode/Tolerance/Label and reuses existing dependent CompoundFilter synchronization. Its outer transaction owns recompute, mesh serialization and rollback. Workbench defaults remain internally managed; only the affected DocumentProbe was rebuilt. Users validate correctness during use.", "previousReceipt": "docs/current/part-slice-implementation-pipeline.json" } } }, { "sourceDigests": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/MeshPrimitiveCommands.h": "f9a57107a1d27814ad4def5658484123c0396968a5e23f9264dbeb48f158ba23", "freecad-source/src/WebAssembly/FreeCADCoreProbe/MeshRuntimeProbe.cpp": "65b7eb72da80a7d8da6faecb8f3474936ae1e05c4ecfd1bff31e036c0e1dc099", "freecad-source/src/Mod/Mesh/App/FeatureMeshSolid.cpp": "8dc38ab1fa21076ee0640182d64f06980dc3bae80352818586696ad8066df1c1", "freecad-source/src/Mod/Mesh/Gui/DlgRegularSolidImp.cpp": "c59325bf04bab9ab0b8151b5356a96715f07c40573a49ff549e2361ffe0ec65a", "web/src/mesh-primitive-task.tsx": "a2edeb89ee8dd64a0f82d410674369660b94f3abebe7de908b8373ccef68c99a", "web/src/mesh-geometry-view.tsx": "12f51acc55ada41b64532d8ec0ce2a8cb64674da63e540782ee4ffa7d6e350fb", "web/src/mesh-python-family-facade.ts": "97a0cf5b3af31328c7e028a2240991eff5965c90015812677be0cfc7e218428c" }, "records": { "Mesh:desktop:Mesh_BuildRegularSolid": { "classification": "box-count-placeholder-replaced-with-six-native-parametric-types", "finding": "Removed three legacy metadata/hand-built box branches. Uses supplied Mesh::Cube, Cylinder, Cone, Sphere, Ellipsoid and Torus feature types and desktop property mappings. Native recompute returns actual mesh geometry. Preview cleans up its owned temporary document; accept commits a persistent parametric object and serializes real FCStd. React provides six modes, parameters, preview/create/cancel and updates current native selection, reusing Mesh geometry/OPFS output.", "nextAction": "Reuse native feature types and mounted task, not new tessellation code. New documents require explicit creation and reject existing names. General cross-worker document transfer and global undo ownership remain separate. User validation is deferred.", "receipt": "docs/current/mesh-primitive-implementation-pipeline.json" } } }, { "sourceDigests": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/MeshComponentCommands.h": "695e7e5239f4907cf08d20ca7629baea3541e259c434e37c8ca0bfacb594e6bc", "freecad-source/src/WebAssembly/FreeCADCoreProbe/MeshRuntimeProbe.cpp": "65b7eb72da80a7d8da6faecb8f3474936ae1e05c4ecfd1bff31e036c0e1dc099", "freecad-source/src/Mod/Mesh/App/Mesh.cpp": "b28b5b7a7ec3959b6d32ccf4d835f100b4d77910d70ab4b3eabe318f2aa02c44", "freecad-source/src/Mod/Mesh/Gui/Command.cpp": "18c780fd09818d4a918b6113b027f6957ce909ee94a9ade10a563ba8d8527d66", "freecad-source/src/Mod/Mesh/Gui/MeshSelection.cpp": "abc54f5e527ba013b95ca2123c24f3e23839aa266b7eef2196a18d3827fa7dc7", "web/src/mesh-components-task.tsx": "bfb5560cdfe5e137b59e99e4b2a4e2b6d51cc7f6dfb0d5e4683af3664b2dec2c", "web/src/mesh-python-family-facade.ts": "97a0cf5b3af31328c7e028a2240991eff5965c90015812677be0cfc7e218428c", "web/src/mesh-geometry-view.tsx": "12f51acc55ada41b64532d8ec0ce2a8cb64674da63e540782ee4ffa7d6e350fb" }, "records": { "Mesh:desktop:Mesh_RemoveComponents": { "classification": "count-only-placeholder-replaced-with-native-mesh-edit", "finding": "Removed old component-count echo branches. Uses MeshObject.getComponents and deleteFacets on actual input geometry; returns resulting vertices/facets. A live native Mesh::Feature is modified transactionally, while raw geometry mode returns real output without claiming a document mutation. Mounted component chooser supports count-based selection, explicit component indices, read/accept/cancel and source-fingerprint protection.", "nextAction": "Reuse native component operations, chooser and strict result contract. Desktop region/individual-triangle editing and cross-worker document transfer remain separate UI/ownership work; no runtime validation was performed. Do not restore counts-only meshMutation claims.", "receipt": "docs/current/mesh-components-implementation-pipeline.json", "followOnBuildReceipt": "docs/current/mesh-primitive-implementation-pipeline.json", "followOnFinding": "Component algorithms are unchanged; native serialization gained a finite-coordinate guard, and Three.js/OPFS rendering was extracted for primitive reuse." }, "Mesh:desktop:Mesh_SplitComponents": { "classification": "count-only-placeholder-replaced-with-native-mesh-edit", "finding": "Removed hard-coded one-component results. Uses desktop getComponents and meshFromSegment with the source transform, returning one actual mesh per connected component. Live native document mode creates persistent Component Mesh::Feature objects and retains the original, matching the supplied CmdMeshSplitComponents path. Raw geometry mode returns component meshes without invented document handles.", "nextAction": "Reuse existing native implementation, component display and OPFS indexed-mesh JSON delivery. Do not redo component detection or treat a route/build receipt as user validation. Cross-worker native document transfer is not supplied by this batch.", "receipt": "docs/current/mesh-components-implementation-pipeline.json", "followOnBuildReceipt": "docs/current/mesh-primitive-implementation-pipeline.json", "followOnFinding": "Component algorithms are unchanged; native serialization gained a finite-coordinate guard, and Three.js/OPFS rendering was extracted for primitive reuse." } } }, { "sourceDigests": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/MeshPartFlattenCommands.cpp": "ecff7f7c85753353a0df4c3ecc7a63e28e3c10bb3c7a4ac86e50c493635920b3", "freecad-source/src/WebAssembly/FreeCADCoreProbe/MeshPartRuntimeProbe.cpp": "ccd4f6a85d2b3475cf682b9270940b3e17b015b2950ced361f66362ac9f325d0", "freecad-source/src/Mod/MeshPart/App/MeshFlattening.cpp": "caf1a4421486a9d87e8a1b7e25e3a54b21ca1101d2504deeb1c2bd37c1bf5921", "freecad-source/src/Mod/MeshPart/App/MeshFlatteningNurbs.cpp": "6f0e08798c3b36d4f01197679daf9308a527d973dc525f4f97049de4009c7eb9", "freecad-source/src/Mod/MeshPart/App/MeshFlatteningLscmRelax.cpp": "6a018bd3b5e6b9160913ed3985187e00022eebc2be14755f1aabcc38787da600", "freecad-source/src/Mod/MeshPart/Gui/MeshFlatteningCommand.py": "371f0405f626b4012eee5d4a6220418f82e221bf33cfaf96c43152fdb786771d", "web/src/meshpart-desktop-adapter.ts": "6f6ab50649bef5e39d8621348f8e2d62cbd3a2ad0c33d33da93dd379e37c1149", "web/src/meshpart-flat-result.tsx": "d8cadc24a73416a432a051a053f578e0a5d0249a4f95bca079ec5f1af6651680" }, "records": { "MeshPart:desktop:MeshPart_CreateFlatMesh": { "classification": "placeholder-box-replaced-with-native-unwrapper", "finding": "Removed fabricated box meshing/counts and closed-document handles. Links supplied FaceUnwrapper, LscmRelax and Nurbs implementations directly into the existing MeshPart WASM; real mesh input produces relaxed flat coordinates and native boundary wires. Native selections create Part::Feature results transactionally in the same live document; raw points/triangles return BREP without fictitious document handles. React reuses the existing Three.js view and saves/downloads actual BREP through OPFS.", "nextAction": "Reuse the native unwrapper and real-result contract. Closed meshes need seams; disconnected components, non-manifold boundaries and degenerate input are explicit errors. Cross-worker document transfer and automatic seam generation are not implemented by this batch. Do not restore box fixtures, counts-only success or a fake flatmesh module.", "receipt": "docs/current/meshpart-flat-implementation-pipeline.json" }, "MeshPart:desktop:MeshPart_CreateFlatFace": { "classification": "placeholder-box-replaced-with-native-unwrapper", "finding": "Reuses the supplied desktop full-face procedure: native NURBS conversion, non-periodic surface, C0 approximation with cubic degree limits, tessellation, FaceUnwrapper relaxation and flat-pole interpolation. Returns real B-spline face BREP and native display triangles, not a box facet count. No pybind11/numpy shim or replacement geometry kernel is needed for this direct C++ route.", "nextAction": "Reuse the compiled C++ implementation. The desktop procedure is for complete faces, not preservation of arbitrary trimming/holes. Full cross-module document ownership still needs its separate integration; no user validation has run.", "receipt": "docs/current/meshpart-flat-implementation-pipeline.json" } } }, { "sourceDigests": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/PartSplitSource.h": "025ae1579fd4f955b8da3fd470a5dbeedaa9649b20538e951e140a52f3c82d78", "freecad-source/src/WebAssembly/FreeCADCoreProbe/PartDesktopCommands.cpp": "ff544cc0c5a6b14735060fde1d064268fae1bc19bd3e56c53d7e1cfd2fcaf1ec", "freecad-source/src/WebAssembly/FreeCADCoreProbe/PartBoxProbe.cpp": "3f13966d880c0f8b366ba8e3832fd8cacf21d8a22ef127dc3484d757e4352f8a", "freecad-source/src/Mod/Part/BOPTools/SplitAPI.py": "ce1d44bf33af3f8532cbd64edd87b45a6f857fa48cefdaf4730e9d6115f009ba", "freecad-source/src/Mod/Part/BOPTools/GeneralFuseResult.py": "4f65b88591ee85f1f630716b44f999921f19fc7108804b217db45731f8fc32fa", "freecad-source/src/Mod/Part/BOPTools/ShapeMerge.py": "b63b10e87c27fdba65235732bc768f6d721e466ab7e889e11a4a5bd23c642219", "freecad-source/src/Mod/Part/BOPTools/Utils.py": "2672b50b9ed5b6992872557debfd5f0534ddcd9029b5a23ed0c17b8e77453608", "web/src/part.worker.ts": "2966e6e22dee4cf32699026a0987d59df5ff8555b0ce008b5c18d2b67b2aae51", "web/src/part-source-commands.json": "01717e89290a5811b23e1d37c9a86b9d5d4ed499337540742d88da47d495018b" }, "records": { "Part:desktop:Part_XOR": { "classification": "native-shape-limitation-replaced-with-supplied-source", "finding": "Removed solid-only rejection and the volume-overlap membership approximation. Native BREP inputs now call the embedded BOPTools.SplitAPI.xor, preserving its aggregate upgrades, general-fuse source mapping, splitting and odd-membership selection. Worker selects the existing PartBox runtime with native Part and staged BOPTools; first entry initializes the Python package path.", "nextAction": "Reuse the source-backed BREP operation and its Worker/build ownership. Do not reimplement XOR or restore the simplified solid-volume test. Parametric document FeatureXOR links and the complete desktop editing workflow are separate remaining integration scope; routing and build receipts are not runtime validation.", "receipt": "docs/current/part-split-source-implementation-pipeline.json" }, "Part:desktop:Part_BooleanFragments": { "classification": "native-mode-limitation-replaced-with-supplied-source", "finding": "Removed Standard-only rejection. Calls the supplied BOPTools.SplitAPI.booleanFragments for Standard, Split and CompSolid, reusing GeneralFuseResult and ShapeMerge on the provided OCCT-backed Part implementation. Invalid modes, tolerance and source failures remain errors.", "nextAction": "Reuse all three native mode implementations and the staged Python sources. Preserve original source failures, including CompSolid with no solids. Parametric feature ownership and property editing remain separate from this native BREP command route. User validation is deferred.", "receipt": "docs/current/part-split-source-implementation-pipeline.json" } } }, { "sourceDigests": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/TechDrawHoleShaftFit.h": "8d29d93e3a467b3bb8032091f65e07da74e4f8fd50807b7ac9dd3b2db3316212", "freecad-source/src/Mod/TechDraw/TechDrawTools/TaskHoleShaftFit.py": "9f86da6573ec3dfc2284ca6e6d419e92088e09d1dbef6029e49b1cf31539b9a1", "web/src/techdraw-fit-task.tsx": "4b3b49560eaff36e0408a11ba4521e2c0996214493ec643590a8250646be8b06" }, "records": { "TechDraw:desktop:TechDraw_HoleShaftFit": { "classification": "native-placeholder-replaced-with-supplied-source", "finding": "Replaced the unconditional not_implemented branch. Executes the supplied ISO286 class and hole/shaft choice tables from the embedded TaskHoleShaftFit.py via AST, without importing the Qt dialog or copying/reinventing the tables. Reads the actual dimension, applies desktop FormatSpec/EqualTolerance/OverTolerance/UnderTolerance and signed tolerance formats in a native transaction, recomputes, and returns real values. Mounted React task offers native-derived choices and read/accept/cancel.", "nextAction": "Reuse the native helper and task. The source table subset covers positive nominal sizes through 500 mm; unsupported size/type is an error, not missing registration. Full-page annotation redraw remains part of the shared TechDraw renderer work. User validation is deferred; do not repeat the ISO table implementation or claim full page export is complete.", "receipt": "docs/current/techdraw-fit-implementation-pipeline.json" } } }, { "sourceDigests": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/BimRuntimeProbe.cpp": "aca35774cfc9675bb5f605a364abeddbbd0ed2280b4cd97fabbff9a9409b4a34", "freecad-source/src/WebAssembly/FreeCADCoreProbe/BIMDesktopCommands.h": "333bdab445b93cf40e45c3163bfa3893e63e0bd0cebfa09940610765202c5df4", "freecad-source/src/Mod/BIM/nativeifc/ifc_commands.py": "688a09cfba21a841cf246a0ff2418195eea0e3c578b859323c5775b8f77665f4", "tools/generate_feature_capability_registry.py": "c925047c9dbd81c6469a7a3948561a175f51635e61e7ce10841f9684a92f569d" }, "records": { "BIM:desktop:IFC_ConvertDocument": { "classification": "registration-fixed-runtime-dependency-incomplete", "finding": "The exact nameValue branch reports success after script execution and FCStd serialization. The registry omitted nameValue from recognized identifiers. Existing nativeifc.ifc_tools.convert_document call is retained; declaration-only IFC backend is now correctly rejected.", "nextAction": "Reuse registration/build receipt. Connect real IfcOpenShell WASM/Python bindings through the existing package preference and BIM build; do not rename branches, move markers again, or mark the declaration shim as a real backend. Native IFC restoration across reopen remains incomplete.", "receipt": "docs/current/bim-ifc-registration-implementation-pipeline.json" }, "BIM:desktop:IFC_Diff": { "classification": "registration-fixed-runtime-dependency-incomplete", "finding": "Existing project resolution and nativeifc.ifc_diff.get_diff feed the mounted panel. Exact nameValue dispatch is now recognized; real IFC binding is still required.", "nextAction": "Reuse native dispatch and diff UI; resolve the shared IfcOpenShell runtime binding, not another registration-only loop.", "receipt": "docs/current/bim-ifc-registration-implementation-pipeline.json" }, "BIM:desktop:IFC_Expand": { "classification": "registration-fixed-runtime-dependency-incomplete", "finding": "Existing expansion calls and result selection are retained. Registration now recognizes nameValue. Real native IFC provider and ViewObject proxy support remain dependencies, not optional removed business requirements.", "nextAction": "Reuse dispatch and result handling. Supply the real IFC backend and headless provider expansion; do not fabricate objects or report routing as completed expansion.", "receipt": "docs/current/bim-ifc-registration-implementation-pipeline.json" }, "BIM:desktop:IFC_MakeProject": { "classification": "registration-fixed-runtime-dependency-incomplete", "finding": "Existing export/open/import strategy 2 path retains sources until an imported native IFC project exists. Registry now recognizes the exact success branch. The fallback that wrote an empty IFC DATA section or opened input as an empty file has been replaced with explicit dependency errors.", "nextAction": "Connect the real IfcOpenShell binding, retain original objects on failure and finish IFC-associated data restoration. Keep declaration-only flags true; no handwritten serializer or empty IFC output.", "receipt": "docs/current/bim-ifc-registration-implementation-pipeline.json" } } }, { "sourceDigests": { "freecad-source/src/Gui/CommandView.cpp": "48c3ec5ea054a995aebe361fd0a29e45717b68133ae0debd3298a4e45920fce1", "web/src/scene-overlap-picker.ts": "1568993d85e3a8f0b1fd358e3b0edb5bade07d205162e8a62f9258f54593b359", "web/src/scene-command-host.ts": "36a16a0d2d06c484a469369b111a7504138281dd31e79326ae69599d621d0082", "web/src/import-render-bridge.ts": "aa044848b0d172e7ad772a027ad29c9005e9bcf3d34cd7ca56345cc67c3b20ff", "web/src/openscad-desktop-view.tsx": "083087e52c95d17791b01b75644c33684aa48e42fe6c4c621481c1db52485dea" }, "records": { "Web:desktop:Std_ClarifySelection": { "classification": "browser-object-selection-implemented-subelement-gap-retained", "finding": "CommandView.cpp ray-picks all objects at the cursor and invokes SelectionMenu with document/object/subelement identity. The Web host now provides ordered overlapping rendered objects, a cancellable choice menu and existing model-tree selection callbacks. Published route is object-level only, not full desktop parity.", "nextAction": "Reuse the published object picker. Extend native mesh output with actual FreeCAD subobject paths and OCCT face/edge identities before adding subelement choices; never label triangle indices as native faces. Desktop pick-radius preferences and assembly subobject selection remain required. User validation is deferred.", "receipt": "docs/current/web-overlap-selection-implementation-pipeline.json" } } }, { "sourceDigests": { "freecad-source/src/Gui/CommandView.cpp": "48c3ec5ea054a995aebe361fd0a29e45717b68133ae0debd3298a4e45920fce1", "freecad-source/src/Gui/OverlayManager.cpp": "8b22bd77608a78b9ade2849a0097a981ea1f99bda54d1f8bfc16ab80226f6da3", "web/src/dock-overlay-adapter.ts": "9747d185e07e7d3f1a89dc70dee575bb1730408fd08789f9a663c445816db50e", "web/src/dock-overlay-host.tsx": "19e88ed3af82884ad80137aec1a74a22683c3b580cd11f6a85904d9ecc484c87", "web/src/dock-overlay-commands.json": "a8492cc4bb0d41708ad5d481103535b70263ef77f305e22e046905218466e2eb", "web/src/dock-overlay.css": "2eca079c1296a8ca2587d7934a6acc0fe5252bb1f97ad7df65c80f9d78db9e5c" }, "records": { "Web:desktop:Std_DockOverlay": {"classification": "browser-ui-owner-implemented", "finding": "Desktop group selects overlay commands; React host dispatches the selected child from one command table.", "nextAction": "Reuse browser-ui route and published frontend receipt; no WASM command is required."}, "Web:desktop:Std_DockOverlayAll": {"classification": "browser-ui-owner-implemented", "finding": "OverlayManager toggles all dock overlays based on whether any are enabled; React updates actual panel layout.", "nextAction": "Reuse published React dock host; user validation is deferred."}, "Web:desktop:Std_DockOverlayTransparentAll": {"classification": "browser-ui-owner-implemented", "finding": "Desktop global transparency enables overlays if none exist; React host applies this to panel transparency.", "nextAction": "Reuse published React dock host; user validation is deferred."}, "Web:desktop:Std_DockOverlayToggle": {"classification": "browser-ui-owner-implemented", "finding": "Desktop targets hovered/focused dock; React host tracks pointer/focus or explicit panel argument.", "nextAction": "Reuse published React dock host; user validation is deferred."}, "Web:desktop:Std_DockOverlayToggleTransparent": {"classification": "browser-ui-owner-implemented", "finding": "Toggle transparency on active dock overlay through its real UI host.", "nextAction": "Reuse published React dock host; user validation is deferred."}, "Web:desktop:Std_DockOverlayMouseTransparent": {"classification": "browser-ui-owner-implemented", "finding": "Mouse transparency is UI state, implemented by pointer-event bypass on overlays with external recovery controls.", "nextAction": "Reuse published React dock host; user validation is deferred."}, "Web:desktop:Std_DockOverlayToggleLeft": {"classification": "browser-ui-owner-implemented", "finding": "Toggle visibility of actual left-side overlay panels; docking placement is configurable.", "nextAction": "Reuse published React dock host; user validation is deferred."}, "Web:desktop:Std_DockOverlayToggleRight": {"classification": "browser-ui-owner-implemented", "finding": "Toggle visibility of actual right-side overlay panels; docking placement is configurable.", "nextAction": "Reuse published React dock host; user validation is deferred."}, "Web:desktop:Std_DockOverlayToggleTop": {"classification": "browser-ui-owner-implemented", "finding": "Toggle visibility of actual top-side overlay panels; docking placement is configurable.", "nextAction": "Reuse published React dock host; user validation is deferred."}, "Web:desktop:Std_DockOverlayToggleBottom": {"classification": "browser-ui-owner-implemented", "finding": "Toggle visibility of actual bottom-side overlay panels; docking placement is configurable.", "nextAction": "Reuse published React dock host; user validation is deferred."} } }, { "sourceDigests": { "freecad-source/src/WebAssembly/FreeCADCoreProbe/TechDrawDesktopCommands.cpp": "7cedaed6a5f4d44376da1b7e90f7a4c686501b30cd8e798369964374c2e3762c", "freecad-source/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp": "722e792f713bfc4d613679e60eb2dda3a0101979643f993ec4098a3ccf835f88", "freecad-source/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp": "cc3e8bf4c84415c8753987778fcfdfe0fa40a3edf8970cb9a1c821df58467edf", "freecad-source/src/Mod/TechDraw/Gui/Command.cpp": "7d88459ebeb15b6905a4f876ca89368d65dd460e0725d9dec3b3a90a773d60b3", "freecad-source/src/Mod/TechDraw/Gui/CommandAnnotate.cpp": "675d65a2c87c082e52b10419a21a0878664818758f1f4d1db5013221b46dba54" }, "records": { "TechDraw:desktop:TechDraw_ExtensionCustomizeFormat": { "classification": "existing-native-handler-registration-fixed", "finding": "Existing handler reads/edits DrawViewDimension.FormatSpec or DrawViewBalloon.Text with document transaction, recompute and read/accept/cancel. Prefix concatenation hid the exact command from discovery; now uses its full literal name.", "nextAction": "Reuse the published implementation receipt; do not reimplement formatting. User validates during use.", "receipt": "docs/current/techdraw-format-registration-pipeline.json" }, "TechDraw:desktop:TechDraw_ExportPageSVG": { "classification": "business-implementation-incomplete", "finding": "Current branch only resolves document/page and returns partial with implementation_required. A view SVG is not the entire page scene.", "nextAction": "Implement full page composition using the supplied TechDraw template, placed views and annotations, then deliver actual SVG bytes. Do not add an exposed status or marker to the current partial branch." }, "TechDraw:desktop:TechDraw_PrintAll": { "classification": "business-implementation-incomplete", "finding": "Current branch enumerates pages and returns nativeOperationCompleted=false, printReady=false, partial. It does not render or print the pages.", "nextAction": "Reuse the same full-page composition needed by ExportPageSVG, implement multi-page browser printing and cancellation. Do not treat page enumeration as printing." }, "TechDraw:desktop:TechDraw_DecorateLine": { "classification": "business-implementation-incomplete", "finding": "Current active branch returns not_implemented and requires persistent geometric/cosmetic line formatting plus refreshed rendered view.", "nextAction": "Connect the supplied LineFormat/cosmetic edge semantics to current projected-edge selection and React task parameters, commit native changes and refresh the displayed page." }, "TechDraw:desktop:TechDraw_ExtensionThreadsGroup": { "classification": "existing-delegated-handler-needs-registration-handoff", "finding": "Current branch validates iMsg 0..3 and forwards to hole-side, hole-bottom, bolt-side or bolt-bottom native handlers. Side handlers build cosmetic geometry; the group preserves child status. The earlier dependency text about missing side handlers is stale relative to the active branches.", "nextAction": "Trace all four current child routes and their display integration; register the executable group delegation without replacing child failures or mistaking unreachable dependency text for active behavior." } } }] }