81 lines
4.9 KiB
Markdown
81 lines
4.9 KiB
Markdown
# Cross-workbench continuation checkpoint — 2026-09-18
|
||
|
||
Batch: `87d3691ca57ddbf994740d84`. Selected capability:
|
||
`product:cross-workbench-document-editing`. Capability remains incomplete;
|
||
no passing statuses, coverage tags, contracts, proof requirements, acceptance
|
||
machinery, native binaries or distribution assets were changed in this turn.
|
||
|
||
## Changes this turn
|
||
|
||
Updated `tools/web-cross-workbench-business-cases.mjs` to record outgoing
|
||
worker requests, worker identity and request IDs alongside native responses.
|
||
The existing constrained Sketch / Pad scenario now requires a consistent
|
||
project document ID, native document name and worker owner, and successful
|
||
responses correlated to each modeling request. It retains its deliberate
|
||
incomplete-capability failure after the initial scenario.
|
||
|
||
Added separate preview/browser/UI/Body/Sketch/Pad stage timing, the last entered
|
||
stage, cleanup duration, and outgoing request evidence at failure. Body creation
|
||
now waits for an actual native Body result before proceeding to Sketch creation.
|
||
These are executable assertions, not claims that the scenario has passed.
|
||
|
||
## Actual verification
|
||
|
||
`node --check tools/web-cross-workbench-business-cases.mjs` exited 0 after the
|
||
final edit. No frontend build was run because product source was not changed.
|
||
|
||
The authorized runner command
|
||
`python3 tools/run_business_acceptance.py --module Web --ids product:cross-workbench-document-editing --reuse`
|
||
returned exit 1, `unchanged_failure_preserved`, `executedCount: 0`, `passed: 0`.
|
||
It retained evidence:
|
||
`docs/current/business-evidence/49541ff602063d0030bc9fd7-20260917T224121011857.json`.
|
||
Missing proof areas are `active_document_identity`, `cross_workbench_history`,
|
||
`fcstd_opfs_roundtrip`, `live_sketch_feature_recompute`, and `rejection_isolation`.
|
||
There is no new native/browser runtime proof from this turn. Do not force a retry
|
||
of the unchanged failure or infer runtime success from the syntax check.
|
||
|
||
## Confirmed source findings and next repair
|
||
|
||
1. `web/src/partdesign-workspace.tsx` is now only the standalone React mount. It
|
||
imports `PartDesignWorkspace` from `./partdesign-workspace-component.js`.
|
||
A permitted-reader request for the corresponding
|
||
`web/src/partdesign-workspace-component.tsx` was rejected as outside the packet
|
||
dependency/current-module source scope. This is a source-access boundary, not
|
||
evidence that the component or business implementation is absent.
|
||
2. `web/src/project-shell.tsx` still has the fixed Part toolbar around line 492
|
||
and no Workbench selector in the inspected header/toolbar. Its existing
|
||
`applyNativeDocument` around lines 131–171 already preserves native semantic
|
||
properties and uses the shared project store/render bridge. Reuse that work.
|
||
3. The primary shell dispatches `part.document` through `WebModuleRouter` using
|
||
project ID and `web_${id.replace(/\W/g, "_")}` as native name. Router sessions
|
||
are keyed by module and worker file. `part-save.worker.ts` owns DocumentProbe
|
||
documents and currently handles Part document/save and document-view requests.
|
||
Do not equate identical native names in separate workers with shared ownership.
|
||
4. The existing desktop PartDesign adapter already maps Body, Sketch and Pad
|
||
commands to `createBody`, `setSketch` and `setFeature`; reuse its semantics and
|
||
the mounted native workspace rather than introducing fixture commands.
|
||
5. The packet source reader reached its 48000-byte supplemental source budget.
|
||
Do not bypass it with direct reads, scans or moving files. Next packet needs
|
||
the extracted component, its current-document integration interface and its
|
||
actual worker owner as permitted source anchors. Read those first, then wire
|
||
Sketcher/PartDesign controls into the primary shell, preserving the active
|
||
native document, tree, selection, rendering, transactions and OPFS handling.
|
||
6. The runner treated relevant inputs as unchanged despite this case-file edit.
|
||
The supplied Web dependency excerpt does not list the imported cross-workbench
|
||
case file. Preserve this observation; do not alter the acceptance contract or
|
||
machinery to manufacture a new run or passing result.
|
||
|
||
## Remaining required delivery
|
||
|
||
Finish the integrated primary UI and actual same-document Sketcher-to-PartDesign
|
||
workflow. Add and execute independent native proof and browser assertions for
|
||
existing-document isolation, sketch editing and live recompute, task cancel,
|
||
undo/redo across workbench switches, and real FCStd OPFS save/reopen. The initial
|
||
scenario must also prove native Body/Tip/Profile links, a fully constrained
|
||
Sketch and the actual Pad mesh/volume. Preserve all original and supplemental
|
||
requirements, including the unchanged IFC semantic export contract; proxy
|
||
geometry never substitutes for semantic IFC export. No full-parity/API gates,
|
||
deployment, pushes or messages to others are authorized. Use focused builds and
|
||
the acceptance runner when implementation inputs are ready; retain historical
|
||
evidence and do not repeat passing scenarios solely for timestamps.
|