78 lines
4.4 KiB
Markdown
78 lines
4.4 KiB
Markdown
# Direct Compound and Join Checkpoint
|
|
|
|
Batch: `cf5ac949ddca3a37f225bb64`, 2026-09-17.
|
|
|
|
Selected requirements: `Part:desktop:Part_ExplodeCompound`,
|
|
`Part:desktop:Part_JoinConnect`, `Part:desktop:Part_JoinCutout`,
|
|
`Part:desktop:Part_JoinEmbed`.
|
|
|
|
## Implementation
|
|
|
|
- Reused the existing DocumentProbe WASM, document facade, compound/join task
|
|
panels, native linked features, and native/browser business cases.
|
|
- Added `Part_JoinEmbed` to the direct mode mapping in
|
|
`web/src/part-desktop-adapter.ts`. It invokes the existing `createJoin` document
|
|
action with `joinMode: embed`, preserving validation and transaction ownership.
|
|
- Mounted the existing Join task for Embed in `web/src/workbench-shell.tsx`, with
|
|
its operation fixed to Embed. Extended the task's `fixedMode` type in
|
|
`web/src/part-join-task.tsx` accordingly.
|
|
- Extended `directCompoundJoinModes` in `tools/part-business-cases.mjs` so Embed
|
|
executes the existing native and browser assertions. Its browser fixture must
|
|
produce one linked valid 1800 mm3 FeaturePython object; Cutout remains 800 mm3.
|
|
- Desktop source `BOPTools/JoinFeatures.py` confirms Embed requires two selected
|
|
objects and retains Base/Tool links through FeatureEmbed and `embed_legacy`.
|
|
- No native geometry implementation, WASM artifact, acceptance contract, verifier,
|
|
proof requirements, or passing status was manually changed. No full build,
|
|
deployment, push, or IFC validation was performed.
|
|
|
|
## Execution Evidence
|
|
|
|
All commands used `python3 tools/run_business_acceptance.py --module Part
|
|
--ids <ID> --reuse`. Each isolated run returned `passed: 1`, no remaining IDs,
|
|
and no pending issues:
|
|
|
|
| Command | Seconds | Evidence under docs/current/business-evidence |
|
|
| --- | ---: | --- |
|
|
| Part_JoinConnect | 15.405 | 610ee890ca92a1ee2d52e186-20260917T065813277264.json |
|
|
| Part_JoinEmbed | 13.492 | d346ba07173471fc8b0a0065-20260917T065849868416.json |
|
|
| Part_ExplodeCompound | 13.653 | 34e5d87706318b2119fb9bce-20260917T065926900214.json |
|
|
| Part_JoinCutout | 12.890 | 4cb847385529414fa973687b-20260917T070006735322.json |
|
|
|
|
Assertions exercise measured geometry, valid topology, actual document links,
|
|
source visibility, one transaction, source-edit recomputation, invalid input and
|
|
cancellation preservation, undo/redo, FCStd reopen, mounted command controls,
|
|
OPFS FCStd bytes, and desktop/mobile canvas pixels. Screenshots are under
|
|
`docs/current/business-artifacts/<command>/`. Embed desktop and Explode mobile
|
|
panel screenshots were visually inspected and showed the expected geometry.
|
|
|
|
`web/node_modules/.bin/tsc --noEmit -p web/tsconfig.json` passed after extending
|
|
the fixedMode type. Scoped `git diff --check` passed.
|
|
|
|
## Recovery and Remaining Boundaries
|
|
|
|
- The initial three-ID run hit the unchanged 180-second runner limit after all
|
|
three native cases and the Explode browser case completed, during Connect's
|
|
browser stage. No acceptance pass was attributed to that timed-out run. The
|
|
isolated runs above succeeded without increasing limits or changing assertions.
|
|
- Connect and Embed passed before the final TypeScript-only fixedMode union edit;
|
|
Explode and Cutout passed after it. A final four-ID `--reuse` request returned
|
|
`previous_validation_deferred`, exit 78, executedCount 0, for all four IDs.
|
|
Policy reason: repeat validation is paused and historical proof is not promoted
|
|
to current acceptance. Preserve this distinction; do not bypass the policy or
|
|
manually refresh statuses/fingerprints.
|
|
- The unchanged Part contract's coveredIds and remainingBoundaries still carry
|
|
older coverage metadata for these commands. This turn did not modify that
|
|
contract to force the scheduler preflight to pass. Use the runner evidence and
|
|
its policy result when continuing; do not equate metadata with missing code.
|
|
- These fixtures use native solid boxes and compound children. They do not
|
|
establish every shell/wire join behavior or complete Part parity. All original
|
|
and supplemental requirements remain in scope, including the unchanged IFC
|
|
semantic export contract; proxy geometry is not IFC semantic completion.
|
|
- Continue with the next permitted missing business behavior. Reuse the above
|
|
source anchors and evidence; do not replay this unchanged passing batch merely
|
|
to refresh timestamps. If the scheduler selects it again, retain the explicit
|
|
previous-validation deferral and metadata boundary.
|
|
|
|
The existing browser server at `http://127.0.0.1:5180` was reused. Embed is mounted
|
|
at `/workbench.html?module=Part&command=Part_JoinEmbed`.
|