woodshop/tests
rob d44d36a773 Phase 1: smarter auto-layout (best-fit, plywood rotation, optimize)
- Lumber packing supports first-fit (FFD) and best-fit (BFD, tightest fit) via
  a `fit` mode; strategy "bestfit" selects it.
- Plywood panels now rotate to fit (when allowed and grain isn't honored);
  placements record `rotated`. Rotation-disabled oversize panels are flagged.
- best_cut_plan() tries decreasing/bestfit/increasing + shuffle restarts and
  keeps the best by (stock_count, waste_area, -reusable_offcuts); marks it
  "optimized". STRATEGIES drives "Try alternative".
- BOM Cut Layout tab: "Find better layout" (optimize) + "Try alternative"
  (cycle strategies) buttons; the score line explains the result.

107 tests pass (rotation fits/!fits, optimizer no-worse-than-baseline).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 14:31:58 -03:00
..
test_cutlist.py Add plywood (sheet stock) 2026-05-30 12:33:49 -03:00
test_cutplan.py Phase 1: smarter auto-layout (best-fit, plywood rotation, optimize) 2026-05-30 14:31:58 -03:00
test_driver.py Harden command parsing (review fix) 2026-05-29 01:55:12 -03:00
test_geometry.py Add auto-assembly (Make connection) + feature rotation 2026-05-29 17:15:51 -03:00
test_gui_controller.py Right-click a feature to break its connection 2026-05-30 11:06:25 -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