feat: add candidate FreeCAD naming SDK and attachment oracles
Build and verify the candidate-only FreeCAD naming bridge and OCCT worker path, including three-stage StringHasher restoration. Add Datum, ShapeBinder, attachment-mode, and PartDesign structure oracles plus offline SDK build plans and CI boundary checks.
This commit is contained in:
@@ -44,19 +44,48 @@ establishes ABI linkage; exact promotion additionally requires valid
|
||||
MappedNameRef, StringHasher, ElementMap2, stage history, and round-trip evidence.
|
||||
|
||||
The repository also carries a prerequisite-only source probe. It builds QtBase
|
||||
6.8.2 `Qt6Core` for wasm, then compiles the locked FreeCAD `IndexedName.cpp` and
|
||||
`MappedName.cpp` sources without exporting the production naming callbacks:
|
||||
6.8.2 `Qt6Core` for wasm, then compiles the locked FreeCAD `IndexedName.cpp`,
|
||||
`MappedName.cpp`, `StringHasher.cpp`, `MappedElement.cpp`,
|
||||
`ElementNamingUtils.cpp`, `ElementMap.cpp`, and `Base/Handle.cpp` sources without
|
||||
exporting the production naming callbacks:
|
||||
|
||||
```bash
|
||||
./npmw run build:qt6-wasm-core
|
||||
./npmw run build:freecad-naming-source-probe
|
||||
./npmw run test:freecad-naming-source-probe
|
||||
./npmw run check:freecad-naming-sdk-readiness
|
||||
./npmw run check:freecad-private-naming-boundary
|
||||
```
|
||||
|
||||
Passing this probe establishes that the private source subset and toolchain are
|
||||
cross-compilable. It does not link the production OCCT Worker, does not close
|
||||
EX-TSN-02, and does not change `systemExact=false`.
|
||||
cross-compilable. Its runtime test covers mapped-name parsing, StringHasher
|
||||
deduplication, SHA-1 threshold handling, indexed mapped-name references,
|
||||
ElementMap encoding/lookup/history/save/restore, and stable mapped-element
|
||||
ordering. It also feeds native MappedNameRef, StringHasher, and ElementMap2
|
||||
resources through the strict Web ABI validator using deliberately separate
|
||||
`freecadNamingCandidate*` callback names.
|
||||
|
||||
The seven locked FreeCAD source units are first compiled into the isolated
|
||||
`libFreeCADPrivateNamingProbe.a` archive. The smoke test checks that it contains
|
||||
exactly seven wasm object members before linking the runnable probe. This
|
||||
archive remains host-adapter-bound and is not a substitute for FreeCADBase or
|
||||
FreeCADApp.
|
||||
|
||||
Persistence, Python wrappers, type-system, logging, and Application/Document
|
||||
lifecycle interfaces remain standalone host adapters. FreeCADApp/Part/Python
|
||||
static libraries, real Application/Document integration, OCCT builder context,
|
||||
and the production bridge are not linked. The candidate callbacks are never
|
||||
published to the production Worker. The probe therefore does not close
|
||||
EX-TSN-02 and does not change `systemExact=false`.
|
||||
|
||||
`check:freecad-naming-sdk-readiness` audits the pre-production SDK plan without
|
||||
publishing anything. It parses every present `.a` archive and rejects native
|
||||
ELF members; the current local resource set verifies QtCore plus its bundled
|
||||
Pcre2/Zlib wasm dependencies, but still lacks FreeCADBase, FreeCADApp, Part,
|
||||
Python, and the production bridge. `generate:freecad-naming-sdk-manifest` is
|
||||
fail-closed and writes no manifest until all inputs are present. The complete
|
||||
SDK checker applies the same wasm-archive rule, so an x86 static library cannot
|
||||
satisfy the manifest by hash alone.
|
||||
|
||||
The versioned JSON request carries document `objectId`, stable positive
|
||||
`objectTag`, prior naming evidence, result object identity, result tag, stage
|
||||
|
||||
Reference in New Issue
Block a user