Skip to content

v1.4.0 — consume OCCTSwift v1.1.0 + drop identity-flag workaround

Choose a tag to compare

@gsdali gsdali released this 10 May 00:00
· 26 commits to main since this release
6614714

OCCTMCP v1.4.0 — consume OCCTSwift v1.1.0 + drop identity-flag workaround

OCCTSwift v1.1.0 closes #167 with TopologyGraph.findDerivedOrSelf(of:) and hasHistoryRecord(for:) — unambiguous answers to "where did this node end up?":

  • non-empty derivatives → modified
  • [] → explicitly deleted
  • [self] → no record at all (untouched)

This release consumes those and removes the v1.3 workaround.

What changed

  • HistoryRegistry's Entry { graph, isIdentityPreserving } reverts to a plain graph store. recordIdentityHistory* keep their topology-count guards but no longer write self-records or set a flag.
  • RemapTools.remapViaHistory switches from findDerived + flag plumbing to findDerivedOrSelf. Empty result is now a definitive fate=lost. Cleaner control flow.
  • recordKind inside recordBoolean / recordSingleInputHistory skips writing identity records (input mapped to its own index in the post graph). Without this skip, OCCT-reported "modified to same index" cases would get conflated with explicit deletes by findDerivedOrSelf — the fillet integration test exposed this on the cutover.

History opt-in matrix as of v1.4

Tool Path Notes
transform_body implicit identity (no records written) every node maps 1:1; findDerivedOrSelf returns [self]
heal_shape implicit identity if guards pass falls back to heuristic if shape repair changed topology
boolean_op per-input via *WithFullHistory identity-mapping records skipped at write time
apply_feature per-feature via BuildResult.histories[id] every spec kind covered (OCCTSwift v1.0.4)
mirror_or_pattern use find_correspondences instead different contract

Tests

25 swift-testing cases — same surface as v1.3.0; no new tests, no removed tests. All four history-asserting integration tests still pass; the fillet one passes only after the recordKind identity-skip fix landed, which proves we're now exercising the findDerivedOrSelf semantics correctly.