feat(astra): add independent nesting engine and fix hole validation

Replace the Terra scaffold with an independent configuration-space contact placer and bounded stock-plan search. Include plugin tests, synthetic and DXF benchmark drivers, results, and deployment documentation.

Correct shared collision clipping and hole subtraction so curved-hole inserts validate consistently. Cover translated layouts, spacing violations, operand order, winding, and independent boolean-area comparisons.

Validation: 1,293 tests passed with 12 fixture skips; all 34 synthetic/generated and four DXF cases are valid and complete.
This commit is contained in:
aj
2026-09-24 00:14:36 -04:00
parent b6111a5486
commit fc9e46cad3
31 changed files with 1753 additions and 135 deletions
@@ -0,0 +1,35 @@
case,valid,placed,requested,sheets,area,milliseconds
triangles,True,60,60,1,4608,3344
circles,True,90,90,3,3456,1008
circles-dense,True,80,80,2,2304,748
concave-L,True,60,60,3,3456,1082
mixed,True,105,105,3,3456,1966
holes,True,16,16,1,1152,293
rectangles,True,96,96,3,3456,246
grain,True,60,60,2,2304,513
scarce-stock,True,9,9,5,228,1
tail,True,17,17,1,600,4
plate-cap,True,10,10,1,400,4
generated-library-0-RoundedRectangle,True,24,24,2,1886,170
generated-library-1-T,True,24,24,2,2016,172
generated-library-2-Trapezoid,True,24,24,2,2150,115
generated-library-3-Ngon,True,24,24,2,2024,510
generated-library-4-Ngon,True,24,24,1,1080,89
generated-library-5-Ring,True,24,24,1,3901,918
generated-library-6-PipeFlange,True,12,12,1,966,1467
generated-ring-inserts,True,16,16,2,2016,4755
generated-curved-C,True,16,16,2,2150,1883
generated-narrow-U,True,24,24,1,3901,134
generated-stars,True,20,20,1,3901,3087
generated-seed-00,True,19,19,2,1886,568
generated-seed-01,True,22,22,2,2016,398
generated-seed-02,True,21,21,2,2150,1427
generated-seed-03,True,20,20,1,1012,352
generated-seed-04,True,24,24,1,1080,600
generated-seed-05,True,22,22,2,2050,1447
generated-seed-06,True,27,27,2,1932,1254
generated-seed-07,True,19,19,1,1032,705
generated-seed-08,True,17,17,1,1100,1008
generated-seed-09,True,22,22,2,2070,1025
generated-seed-10,True,20,20,1,984,504
generated-seed-11,True,19,19,1,1050,1353
1 case valid placed requested sheets area milliseconds
2 triangles True 60 60 1 4608 3344
3 circles True 90 90 3 3456 1008
4 circles-dense True 80 80 2 2304 748
5 concave-L True 60 60 3 3456 1082
6 mixed True 105 105 3 3456 1966
7 holes True 16 16 1 1152 293
8 rectangles True 96 96 3 3456 246
9 grain True 60 60 2 2304 513
10 scarce-stock True 9 9 5 228 1
11 tail True 17 17 1 600 4
12 plate-cap True 10 10 1 400 4
13 generated-library-0-RoundedRectangle True 24 24 2 1886 170
14 generated-library-1-T True 24 24 2 2016 172
15 generated-library-2-Trapezoid True 24 24 2 2150 115
16 generated-library-3-Ngon True 24 24 2 2024 510
17 generated-library-4-Ngon True 24 24 1 1080 89
18 generated-library-5-Ring True 24 24 1 3901 918
19 generated-library-6-PipeFlange True 12 12 1 966 1467
20 generated-ring-inserts True 16 16 2 2016 4755
21 generated-curved-C True 16 16 2 2150 1883
22 generated-narrow-U True 24 24 1 3901 134
23 generated-stars True 20 20 1 3901 3087
24 generated-seed-00 True 19 19 2 1886 568
25 generated-seed-01 True 22 22 2 2016 398
26 generated-seed-02 True 21 21 2 2150 1427
27 generated-seed-03 True 20 20 1 1012 352
28 generated-seed-04 True 24 24 1 1080 600
29 generated-seed-05 True 22 22 2 2050 1447
30 generated-seed-06 True 27 27 2 1932 1254
31 generated-seed-07 True 19 19 1 1032 705
32 generated-seed-08 True 17 17 1 1100 1008
33 generated-seed-09 True 22 22 2 2070 1025
34 generated-seed-10 True 20 20 1 984 504
35 generated-seed-11 True 19 19 1 1050 1353