mirror of
https://github.com/ajisaacs/OpenNest.git
synced 2026-10-31 16:51:35 -04:00
FillItem_WithClampZones has flipped between two digests because each was correct for the machine that pinned it. PairFiller sized its parallel batches from Environment.ProcessorCount, and a batch shares the best count and work area from before it, so core count decides which candidates are tried. With 10+ logical processors candidate 9 runs before the area shrinks and its 46-part layout wins for every comparer (9BF5FC7FC47364A9); with 8 or fewer the area has shrunk, it can only reach 45, and Fill/Strip and Vertical Remnant settle on different 45-part ties. 40 of the parts are kept either way. So the same nest differed between shop PCs, and CI failed whenever the digests were pinned on a 12-thread desktop. Fix the batch at 8, which keeps the pins CI has always produced. Also claim GridDedup keys in candidate order before the parallel loop: the claim was a race inside a batch, seen as one candidate returning 42 parts and then 33 in the same process. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>