A plan job (scripts/ci/kernel_rig_plan.py, with its self-test) maps a pull request's changed files
to the areas: tests/kernel-cases/<area>/PATHS for each area, tests/kernel-cases/PATHS-ALL for the
shared core, the ladder whenever any area runs. Areas come from the folders, so a new one needs no
workflow edit. Pushes, merge groups, the release gate and runs by hand run every area. The
kernel-rig check counts a skipped build or shard as passed only when the plan selected none.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kernel-rig.yml builds solidcraft-cli once (release, SMLib prebuilt; sccache on a sticky disk
that only pushes to main and develop commit) and hands it, with the rig's runner, to a matrix
of eleven shards: the ten areas of tests/kernel-cases/, each against its KNOWN_FAILING, and
the ladder against its golden. One path filter covers the kernel surface; drafts skip; a new
push cancels a pull request's old run; merge groups always run it, and the release gate calls
it. The areas other than fillets get a KNOWN_FAILING with only its header, to be seeded from
develop after the SMLib pin bump.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cases from the issues filed after #4160, each a synthetic recipe with its own answer
(analysis or invariants); every other issue in the range is listed with why it was skipped.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cases from the issues filed after #4160, each a synthetic recipe with its own answer
(analysis or invariants); every other issue in the range is listed with why it was skipped.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cases from the issues filed after #4160, each a synthetic recipe with its own answer
(analysis or invariants); every other issue in the range is listed with why it was skipped.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cases from the issues filed after #4160, each a synthetic recipe with its own answer
(analysis or invariants); every other issue in the range is listed with why it was skipped.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- `"shells": N` in expected.json grades the total number of shells: a body with a sealed void
holds two, and some joins keep several lumps in one body. Those cases (#3175, #3455, #3526,
#3730) are graded on validity again instead of being marked not valid.
- When SMLib's record conversion says "not supported yet" (revolved surfaces, traced intersection
curves), its check gives no verdict. That's shown but not graded, since it isn't a fault of the
body. solidcraft_kernel::SmlibCheck carries the three outcomes.
- `$OUT` in a recipe is a scratch directory outside the repository, for files a case writes. The
two STEP-export crash cases write there instead of /tmp.
- cargo xtask kernel-cases --results FILE keeps every result as JSON.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Added: 451 (block inside / crossing a hollow spherical-shell tool), 1107 (hollow hub joined
with nine blades), 1140 (spiral hollow lofted tube cut in half and joined), 2928 (cap-touching
lips with 0.0001 mm offset walls), 3850 with 3741 (cross cut touching a round side, and the
hole after it), 1984 (near-coaxial pin and rivet overlaps). #3573 is now a source of
shell/3576. Their lines are gone from the skipped files; #2259, #3518 and #3602 stay skipped
with corrected reasons.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cases: #3702 (a board in the cavity of a case with a filleted rim, cut leaves the case
unchanged) and #258 (STEP cone to a point, with and without an apex vertex, and the 0.5 mm
pin). Everything else in the bundle is skipped with a reason in skipped-other.json.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>