woodshop/tests
rob c81633b699 Lock-aware re-optimization
reoptimize(scene, base_plan, strategy) preserves locked placements where they sit
and re-packs the unlocked items around them: unlocked lumber goes into the free
segments beside locked pieces (then new sticks) via _pack_lumber_seeded +
_free_segments; unlocked plywood goes onto fresh sheets (locked sheets keep their
locked panels). The BOM window's "Find better layout" / "Try alternative" now call
reoptimize when any piece is locked (Find better tries all strategies and keeps the
best), so locks survive re-optimization instead of just blocking drags.

Tests: locked placement keeps its id/position, nothing is lost, plan stays valid.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 15:27:39 -03:00
..
test_bom_window.py Fix drag-drop crash + cover it with offscreen GUI tests 2026-05-30 15:18:01 -03:00
test_cutlist.py Add plywood (sheet stock) 2026-05-30 12:33:49 -03:00
test_cutplan.py Lock-aware re-optimization 2026-05-30 15:27:39 -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_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