mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 02:25:55 +00:00
b2c5b1f5e9
Builds before format 14 named the pieces a cut splits a body into in truck's shell order, and the later features of such a design name the piece they work on by that name. SMLib orders the pieces otherwise, so split-body-pieces' fillet and chamfer landed on the wrong piece, its reference "no longer exists" (design_corpus body_names_saved_before_exact_history_keep_their_pieces, old_designs_open_and_evaluate_as_saved). For a feature saved so (`shell_piece_order`), each name its pieces are known by goes to the piece the points the later features naming it picked lie on; a name no later feature uses keeps SMLib's order, and so do all of them where the picks do not tell the pieces apart. docs/compatibility.md says so. That makes the feature's result depend on features after it, which neither its fingerprint nor its cache key cover: a script replays the design one feature at a time, so the split was evaluated before the fillet and chamfer existed, kept SMLib's order, and was reused once they came (script_roundtrip corpus_designs_replay_from_their_scripts: 'Body1 (1)' 4765.663706234679 opened against 4765.663706134907 replayed). The state now keeps a digest of the picks it named the pieces by (`ModelState::legacy_picks`), and every reuse (the last results, the cache, the kept, rolled-back and primed results) takes a state for such a feature only while the design's later features pick the same, so the replay names the pieces again as the file does when it opens. A saved model's states carry no lineage and are taken as saved. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>