woodshop/tests
rob 9d80be4e7f Fix lock-aware plywood reopt + honest Best-of-100 when locked
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>
2026-05-30 15:46:39 -03:00
..
test_bom_window.py Fix lock-aware plywood reopt + honest Best-of-100 when locked 2026-05-30 15:46:39 -03:00
test_cutlist.py Add plywood (sheet stock) 2026-05-30 12:33:49 -03:00
test_cutplan.py Fix lock-aware plywood reopt + honest Best-of-100 when locked 2026-05-30 15:46:39 -03:00
test_driver.py Carry conversation history so "yes" / "do that" resolve 2026-05-30 15:42:33 -03:00
test_geometry.py Add auto-assembly (Make connection) + feature rotation 2026-05-29 17:15:51 -03:00
test_gui_controller.py Carry conversation history so "yes" / "do that" resolve 2026-05-30 15:42:33 -03:00
test_instructions.py Phase 2: structured build instructions (deterministic + optional AI polish) 2026-05-30 14:36:50 -03:00
test_jigs.py Address shop-packet review (consistency, determinism, validation, jigs) 2026-05-30 15:11:02 -03:00
test_layout.py BOM window: tabs + cut-layout nesting + print (phase 1 of shop output) 2026-05-30 13:07:49 -03:00
test_scene.py Add plywood (sheet stock) 2026-05-30 12:33:49 -03:00