Codex findings: 1. reoptimize sent unlocked plywood to fresh sheets whenever any sheet placement was locked, instead of packing into free space on the locked sheet — so locking one of two panels that share a sheet split them onto two sheets. Added _free_rects_sheet (guillotine subtraction carving free rectangles around locked panels) + _pack_plywood_seeded, and refactored _pack_plywood_guillotine onto a shared _guillotine_pack core that accepts seeded sheets. reoptimize now uses it for the plywood branch. 2. "Best of 100" only tried the ~6 STRATEGIES when locks existed. The locked path now runs strategies + shuffle restarts up to 100 attempts via reoptimize, matching the label. Tests: plywood lock keeps both panels on one sheet; locked Best-of-100 stays valid. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| test_bom_window.py | ||
| test_cutlist.py | ||
| test_cutplan.py | ||
| test_driver.py | ||
| test_geometry.py | ||
| test_gui_controller.py | ||
| test_instructions.py | ||
| test_jigs.py | ||
| test_layout.py | ||
| test_scene.py | ||