Files
solvecraft/harness/cpp
Jacob Oursland d661aa337a difftest: compare topology change-tracker chg lists and events
The runner compared the tracker's rm and add lists only, and its pool objects
were all bare SmTopology (type 16001), which the tracker's IsKindOf filter
ignores: the lists were always empty and capture's bookkeeping was unobservable.
Two-tier mutation testing found 11 mutants in `topology::topology` that neither
the unit tests nor this unit noticed.

- TRACK_LISTS now emits GetChgList and GetNotifyEvents (action, caller,
  data1..3) on the C++ side and TrackTopologyChanges::lists() on the Rust side.
- A new SET_KIND op gives a pool object a stand-in topology type code
  (SmTopology, SmFace, SmEdgeuse, SmEdge, SmVertex). The object keeps SmTopology
  storage; SmTrackTopologyChanges classifies by type code alone, and the state
  dump asks the base class explicitly, so its type answers are unchanged.
  Existing cases keep the default kind.
- A fixed case drives every capture arm (ChangeGeometry, PostEdit, AddToBrep,
  SplitInBrep, TrimNoSplitInBrep, MergeInBrep, RmFromBrep, Destruction) with a
  tracker and dumps the lists and events after each, so later operations cannot
  mask an arm.

difftest (Linux): PASS topology.topology cases=658 passed=658 failed=0
deferred=0 max_rel_err=0e0. Replaying the saved mutations: the ChangeGeometry/
PostEdit tracked selection, SplitInBrep, TrimNoSplitInBrep,
ChangeGeometry|Split|Merge, Destruction and remove_key mutants now fail the
unit. The owner-walk and accessor mutants remain unit-test coverage (they need
geometry stand-ins with owner links; #656 has the tests).

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-23 13:00:39 -07:00
..