diff --git a/tests/kernel-cases/README.md b/tests/kernel-cases/README.md
index 9421d09f12..c1a6f146c7 100644
--- a/tests/kernel-cases/README.md
+++ b/tests/kernel-cases/README.md
@@ -48,7 +48,9 @@ One directory per area, one per case: `tests/kernel-cases///`.
Each area also has its gate files: `KNOWN_FAILING` and `PATHS` (see [the gate](#the-kernel-rig-gate)).
-`` is `-`, such as `1894-prism-cut-touching-walls`.
+`` is `-`, such as `1894-prism-cut-touching-walls`. A case from a report with no issue or pull request (a failure the maintainers met in the app) is
+`report-` and lists no `sources`; its `what` says where it was reported. A case that
+covers a command with no source at all is `cov-`.
Each case has:
diff --git a/tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder-solver-residues/expected.json b/tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder-solver-residues/expected.json
deleted file mode 100644
index db2aada47a..0000000000
--- a/tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder-solver-residues/expected.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "sources": [
- "tangency-labs/solidcraft#1207"
- ],
- "what": "as 1207-fillet-concave-arc-bar-top-into-cylinder, with the sketch solver's residues of the reported design: SMLib's Nx1 corner fails (status 1001)",
- "source": "analytic",
- "method": "the same bar with the sketch solver's residues of the reported design (~1e-10 mm: the front side's ends differ by 3.0e-10 in y, the arc's centre 5.7e-11 off the disc's), length 41.160417754, V0 = 41.160417754 * 16.0000000000762 * 10 + 960 pi; the concave arc where the bar's top meets the cylinder's wall rounded r2: the spandrel ring added, clipped by the bar's sides y = 0 and y = 16 (as 1207-fillet-concave-arc-at-boss): integral over rho in [8, 10] of [2 - sqrt(4 - (10 - rho)^2)] rho 2 asin(8 / rho) = 18.4553684491 (Simpson)",
- "body_count": 1,
- "faces": 8,
- "volume_mm3": 9620.051156581294
-}
diff --git a/tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder-solver-residues/expected.json b/tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder-solver-residues/expected.json
deleted file mode 100644
index 1ecfd0f084..0000000000
--- a/tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder-solver-residues/expected.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "sources": [
- "tangency-labs/solidcraft#1207"
- ],
- "what": "as 1207-fillet-corner-after-round-running-into-cylinder, with the sketch solver's residues of the reported design",
- "source": "analytic",
- "method": "the same bar with the sketch solver's residues of the reported design (~1e-10 mm: the front side's ends differ by 3.0e-10 in y, the arc's centre 5.7e-11 off the disc's), length 41.160417754, V0 = 41.160417754 * 16.0000000000762 * 10 + 960 pi; the three r2 rounds at the bar's other top corner (0, 0, 10): the front round's spandrel from x = 2 to the wall (30.5896671706), the vertical edge's and the left top edge's (1 - pi/4) r^2 over 8 and 14, the corner cube of side 2 less the rolling ball's eighth, 8 - 4 pi/3: removed 53.2858385868; the bar being L = 41.160417754 long, the front round runs (L - 40) further: removed + (L - 40)(1 - pi/4) r^2",
- "body_count": 1,
- "faces": 12,
- "volume_mm3": 9547.313838420392
-}
diff --git a/tests/kernel-cases/fillets/KNOWN_FAILING b/tests/kernel-cases/fillets/KNOWN_FAILING
index 6b72712655..6bd4ac05ab 100644
--- a/tests/kernel-cases/fillets/KNOWN_FAILING
+++ b/tests/kernel-cases/fillets/KNOWN_FAILING
@@ -49,3 +49,6 @@ every-hole-top-rim-r12-past-plate-bottom SMLib status 1001: a convex round past
every-pocket-floor-and-rim-edges-r2 a corner patch where two rim rounds meet at each concave pocket corner (23 faces, not 19) instead of the mitre the rounds make running into each other
every-pocket-rim-edges-r2 a corner patch where two rim rounds meet at each concave pocket corner (19 faces, not 15) instead of the mitre the rounds make running into each other
every-pocket-rim-edges-r5-as-deep-as-pocket a corner patch where two rim rounds meet at each concave pocket corner (15 faces, not 11) instead of the mitre the rounds make running into each other
+report-fillet-concave-arc-bar-top-into-cylinder-solver-residues SMLib status 1001: SmFilletNx1Corner cannot make the topology at the arc's end (fillet error 3, corner type 8)
+report-fillet-corner-after-round-running-into-cylinder-solver-residues SMLib's check refuses the round: its corner's surface of revolution is close to singular at its boundary (SmSurface test 5)
+report-fillet-edge-tangent-at-one-end-into-cylinder SMLib's check refuses the round that fades out at the edge's tangent end: internal poles, coincident control points, cusps
diff --git a/tests/kernel-cases/fillets/1207-fillet-bar-top-edge-running-tangent-into-cylinder/expected.json b/tests/kernel-cases/fillets/report-fillet-bar-top-edge-running-tangent-into-cylinder/expected.json
similarity index 86%
rename from tests/kernel-cases/fillets/1207-fillet-bar-top-edge-running-tangent-into-cylinder/expected.json
rename to tests/kernel-cases/fillets/report-fillet-bar-top-edge-running-tangent-into-cylinder/expected.json
index c37fb0587c..90925f341b 100644
--- a/tests/kernel-cases/fillets/1207-fillet-bar-top-edge-running-tangent-into-cylinder/expected.json
+++ b/tests/kernel-cases/fillets/report-fillet-bar-top-edge-running-tangent-into-cylinder/expected.json
@@ -1,11 +1,7 @@
{
- "sources": [
- "tangency-labs/solidcraft#1207"
- ],
- "what": "an r2 round of a bar's top edge whose side runs tangent into a cylinder: the round seemed to build but its body could not be measured or changed (SMLib refused the cylinder's wall coming back as a cylinder over more than a turn)",
+ "what": "an r2 round of a bar's top edge whose side runs tangent into a cylinder: the round seemed to build but its body could not be measured or changed (SMLib refused the cylinder's wall coming back as a cylinder over more than a turn); reported from the app (2026-10-30, test-peg part)",
"source": "analytic",
"method": "a bar 40 x 16 x 10 whose far end is a half disc R8 about (40, 8), a disc R8 about the same centre sketched on its top (the top's outline projected) and extruded 10 up, joined: the bar's sides run tangent into the cylinder, V0 = 6400 + 960 pi; the r2 round of the front top edge (y = 0, z = 10) runs into the cylinder's wall: removed = integral over y in [0, 2] of (2 - sqrt(4 - (2 - y)^2)) (40 - sqrt(64 - (8 - y)^2)) dy = 32.3064821881 (Simpson)",
"body_count": 1,
- "faces": 9,
"volume_mm3": 9383.622465258068
}
diff --git a/tests/kernel-cases/fillets/1207-fillet-bar-top-edge-running-tangent-into-cylinder/recipe.json b/tests/kernel-cases/fillets/report-fillet-bar-top-edge-running-tangent-into-cylinder/recipe.json
similarity index 100%
rename from tests/kernel-cases/fillets/1207-fillet-bar-top-edge-running-tangent-into-cylinder/recipe.json
rename to tests/kernel-cases/fillets/report-fillet-bar-top-edge-running-tangent-into-cylinder/recipe.json
diff --git a/tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder-solver-residues/expected.json b/tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder-solver-residues/expected.json
new file mode 100644
index 0000000000..9f4cf27ce0
--- /dev/null
+++ b/tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder-solver-residues/expected.json
@@ -0,0 +1,7 @@
+{
+ "what": "as report-fillet-concave-arc-bar-top-into-cylinder, with the sketch solver's residues of the reported design: SMLib's Nx1 corner fails (status 1001); reported from the app (2026-10-30, test-peg part)",
+ "source": "analytic",
+ "method": "the same bar with the sketch solver's residues of the reported design (~1e-10 mm: the front side's ends differ by 3.0e-10 in y, the arc's centre 5.7e-11 off the disc's), corner (0.489294, 0.057925), length L = 41.160417754, V0 = L * 16.0000000000762 * 10 + 960 pi; the concave arc where the bar's top meets the cylinder's wall rounded r2: the spandrel ring added, clipped by the bar's sides y = 0 and y = 16 (as 1207-fillet-concave-arc-at-boss): integral over rho in [8, 10] of [2 - sqrt(4 - (10 - rho)^2)] rho 2 asin(8 / rho) = 18.4553684491 (Simpson)",
+ "body_count": 1,
+ "volume_mm3": 9620.051156581294
+}
diff --git a/tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder-solver-residues/recipe.json b/tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder-solver-residues/recipe.json
similarity index 97%
rename from tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder-solver-residues/recipe.json
rename to tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder-solver-residues/recipe.json
index cedb6512f1..f9aeca610d 100644
--- a/tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder-solver-residues/recipe.json
+++ b/tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder-solver-residues/recipe.json
@@ -34,7 +34,7 @@
0.05792545083296555
],
"end": [
- 41.64971183161969,
+ 41.649711830726524,
16.05792545083297
]
}
@@ -44,7 +44,7 @@
"params": {
"points": [
[
- 41.64971183161969,
+ 41.649711830726524,
16.05792545083297
],
[
diff --git a/tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder/expected.json b/tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder/expected.json
similarity index 86%
rename from tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder/expected.json
rename to tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder/expected.json
index ab7af9c58d..09c1da46fc 100644
--- a/tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder/expected.json
+++ b/tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder/expected.json
@@ -1,11 +1,7 @@
{
- "sources": [
- "tangency-labs/solidcraft#1207"
- ],
- "what": "an r2 round of the concave arc where a bar's top meets a cylinder its sides run tangent into",
+ "what": "an r2 round of the concave arc where a bar's top meets a cylinder its sides run tangent into; reported from the app (2026-10-30, test-peg part)",
"source": "analytic",
"method": "a bar 40 x 16 x 10 whose far end is a half disc R8 about (40, 8), a disc R8 about the same centre sketched on its top (the top's outline projected) and extruded 10 up, joined: the bar's sides run tangent into the cylinder, V0 = 6400 + 960 pi; the concave arc where the bar's top meets the cylinder's wall rounded r2: the spandrel ring added, clipped by the bar's sides y = 0 and y = 16 (as 1207-fillet-concave-arc-at-boss): integral over rho in [8, 10] of [2 - sqrt(4 - (10 - rho)^2)] rho 2 asin(8 / rho) = 18.4553684491 (Simpson)",
"body_count": 1,
- "faces": 8,
"volume_mm3": 9434.384315895273
}
diff --git a/tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder/recipe.json b/tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder/recipe.json
similarity index 100%
rename from tests/kernel-cases/fillets/1207-fillet-concave-arc-bar-top-into-cylinder/recipe.json
rename to tests/kernel-cases/fillets/report-fillet-concave-arc-bar-top-into-cylinder/recipe.json
diff --git a/tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder-solver-residues/expected.json b/tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder-solver-residues/expected.json
new file mode 100644
index 0000000000..af89b922f6
--- /dev/null
+++ b/tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder-solver-residues/expected.json
@@ -0,0 +1,7 @@
+{
+ "what": "as report-fillet-corner-after-round-running-into-cylinder, with the sketch solver's residues of the reported design; reported from the app (2026-10-30, test-peg part)",
+ "source": "analytic",
+ "method": "the same bar with the sketch solver's residues of the reported design (~1e-10 mm: the front side's ends differ by 3.0e-10 in y, the arc's centre 5.7e-11 off the disc's), corner (0.489294, 0.057925), length L = 41.160417754, V0 = L * 16.0000000000762 * 10 + 960 pi; the three r2 rounds at the bar's other top corner (0, 0, 10): the front round's spandrel from x = 2 to the wall (30.5896671706), the vertical edge's and the left top edge's (1 - pi/4) r^2 over 8 and 14, the corner cube of side 2 less the rolling ball's eighth, 8 - 4 pi/3: removed 53.2858385868; the bar being L long, the front round runs (L - 40) further: removed + (L - 40)(1 - pi/4) r^2",
+ "body_count": 1,
+ "volume_mm3": 9547.313838420392
+}
diff --git a/tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder-solver-residues/recipe.json b/tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder-solver-residues/recipe.json
similarity index 95%
rename from tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder-solver-residues/recipe.json
rename to tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder-solver-residues/recipe.json
index fd1dbbc715..485cb437de 100644
--- a/tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder-solver-residues/recipe.json
+++ b/tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder-solver-residues/recipe.json
@@ -34,7 +34,7 @@
0.05792545083296555
],
"end": [
- 41.64971183161969,
+ 41.649711830726524,
16.05792545083297
]
}
@@ -44,7 +44,7 @@
"params": {
"points": [
[
- 41.64971183161969,
+ 41.649711830726524,
16.05792545083297
],
[
@@ -170,17 +170,17 @@
"params": {
"edges": [
[
- 0.4893,
+ 0.4892940775280783,
0.0579,
4
],
[
- 0.4893,
+ 0.4892940775280783,
9.058,
10
],
[
- 0.4893,
+ 0.4892940775280783,
0.6437,
9.4142
]
diff --git a/tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder/expected.json b/tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder/expected.json
similarity index 88%
rename from tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder/expected.json
rename to tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder/expected.json
index 2924e30d38..6b46203cb2 100644
--- a/tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder/expected.json
+++ b/tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder/expected.json
@@ -1,11 +1,7 @@
{
- "sources": [
- "tangency-labs/solidcraft#1207"
- ],
- "what": "after the round of a bar's top edge running into a cylinder, r2 rounds of the three edges at the bar's other top corner (the vertical edge, the left top edge and the round's end arc): 'one of its freeform faces can't be used'",
+ "what": "after the round of a bar's top edge running into a cylinder, r2 rounds of the three edges at the bar's other top corner (the vertical edge, the left top edge and the round's end arc): 'one of its freeform faces can't be used'; reported from the app (2026-10-30, test-peg part)",
"source": "analytic",
"method": "a bar 40 x 16 x 10 whose far end is a half disc R8 about (40, 8), a disc R8 about the same centre sketched on its top (the top's outline projected) and extruded 10 up, joined: the bar's sides run tangent into the cylinder, V0 = 6400 + 960 pi; the three r2 rounds at the bar's other top corner (0, 0, 10): the front round's spandrel from x = 2 to the wall (30.5896671706), the vertical edge's and the left top edge's (1 - pi/4) r^2 over 8 and 14, the corner cube of side 2 less the rolling ball's eighth, 8 - 4 pi/3: removed 53.2858385868",
"body_count": 1,
- "faces": 12,
"volume_mm3": 9362.643108859389
}
diff --git a/tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder/recipe.json b/tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder/recipe.json
similarity index 100%
rename from tests/kernel-cases/fillets/1207-fillet-corner-after-round-running-into-cylinder/recipe.json
rename to tests/kernel-cases/fillets/report-fillet-corner-after-round-running-into-cylinder/recipe.json
diff --git a/tests/kernel-cases/fillets/896-fillet-edge-tangent-at-one-end-into-cylinder/expected.json b/tests/kernel-cases/fillets/report-fillet-edge-tangent-at-one-end-into-cylinder/expected.json
similarity index 76%
rename from tests/kernel-cases/fillets/896-fillet-edge-tangent-at-one-end-into-cylinder/expected.json
rename to tests/kernel-cases/fillets/report-fillet-edge-tangent-at-one-end-into-cylinder/expected.json
index 8bea0d555d..116bf97742 100644
--- a/tests/kernel-cases/fillets/896-fillet-edge-tangent-at-one-end-into-cylinder/expected.json
+++ b/tests/kernel-cases/fillets/report-fillet-edge-tangent-at-one-end-into-cylinder/expected.json
@@ -1,10 +1,6 @@
{
- "sources": [
- "tangency-labs/solidcraft#896",
- "tangency-labs/solidcraft#1207"
- ],
- "what": "after the round of a bar's top edge running into a cylinder, an r2 round of the edge where that round meets the cylinder's wall (tangent at its lower end only, a crease elsewhere) with its tangent chain (the concave arc of the top): it was refused as a smooth edge",
+ "what": "after the round of a bar's top edge running into a cylinder, an r2 round of the edge where that round meets the cylinder's wall (tangent at its lower end only, a crease elsewhere) with its tangent chain (the concave arc of the top): it was refused as a smooth edge; reported from the app (2026-10-30, test-peg part)",
"source": "invariants",
- "method": "a bar 40 x 16 x 10 whose far end is a half disc R8 about (40, 8), a disc R8 about the same centre sketched on its top (the top's outline projected) and extruded 10 up, joined: the bar's sides run tangent into the cylinder, V0 = 6400 + 960 pi; then the front round (the r2 round of the front top edge (y = 0, z = 10) runs into the cylinder's wall: removed = integral over y in [0, 2] of (2 - sqrt(4 - (2 - y)^2)) (40 - sqrt(64 - (8 - y)^2)) dy = 32.3064821881 (Simpson)); the second round fades to nothing at the edge's tangent end, no closed form: one valid body, adding material (concave), so V > V0 - removed = 9383.622465 and below V0",
+ "method": "a bar 40 x 16 x 10 whose far end is a half disc R8 about (40, 8), a disc R8 about the same centre sketched on its top (the top's outline projected) and extruded 10 up, joined: the bar's sides run tangent into the cylinder, V0 = 6400 + 960 pi; then the front round (the r2 round of the front top edge (y = 0, z = 10) runs into the cylinder's wall: removed = integral over y in [0, 2] of (2 - sqrt(4 - (2 - y)^2)) (40 - sqrt(64 - (8 - y)^2)) dy = 32.3064821881 (Simpson)); the second round fades to nothing at the edge's tangent end, no closed form: one valid body",
"body_count": 1
}
diff --git a/tests/kernel-cases/fillets/896-fillet-edge-tangent-at-one-end-into-cylinder/recipe.json b/tests/kernel-cases/fillets/report-fillet-edge-tangent-at-one-end-into-cylinder/recipe.json
similarity index 100%
rename from tests/kernel-cases/fillets/896-fillet-edge-tangent-at-one-end-into-cylinder/recipe.json
rename to tests/kernel-cases/fillets/report-fillet-edge-tangent-at-one-end-into-cylinder/recipe.json
diff --git a/tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder-outside-setback/expected.json b/tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder-outside-setback/expected.json
new file mode 100644
index 0000000000..caaf989306
--- /dev/null
+++ b/tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder-outside-setback/expected.json
@@ -0,0 +1,7 @@
+{
+ "what": "report-fillet-g2-corner-of-bar-running-into-cylinder less its setback cube: the three rounds outside it, exactly; reported from the app (2026-10-30, test-peg part)",
+ "source": "analytic",
+ "method": "a bar 40 x 16 x 10 whose far end is a half disc R8 about (40, 8), a disc R8 about the same centre sketched on its top (the top's outline projected) and extruded 10 up, joined: the bar's sides run tangent into the cylinder, V0 = 6400 + 960 pi; the body less the setback cube: a box [-1, 3] x [-1, 3] x [7, 11] about the corner (the patch starts 3 along each edge, so outside it each round is its whole section) cut away: V0 - 27 - removed outside the cube: the front round's spandrel from x = 3 to the wall (29.7312596618), the vertical and left rounds' (1 - pi/4) r^2 over 7 and 13: removed 46.8994065900",
+ "body_count": 1,
+ "volume_mm3": 9342.029540856203
+}
diff --git a/tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder-outside-setback/recipe.json b/tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder-outside-setback/recipe.json
new file mode 100644
index 0000000000..a34d1da249
--- /dev/null
+++ b/tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder-outside-setback/recipe.json
@@ -0,0 +1,208 @@
+{
+ "commands": [
+ {
+ "command": "sketch.create",
+ "params": {
+ "plane": "XY",
+ "name": "Peg"
+ }
+ },
+ {
+ "command": "sketch.line",
+ "params": {
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 40,
+ 0
+ ]
+ ]
+ }
+ },
+ {
+ "command": "sketch.arc.center_point",
+ "params": {
+ "center": [
+ 40,
+ 8
+ ],
+ "start": [
+ 40,
+ 0
+ ],
+ "end": [
+ 40,
+ 16
+ ]
+ }
+ },
+ {
+ "command": "sketch.line",
+ "params": {
+ "points": [
+ [
+ 40,
+ 16
+ ],
+ [
+ 0,
+ 16
+ ]
+ ]
+ }
+ },
+ {
+ "command": "sketch.line",
+ "params": {
+ "points": [
+ [
+ 0,
+ 16
+ ],
+ [
+ 0,
+ 0
+ ]
+ ]
+ }
+ },
+ {
+ "command": "sketch.finish",
+ "params": {}
+ },
+ {
+ "command": "solid.extrude",
+ "params": {
+ "sketch": "Peg",
+ "distance": 10,
+ "body_name": "Peg"
+ }
+ },
+ {
+ "command": "sketch.create",
+ "params": {
+ "plane": {
+ "origin": [
+ 0,
+ 0,
+ 10
+ ],
+ "x_dir": [
+ 1,
+ 0,
+ 0
+ ],
+ "y_dir": [
+ 0,
+ 1,
+ 0
+ ]
+ },
+ "name": "Top"
+ }
+ },
+ {
+ "command": "sketch.project",
+ "params": {
+ "refs": [
+ {
+ "face": [
+ 2,
+ 8,
+ 10
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "command": "sketch.circle.center",
+ "params": {
+ "center": [
+ 40,
+ 8
+ ],
+ "radius": 8
+ }
+ },
+ {
+ "command": "sketch.finish",
+ "params": {}
+ },
+ {
+ "command": "solid.extrude",
+ "params": {
+ "sketch": "Top",
+ "distance": 10,
+ "operation": "join",
+ "targets": [
+ "Peg"
+ ],
+ "profiles": [
+ {
+ "point": [
+ 40,
+ 8
+ ]
+ }
+ ],
+ "exact_regions": true
+ }
+ },
+ {
+ "command": "solid.fillet",
+ "params": {
+ "edges": [
+ [
+ 0,
+ 0,
+ 4
+ ],
+ [
+ 20,
+ 0,
+ 10
+ ],
+ [
+ 0,
+ 8,
+ 10
+ ]
+ ],
+ "radius": 2,
+ "corner": "g2",
+ "setbacks": [
+ {
+ "vertex": [
+ 0,
+ 0,
+ 10
+ ],
+ "distance": 3
+ }
+ ],
+ "tangent_chain": false
+ }
+ },
+ {
+ "command": "solid.box",
+ "params": {
+ "corner": [
+ -1,
+ -1,
+ 7
+ ],
+ "length": 4,
+ "width": 4,
+ "height": 4,
+ "operation": "cut",
+ "targets": [
+ "Peg"
+ ]
+ }
+ }
+ ]
+}
diff --git a/tests/kernel-cases/fillets/9-fillet-g2-corner-of-bar-running-into-cylinder/expected.json b/tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder/expected.json
similarity index 61%
rename from tests/kernel-cases/fillets/9-fillet-g2-corner-of-bar-running-into-cylinder/expected.json
rename to tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder/expected.json
index 1d01a48246..f906fb233a 100644
--- a/tests/kernel-cases/fillets/9-fillet-g2-corner-of-bar-running-into-cylinder/expected.json
+++ b/tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder/expected.json
@@ -1,14 +1,20 @@
{
- "sources": [
- "tangency-labs/solidcraft#9"
- ],
- "what": "three r2 rounds at a top corner of a bar whose far end runs tangent into a cylinder, with the curvature (g2) corner set back 3: SMLib refused the result coming back (a cylinder over more than a turn)",
+ "what": "three r2 rounds at a top corner of a bar whose far end runs tangent into a cylinder, with the curvature (g2) corner set back 3: SMLib refused the result coming back (a cylinder over more than a turn); reported from the app (2026-10-30, test-peg part)",
"source": "analytic",
- "method": "a bar 40 x 16 x 10 whose far end is a half disc R8 about (40, 8), a disc R8 about the same centre sketched on its top (the top's outline projected) and extruded 10 up, joined: the bar's sides run tangent into the cylinder, V0 = 6400 + 960 pi; the rolling-ball answer: the three r2 rounds at the bar's other top corner (0, 0, 10): the front round's spandrel from x = 2 to the wall (30.5896671706), the vertical edge's and the left top edge's (1 - pi/4) r^2 over 8 and 14, the corner cube of side 2 less the rolling ball's eighth, 8 - 4 pi/3: removed 53.2858385868; the G2 patch differs from the ball only within the setback cube of side 3 about the vertex, so V is graded as V0 - removed with 3^3 as its tolerance",
+ "method": "a bar 40 x 16 x 10 whose far end is a half disc R8 about (40, 8), a disc R8 about the same centre sketched on its top (the top's outline projected) and extruded 10 up, joined: the bar's sides run tangent into the cylinder, V0 = 6400 + 960 pi; the rolling-ball answer: the three r2 rounds at the bar's other top corner (0, 0, 10): the front round's spandrel from x = 2 to the wall (30.5896671706), the vertical edge's and the left top edge's (1 - pi/4) r^2 over 8 and 14, the corner cube of side 2 less the rolling ball's eighth, 8 - 4 pi/3: removed 53.2858385868; the G2 patch differs from the ball only within the setback cube of side 3 about the vertex, so V is graded as V0 - removed with 3^3 as its tolerance (the rounds outside the cube exactly: ...-outside-setback); the patch meets the rounds and faces round it G2, graded as fillets/9-fillet-corner-r1-curvature-default-setback scaled by r = 2: at a hole corner the round is only tangent (G1) to the plane, so the curvature jump is bounded at stations at least 0.48 mm (0.24 r) from each turn, within 4.4 mm of the corner, at most 0.0025 per mm (0.5% of 1/r)",
"body_count": 1,
- "faces": 12,
"volume_mm3": 9362.643108859389,
"tolerance": {
"rel": 0.002883801046998287
+ },
+ "continuity": {
+ "near": [
+ 0,
+ 0,
+ 10
+ ],
+ "within_mm": 4.4,
+ "clear_mm": 0.48,
+ "curvature_jump_per_mm": 0.0025
}
}
diff --git a/tests/kernel-cases/fillets/9-fillet-g2-corner-of-bar-running-into-cylinder/recipe.json b/tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder/recipe.json
similarity index 100%
rename from tests/kernel-cases/fillets/9-fillet-g2-corner-of-bar-running-into-cylinder/recipe.json
rename to tests/kernel-cases/fillets/report-fillet-g2-corner-of-bar-running-into-cylinder/recipe.json