Files
OneCAD/apps/solvecraft-cli/tests/corpus
Iraklis KourtisandClaude Opus 5.5 a9efae864d fix(doc): designs saved before format 14 keep their piece names (#136)
Pieces a cut splits a body into are named after their faces since names
follow history (lineage::order_lumps), so they keep their body names when
an upstream edit moves the cut. The kernel's shell order named them
before, and the two orders can differ: a slot along X through a 40x30x10
block swaps Body1 and Body1 (1). A design saved by an older build stores
body names meaning the old order (fillet and chamfer bodies, targets,
participants, materials, appearances, joints), so it would act on the
other piece.

Each feature now says which order names its pieces
(Feature::shell_piece_order). The v13 to v14 step sets it on every saved
feature, so an older design evaluates as it was saved; features made from
now on, in new or old designs, name their pieces after their faces.

The corpus gains split-body-pieces, saved by v0.3.2: a fillet, a chamfer
and an appearance refer to the two pieces by body name. Without the
setting the two pieces swap names (the corpus test fails); with it they
stay as saved. Migration tests that compared an upgraded design with the
original now expect the setting on its features.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J53sR6gEaVt56soFDpTck8
2026-10-12 11:52:53 -04:00
..

Design file corpus

Designs saved by older SolveCraft builds. tests/design_corpus.rs opens each one with the current build and checks that it evaluates as it did when saved (the .expected.json next to it is solvecraft-cli eval of that file by the build that saved it: bodies, volumes, areas, world bounding boxes), that it is upgraded to the current file format, and that damaged and hostile variants of it never panic.

File Saved by Era
m0-box-fillet-hole 3714342 M0: sketch, parameters, extrude, fillet, cut
m0-revolve-primitives 3714342 M0: revolve, primitives, combine, chamfer, timeline edit
components-arm 97d03e3 components and occurrences: move, copy, Paste New, ground
joints-hinge c2309eb joints: revolute hinge driven by a parameter
modern-sheet-metal bd98035 sheet metal contour flange (oracle 72)
modern-path-pattern bd98035 pattern on path (oracle 53)
modern-plastic bd98035 shell, lip, boss, rest, snap fit, plastic rule
naming-split-pieces 9a979cf format 13 names: a slot splits the top; fillet, chamfer and offset face name its pieces by number (F2:top#2)
split-body-pieces v0.3.2 (07e263d) a slot along X cuts a block into two bodies; a fillet, a chamfer and an appearance refer to the pieces by body name (Body1, Body1 (1))

The scripts that made them are in scripts/. Never regenerate a file with a newer build: the point is that it was written by the old one. Add new files for new eras instead.