mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-08 13:01:52 +00:00
d661aa337a
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>