woodshop/tests
rob b9b0871ac3 Unify CLI/voice cut list onto the CutPlan (single source of truth)
format_cutlist now renders from build_cut_plan(scene) via a new
format_plan_cutlist(plan), instead of its own board-feet/shopping math. The CLI,
voice, and BOM window all read the same CutPlan now, so they can't disagree —
and kerf, sanding allowance, species, offcut reuse, and unplaced warnings all
surface in the text cut list automatically.

- cut_rows/shopping/board_feet kept (still used elsewhere) but no longer back
  the text renderer.
- Output shape preserved (CUT LIST / Total / SHOPPING) plus species labels,
  rough→final lines, and a WON'T FIT section.
- tests: CLI shopping counts == BOM CutPlan counts (kerf case), species +
  sanding surfaced, unplaced flagged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 22:06:49 -03:00
..
test_bom_window.py Fix material/inventory boundary + offcut-preservation (Codex review) 2026-05-30 20:01:23 -03:00
test_cutlist.py Unify CLI/voice cut list onto the CutPlan (single source of truth) 2026-05-30 22:06:49 -03:00
test_cutplan.py Fix material/inventory boundary + offcut-preservation (Codex review) 2026-05-30 20:01:23 -03:00
test_driver.py Portability + consistency polish (Codex review) 2026-05-30 21:56:28 -03:00
test_estimate.py Phase 2: finish costs by kind in the estimate 2026-05-30 19:04:44 -03:00
test_gen_tools.py Portability + consistency polish (Codex review) 2026-05-30 21:56:28 -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_inventory.py Fix material/inventory boundary + offcut-preservation (Codex review) 2026-05-30 20:01:23 -03:00
test_inventory_window.py Phase 7: shop Inventory window + stats 2026-05-30 19:25:28 -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_materials.py Phase 1: material + finish fields + color resolver 2026-05-30 19:01:28 -03:00
test_prices.py Material-aware pricing: oak ≠ pine 2026-05-30 19:48:26 -03:00
test_scene.py Phase 1: material + finish fields + color resolver 2026-05-30 19:01:28 -03:00