docs: SMLib vs truck triage of the sweeps, threads and shell cases

169 rig and ladder cases on both kernels, graded against each case's own answer: where SMLib
fails, grouped by what goes wrong (wrong geometry, a crash, the thread groove's boolean failing
SMLib's check, shell refusals, sweeps with no SMLib path yet).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
bherbruck
2026-10-21 11:12:53 -04:00
committed by jyviko
parent 1d8299aedf
commit 96bdbbf3ba
+123
View File
@@ -0,0 +1,123 @@
# SMLib vs truck: sweeps, threads, shell and offset
A triage of the regression rig's sweeps, threads and shell cases, and of the ladder's tiers 03
(analytic profiles), 04 (spline profiles), 06 (threads) and 09 (shells and offsets): 169 cases,
each run on both kernels (`solidcraft-cli kernel-cases`, `SOLIDCRAFT_KERNEL` unset and `smlib`)
on `kernel-smlib` at 4b8953726. Each kernel is graded against the case's own answer
([kernel-cases.md](kernel-cases.md)), not against the other kernel. This page lists only the
cases where SMLib does not pass, grouped by what goes wrong, worst first; it is kept by hand as
fixes land.
| | Cases | truck passes | SMLib passes |
|---|---|---|---|
| sweeps | 83 | 55 | 51 |
| threads | 28 | 10 | 11 |
| shell | 18 | 5 | 11 |
| ladder 03, 04, 06, 09 | 40 | 28 | 26 |
| **all** | **169** | **98** | **99** |
SMLib passes 18 cases truck fails (shells of tapered and rounded bodies, offset faces next to
freeform faces, bent and hollow lofts, the 36 twisted blades). Truck passes 17 that SMLib does
not: 11 of them are sweeps SMLib has no path for yet (group G), 6 are below.
A thread off its hole's or shaft's size is refused on this branch (the owner's rule): those
cases pass on both kernels by refusing, and are not listed.
## A. Wrong geometry (worst)
| Case | truck | SMLib | SMLib's result |
|---|---|---|---|
| sweeps/2667-revolve-half-disc-three-quarters | pass | fail | a half disc on the axis turned 270°: SMLib makes a quarter ball turned inside out (V = -226, want 679) |
| sweeps/3528-revolved-dome-cut-by-a-ball-on-its-seam | pass | fail | the ball's cut is lost where it crosses the revolve's seam: V 48118, want 46425 |
| sweeps/2847-loft-rectangles-turning-through-half-a-turn | fail | fail | inside out (V = -127, want 2262); truck's is wrong too (V = 126) |
| sweeps/450-revolve-spherical-shell-sketched-off-the-origin | crash | fail | two shells where one is wanted, which the B-rep record can't close (truck's process dies) |
## B. Crash
| Case | truck | SMLib | SMLib's result |
|---|---|---|---|
| ladder/09-shells-and-offsets/011-part-shell | fail | crash | step 21 (solid.fillet) on the SMLib body: curve blend internal error "Two same vertices cannot construct an edge"; the fillet is the blends work's, not this page's |
## C. Threads: the groove's boolean fails SMLib's check
The groove (SMLib's screw sweep) cuts the body, and the result fails SMLib's own check: vertex
gaps of 1–6e-5 mm against vertex tolerances of 4–20e-6 mm (Test #0/#2 Bad Gap), an edge whose
geometry fails validation (Test #61), or a trim curve that does not lie on its edge when the
result is read back (SMLib export: pcurve). Truck's faceted groove fails SMLib's check on the
same cases with 6 to 752 failed tests.
| Case | truck | SMLib | SMLib's result |
|---|---|---|---|
| ladder/06-threads/001-external-m10-full | fail | fail | Bad Gap (1.89e-5 > 8.6e-6) |
| ladder/06-threads/002-external-m10x1-fine | hang | fail | Test #61 bad edge |
| ladder/06-threads/003-external-m10-partial-length | pass | fail | Bad Gap (1.91e-5 > 8.9e-6) |
| ladder/06-threads/004-external-m10-to-shoulder | fail | fail | Bad Gap ×10 |
| ladder/06-threads/005-internal-m10-through | fail | fail | Bad Gap (3.6e-5 > 1.8e-5) |
| ladder/06-threads/006-external-m10-into-chamfer | fail | fail | Bad Gap |
| ladder/06-threads/007-external-m10-at-filleted-shoulder | fail | fail | Bad Gap |
| ladder/06-threads/010-part-threaded-boss | fail | fail | Bad Gap (2.26e-5 > 2.0e-5) |
| threads/1250-external-m10x1.5-shaft-full-length | fail | fail | Bad Gap ×9 |
| threads/1395-long-external-m6-thread-24-turns | fail | fail | Test #61 bad edge |
| threads/1995-m8x1-thread-in-7mm-hole | fail | fail | Bad Gap (1.5e-5 > 7.5e-6) |
| threads/2038-cut-threaded-stud-from-bored-block | fail | fail | Test #61 bad edge |
| threads/2038-internal-then-external-thread-on-one-body | fail | fail | pcurve off its edge |
| threads/2038-join-two-threaded-bodies | hang | fail | pcurve off its edge |
| threads/2193-modelled-m33x3.5-thread | fail | fail | Bad Gap |
| threads/2209-fine-m44x1-thread-on-shaft | fail | fail | Bad Gap ×7 |
| threads/2209-m44x1.5-thread-on-flange-hub | fail | fail | Bad Gap (6.2e-5 > 2.05e-5) |
| threads/2406-modelled-m8-thread-in-6.8mm-pilot-hole | fail | fail | Bad Gap |
| threads/2526-three-modelled-threads-in-one-body | fail | fail | pcurve off its edge |
| threads/2822-modelled-thread-in-filleted-cube | fail | fail | pcurve off its edge |
| threads/3311-two-tapped-holes-both-modelled-threaded | fail | fail | pcurve off its edge |
| threads/3914-sketch-on-top-face-of-threaded-rounded-block | fail | fail | pcurve off its edge (0.86 mm) |
| threads/3952-modelled-thread-in-blind-hole-of-revolved-ring | fail | fail | pcurve off its edge |
| threads/4149-internal-thread-below-counterbore-filleted-rim | fail | fail | Bad Gap |
| threads/602-fillet-hex-head-beside-modelled-thread | fail | fail | Bad Gap |
## D. Coils and other sweeps in booleans
| Case | truck | SMLib | SMLib's result |
|---|---|---|---|
| sweeps/793-coil-cut-by-a-box-above-a-plane | hang | fail | pcurve off its edge |
| sweeps/793-coil-split-by-a-plane-across-its-axis | fail | fail | pcurve off its edge |
| sweeps/2552-thread-groove-cut-by-a-square-coil-in-a-bore | hang | fail | the boolean's result is not a closed solid |
| sweeps/96-loft-cut-box-sections-pad-first | fail | fail | the boolean's result is not a closed solid |
| sweeps/96-loft-cut-box-sections-top-first | fail | fail | the boolean's result is not a closed solid |
| sweeps/844-join-two-overlapping-swept-arc-walls | fail | fail | boolean status 1006 |
| sweeps/3006-second-sweep-from-a-plane-along-a-closed-path | fail | fail | read back: a face no shell uses |
## E. Shell and offset refused
| Case | truck | SMLib | SMLib's result |
|---|---|---|---|
| ladder/09-shells-and-offsets/006-shell-rounds-r1-thinner-than-t2 | pass | fail | shell status 1001 (rounds of r1 inside a 2 mm wall) |
| shell/1494-shell-box-with-cylinder-on-edge-line | fail | fail | shell status 1001 |
| shell/1525-shell-box-with-rounds-chamfer-and-fillet | fail | fail | shell status 1001 |
| shell/2939-offset-face-sphere | pass | fail | check: edge/surface gap 5.015e-6 > 5e-6 |
| shell/3468-offset-face-boss-wall-next-to-fillet | fail | fail | check: an edge tolerance of 2.0 mm |
| shell/2531-shell-point-pick-after-parameter-edit | fail | fail | V 17952, want 22112 (truck 17376): the shell's face pick after the edit, on both kernels |
| sweeps/2820-pipe-hollow-with-a-wall-along-a-bend | pass | fail | sweep status 1001 |
## F. Same answer on both kernels (engine or case)
| Case | truck | SMLib | Both kernels |
|---|---|---|---|
| sweeps/3345-sweep-profile-mid-line-round-a-rounded-rectangle | fail | fail | the same bbox (±46 × ±36, want ±32 × ±22): the profile's placement, not the kernel |
| sweeps/2516-revolve-about-a-named-construction-axis | fail | fail | unknown sketch line `Axis1` |
| sweeps/3191-revolve-cut-leaves-a-cone | fail | fail | the profile crosses the revolve axis |
| sweeps/4056-surface-loft-rails-…-stern-to-bow | fail | fail | a guide rail misses section 2 |
| sweeps/2570-loft-circle-to-a-non-star-shaped-comb | fail | fail | SMLib: an arc turns more than once; truck: a loop runs clockwise |
| shell/4009-closed-shell-internal-void | fail | fail | `solid.shell` needs 1…1000 faces (a closed shell has none) |
| ladder/06-threads/008-multi-start-thread | unsupported | unsupported | no start count yet |
| ladder/06-threads/009-thread-runout-length | unsupported | unsupported | no runout length yet |
## G. No SMLib path yet ("not supported yet", never truck's in its place)
| What | Cases |
|---|---|
| sweep with a twist or an end scale | sweeps/1269-sweep-twisted-square-ninety-degrees, 2005-closed-sweep-twisted-new-body, 2005-closed-sweep-twisted-cut-inside-a-torus, 2891-twisted-sweep-cut-through-a-tube, 771-sweep-end-scale-cone-frustum |
| sweep along a path with corners | ladder/04/003-pipe-along-bezier, ladder/04/004-sweep-square-along-bezier, sweeps/96-sweep-rectangle-round-a-mitred-corner, 561-extrude-the-end-face-of-a-sweep, 3505-extrude-the-flat-wall-of-a-sweep-with-a-corner |
| loft through sections with holes | sweeps/1184-loft-ring-sections-keep-the-hole, 2435-loft-rectangular-ring-sections, 3111-loft-rectangular-ring-to-circular-ring |
| guide rails | sweeps/201-loft-one-guide-rail-cone-frustum, 771-sweep-one-guide-rail-cone-frustum, 771-sweep-two-guide-rails-cone-frustum |
| sweep along a path of points | sweeps/2862-three-pipes-meeting-at-one-point |
| draft extrusion with a straight foot | shell/391-deboss-text-on-flange-of-filleted-shelled-body |