mirror of
https://github.com/ajisaacs/OpenNest.git
synced 2026-10-05 16:52:10 -04:00
The second delta review found four more false-equal classes in the general reflective fingerprint, all reachable only through custom settings subclasses: cycle markers that dropped the target ancestor, display-formatted DateTime/DateTimeOffset, ignored dictionary and set comparers, and arrays flattened without their dimensions. Safe arrays of OpenNest elements were also newly refused. Every repair of the generic traversal opened another such case. Settings capture now supports exactly the types regeneration already accepts (OwnedCuttingParameters): CuttingParameters, SequenceParameters, AssignmentParameters and the built-in lead-in, lead-out and tab types. Each member is written explicitly, doubles by bit pattern with invariant numerals and text length-prefixed. Every object's runtime type is checked before any member is read, so no other type's code runs. A plate-scoped request whose part or plate settings contain any other type, subclasses included, is UnsupportedGeometry at capture instead of a Ready plan that can never apply. A nested settings object replaced by such a type after capture makes Apply Stale. Detached part-list requests are unaffected. Coverage tests fail when a supported type gains a property or field the fingerprint does not write, or when a new built-in lead or tab type is added without fingerprint support.