The guard that refuses machining through bends sewed every bend zone and nonparallel panel into one solid. Two bends meeting at an open corner relief share only an edge, so that sew failed with "nonmanifold edge contact" and any cut on the base was refused. Sew and test each piece on its own instead. Reference case 75-sm-bracket-holes now passes; its known_failure mark is removed. Fixes #296 Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Reference tests (the oracle)
Each directory is one case:
recipe.json: the part, written in SolidCraft's recipe format (sketches in sketch-local coordinates, features with their parameters, faces and edges picked by a world-space point).cargo xtask oraclereplays it through SolidCraft's command engine.expected.json: what the part must measure, and where those numbers come from.reference.stl(optional): a fine triangulation of the expected part, used to check the shape itself (surface distance), not only its totals.
Run every case with cargo xtask oracle; it writes docs/oracle.md.
expected.json
{
"source": "analytic",
"method": "box 40 x 30 x 20: V = abc, A = 2(ab + bc + ca)",
"body_count": 1,
"volume_mm3": 24000.0,
"area_mm2": 5200.0,
"center_of_mass": [20.0, 15.0, 10.0],
"bbox": { "min": [0.0, 0.0, 0.0], "max": [40.0, 30.0, 20.0] },
"faces": 6
}
| Field | Meaning |
|---|---|
source |
"analytic" (closed-form geometry, worked out by hand; method gives the formulas) or "freecad <version>" (built from the same recipe by tools/freecad-oracle/). |
method |
How the numbers were obtained: formulas for analytic cases, the construction for FreeCAD ones. |
body_count |
Number of solid bodies. |
volume_mm3, area_mm2 |
Totals over all bodies. |
center_of_mass |
Volume-weighted centroid of all bodies (uniform density). |
bbox |
Axis-aligned bounding box of all bodies. |
faces |
Optional. Only where the geometry fixes the count: a face is a maximal smooth patch of one surface (a full cylinder side is one face; coplanar neighbours are one face). |
compare |
Optional. Restricts the comparison to these keys (for example ["volume_mm3", "area_mm2"] where kernels legitimately build different corner patches); note says why. |
tolerance |
Optional overrides: rel (volume, area; default 1e-3), abs_mm (centre of mass and bbox, default 1e-3 × the bbox diagonal), surface_mm (STL surface distance). |
note |
Optional remarks. |
No value here was measured in, or exported from, any commercial CAD product.